农妇山泉一亩田 发表于 2024-7-13 09:12:26

Linux 安全基线查抄与加固

为什么对Linux体系要举行安全基线查抄和加固:
固然说Linux操作体系相比Windows体系更为安全一点,但是在实际使用当中,由于管理员的一些安全意识不敷全面或者一时的疏忽,大概会导致Linux体系中的一些账户和服务没有举行正确的配置,这样就大概产生被黑客使用的风险,因此必要。
留意:以下安全操作是基于centos 7
留意:在做所有的操作之前,对源文件都要举行备份以防止意外情况
一.账号管理

1.1 口令锁定策略

https://img-blog.csdnimg.cn/direct/fa2a0822a1ab4f1f9f06d3e082eb7be6.png
实践:
运行命令:more /etc/pam.d/password-auth,发现并没有限制内容,之后必要举行安全加固。
https://img-blog.csdnimg.cn/direct/d31b46b10d4442d0b62c3f0f30d9c35c.png
备份:cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth_bak
举行安全加固:在文件的上方添加一行即可
这个配置用来防止账户被暴力破解:
auth        required      pam_tally2.so deny=5 onerr=fail unlock_time=300 even_deny_root=5 root_unlock_time=600
https://img-blog.csdnimg.cn/direct/15f22fb8350647b69f23f8da3a676afa.png
既然有用户锁定,那就可以使用root给锁定用户解锁
先使用命令:pam_tally2 -u 显示已锁定用户
解锁用户使用命令:pam_tally2 -u <要解锁的用户> -r
1.2 口令生存期

https://img-blog.csdnimg.cn/direct/8cad2a3ca1714ae2bef4cc81c18a3e6c.png
先执行配置文件备份:cp -p /etc/login.defs /etc/login.defs_bak
https://img-blog.csdnimg.cn/direct/df3f5a802d4a41d0b412ac761d9384b8.png
检察文件配置:
https://img-blog.csdnimg.cn/direct/6e401bf8dcc04fb5a9583a2b7990ab17.png
对其举行修改,改为90天。
留意:这里修改之后,只会对之后新建的账号见效,对之前已经存在的不会见效。以是这个时候必要使用命令让修改对已有的账户见效:chage -M 90 -W 7 <username>
可以使用命令:cat /etc/shadow检察相关账户的信息。
https://img-blog.csdnimg.cn/direct/a55ea2a1be1547e8ac7dce0242eb87f1.png
1.3 口令复杂度

https://img-blog.csdnimg.cn/direct/07d1e22923504ef1bbe3b8c593056959.png
使用命令:grep -E '^minlen|^minclass' /etc/security/pwquality.conf,可以看到当前对密码复杂度并无要求和规定。
https://img-blog.csdnimg.cn/direct/578057ca31864cc598470b8242a45173.png
执行修改命令:authconfig --passminlen=8 --passminclass=3 --update
然后再举行查询:
https://img-blog.csdnimg.cn/direct/15d5dc4d478a4570afe3969d7f770271.png
如果要排除这些限制,直接到文件/etc/security/pwquality.conf,然后将minlen和minclass两行参数删除即可。
1.4 查抄密码重用是否受限制

https://img-blog.csdnimg.cn/direct/5d21f588c4fe47088bc0519cf781ae81.png
输入命令检察:vim /etc/pam.d/system-auth,发现并未举行规范
https://img-blog.csdnimg.cn/direct/a65fe99adf95456cb3080a91a11f5668.png
后面添加参数举行修改,代表密码必须举行五次轮换,不能使用一样的密码:
https://img-blog.csdnimg.cn/direct/c3c49e345b4e4518a1f03bbdb70925b4.png
1.5 查抄是否存在除root之外UID为0的用户

https://img-blog.csdnimg.cn/direct/9a860ae118c341d6b7cc2eecefa212cd.png
使用命令:awk -F: '($3 == 0){print $1}' /etc/passwd
   命令解释:
这条命令的作用是查找/etc/passwd文件中,用户ID(第3个字段)为0的所有账户,并打印出这些账户的用户名(第1个字段)。在Unix/Linux体系中,用户ID为0通常对应于root用户。但实际上,/etc/passwd文件中根用户的UID字段不会显示为0,而是会看到一个x(比方,root:x:0:0...),而实际的UID信息存储在/etc/shadow文件中。因此,此命令大概不会直接找到表示为0的UID,除非/etc/passwd被非标准地修改过。
https://img-blog.csdnimg.cn/direct/5efb1dfa7ed34477b7ad9848ad045fb1.png
1.6 克制存在空密码的帐户

