【Linux基线检查】


前言

为保障服务器的安全性,通常需要对服务器做一些安全配置,现介绍一下Linux部分的安全配置,以下命令适用于Centos。
在这里插入图片描述


一、账户密码安全

要求 操作步骤
不应存在除root之外UID为0的用户 (1)输入命令awk -F: ‘($3 == 0) {print}’ /etc/passwd 确保只有root用户UID为0(2)如果有则运行sudo userdel –r username删除
修改默认账户的默认密码,不能存在空密码用户 (1) 修改密码:sudo passwd username(2)检查密码字段是否为空:sudo awk -F: ‘($2 == “”) {print}’ /etc/shadow
应及时删除或停用多余的、过期的账户,避免共享账户的存在,将无用账户删除 (1)查看可登录账户:sudo cat /etc/passwd 、 awk -F: ‘KaTeX parse error: Undefined control sequence: \/ at position 6: 7 ~ /\̲/̲bin\/(bash|sh|z…/ {print $1}’(2) 禁用账户:sudo usermod -L username(3) 删除账户:sudo userdel –r username
密码的生命周期最大为 90 天,密码可以被立即修改,密码的最小长度为 8 位,密码到期的提醒,一般建议 7 天 (1)查看并修改 login.defs 文件:vim /etc/login.defs(2)检查并修改如下内容:PASS_MAX_DAYS 90 #一个密码可使用的最大天数、PASS_MIN_DAYS 0 #两次密码修改之间最小的间隔天数、PASS_MIN_LEN 8 #密码最小长度、PASS_WARN_AGE 7 #密码过期前给出警告的天数
使用复杂的密码策略,应包含大小写字母,数字和特殊字符(如!@#¥&*),避免使用连续字符或重复字符,密码长度应不小于8个字符。 (1) 检查/etc/pam.d/password-auth和/etc/pam.d/system-auth,确认已包含支持pam_pwquality.so模块(2)编辑/etc/security/pwquality.conf文件,包含如下配置:retry=3 //最多允许3次重试输入密码、minlen=8 //密码最小长度为8个字符、difok=3 //密码中至少有3个字符不能与前面密码中的字符相同、ucredit=-1 //至少包含一个大写字母、lcredit=-1 //至少包含一个小写字母、dcredit=-1 //至少包含一个数字、ocredit=-1 //至少包含一个特殊字符、maxrepeat=0 //不允许字符重复、maxsequence=0 //不允许字符连续序列

二、文件和目录权限

要求 操作步骤
对于系统重要文件,为每个用户和用户组分配适当的权限,并避免过度授权。 (1)查看关键目录的用户对应权限参考命令:ls -l /etc/passwd /etc/shadow /etc/group /etc/hosts(2)参考配置操作:通过chmod命令对目录的权限进行实际设置。1、/etc/passwd /etc/group所有用户都可读,root用户可写 、配置命令:chmod 644 /etc/passwd /etc/group、2、/etc/shadow /etc/hosts只有root可读 、配置命令:chmod 600 /etc/shadow /etc/hosts、3、个别特殊环境,对文件进行锁定、chattr +i /etc/passwd、chattr +i /etc/shadow
Web等应用应设置站点文件访问权限,避免目录遍历。 管理员根据系统配置
站点配置文件仅限管理员查阅、修改。 管理员根据系统配置

三、访问控制

要求 操作步骤
确定适当的umask值,一般而言,推荐的默认值为022,它会为新创建的文件设置644权限,为新创建的目录设置755权限。 (1)编辑~/.bashrc(仅适用于当前用户)或/etc/profile(适用于系统中的所有用户)。(2)在配置文件中添加或修改umask设置,如果没有,则添加以下行:umask 022(将022替换为您希望使用的umask值。)(3)重新加载配置文件,使更改生效:source ~/.bashrc或者source /etc/profile
禁用或限制远程登录访问权限,仅允许授权用户使用。实施虚拟专用网络 (VPN) 或其他安全通道来保护远程访问连接。 (1)编辑/etc/ssh/ssh_config或者/etc/ssh/sshd_confi文件(ssh_config是客户端配置文件,sshd_config是服务器配置文件),增加如下配置内容(注释内容仅做参数解释,不需在配置文件体现):PermitRootLogin no //禁用root用户的远程登录、AllowUsers user1 user2 //允许登录的用户LogLevel INFO //记录登入登出日志、Protocol 2 //启用SSH v2、MaxAuthTries 5 //密码尝试失败最大次数为5、PermitEmptyPasswords no //禁用SSH空密码用户登录、ClientAliveInterval 1800 //30分钟空闲会话退出、ClientAliveCountMax 0 //空闲会话结束前不发送确认(2)重新启动SSH服务器,以使更改生效:sudo service ssh restart 或者sudo systemctl restart sshd
如果存在文件共享,应禁止匿名访问共享。 (1)对于Samba共享:编辑/etc/samba/smb.conf文件。对于NFS共享:编辑/etc/exports文件。(2)找到共享配置部分,共享配置通常以方括号[sharename]开始,找到或添加以下行:guest ok = no
查找未授权的SUID/SGID文件,调整非重要文件权限 命令:find / -type f –perm /6000 2>/dev/null、若存在非重要文件,可使用:chmod 644 “文件名” 命令、修改文件的权限
开启系统防火墙,并设置服务开启自启动 (1)检查防火墙状态:sudo firewall-cmd –state(2)如果防火墙当前未运行,启动防火墙:sudo systemctl start firewalld(3)设置防火墙开机启动:sudo systemctl enable firewalld

四、安全审计和日志记录

要求 操作步骤
启用日志安全审计功能,监控并记录关键事件和活动,日志至少保存180天。 (1)Centos检查是否开启系统日志:ps -aux|grep syslog 、若果没有开启,则安装并运行服务:sudo yum install rsyslog、sudo systemctl start rsyslog(2)检查syslog服务是否在启动服务器的时候开启。systemctl is-enabled rsyslog:设置开机自启:systemctl enable rsyslog(3)启动 auditd 服务: systemctl start auditd
确保日志文件的保留和定期备份,以便后续调查和审计。 管理员配置

五、开放端口和服务限制

应严格限制开放的端口及服务,仅开放必要的端口。
包括但不限于以下风险端口,不应对外开放。内部远程使用ssh(22).

风险端口清单 协议
20/21 ftp
22 ssh
23 telnet
25 smtp
53 dns
111 rpc
1433 sqlserver
3306 mysql
161/162 snmp
2049 网络文件系统(nfs)

操作步骤:

(1)查看当前系统上开放的端口和运行的服务:
sudo ss –tunlp
禁用不必要的服务:
sudo systemctl disable “服务名称”
(2)配置防火墙规则,允许必要的端口和服务,例如:
开放服务:
sudo firewall-cmd --zone=public --add-service=服务名 –permanent
关闭服务:
sudo firewall-cmd --zone=public --remove-service=服务名 –permanent
开放端口:
sudo firewall-cmd --zone=public --add-port=<端口号>/<协议类型> --permanent
关闭端口:
sudo firewall-cmd --zone=public --remove-port=<端口号>/<协议类型> --permanent
根据具体需求,添加或删除其他端口和服务
(3)重新加载防火墙规则:
sudo firewall-cmd –reload
(4)查看 firewalld 规则:
sudo firewall-cmd --list-all

总结

Ubuntu的命令和Centos差不多,可以对照要求自行修改,就没列举了。

猜你喜欢

转载自blog.csdn.net/qq_61872115/article/details/131462387