背景概要

公司会对主机服务器进行基线扫描,需要按要求修复


文章目录

  • 背景概要
  • 系统日志访问控制
  • 口令复杂度检查
  • 文件与目录缺省权限控制
  • 限制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