https://img-blog.csdnimg.cn/direct/d39c5fab53a04552892a7ae4a08b747d.png
使用命令:awk -F: '($2 == ""){print $1}' /etc/passwd
https://img-blog.csdnimg.cn/direct/d0c3ab13cce74741acdc38cce638cc1f.png
不存在账户密码为空的账户。
二.服务管理

2.1 克制SSH空密码用户登录

https://img-blog.csdnimg.cn/direct/ab5a8368f5284eae9b5fef084685890c.png
使用命令:more /etc/ssh/sshd_config |grep PermitEmptyPasswords,可以看出查询效果为no,但是被#注销了。
https://img-blog.csdnimg.cn/direct/35ca7fb9b3e64393a60e26b9dd030502.png
如若查询效果不符合要求,可以在文件中举行配置,将其改为no,这里必要将行首的#删除掉:https://img-blog.csdnimg.cn/direct/fc4dcad95d454d98865bd0495320bc95.png
当然,末了是必要重启服务来举行见效的:systemctl restart sshd
2.2 SSH多次登录失败后锁定用户

https://img-blog.csdnimg.cn/direct/4ab51f224e5b4fc887e2714cbef8689c.png
先对配置文件举行检察,可以发现并未有限制:https://img-blog.csdnimg.cn/direct/04d6f66686514ee19f14733a5c79e4d7.png
然后在内里添加登录错误次数限制:
auth       required     pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=600
https://img-blog.csdnimg.cn/direct/b4b00a9bba854a7db8f11bd3994ee451.png
同样,这里也必要重启服务举行配置见效:systemctl restart sshd
2.3 限制root用户长途登录

https://img-blog.csdnimg.cn/direct/91eb403af10041aaae4798499dec2e1b.png
查询配置文件:more /etc/ssh/sshd_config |grep PermitRootLogin
https://img-blog.csdnimg.cn/direct/ae05a17bba654c5f9b9794f56be70b89.png
对配置文件举行修改,取消掉行首的解释,然后修改为no即可:
https://img-blog.csdnimg.cn/direct/69d07ef0ba2549c0a3b1b2593fcce671.png
同理,更改完成之后重启服务:systemctl restart sshd
2.4 查抄ssh使用的端口

https://img-blog.csdnimg.cn/direct/03acede85dec49bb9ee4d1789fc9182e.png
查询配置文件:more /etc/ssh/sshd_config |grep Port
https://img-blog.csdnimg.cn/direct/e63d953554b94f65b997c489d53d47aa.png
对配置文件举行修改,改为多少看需求:
https://img-blog.csdnimg.cn/direct/dff1c599446e4e94868c4dcc4b8ee78a.png
这里的自界说的ssh端口还必要额外做点其他的配置:
semanage port -a -t ssh_port_t -p tcp 222   命令semanage port -a -t ssh_port_t -p tcp 222 是在Selinux环境下用于添加一个新的端口界说的命令。下面是对这条命令的简单解析:


[*] semanage 是 Security Enhanced Linux 管理工具,用于管理SELinux策略和配置。
[*] port 子命令用于管理SELinux中端口的范例标签(security context),即指定哪些端口应该被赋予什么样的安全上下文。
[*] -a 选项表示添加(add)一个新的端口界说。
[*] -t ssh_port_t 指定了端口的安全上下文范例(type)。在这个例子中,ssh_port_t 是与SSH服务关联的安全上下文,意味着您希望将端口222标记为与SSH服务雷同的安全级别,允许SSH服务通过这个端口通信。
[*] -p tcp 指定了协议范例为TCP。SELinux规则可以基于协议分别设置,这里指定的就是TCP协议。
[*] 222 是您要添加和配置的端口号。
综上所述,这条命令的作用是告诉SELinux体系,将TCP协议下的222端口标记为ssh_port_t范例,通常这一步骤是为了允许SSH服务或者其他必要雷同安全上下文的服务通过222端口举行通信。这在修改了SSH服务默认监听端口或者设置额外的SSH服务端口时非常有用,确保SELinux不会阻止这些端口的正常通信。
firewall-cmd --zone=public --add-port=222/tcp --permanent   解释如下:


