背景概要
公司会对主机服务器进行基线扫描,需要按要求修复
文章目录
- 背景概要
- 系统日志访问控制
- 口令复杂度检查
- 文件与目录缺省权限控制
- 限制root用户远程登录-ssh
- 登陆超时时间设置
- 口令生存期
- 使用PAM 禁止任何人su 为root
- 配置用户最小授权
- 限制telnet服务
- 检查是否记录 cron 行为日志
- 检查是否启用Syslog日志审计
- 修改服务器密码不能与旧密码相同
- 修改history命令
- 禁止匿名FTP
系统日志访问控制
查看如下等日志的访问权限
ls -l /var/log/messages /var/log/secure /var/log/maillog /var/log/cron /var/log/spooler /var/log/boot.log
chmod 600 /var/log/messages /var/log/secure /var/log/maillog /var/log/cron /var/log/spooler /var/log/boot.log # 上述文件权限小于等于600
ls -l /var/log/messages /var/log/secure /var/log/maillog /var/log/cron /var/log/spooler /var/log/boot.log
口令复杂度检查
vi /etc/pam.d/system-auth
# 在该文件system-auth配置以下三种之一
1、引用pam_passwdqc.so
password required pam_passwdqc.so min=disabled,disabled,disabled,disabled,8 enforce=everyone
2、引用pam_cracklib.so
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
3、引用pam_pwquality.so
password requisite pam_pwquality.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
文件与目录缺省权限控制
vi /etc/profile
在文件末尾增加 umask 027 或者 umask 022
source /etc/profile
限制root用户远程登录-ssh
vi /etc/ssh/sshd_config
将 PermitRootLogin yes 改为 PermitRootLogin no 或者注释掉 PermitRootLogin yes 这一行
systemctl status sshd.service # 查看ssh服务
systemctl restart sshd.service # 重启ssh服务
# 补充说明
systemctl start sshd.service # 启动ssh服务
systemctl stop sshd.service # 停止ssh服务
systemctl enable sshd.service # 将ssh服务设置为开机自启动
systemctl disable sshd.service # 关闭ssh开机启动
登陆超时时间设置
# 通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT 按秒计算。
vi /etc/profile
#在“HISTFILESIZE=”后面加入下面这行:
TMOUT=300 #(建议小于等于300)
source /etc/profile
2、补充操作说明
改变这项设置后,必须先注销用户,再用该用户登录才能激活这个功能,也就是需要重新退出 登录一次
口令生存期
vi /etc/login.defs
PASS_MAX_DAYS=90 #设定口令的生存期不长于90 天
使用PAM 禁止任何人su 为root
# 把需要切换root用户添加到wheel组,以使它可以使用su命令成为root用户。
usermod -a -G wheel username
vi /etc/pam.d/su
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel
# 这表明只有wheel组的成员可以使用su命令成为root用户。
配置用户最小授权
chmod 644 /etc/passwd #/etc/passwd 必须所有用户都可读,root 用户可写 –rw-r—r—
chmod 600 /etc/shadow #/etc/shadow 只有root 可读 –r--------
chmod 644 /etc/group #/etc/group 须所有用户都可读,root 用户可写 –rw-r—r—
如果是有写权限,就需移去组及其它用户对/etc 的写权限(特殊情况除外)
执行命令#chmod -R go-w /etc
限制telnet服务
# 关闭telnet服务
systemctl stop xinetd
systemctl stop telnet.socket
systemctl stop system-telnet.slice
# 卸载telnet
yum remove telnet telnet-server xinetd
# 补充说明:
#安装Telnet服务并配置
yum -y install telnet telnet-server xinetd
#启动telnet服务
systemctl restart xinetd
systemctl restart telnet.socket
检查是否记录 cron 行为日志
vi /etc/rsyslog.conf
在文件中添加 cron.* /var/log/cron
修改完成后,按 Esc 键进入命令模式并输入 wq 保存修改。
检查是否启用Syslog日志审计
vi /etc/rsyslog.conf
在文件中添加 authpriv.* /var/log/secure
# 将authpirv 设备的任何级别的信息记录到/var/log/secure 文件中,这主要是一些和认证、权限使用相关的信息。
修改服务器密码不能与旧密码相同
1. cp /etc/login.defs /etc/login.defs$(date +%F)
2. vi /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_MIN_LEN 8
PASS_WARN_AGE 30
3. cp /etc/pam.d/system-auth /etc/pam.d/system-auth$(date +%F)
4. vi /etc/pam.d/system-auth
删除remember=5
5. echo "User@12#$" | passwd --stdin user
如果这里报错:
passwd: Authentication token manipulation error
执行:
chattr -i /etc/shadow
chattr -i /etc/passwd
然后重新执行第5条命令
6. vi /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 6
PASS_MIN_LEN 8
PASS_WARN_AGE 30
修改history命令
vi /etc/profile
HISTSIZE=100 # history 命令输出的记录数
HISTFILESIZE=100 #在 .bash_history 中保存命令的记录总数
export HISTTIMEFORMAT="`who am i` `whoami` %F %T "
source /etc/profile # 使profile文件生效
禁止匿名FTP
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO # 打开vsftd.conf文件,将YES改为NO