Linux 系统加固方法(安全系统运维)

一、查看系统信息

# 查看内核信息
uname -a
# 查看所有软件包
rpm -qa
# 查看主机名
hostname
# 查看网络配置
ifconfig -a
# 查看路由表
netstat -rn
# 查看开放端口
netstat -an
# 查看当前进程
ps -aux

二、检查弱口令

  • 将被检查主机的/etc/shadow文件拷贝出来,在笔记本电脑上运行john the ripper工具检测弱口令
  • 修改密码
# 修改用户的密码
passwd <USERNAME>

三、检查无用用户

  • 使用命令cat /etc/passwd查看口令文件,与系统管理员确认不必要的账号
  • 对不需要的用户应进行锁定
  • 需要与管理员确认此项操作不会影响到业务系统的登录
# 锁定用户
passwd -l <USERNAME>
# 解锁用户
passwd -u <USERNAME>
  • 不需要的用户应该将其登录Shell配置为/bin/nologin

四、用户锁定策略

  • 限制用户登录尝试失败次数过多自动锁定
  • 编辑文件/etc/pam.d/system-auth
vi /etc/pam.d/system-auth
  • 添加如下行,使得输入10次错误密码之后会锁定300秒:
auth required pam_tally.so onerr=fail deny=10 unlock_time=300
  • 注意:该策略仅对远程登录有效

五、检查用户状态

  • 查看有无空口令的用户
awk -F: '($2=="")' /etc/shadow
  • 查看UID为0的用户:
awk -F: '($3==0)' /etc/passwd
  • 设置UID
usermod -u <UID> <USERNAME>

六、添加口令策略

  • 加强口令的复杂度等,降低被猜解的可能性
  • 查看密码策略设置
cat /etc/login.defs | grep PASS
cat /etc/pam.d/system-auth
  • 添加口令策略,修改配置文件
vi /etc/login.defs
  • 添加如下策略
# 新建用户的密码最长使用天数
PASS_MAX_DAYS 90
# 新建用户的密码最短使用天数
PASS_MIN_DAYS 0
# 新建用户的密码到期提前提醒天数
PASS_WARN_AGE 7
  • 使用chage命令修改用户设置
chage -m 0 -M 30 -E 2019-01-01 -W 7 <用户名>
  • 表示:将此用户的密码最长使用天数设为30,最短使用天数设为0,帐号2019年1月1日过期,过期前7天里警告用户

七、添加口令复杂度策略

  • 查看密码复杂度策略设置
cat /etc/pam.d/system-auth | grep pam_cracklib.so
  • 编辑/etc/pam.d/system-auth文件设置:
password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=1 
  • 策略为:至少8位,包含一位大写字母,一位小写字母和一位数字
  • 锁定用户功能谨慎使用,密码策略对root不生效

八、限制root远程登录

  • 查看是否禁止root远程登录
cat /etc/securetty | grep CONSOLE
  • 编辑/etc/securetty文件,配置:
CONSOLE = /dev/tty01

九、检查Grub/Lilo密码

  • 查看系统引导管理器是否设置密码
# 查看grub是否设置密码
cat /etc/grub.conf | grep password
# 查看lilo是否设置密码
cat /etc/lilo.conf | grep password