[*] firewall-cmd:是管理Linux防火墙(通常是firewalld服务)的命令行工具。
[*] --zone=public:指定操作的地区为public。Firewalld将网络流量划分到不同的地区,public是默认地区之一,实用于外部网络,如互联网。
[*] --add-port=222/tcp:添加一个端口规则,指定打开TCP协议的222端口。这里直接指定了端口号和协议,不必要像您提到的那样在ssh后面重复端口信息。
[*] --permanent:表示该规则在体系重启后仍旧有用,如果没有这个参数,则规则只会暂时见效,直到下次重启或防火墙规则被刷新。
成功执行此命令后,会开放TCP 222端口用于SSH连接,而且这个更改是持久化的。必要留意的是,如果之前有运行过没有--permanent参数的雷同命令,应当先用firewall-cmd --reload命令来载入永久规则,或者重启firewalld服务使改动见效。
同理,更改完成之后重启服务:systemctl restart sshd
2.5 设置登录超时自动注销

https://img-blog.csdnimg.cn/direct/d7d86f936b3f4239ac6292ffe1dd5446.png
查询配置:more /etc/profile |grep export ,可以看到并未存在相关配置参数
https://img-blog.csdnimg.cn/direct/e67ab155e223472eb18af90abc7bc49e.png
现在手动举行配置修改,直接在文件的末了一行添加 export TMOUT=180 就行:
https://img-blog.csdnimg.cn/direct/41758aed247f4aee80ae5bfaaad33e18.png
留意:等号前后不能有空格
同理,更改完成之后重启服务:systemctl restart sshd
三.权限管理

3.1 查抄默认umask值

https://img-blog.csdnimg.cn/direct/1d02052f77564b1087ee37e8ffb25dee.png
什么是umask值?
   umask值(用户文件创建掩码)是在Linux和其他类Unix体系中使用的一个紧张概念,用于控制用户在创建新文件或目录时,默认赋予这些文件或目录的权限。umask是一个由三个八进制数字组成的值,分别对应文件或目录的用户(owner)、组(group)、其他人(others)的权限位。
每个数字分别代表要从默认的最大权限中移除的权限位。在八进制表示中,数字4表示读权限(r),2表示写权限(w),1表示执行权限(x),而0表示没有任何权限。因此,一个范例的umask值如022,意味着:


[*]第一位0表示用户(owner)没有权限被去除(保持全部权限);
[*]第二位2表示组(group)的写权限被去除;
[*]第三位2同样表示其他人(others)的写权限被去除。
根据这个umask值,新创建的文件默认权限会是666(-rw-rw-rw-)减去022,效果是644(-rw-r--r--),即文件所有者有读写权限,而组和其他用户只有读权限。对于目录,默认是从777开始减去umask值,因此umask 022下的新目录权限会是755(drwxr-xr-x)。
通过调解umask值,体系管理员和用户可以微调体系上的安全策略,限制不必要的访问权限,从而增强体系安全性。umask可以在用户的配置文件中设置,如~/.bashrc或/etc/profile,也可以通过运行umask命令暂时或永久地修改。
 检察配置文件,文件末端并未配置umask值:
https://img-blog.csdnimg.cn/direct/37e6d74050cf48929f0a51b62e679e4f.png
更改配置文件,然后启用见效:source /etc/profile:
https://img-blog.csdnimg.cn/direct/6d3591ccc25849d980772da1e88647b8.png
设置好umask之后,新建文件夹的权限就会按umark分配,此中也包括新建的文件:
https://img-blog.csdnimg.cn/direct/7e626d58216c4688b1ccfe1aea0c892b.png
3.2 查抄紧张目录和文件的权限设置

https://img-blog.csdnimg.cn/direct/b2f98e9b4e754bc79d7738ff24f20e29.png
ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/services /etc/ssh/sshd_config   

[*]/etc/passwd:存储用户账户信息的文件
[*]/etc/shadow:存储用户密码哈希和账户逾期信息等敏感数据的文件
[*]/etc/group:界说用户组信息的文件
[*]/etc/gshadow:雷同于/etc/group,但包罗组密码等敏感信息
[*]/etc/hosts.allow:界说哪些主机被允许访问本机网络服务的访问控制列表文件
[*]/etc/services:界说网络服务与其对应的端口号的文件
[*]/etc/ssh/sshd_config:SSH服务器的配置文件,控制SSH服务的举动和安全设置
3.3 限制可以SU为root的用户

