6. 是否有用户的点文件是所有用户可读写的: for dir in \
`awk -F: '($3 >= 500) { print $6 }' /etc/passwd` do
for file in $dir/.[A-Za-z0-9]* do
if [ -f $file ]; then chmod o-w $file fi done done(Unix/Linux下通常以”.”开头的文件是用户的配置文件,如果存在所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限)
7. 为用户设置合适的缺省umask值:
cd /etc
for file in profile csh.login csh.cshrc bashrc do
if [ `grep -c umask $file` -eq 0 ]; then
echo "umask 022" >> $file
fi
chown root:root $file
chmod 444 $file
done
(为用户设置缺省的umask值有助于防止用户建立所有用户可写的文件而危及用户的数据).
8. 设备系统口令策略:修改/etc/login.defs文件 将PASS_MIN_LEN最小密码长度设置为12位。
10. 限制能够su为root 的用户:#vi /etc/pam.d/su 在文件头部添加下面这样的一行
auth required pam_wheel.so use_uid
(这样,只有wheel组的用户可能su到root 操作样例:
#usermod -G10 test 将test用户加入到wheel组)
11. 修改别名文件/etc/aliases:#vi /etc/aliases
注释掉不要的 #games: root #ingres: root #system: root #toor: root #uucp: root
#manager: root #dumper: root #operator: root #decode: root #root: marc
修改后执行/usr/bin/newaliases
13. 修改账户TMOUT值,设置自动注销时间 vi /etc/profile 增加TMOUT=600
(无操作600秒后自动退出)
14. 设置Bash保留历史命令的条数 #vi /etc/profile 修改HISTSIZE=5
(即只保留最新执行的5条命令)
16. 防止IP SPOOF:
#vi /etc/host.conf 添加:nospoof on
(不允许服务器对IP地址进行欺骗)
17. 使用日志服务器:
#vi /etc/rsyslog.conf 照以下样式修改
*.info;mail.none;authpriv.none;cron.none @192.168.10.199
(这里只是作为参考,需要根据实际决定怎么配置参数)
二、Centos 7系统访问认证和授权
可以检查的安全项目有:
1. 限制 at/cron被授权的用户:
cd /etc/
rm -f cron.deny at.deny
(Cron.allow和at.allow文件列出了允许允许crontab和at命令的用户名单, 在多数系统上通常只有系统管理员)
2. Crontab文件限制访问权限:
chown root:root /etc/crontab chmod 400 /etc/crontab
chown -R root:root /var/spool/cron chmod -R go-rwx /var/spool/cron chown -R root:root /etc/cron.* chmod -R go-rwx /etc/cron.*
(系统的crontab文件应该只能被cron守护进程(它以超级用户身份运行)来访问,一个普通用户可以修改crontab文件会导致他可以以超级用户身份执行任意程序)
3. 建立恰当的警告banner:
echo "Authorized uses only. All activity may be \
monitored and reported." >>/etc/motd
chown root:root /etc/motd chmod 644 /etc/motd
echo "Authorized uses only. All activity may be
\ monitored and reported." >> /etc/issue
echo "Authorized uses only. All activity may be \ monitored and reported." >> /etc/issue.net
(改变登录banner可以隐藏操作系统
类型和版本号和其它系统信息,这些
信息可以会对攻击者有用.)
4. 限制root登录到系统控制台:
cat < tty5 tty4 tty3 tty2 tty1 securetty>
END_FILE
chown root:root /etc/securetty
chmod 400 /etc/securetty
(通常应该以普通用户身份访问系统,然后通过其它授权机制(比如su命令和sudo)来获得更高权限,这样做至少可以对登录事件进行跟踪)
5. 设置守护进程掩码 vi /etc/rc.d/init.d/functions
设置为 umask 022
(系统缺省的umask 值应该设定为022以避免守护进程创建所有用户可写的文件)
三、Centos 7核心调整
可以检查的安全项目有:
1. 禁止core dump:
cat <>/etc/security/limits.conf
* soft core 0
* hard core 0
END_ENTRIES
(允许core dump会耗费大量的磁盘空间.)
2. chown root:root /etc/sysctl.conf
chmod 600 /etc/sysctl.conf
(log_martians将进行ip假冒的ip包记录到/var/log/messages
其它核心参数使用CentOS默认值。)
四、Centos 7需要关闭的一些服务
可以检查的安全项目有:
关闭Mail Server chkconfig
postfix off
(多数Unix/Linux系统运行Sendmail作为邮件服务器, 而该软件历史上出现过较多安全漏洞,如无必要,禁止该服务)
五、SSH安全配置
可以检查的安全项目有:
1. 配置空闲登出的超时间隔: ClientAliveInterval 300
ClientAliveCountMax 0
(Vi /etc/ssh/sshd_config)
2. 禁用 .rhosts 文件
IgnoreRhosts yes(Vi /etc/ssh/sshd_config)
3. 禁用基于主机的认证
HostbasedAuthentication no (Vi /etc/ssh/sshd_config)
4. 禁止 root 帐号通过 SSH 登录 PermitRootLogin no
(Vi /etc/ssh/sshd_config)
5. 用警告的 Banner Banner /etc/issue
(Vi /etc/ssh/sshd_config)
6. iptables防火墙处理 SSH 端口 # 64906
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 64906 -j
ACCEPT
-A INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 64906 –j
ACCEPT
(这里仅作为参考,需根据实际需要调整参数)
7. 修改 SSH 端口和限制 IP 绑定:
Port 64906
安装selinux管理命令
yum -y install policycoreutils-python
修改 port contexts(关键),需要对context进行修改
semanage port -a -t ssh_port_t -p tcp 64906
semanage port -l | grep ssh ----查看当前SElinux 允许的ssh端口
(Vi /etc/ssh/sshd_config仅作为参考,需根据实际需要调整参数)
8. 禁用空密码:
PermitEmptyPasswords no
(禁止帐号使用空密码进行远程登录SSH)
9. 记录日志:
LogLevel INFO
(确保在 sshd_config 中将日志级别 LogLevel 设置为 INFO 或者 DEBUG,可通过 logwatch or logcheck 来阅读日志。)
10. 重启SSH
systemctl restart sshd.service
(重启ssh)