Linux主机安全加固
Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了。我们要如何为这类服务器做好安全加固工作呢?
本文针对系统的账户安全,最小化服务,访问控制,用户鉴别,审计策略等安全项进行整改及加固,达到提升系统安全,使系统能够抵御一定程度的攻击行为的目的!
加固目录
密码策略
升级openssh版本
设置终端超时
删除无效定时任务
删除无效一次性任务
进程管理
SSH安全配置
无效服务管理
防火墙策略
设置历史记录条数:
设置系统日志保留时间
锁定不必要用户
加固内容及方法
##################################################################################
#### 以下部分操作属于高危操作,在未得到用户充分授权的情况下,请勿擅自修改 #####
##################################################################################
##################################################################################
# 1、系统登陆密码复杂度:
### 密码有效期控制 ###
vim /etc/login.defs
## 修改如下行 ##
PASS_MAX_DAYS 180 #密码最长过期天数
PASS_MIN_DAYS 30 #密码最小过期天数
PASS_MIN_LEN 12 #密码最小长度
PASS_WARN_AGE 20 #密码过期警告天数
###备份###
cp /etc/login.defs /etc/login.defs.xu.bak
sed -i 's/PASS_MAX_DAYS 99999/PASS_MAX_DAYS 180/g' /etc/login.defs
sed -i 's/PASS_MIN_DAYS 0/PASS_MIN_DAYS 30/g' /etc/login.defs
sed -i 's/PASS_MIN_LEN 5/PASS_MIN_LEN 12/g' /etc/login.defs
sed -i 's/PASS_WARN_AGE 7/PASS_WARN_AGE 20/g' /etc/login.defs
### 密码复杂度控制 ###
vim /etc/pam.d/system-auth
### 找到 password requisite pam_cracklib.so 替换成如下:###
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
##################################################################################
##################################################################################
# 2、升级openssh版本;
### 按需做,这里暂且不对这项进行整改 ###
##################################################################################
##################################################################################
# 3、设置终端超时:
##后续优化对于已经存在配置的判断,一下方法暂用,不会影响整改结果##
echo 'export TMOUT=1800'>>/etc/profile
echo 'readonly TMOUT' >>/etc/profile
source /etc/profile
##################################################################################
##################################################################################
# 4、检查定时任务(防止病毒感染):
### 定时任务 ###
crontab -l
### 一次性任务检查 ###
at -l
##################################################################################
##################################################################################
# 5、检查异常进程(防止挖矿病毒,占用内存或者CPU):
### 检查cpu占用前10 ###
ps aux|sort -rn -k +3|head
### 检查内存占用前10 ###
ps aux|sort -rn -k +4|head
##################################################################################
##################################################################################
# 6、root用户远程登陆:
### 由于没有业务用户,修改此项会影响用户正常使用,所以在非必要情况下不进行配置 ###
vim /etc/ssh/sshd_config
# 设置如下行
PermitRootLogin yes
PermitRootLogin prohibit-password
## 可以修改默认端口保证安全性,按需 ##
Port 22
### 修改完配置之后记得重启服务生效 ###
service sshd restart
##################################################################################
##################################################################################
# 7、关闭无效的服务及端口:
##邮箱##
service postfix status
chkconfig --del postfix
chkconfig postfix off
##cups##
service cups status
chkconfig --del cups
chkconfig cups off
## 其他服务请手动检查 ##
##################################################################################
##################################################################################
# 8、设置防火墙策略:
####检查IPTABLES状态###
service iptables status
echo '请根据用户实际业务端口占用等情况进行设置!'
## 例如:vim /etc/sysconfig/iptables ,添加如下策略 ##
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 8080 -j ACCEPT
## 重启防火墙 ##
service iptabels restart
##################################################################################
##################################################################################
# 9、设置历史记录数量:
###备份###
cp /etc/profile /etc/profile_xu_bak
###修改###
sed -i s/'HISTSIZE=1000'/'HISTSIZE=5000'/g /etc/profile
###检查###
cat /etc/profile |grep HISTSIZE|grep -v export
##################################################################################
##################################################################################
# 10、日志保留半年以上:
###备份###
cp /etc/logrotate.conf /etc/logrotate.conf_xu_bak
###修改###
sed -i s/'rotate 4'/'rotate 12'/g /etc/logrotate.conf
###重启####
service syslog restart
###检查###
cat /etc/logrotate.conf |grep -v '#' |grep rotate
##################################################################################
##################################################################################
# 11、锁定不必要的用户:
###备份###
cp -p /etc/passwd /etc/passwd_xu_bak
cp -p /etc/shadow /etc/shadow_xu_bak
###锁定不必要的用户###
### bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon ###
passwd -l bin
passwd -l sys
passwd -l adm
passwd -l uucp
passwd -l lp
passwd -l nuucp
passwd -l hpdb
passwd -l www
passwd -l daemon
##################################################################################
##################################################################################
### 连续6次输错密码禁用一段时间,建议配置成300秒 ###
##################################################################################
##################################################################################
### 配置系统超时自动退出,建议配置成300秒 ###
##################################################################################
总结:
整改文档可以写成一个完整的脚本,但是由于时间原因及出于安全性考虑,很多部分还是建议使用手动执行,防止不必要的麻烦出现