做这一步的目标是防止root密码泄露之后,使用其他低权限账户su,然后举行高危操作:
https://img-blog.csdnimg.cn/direct/93b1d0f894eb4289b2c6cb1f58ca947c.png
检察配置文件,已被解释,存在不合规举动:
https://img-blog.csdnimg.cn/direct/361a64d9610d4118a3f25db3d3ffa444.png
 更改完之后,再su就不可了
https://img-blog.csdnimg.cn/direct/2e10ec5a922a43ccb13d16e50cebb0bd.png
然后,怎样添加用户能够su到root呢:usermod -G wheel <必要添加的用户名>
移除操作命令:gpasswd -d <必要移除的用户名> wheel
四.日志管理

4.1 查抄rsyslog服务启用状态以及对登录事故的记录

https://img-blog.csdnimg.cn/direct/f832a90fab9243f6b3dc925094f4efc5.png
对于/etc/rsyslog.conf文件的解析,可以参考两篇文章:
日志管理-rsyslogd服务(/etc/rsyslog.conf 配置文件)-CSDN博客
Linux 体系日志管理 rsyslogd配置文件 - lizhouwei - 博客园 (cnblogs.com)
检察配置文件:more /etc/rsyslog.conf,是符合规定的。如果没有或者不一致,可以自己配置和添加
https://img-blog.csdnimg.cn/direct/fdcc10ec1f5741a881c2b701c68ed59b.png
校验rsyslog服务状态,确认是否启动:systemctl status rsyslog
若未启动,使用命令:systemctl start rsyslog 开启服务
但是为了以防万一,最好将其添加到开机自启动服务中去:systemctl enable rsyslog
https://img-blog.csdnimg.cn/direct/63ed079d3c8542158a360a1dce219b3b.png
对配置文件及服务修改完成之后,记得重启rsyslog服务:systemctl restart rsyslog
4.2 查抄是否启用记录定时任务举动日志功能

https://img-blog.csdnimg.cn/direct/f385dcab1e84417ca0a5fef98e076e7d.png
检察配置文件:more /etc/rsyslog.conf
https://img-blog.csdnimg.cn/direct/6bf875ca0b1c4938bd33ace1555c06ff.png
如果不符合规定,可以按照这个举行配置修改或添加,然后重启服务:systemctl restart rsyslog
4.3 检察SSH LogLevel设置是否为INFO

https://img-blog.csdnimg.cn/direct/56d16fa68aa345d7a25007c87e389c9f.png
检察配置文件:more /etc/ssh/sshd_config | grep LogLevel,这里固然配置的级别是INFO,但是已经被解释掉了,必要将行首的#删除。
https://img-blog.csdnimg.cn/direct/7cf7fb1e922b4737825c9abd619ad7f8.png
修改完成之后,重启服务:systemctl restart sshd
4.4 是否将/var/log/messages文件设置为只可追加

https://img-blog.csdnimg.cn/direct/db33495671c54f2384d0c45aa0169ae0.png
检察隐蔽权限:lsattr /var/log/messages,这里并未设置只可追加
https://img-blog.csdnimg.cn/direct/353be939bfc74a85a87e2dc513be6892.png
   使用 lsattr 命令,你可以看到文件是否被设置了以下一些特别的属性:


[*]i (Immutable):文件不能被修改、删除或重命名。
[*]a (Append Only):文件只能被追加内容,不能被删除或重写。
[*]S (Sparse file):稀疏文件属性,用于大文件优化存储。
[*]s (Secure Deletion):当文件被删除时,会安全擦除其数据,防止恢复。
[*]u (Undelete):一种“防删除”标志,尽管Linux体系中很少直接支持此特性。
[*]c (Compressed):文件内容被压缩。
[*]d (No dump):在体系备份时,该文件不会被dump程序备份。
[*]e (Extent format):文件使用extent来记录其磁盘空间的分配情况,重要针对大文件优化。
[*]A (No atime updates):访问文件时不更新访问时间戳。
基本用法如下:


[*]检察指定文件或目录的属性:lsattr [选项] 文件或目录
[*]若要检察目录下的所有文件属性(递归),需加上 -R 选项:lsattr -R 目录
 使用命令:chattr +a /var/log/messages,配置日志文件只可追加。
https://img-blog.csdnimg.cn/direct/414dd0102bd8485eb6b8713248ac6ad3.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux 安全基线查抄与加固