Centos服务器和redis和nginx和mysql基础安全加固处理[数据库教程]

database

Centos 基本安全加固

确保root是唯一的UID为0的帐户 或者修改root用户名称为其他用户

除root以外其他UID为0的用户(查看命令cat /etc/passwd | awk -F: ‘($3 == 0) { print $1 }‘|grep -v ‘^root$‘)都应该删除,或者为其分配新的UID 或者修改root用户

例如: hanye:x:0:0:root:/root:/bin/bash 登录使用hanye用户登录

开启地址空间布局随机化

在/etc/sysctl.conf 文件中设置以下参数: kernel.randomize_va_space = 2

或者执行命令: sysctl -w kernel.randomize_va_space=2

设置用户权限配置文件的权限

chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow

chmod 0644 /etc/group

chmod 0644 /etc/passwd

chmod 0400 /etc/shadow

chmod 0400 /etc/gshadow

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow

访问控制配置文件的权限设置

chown root:root /etc/hosts.allow

chown root:root /etc/hosts.deny

chmod 644 /etc/hosts.deny

chmod 644 /etc/hosts.allow

确保SSH LogLevel设置为INFO,记录登录和注销活动

编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数(取消注释):

LogLevel INFO

确保rsyslog服务已启用 记录日志用于审计

systemctl enable rsyslog

systemctl start rsyslog

设置SSH空闲超时退出时间,可降低未授权用户访问其他用户SSH会话的风险

编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。

ClientAliveInterval 600

ClientAliveCountMax 2

或者设置: cat /etc/profile 添加 export TMOUT=600

设置较低的Max AuthTrimes参数将降低SSH服务器被暴力***成功的风险。

在/etc/ssh/sshd_config中取消MaxAuthTries注释符号#,设置最大密码尝试失败次数3-6,

MaxAuthTries 4

确保密码到期警告天数为7或更多

在 /etc/login.defs 中将 PASS_WARN_AGE 参数设置为7-14之间,建议为7:

PASS_WARN_AGE 7

同时执行命令使root用户设置生效:

chage --warndays 7 root

禁止SSH空密码用户登录

编辑文件/etc/ssh/sshd_config,将PermitEmptyPasswords配置为no:

PermitEmptyPasswords no

强制用户不重用最近使用的密码,降低密码猜测***风险

在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。

检查密码长度和密码是否使用多种字符类型

编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为8-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中的3类或4类)设置为3或4。如:

minlen=10

minclass=3

设置密码修改最小间隔时间,限制密码更改过于频繁

在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:

PASS_MIN_DAYS 7

需同时执行命令为root用户设置:

chage --mindays 7 root

设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登录方式

使用非密码登录方式如密钥对,请忽略此项。在 /etc/login.defs中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:

PASS_MAX_DAYS 90

需同时执行命令设置root密码失效时间:

chage --maxdays 90 root

redis 安全配置

redis 修改或者禁用危险的命令,或者尽量避免谁都可以使用这些命令

rename-command FLUSHALL ""    #禁用 FLUSHALL

rename-command FLUSHDB "" #禁用 FLUSHDB

rename-command CONFIG "" #禁用 CONFIG

rename-command KEYS "" #禁用 KEYS

rename-command SHUTDOWN "" #禁用 SHUTDOWN

rename-command DEL "" #禁用 DEL

rename-command EVAL "" #禁用 EVAL

或者替换为其他执行命令

rename-command FLUSHALL deleteall #FLUSHALL 命令修改为 deleteall

rename-command FLUSHDB deletedatabase #FLUSHDB 命令修改为 deletedatabase

rename-command CONFIG

rename-command KEYS

rename-command SHUTDOWN

rename-command DEL

rename-command EVAL

修改 默认监听端口和ip地址

找到redis.conf 修改 port 和 bind 配置

vim /usr/local/redis/etc/redis.conf

port 8369 #修改端口为8369

bind 127.0.0.1 10.29.129.179 #修改监听ip 如果是自己内网链接 监听127.0.0.1,如果内网其他服务器也要链接 则监听内网ip地址

限制redis 配置文件访问权限

chmod 600 /usr/local/redis/etc/redis.conf

禁止root用户启动

groupadd -g 1002 redis

useradd -g 1002 -u 1002 -M -s /sbin/nolog redis

sudo -u redis /use/local/bin/redis-server /usr/local/redis/etc/redis.conf

打开保护模式(访问控制)

打开保护模式 protected-mode yes

mysql安全配置

MySQL服务不允许匿名登录

delete from user where user=‘‘;

flush privileges

禁用local-infile选项

禁用local_infile选项会降低***者通过SQL注入漏洞器读取敏感文件的能力

编辑Mysql配置文件 my.cnf,在mysqld 段落中配置local-infile参数为0,并重启mysql服务:

local-infile=0

禁用skip_symbolic_links选项 禁用符号链接以防止各种安全风险

skip_symbolic_links=yes

修改默认3306端口

编辑my.cnf文件,mysqld 段落中配置新的端口参数,并重启MySQL服务

port=33066

禁止使用--skip-grant-tables选项启动MySQL服务

编辑Mysql配置文件my.cnf,删除skip-grant-tables参数,并重启mysql服务

确保log-raw选项没有配置为ON

当log-raw记录启用时,有权访问日志文件的人可能会看到纯文本密码。

编辑Mysql配置文件my.cnf,删除log-raw参数,并重启mysql服务

Nginx安全加固

Nginx后端服务指定的Header隐藏状态  隐藏Nginx后端服务X-Powered-By头

隐藏Nginx后端服务指定Header的状态:

在http下配置proxy_hide_header项;

增加或修改为 proxy_hide_header X-Powered-By; proxy_hide_header Server;

检查是否配置Nginx账号锁定策略

Nginx服务建议使用非root用户(如nginx,www)启动,并且确保启动用户的状态为锁定状态。可执行passwd -l <Nginx启动用户> 如passwd -l nginx 来锁定Nginx服务的启动用户。命令 passwd -S <用户> 如passwd -S nginx可查看用户状态。 修改配置文件中的nginx启动用户修改为nginx或者www 如: user www; 如果您是docker用户,可忽略该项(或添加白名单)

Nginx进程启动账号状态,降低被***概率

修改Nginx进程启动账号:

查看配置文件的user配置项,确认是非root启动的;(user 配置项)

如果是root启动,修改成www或者nginx账号;

修改完配置文件之后需要重新启动Nginx。

Nginx服务的版本隐藏状态

在http配置项下 配置server_tokens项 server_tokens off;

把控配置文件权限以抵御外来***

修改Nginx配置文件权限: 执行chmod 644 conf/vhost/*.conf conf/nginx.conf 来限制Nginx配置文件的权限

SSL加固

配置支持TLSv1.2;

server {

ssl_protocols TLSv1.2;

}

如果没有必要 不要启用目录列表,这在***者侦察中可能很有用,因此应将其禁用。如果要打开 不要忘记设置登录验证密码

在location下删除或者修改为 autoindex off;

加密方式:

yum install -y httpd-tools

htpasswd -c /usr/local/nginx/conf/passwd_xuqiu xuqiu

然后赋值密码

nginx调用授权密码文件

server {

auth_basic "Please input password"; #这里是验证时的提示信息

auth_basic_user_file /usr/local/nginx/conf/passwd_xuqiu;

}

Centos服务器和redis和nginx和mysql基础安全加固处理

原文:https://blog.51cto.com/9025736/2529534

以上是 Centos服务器和redis和nginx和mysql基础安全加固处理[数据库教程] 的全部内容, 来源链接: utcz.com/z/535210.html

回到顶部