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基础安全加固处理