1. 账号与密码加固
1.1 禁用或删除无用账号
减少系统无用账号,降低安全风险。
操作步骤
userdel <用户名>
passwd -l <用户名>
passwd -u <用户名>
1.2 检查特殊账号
检查是否存在空口令和root权限的账号。
操作步骤
1、检查
awk -F: '($2"")' /etc/shadow
awk -F: '($30)' /etc/passwd
awk -F: '($2 == "") { print $1 }' /etc/shadow
2、修复
passwd <用户名>
确认UID为零的账号只有root账号。
1.3 设置密码策略
加强口令的复杂度等,降低被猜解的可能性。
操作步骤
1、vim /etc/login.defs 修改配置文件。
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
PASS_MIN_LEN 8
2、使用chage命令修改用户设置。(针对已创建用户)
例如,chage -m 0 -M 90 -I 5 -W 7 <用户名>
表示将此用户的密码最长使用天数设为90,最短使用天数设为0,密码过期后5天之后账户失效,过期前7天警告用户。
3、设置连续输错五次密码,账号锁定十分钟。(普通账户)
vim /etc/pam.d/system-auth(redhat、centos)
auth required pam_tally.so onerr=fail deny=5 unlock_time=600(redhat6、centos6及以下版本)
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 vim /etc/pam.d/sshd (redhat、centos)(ssh登录)
auth required pam_tally.so onerr=fail deny=5 unlock_time=600(redhat6、centos6及以下版本)
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600
4、设置密码复杂度
vim /etc/pam.d/system-auth
password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1(redhat6、centos6)
password requisite pam_pwquality.so minlen=8 ucredit=-2 lcredit=-1 dcredit=-4 ocredit=-1(redhat7、 centos7)
5、设置密码重复使用次数限制
vim /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
1.4 限制用户su操作
限制普通用户能su到root的用户
操作步骤
vim /etc/pam.d/su
例如,只允许wheel组用户su到root,则添加
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so group=wheel
2. 服务加固
2.1 关闭不必要的服务
关闭不必要的服务(如普通服务和xinetd服务),降低风险。
操作步骤
systemctl stop <服务名>
systemctl disable <服务名>
2.2 SSH服务安全
对SSH服务进行安全加固,防止容易被暴力破解成功。
操作步骤
vim /etc/ssh/sshd_config
不允许root账号直接登录系统。
设置 PermitRootLogin 的值为 no。
修改SSH使用的协议版本。
设置 Protocol 的版本为 2。(centos7默认第一版本已拒绝)
密码错误超过次数断开连接(默认6次)。
设置 MaxAuthTries 的值为 3。
修改默认端口
设置Port的值为非22。
配置文件修改完成后,重启sshd服务生效。
3. 环境加固
3.1 PROFILE加固
文件权限、历史命令、超时注销等安全加固
操作步骤
echo "umask 077" >> /etc/profile
echo "HISTSIZE=1000" >> /etc/profile
echo "TMOUT=300" >> /etc/profile
echo "readonly TMOUT" >> /etc/profile
source /etc/profile
3.2 删除潜在危险文件
.rhosts,.netrc,hosts.equiv等文件都具有潜在的危险,如果没有应用,应该删除
操作步骤
find / -name .rhosts
find / -name .netrc
find / -name hosts.equiv
mv .rhost .rhost.bak
mv .netr .netr.bak
mv hosts.equiv hosts.equiv.bak
3.3 设置重要目录或文件权限
针对重要的目录设置正确的权限加固系统安全
操作命令
chmod <权限> <目录或文件>
参考加固:
chmod 750 /etc/
chmod 750 /tmp/
chmod 644 /etc/passwd
chmod 644 /etc/group
chmod 644 /etc/services
chmod 400 /etc/shadow
chmod 600 /etc/security
4. 日志加固
4.1 syslogd日志
启用日志功能,并配置日志记录保留180日。
Linux系统默认启用以下类型日志: 系统日志(默认)/var/log/messages cron日志(默认)/var/log/cron 安全日志(默认)/var/log/secure
操作步骤
vim /etc/logrotate.conf
rotate 25
4.2 记录所有用户的登录和操作日志
通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。 每次用户退出后都会产生以用户名、登录IP、时间的日志文件,日记记录到/var/log/history/路径
操作步骤
1. 日志记录
vim /etc/profile
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 733 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/* 2>/dev/null
2. 命令时间记录
vim /etc/bashrc
HISTTIMEFORMAT="%F %T "
export HISTTIMEFORMAT
4.3 中间件日志保留设置
操作步骤
vim /opt/scripts/tomcat-logrotate.sh
logs_path="/opt/tomcat/apache-tomcat-7.0.75/logs"
find $logs_path -mtime +180 -name "localhost.*.log" -exec rm -rf {} \;
find $logs_path -mtime +180 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime +180 -name "catalina.*.log" -exec rm -rf {} \;
find $logs_path -mtime +180 -name "manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +180 -name "host-manager.*.log" -exec rm -rf {} \;
>$logs_path/catalina.out;
chmod 755 /opt/scripts/tomcat-logrotate.sh
crontab -e
0 2 * * * sh /opt/scripts/tomcat-logrotate.sh
|