linux安全加固

目录

  • 账户管理
    • 口令锁定策略
    • 口令锁定策略
    • 口令复杂度
    • 检查密码重用是否受限制
    • 检查是否存在除root之外UID为0的用户
    • 禁止存在空密码的帐户
  • 服务管理
    • 检查是否禁止SSH空密码用户登录
    • 设置ssh多次登录失败后锁定用户
    • 限制root用户远程登录
    • 检查ssh使用的端口
    • 设置登录超时自动注销
  • 权限管理
    • 检查用户umask
    • 检查重要目录和文件的权限设置
    • 限制可以su为root的用户
  • 日志管理
    • 检查rsyslog服务是否启用且对所有登录事件都记录
    • 检查是否启用记录定时任务行为日志功能
    • 确保SSH LogLevel设置为INFO
    • 是否将 /var/log/messages 文件设置为只可追加

账户管理

口令锁定策略

more /etc/pam.d/password-auth查看配置文件

[root@localhost Edison]# more /etc/pam.d/password-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 auth
tok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

vim /etc/pam.d/password-auth

查看是否有,没有就加上

auth required pam_tally2.so deny=5 onerr=fail unlock_time=300  even_deny_root=5 root_unlock_time=600

上面指令的意思是普通用户连续认证失败5次,账号锁定300s,root用户连续输错5次账号锁定600s。

查询被锁定的账号:pam_tally2 -u
手动解锁某个被锁定的账号:pam_tally2 -u 要解锁的用户 -r

编辑文件/etc/login.defs(vi /etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加):
PASS_MAX_DAYS 90
PASS_WARN_AGE 7
执行命令:chage-M 90 -W 7username 修改已有用户的口令生存期和过期告警天数

口令锁定策略

查看文件:more /etc/login.defs
检查如下参数值:PASS_MAX_DAYS 用户的密码最长使用天数不大于90
PASS_WARN_AGE #用户的密码到期提前提醒天数为7

口令复杂度

执行:grep -E "^minlen|^minclass" /etc/security/pwquality.conf查看是否有返回结果
在这里插入图片描述

  • 要求:没有返回结果,说明不合规

执行命令:authconfig --passminlen=8 --passminclass=3 --update
至少包含数字、小写字母、大写字母、特殊字符中的三项,且密码长度>=8

检查密码重用是否受限制

cat查看cat /etc/pam.d/system-auth
然后看是否有password sufficient pam_unix.so
linux安全加固_第1张图片

  • 要求:有remember参数且参数的值大于等于5即合规,否则不合规
    表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。

linux安全加固_第2张图片

检查是否存在除root之外UID为0的用户

awk -F: '($3 == 0) { print $1 }' /etc/passwd linux安全加固_第3张图片

  • 要求:返回值包括“root”以外的条目,则低于安全要求

执行命令:userdel -r username删除返回值中root除外的其他用户。或者使用命令:usermod -u uid username 为他们分配新的UID

  • 小知识:cat /etc/passwd可以查看用户信息
    linux安全加固_第4张图片

linux安全加固_第5张图片

禁止存在空密码的帐户

awk -F: '($3 == 0) { print $1 }' /etc/passwd

要求:执行命令后没有返回值即合规,否则不合规。
在这里插入图片描述
passwd username 设置密码

服务管理

检查是否禁止SSH空密码用户登录

执行命令查看是否禁用。

more /etc/ssh/sshd_config

linux安全加固_第6张图片
结果发现被注释掉了
vim把#去掉
即可

设置ssh多次登录失败后锁定用户

执行
more /etc/pam.d/sshd
查看是否存在
auth required pam_tally2.so deny=5 unlock_time=300

要求:存在该行且 deny小于等于5,unlock_time大于等于300,否则不合规


vi /etc/pam.d/sshd 在文件开头添加一行,内容为 auth required pam_tally2.so deny=5 unlock_time=300,如要对root用户也进行限制,在刚添加的内容后继续添加:even_deny_root=5 root_unlock_time=1200

限制root用户远程登录

执行

more /etc/ssh/sshd_config

查看PermitROOTLogin参数的值

要求:PermitROOTLogin参数值为no该行没有被注释才能行

vim将PermitROOTLogin注释删去并且参数值为no

检查ssh使用的端口

执行

 more /etc/ssh/sshd_config

查看Port参数的值

要求:不是默认值(22)才行


linux安全加固_第7张图片
这里的port是22 然后还被注释是掉了

执行

vi /etc/ssh/sshd_config

找到Port改为其他端口然后去掉注释符号#,端口最好用10000-65535之间,10000以下容易被系统添加到SELinux开放给ssh使用的端口
执行

semanage port -a -t ssh_port_t-p

将修改后的端口添加到SELinux开放给ssh使用的端口
执行

firewall-cmd --zone=public --add-port=ssh端口号/tcp --permanent 

把防火墙改为刚才的端口号

