Linux系统安全加固
设定用户密码有效期、密码长度和告警天数
sed -i ‘s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 100/g;s/^PASS_MIN_LEN.*/PASS_MIN_LEN 8/g;s/^PASS_WARN_AGE.*/PASS_WARN_AGE 10/g‘ /etc/login.defs
注释:
PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_LEN Minimum acceptable password length.
PASS_WARN_AGE Number of days warning given before a password expires。。
设定账号登录次数限制
sed -i ‘2i \auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300\‘ /etc/pam.d/login
sed -i ‘2i \auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300\‘ /etc/pam.d/sshd
sed -i ‘/auth required pam_deny.so/i \auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300\‘ /etc/pam.d/system-auth
注释:
even_deny_root 也限制root用户
deny 用户连续错误登陆的最大次数,超过就锁定该用户
unlock_time 用户锁定后,多长时间解锁,单位秒
root_unlock_time root用户锁定后,多长时间解锁,单位秒
设定账号密码复杂度
sed -i ‘s/^\(password requisite.*\)/#\1a \npassword requisite pam_cracklib.so try_first_pass retry=5 difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1/‘ /etc/pam.d/system-auth
注释:
retry=5 允许重试5次;
difok=1 有3个不同字符;
minlen=8 最少长度5位;
ucredit=-1 包含1个大写字母;
lcredit=-1 包含3个小写字母;
dcredit=-1 包含1个数字
ocredit=-1 包含1个特殊符号注意:root用户不受此限制,对之前用户无影响
禁止root用户远程登录
sed -i ‘s/#PermitRootLogin yes/PermitRootLogin no/‘ /etc/ssh/sshd_config
service sshd restart
systemctl restart sshd
连接超时自动退出
echo ‘export TMOUT=300‘ >> /etc/profile; source /etc/profile
历史命令设置
-
保存 1 万条历史命令
echo ‘HISTSIZE=10000‘ >> /etc/profile; source /etc/profile
-
为历史的命令增加登录的 IP 地址、执行命令时间等信息
在/etc/profile 的文件尾部添加如下行数配置信息
vi /etc/profile 末尾添加: ######jiagu history xianshi######### USER_IP=`who -u am i 2>/dev/null | awk ‘{print $NF}‘ | sed -e ‘s/[()]//g‘` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histappend export PROMPT_COMMAND="history -a" ######### jiagu history xianshi ########## #让配置生效 source /etc/profile
系统用户状态管理
- 查看可以登录系统的用户,不需要登录的用户进行锁定
grep "/bin/bash$" /etc/passwd |awk -v FS=: ‘{print $1,$7}‘
- 显示用户的进程信息
ps -u 用户名
- 查看账户密码状态
passwd -S 用户名
- 锁定账户
passwd -l 用户名
- 解锁账户
passwd -u 用户名
- 删除账户密码
passwd -d 用户名
- 强制账户下次登录修改密码
passwd -f 用户名
- 查看用户登陆失败的次数
pam_tally2 -u 用户名
- 清空用户错误登录次数
pam_tally2 -u 用户名--reset