随着每个企业越来越依赖于互联网,网络安全日益成为组织焦点。在这方面,Linux系统是一个很好的起点。由于开源、广泛使用、无需授权等特点,Linux系统成为了很多组织和企业的首选操作系统。然而,Linux系统的风险也在不断增加。本文将介绍如何加固和修复Linux系统漏洞,并提供了一些示例代码,帮助您对Linux系统进行更加安全方面的配置。
首先,我们需要重点关注这些方面:用户管理、文件和目录权限、网络和服务器配置以及应用安全。下面将介绍每个方面的详细措施和示例代码。
- 用户管理
强密码
制定一个密码策略,要求用户选择复杂的密码,并且定期更换密码。
#强制用户选择具备最低密码强度的密码
auth requisite pam_passwdqc.so enforce=users
#强制/用户更改自己的密码
auth required pam_warn.so
auth required pam_passwdqc.so min=disabled,disabled,12,8,7
auth required pam_unix.so remember=24 sha512 shadow
禁止root远程登录
建议设置只有具备root权限的用户可以直接进行连接。在/etc/ssh/sshd_config中配置PermitRootLogin为no。
登录超时
超时设置可以确保在空闲一段时间之后自动断开连接。在/etc/profile或~/.bashrc中设置如下:
#设置空闲登陆超时退出时间为300秒
TMOUT=300
export TMOUT
- 文件和目录权限
默认配置
默认配置将允许所有用户都可以查看到所有的文件和目录。在/etc/fstab文件中加入如下内容:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /dev/shm tmpfs defaults,noatime,mode=1777 0 0
确定敏感文件和目录的权限
应该将访问权限限制在特定用户组或个人身上。使用chown和chmod命令来修改文件和目录的权限,下面示例是为某个目录设置只能root用户修改:
#修改某目录只能root用户修改
chown root /etc/cron.deny
chmod 600 /etc/cron.deny
检查SUID、SGID、Sticky Bit位
SUID (Set user ID), SGID(Set group ID),Sticky Bit等位是Linux系统中的一些安全标记,需要定期审计。下面的命令用来查找任何不合格的权限情况:
#查找SUID权限未被使用的文件和目录
find / -perm +4000 ! -type d -exec ls -la {} ; 2>/dev/null
#查找SGID权限未被使用的文件和目录
find / -perm +2000 ! -type d -exec ls -la {} ; 2>/dev/null
#查找粘滞位未设置的目录
find / -perm -1000 ! -type d -exec ls -la {} ; 2>/dev/null
- 网络和服务器配置
防火墙
iptables是Linux中最常用的防火墙应用之一。下面的示例代码阻止了所有进入的访问:
#清空所有规则和链
iptables -F
iptables -X
#允许所有本地进出的通信,并拒绝所有远程的访问
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#添加规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
限制服务访问
一些服务应该仅在本地中运行,被外网访问存在很大的风险。在/etc/hosts.allow、/etc/hosts.deny目录中制定规则,用来限制访问服务的时间,IP等信息。
- 应用程序安全
更新软件包
无论是内核还是用户空间软件,都需要定期更新来解决已知的Bug和漏洞。您可以使用yum、rpm等工具来更新软件包。下面给出示例代码:
#更新已安装的所有软件包
yum -y update
#更新单个软件包
yum -y update <package>
避免使用root用户运行应用
运行应用时,应该使用非特权用户,不要使用root用户运行应用。
编译静态链接库
静态链接库包含了编写应用程序的所有依赖关系,可以避免其他用户篡改依赖包。下面给出示例代码:
#编译静态链接库
gcc -o app app.c -static
结论
Linux系统的安全加固与漏洞修复工作不止于此,但上述措施可以帮助我们加强Linux系统的安全性。需要注意的是,这些措施并不能完全保证系统的安全,组织和企业应该采取多个方面的措施来保证安全。