然后重启ssh和防火墙
systemctl restart sshd;system restert firewalld

设置登录超时自动注销

执行

more /etc/profile

是否有export TMOUT=180
linux安全加固_第8张图片

要求:存在值<=180就行


执行
vi /etc/profile 在该文件末尾添加 export TMOUT=180 或者将原来的值修改为180

权限管理

检查用户umask

执行:

more /etc/profile

查看文件是否设置umask值
linux安全加固_第9张图片

要求: /etc/profile 文件末未存在umask 027 ,就ok


执行:

vi /etc/profile 编辑文件,再文件末尾添加umask 027

执行命令让其生效
source /etc/profile

检查重要目录和文件的权限设置

执行:

ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow /etc/services /etc/ssh/sshd_config 

查看文件权限
linux安全加固_第10张图片

要求:
/etc/passwd文件的权限<=644
/etc/shadow文件的权限<=600
/etc/group文件的权限<=644
/etc/gshadow文件的权限<=600
/etc/hosts.deny文件的权限<=644
/etc/hosts.allow文件的权限<=644
/etc/services文件的权限<=644
/etc/ssh/sshd_config文件的权限<=600
以上条件同时满足则合规,否则不合规。
r=6,w=4,x=1


可以看到这里的除了gshadow和shadow是0 sshd_config是600之外其他都是644
-rw-r--r--. 1 root root    948 310 17:17 /etc/group  
----------. 1 root root    765 310 17:17 /etc/gshadow
-rw-r--r--. 1 root root    370 67 2013 /etc/hosts.allow
-rw-r--r--. 1 root root    370 67 2013 /etc/hosts.allow
-rw-r--r--. 1 root root   2188 310 17:17 /etc/passwd
-rw-r--r--. 1 root root 670293 67 2013 /etc/services
----------. 1 root root   1133 310 17:17 /etc/shadow
-rw-------. 1 root root   4361 412 2017 /etc/ssh/sshd_config

执行:
chomd 644 /etc/passwd修改权限

限制可以su为root的用户

执行:

more /etc/pam.d/su 找到auth required pam_whell.so

linux安全加固_第11张图片

要求:auth required pam_wheel.so use_uid 存在且未被注释即合规,否则不合规

执行:
vi /etc/pam.d/su 找到 auth required pam_wheel.so use_uid 删除该行前面的 # 使其生效,如果该行不存在则在文件末尾添加该行。
将需要su为root的用户使用命令
usermod -G wheel username 加入 wheel 组,该用户即可su为root用户。如果需要将某个用户移出wheel组,可使用命令:gpasswd -d username wheel

日志管理

检查rsyslog服务是否启用且对所有登录事件都记录

执行:
more /etc/rsyslog.conf
查看authpriv的值

要求:authpriv值为authpriv.* /var/log/secure即合规,否则不合规
注:/var/log/secure为可变项

执行:
1.执行备份:cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak
2、执行命令:systemctl enable rsyslog 添加开机自启动
3、执行命令:systemctl start rsyslog 启动服务
4、执行命令:vi/etc/rsyslog.conf 查看authpriv值 将其设置为 authpriv.*/var/log/secure
(将 authpirv 的任何级别的信息记录到 /var/log/secure 文件中)
5、执行命令:systemctl restart rsyslog

检查是否启用记录定时任务行为日志功能

执行命令:more /etc/rsyslog.conf 查看 cron 的值

要求: corn值为cron.* 合规,否则不合规

-linux安全加固_第12张图片
1、执行备份:cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak
2、执行命令:vi /etc/rsyslog.conf 查看 cron 的值,将其设置为 cron.* /var/log/cron(即将 cron 的任何级别的信息记录到 /var/log/cron 文件中)
3、执行命令:systemctl restart rsyslog 重启 rsyslog 使配置生效

确保SSH LogLevel设置为INFO

执行:
more /etc/ssh/sshd_config

linux安全加固_第13张图片

要求:LOGLevel级别是INFO且没有被注释,合规


方法:
1、执行备份:cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2、执行命令:vi /etc/ssh/sshd_config 找到 LogLevel 将其设置为 INFO ,如果该行被注释,还应删掉该行前方的 #
3、执行命令:systemctl restart sshd 重启ssh服务使其生效

是否将 /var/log/messages 文件设置为只可追加

执行:lsattr /var/log/messages
查看文件属性第六位是否为a

要求:为a即合规


执行命令:lsattr /var/log/messages 查看该文件属性第六位是否为a
不为a则执行命令:chattr +a /var/log/messages 将该文件的属性修改为只可追加
linux安全加固_第14张图片
我这里的第六位不是a

执行
lsattr /var/log/messages 查看该文件属性第六位是否为a
不为a则执行命令:chattr +a /var/log/messages 将该文件的属性修改为只可追加

你可能感兴趣的:(学习,linux,安全,unix)