热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

服务器部署中的安全策略实践与优化

一、防火墙防火墙是服务器的第一道防线,虽然不能百分百防护得到,但至少能阻挡大多数黑客的DOS或DDOS以及利用部分开源软件的漏洞进行病毒植入等攻击。1.防火墙设置开机自启动systemctl enab
一、防火墙

防火墙是服务器的第一道防线,虽然不能百分百防护得到,但至少能阻挡大多数黑客的DOS或DDOS以及利用部分开源软件的漏洞进行病毒植入等攻击。

1.防火墙设置开机自启动

systemctl enable firewalld

2.防火墙常用命令

(1)防火墙状态查看(开启或关闭)

systemctl status firewalld

(2)开放端口

firewall-cmd --permanent --add-port=端口/tcp

(3)关闭端口

firewall-cmd --permanent --remove-port=端口/tcp

(4)防火墙重启

firewall-cmd --reload

(5)查看防火墙已开放端口

firewall-cmd --list-ports

注意:
无论是服务器开放端口还是关闭端口必须要重启防火墙生效,否则无效。

二、远程连接

1.ssh端口修改

vim /etc/ssh/sshd_config

添加一行Port 12593即可,如图所示:

重启sshd:

systemctl restart sshd

需要开启防火墙:

firewall-cmd --permanent --add-port=12593/tcp
firewall-cmd --reload

2.禁用root远程登录

修改配置文件:

vi /etc/ssh/sshd_config

添加如下内容:

找到 # PermitRootLogin yus
改为 PermitRootLogin no

创建用户及授权:

useradd blog #添加用户
passwd #重置密码
chown -R 用户名 路径
三、备份管理

1.数据备份

编写服务脚本通过scp命令进行远程传输到备份服务器对应的数据备份
目录。
核心命令如下:

scp -r sql_月份或天.zip mysql@ip:/home/mysql/backup

数据备份脚本内容可供参考(可以结合上面的scp命令,实现备份到另外的服务器):


#!/bin/bash
base_dir=/home/blog/sql_script
DATE=$(date +%Y%m%d)
time=$(date "+%Y-%m-%d %H:%M:%S")
cd $base_dir
mysqldump -uroot -p123456 --databases wordpress nacos > dump_$DATE.sql
if [ $? -eq 0 ]
then
echo "成功备份mysql数据库,当前日期为:"$time >> /home/blog/mysql_dump.log
else
echo "备份mysql数据库失败:当前日期为:"$time>> /home/blog/mysql_dump.log
fi

2.程序日志备份

目前日志主要存储在/home/blog/dev/log目录下。
核心命令如下(可写入shell脚本定时执行):

scp -r server_log_月份或天.zip server@ip:/home/server/backup

3.系统日志备份(针对服务器所产生的系统日志)

一般日志主要存储在/var/log下。
核心命令如下(可写入shell脚本定时执行):

scp -r system_log_月份或天.zip system@ip:/home/system/backup四、定期更新系统内核

  • 1.硬件兼容性更好(支持更多的硬件);

  • 2.修复原有内核系统漏洞(有的黑客会以原有系统漏洞来达到攻击服务器的目的),提升系统稳定性;

  • 3.系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中,这也是不少朋友感觉服务器内存虽然16G,实际能用的可能只有12~13G左右);

  • 4.更多的新功能和特性,提高效率,减少运维工作量

要按照实际情况更新系统内核,切不可随意更新,更新前一定要有充足的准备,防止更新以后出现不兼容性问题导致影响巨大(特别是生产环境,要特别小心,可以事先做试验更新确保问题,同时也把坑给踩了)。

1.更新yum源仓库
yum -y update
2.启用 ELRepo 仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
3.安装ELRepo仓库的yum源
yum install
https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
4.查询可用的系统内核包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
5.安装最新版本内核
yum --enablerepo=elrepo-kernel install kernel-ml
6.设置新的内核为grub2的默认版本
grub2-set-default 0
7.生成 grub 配置文件并重启
grub2-mkconfig -o /boot/grub2/grub.cfg (必须等待该命令执行完毕后才执行reboot重启服务器)
reboot
8.验证新内核
uname -r

五、服务管理

1.应用软件

(1)MySQL

a.避免使用默认端口3306;

b.如需对外暴露,限制IP;

c.对外连接账户,密码设置复杂且做严格库表权限控制;

d.不使用根用户运行MySQL。

(2)Redis

a.禁止监听公网;

b.禁止使用root用户启动;

c.限制Redis配置文件访问权限(chmod 600 redis.conf)

d.修改默认端口(最好不要为6379);

e.打开保护模式;

f.开启账号密码认证模式;

g.数据加密,开启SSL代理。

(3)Nginx

a.隐藏版本号(防止黑客针对版本漏洞进行攻击);

b.开启HTTPS;

c.开启黑白名单;

d.添加账号认证(一般为basic,双重认证的体系);

e.限制请求方法;

f.拒绝User-Agent和Header头设置;

g.图片防盗链;

h.控制并发连接数;

i.限制缓冲区大小(防止缓冲区溢出攻击)。

2.微服务

(1)通过网关代理访问,仅暴露网关(网关处于公网下,一般Nginx代理网关,网关处于内网)。

(2)各个微服务处于内网,通过注册中心建立联系,如涉及集群,可通过Nginx负载均衡策略实现请求分发。


推荐阅读
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 洞态IAST Java Agent 实现AOP技术详解
    本文深入探讨了洞态IAST Java Agent如何通过AOP技术实现方法调用链和污点值传播等功能,为读者提供了详细的源码分析。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • Redis安全防护深入解析
    本文详细探讨了如何通过指令安全、端口管理和SSL代理等措施有效保护Redis服务的安全性。 ... [详细]
author-avatar
JHH先森
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有