一.密码长度与有效期
默认配置:
[root@i-1y3we23j ~]# cat /etc/login.defs |grep PASS_ |grep -v '#' PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7
加固方案:
1.备份配置文件:
# cp -a /etc/login.defs /etc/login.defs.default
2.编辑配置文件并将相关参数改成如下
# vi /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_DAYS 6 PASS_MIN_LEN 8 PASS_WARN_AGE 30
备注:
/etc/login.defs文件的pass_min_len 参数并不具备强制性,测试仍然可以设置7位密码。最终需要cracklib来实现。
参数说明:
PASS_MAX_DAYS 密码有效期
PASS_MIN_DAYS 修改密码的最短期限
PASS_MIN_LEN 密码最短长度
PASS_WARN_AGE 密码过期提醒
二.密码复杂度
默认配置:
[root@i-1y3we23j ~]# cat /etc/pam.d/system-auth | grep "pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=" password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
加固方案:
1.备份配置文件: # cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.default 2.编辑配置文件 # vi /etc/pam.d/system-auth 将password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
注释并在其下面新增1行 password requisite pam_cracklib.so try_first_pass minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type=
3.保存配置文件
备注:
try_first_pass而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。
minlen=8:最小长度8位
difok=5:新、旧密码最少5个字符不同
dcredit=-1:最少1个数字
lcredit=-1:最少1个小写字符,(ucredit=-1:最少1个大写字符)
ocredit=-1:最少1个特殊字符
retry=1:1次错误后返回错误信息
type=xxx:此选项用来修改缺省的密码提示文本
三.新口令不能与4个最近使用的相同
默认配置:
[root@i-1y3we23j ~]# cat /etc/pam.d/system-auth |grep use_authtok
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
加固方案:
1.备份配置文件 2.编辑配置文件: # vi /etc/pam.d/system-auth 在password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 所在行的后面添加 remember=5 3.保存配置文件
备注:
记住5个历史密码
四.设置会话超时(5分钟)
默认配置:
无
加固方案:
1.备份配置文件: # cp -a /etc/profile /etc/profile.default 2.编辑配置文件: vi /etc/profile 在文件的末尾添加参数 export TMOUT=300 3.保存配置文件
备注:
5分钟无操作中断登录会话
五.设置history命令时间戳
默认配置:
无
加固方案:
1.备份配置文件: 略 2.编辑配置文件: vi /etc/profile 在文件的末尾添加参数 export HISTTIMEFORMAT="%F %T `whoami` " 3.保存配置文件
六.设置登陆失败锁定(终端登录)
默认配置:
无
加固方案:
1.备份配置文件 2.编辑配置文件: # vi /etc/pam.d/system-auth 在# User changes will be destroyed the next time authconfig is run.行的下面,添加 auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800 3.保存配置文件
备注:
通过终端登录,5次登录失败后锁定账号30分钟,锁定期间此账号无法再次登录。
七.禁止root通过ssh远程登录
默认配置:
# cat /etc/ssh/sshd_config |grep PermitRootLogin
#PermitRootLogin yes
加固方案:
1.备份配置文件 # cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.default 2.编辑配置文件 vi /etc/ssh/sshd_config 将配置参数#PermitRootLogin yes改成PermitRootLogin no 3.保存配置文件 4.重启ssh服务 # /etc/init.d/sshd restart
八.SSH 配置参数增强
1.备份配置文件 2.编辑配置文件 #vi /etc/ssh/sshd_config (1)禁止空密码登录 将#PermitEmptyPasswords no参数的注释符号去掉,改成 PermitEmptyPasswords no (2)关闭ssh的tcp转发 将#AllowTcpForwarding yes参数改成 AllowTcpForwarding no (3)关闭S/KEY(质疑-应答)认证方式 将#ChallengeResponseAuthentication yes参数,改成 ChallengeResponseAuthentication no (4)关闭基于GSSAPI 的用户认证 将GSSAPIAuthentication yes参数,改成 GSSAPIAuthentication no 3.保存配置文件 4.重启ssh服务
九.设置SSH登录警告语
默认配置:
无
加固方案:
1.备份配置文件 # 略 2.编辑配置文件 #vi /etc/ssh/sshd_config 找到#Banner none参数,在其下一行,增加 Banner /etc/ssh/alert 3.保存配置文件 4新增告警信息文件. #vi /etc/ssh/alert 文件内容,设置成 ******************************************************* 这里的内容自己定义,可以提示一下登录的用户引起运维人员重视 Warning!!!Any Access Without Permission Is Forbidden!!! ******************************************************* 5.保存后重启ssh服
十.设置umask值
默认配置:
# umask 0022
加固方案:
1.备份配置文件 # cp -a /etc/bashrc /etc/bashrc.default 2.编辑配置文件 # vi /etc/bashrc 在文件末尾增加参数 umask 027 3.保存配置文件 4. 备份配置文件 # cp -a /etc/profile /etc/pr ofile.default 5.编辑配置文件 # vi /etc/profile 在文件末尾增加参数 umask 027 6.保存配置文件
备注:
将umask值设置成0027,用于拿掉新增目录与文件的非所有者和所有者所属组的访问权限
默认:
新增目录权限755,即rxwr-xr-x
新增文件权限644,即
rw-r--r—
加固后:
新增目录权限750,即rxwr-x---
新增文件权限640,即
rw-r-----
十一.禁止Control-Alt-Delete 键盘重启系统命令
默认配置:
ls /usr/lib/systemd/system/ctrl-alt-del.target
加固方案:
1.备份配置文件 cp -a /usr/lib/systemd/system/ctrl-alt-del.target /usr/lib/systemd/system/ctrl-alt-del.target.default 2.移除该原源文件 rm -rf /usr/lib/systemd/system/ctrl-alt-del.target
十二. 隐藏系统版本信息
默认配置:
加固方案:
执行以下命令: #mv /etc/issue /etc/issue.bak #mv /etc/issue.net /etc/issue.net.bak
备注:登录界面显示系统版本信息
十三.设置grup密码
默认配置:无
加固方案:
1.备份配置文件 cp -a /etc/grub.d/00_header /etc/grub.d/00_header.default 2.使用grub2-mkpasswd-pbkdf2 加密密码(密码自己定义,但是一定得保存好否则最后连自己都登录不进去) [root@localhost ~]# grub2-mkpasswd-pbkdf2 Enter password: Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.B157F42E96462AB239C03000F113D32EB18FD48073F1FC7D8F87A8F3B3F89F662424ECCAB901F3A812A997E547FD520F3E99D0E080F4FE8B05E019757E34F75B.29C83F87B4B6C086FC9A81E046CC3623CC5CF2F82128EDC3A0364894E429D4993B28563F82D71BF346188108CBD4341FC4A71B90E543581646B4E7EAE920C54A 3.添加以下配置到该文件的最后面(特别需要注意 用户名root和密文之间是空格分隔,而不是换行) cat <<EOF set superusers='root' password_pbkdf2 root grub.pbkdf2.sha512.10000.B157F42E96462AB239C03000F113D32EB18FD48073F1FC7D8F87A8F3B3F89F662424ECCAB901F3A812A997E547FD520F3E99D0E080F4FE8B05E019757E34F75B.29C83F87B4B6C086FC9A81E046CC3623CC5CF2F82128EDC3A0364894E429D4993B28563F82D71BF346188108CBD4341FC4A71B90E543581646B4E7EAE920C54A E0F 4.执行命令grub2-mkconfig -o /boot/grub2/grub.cfg 重新编译生成grub.cfg文件
十四.最大文件打开数(文件句柄数)
默认配置:
[root@i-1y3we23j ~]# ulimit -n 1024
加固方案:
1.备份配置文件 cp -a /etc/security/limits.conf /etc/security/limits.conf.default 2.添加以下两行配置到该文件最后 * soft nofile 65535 * hard nofile 65535
备注:修改所有用户的最大文件打开数为65535
十五.用户最大进程数
默认配置:
[root@i-1y3we23j ~]# cat /etc/security/limits.d/20-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096 root soft nproc unlimited
加固方案:
1.备份配置文件 cp -a /etc/security/limits.d/20-nproc.conf /etc/security/limits.d/20-nproc.conf.default 2.修改配置文件vim /etc/security/limits.d/20-nproc.conf * soft nproc 65535 * hard nproc 65535
备注:修改所有用户的最大进程数为65535
十六.系统参数调优
默认配置:
无
加固方案:
1.备份配置文件 cp -a /etc/sysctl.conf /etc/sysctl.conf.default 2.添加以下调优参数到该文件中 net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.route.gc_timeout = 20 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.route.gc_timeout = 20 net.ipv4.ip_local_port_range = 10024 65535 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 94500000 915000000 927000000 fs.file-max = 65535 kernel.pid_max = 65536 net.ipv4.tcp_wmem = 4096 87380 8388608 net.core.wmem_max = 8388608 net.core.netdev_max_backlog = 5000 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_max_syn_backlog = 10240 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 120 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_max_tw_buckets = 36000