#11、配置iptables和TCPWrappers。
iptables 是一个Linux内核提供的,运行在用户空间的程序,它允许用户配置自己的防火墙策略。我们可以使用防火墙将不必要的流量过滤出去。使用 iptables 能够避免很多拒绝服务(DoS)攻击。
#12、内核配置文件优化(/etc/sysctl.conf)。
/etc/sysctl.conf 文件用来修改服务器的运行时内核参数配置。Linux在启动时从配置文件中读取相关配置,一般内容如下:
# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
#13、合理安排磁盘分区。
将不同的系统文件分配到不同的磁盘分区上有助于构建一个安全的系统,确保下面这些文件目录都被挂在到单独的磁盘分区上。
/usr
/home
/var、/var/tmp
/tmp
为Apache和FTP服务的根目录创建单独的分区,检查 /etc/fstab 文件确保增加了以下配置
noexec:该分区不允许执行任何二进制文件(但是允许脚本运行)。
nodev:该分区不允许字符设备或特殊设备。
nosuid:该分区不允许设置SUID/SGID。
下面的例子限制用户进入到 /dev/sda5 中。
/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
#13.1、磁盘配额。
确保对所有用户都启用了磁盘配额限制,实现磁盘配额的具体步骤可以查看这里。
#14、关闭IPv6。
IPv6提供替代IPv4的新的TCP/IP协议,但是目前还没有太好的工具来检查IPv6网络的安全性。大多数Linux发行版开始默认使用IPv6协议。而黑客可以利用IPv6网络来发送一些管理员无法监测的内容,除非是网络配置需要,否则禁止使用IPv6。
#15、禁用不需要的SUID和SGID二进制。
所有启用了SUID和SGID位的二进制文件可能会造成系统的安全问题或者BUG,从而让所有本地或远程的用户使用这些文件。下面的命令可以找到这些文件
#See all set user id files:
find / -perm +4000
#See all group id files:
find / -perm +2000
#或者一起查询
find / \(-perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls
#15.1、World-Writable文件。
因为安全原因,所有人都可以修改World-Writable文件,使用下面的命令可以找到所有此类文件。
# find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
#15.2、无属主文件。
如果一个文件没有任何的用户或者组权限,那么可能会造成安全问题,使用下面的问题来找到此类文件,并进行后续的修复。
# find /dir -xdev \( -nouser -o -nogroup \) -print
#16、使用集中的授权服务。
如果没有集中的授权认证系统,用户的权限数据将会变得不完成,从而导致一些过期的口令或者不用的用户一直保留下来。集中地授权认证服务允许我们控制Linux/Unix用户和授权数据,不要使用 NIS 服务,OpenLDAP是一个很好的选择。
#17、日志和审计。
为了收集黑客攻击行为,我们需要配置系统的日志和审计功能。默认情况下,syslog在 /var/log 目录下记录数据。这些数据也能帮助我们发现那些容易导致系统遭受攻击的错误配置,可以参考 这个文章 来了解更多的内容。
#17.1、使用Logwatch 或 Logcheck 监控可疑的日志信息。
使用 Logwatch 或者 Logchek 读取日志文件,这些工具改善了阅读日志文件的体验。他们会将结果以邮件的形式进行报告,而我们只需要检查日志中的不常见项目就可以了。
#17.2、使用 auditd 服务。
auditd是系统提供的审计服务,负责将审计数据记录到磁盘中。在服务器启动期间,/et/audit/audit.rules的规则会被应用。我们修改配置文件来定义日志存放位置以及其他的选项。使用这个服务可以解决以下问题:
1、系统启动和关闭时间(reboot/halt)
2、事件的日期和时间
3、事件用户
4、事件类型
5、事件是否成功
6、记录事件发生变化的日期和时间
7、找出修改系统网络配置的账户
8、记录修改用户/用户组信息的事件
9、记录文件修改信息
具体可以查看这篇文章了解更多内容。
#18、加固 OpenSSH 服务器。
SSH协议经常用来进行远程登录和文件传输,同时SSH也是暴露在外的,使用以下方法可以对OpenSSH服务器进行加固。
#19、安装和使用入侵检测系统。
网络入侵检测系统可以检测到恶意的活动或者拒绝服务共计、端口扫描等类似的黑客行为。最好在系统上线前能够部署一套类似的系统,如果可能在系统接入网络前就安装配置好。AIDE就是一个非常好的例子。Snort也可以用来做实时的网络流量分析和入侵检测。
#20、保护文件、目录和邮件。
Linux系统提供了非常好的非授权的数据访问保护机制。文件权限和MAC确保数据不会被未授权的用户访问。但是,如果黑客具有物理的访问途径,那他还是能够很容易通过其他方式访问磁盘上的数据。我们可以使用将文件进行加密、使用密码、加密文件夹等方式来保护我们的重要数据。