Linux 系统安全加固
Linux 系统安全加固常用方法
服务网络安全
- 启用防火墙,并确保入口流量都是必须的,禁止无关的 IP 访问目标主机上的服务(端口)
系统软件安全检测
定期扫描系统上安装的软件,确保关键系统命令未被篡改,例如使用
rpm -Va
对所有系统上的软件进行校验,检查是否有软件被篡改rpm -Va
.......T. /usr/src/kernels/3.10.0-1160.114.2.el7.x86_64/virt/lib/Kconfig
.......T. /usr/src/kernels/3.10.0-1160.114.2.el7.x86_64/virt/lib/Makefile
S.5....T. c /root/.bash_profile
S.5....T. c /root/.bashrc
.M....... /var/run/supervisor
missing /etc/filebeat/fields.yml
SM5....T. c /etc/filebeat/filebeat.yml
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
....L.... c /etc/pam.d/smartcard-auth
....L.... c /etc/pam.d/system-auth输出的每一行对应一个文件,前 9 个字符的字符串显示了该文件的属性状态。每个字符的位置代表了特定的属性检查结果。
rpm -Va
对比的是当前系统中文件的状态与 RPM 数据库中记录的文件状态。每个字符的含义:
- 第 1 位 : 文件类型 (S).
如果文件丢失了,则会显示S
(代表文件缺失,”File is missing”)。 - 第 2 位:文件大小 (5)
如果文件大小与 RPM 数据库中的记录不一致,则会显示5
- 第 3 位:文件权限(模式/权限位,M)
如果文件的权限与 RPM 数据库记录的不一致,则会显示M
。 - 第 4 位:文件的所有者 (U)
如果文件的所有者与 RPM 数据库记录的不一致,则会显示U
- 第 5 位:文件所属的组 (G)
如果文件的所属组与 RPM 数据库记录的不一致,则会显示G
- 第 6 位:文件的设备类型 (D)
如果文件的设备类型(如块设备或字符设备)与 RPM 数据库记录的不一致,则会显示D
- 第 7 位:文件的时间戳 (T)
如果文件的修改时间与 RPM 数据库中的记录不一致,则会显示T
。 - 第 8 位:文件的校验和 (5)
如果文件内容的校验和与 RPM 数据库记录的不一致,则会显示5
。 - 第 9 位:文件的符号链接 (L)
如果文件是一个符号链接,并且符号链接目标发生变化,则会显示L
。 - 如果是配置文件,会被标记为
c
- 第 1 位 : 文件类型 (S).
文件加固
文件系统加固
Linux 操作系统中的很多目录都有约定的用途,可能会挂载单独的文件系统,不同用途的目录,对权限的要求不同,从安全角度考量,可以针对文件系统进行一定程度的安全加固。
文件系统的挂载,主要依赖配置文件 /etc/fstab
,此配置会被 mount
、dump
、fsck
等命令使用,其权限应该设置为 644
,属主和属组都应该是 root
。在挂载不同用途的文件系统时,可以根据其用途配置权限限制。以下列出部分示例
可用的挂载选项可以查看
man fatab
、man mount
、man 5 ext4
等内容中的选项,不同的文件系统支持不同的挂载选项,通用的挂载选项(独立于文件系统)可以查看man mount
中的FILESYSTEM-INDEPENDENT MOUNT OPTIONS
部分
/home/
目录下通常是用户家目录,可能会挂载到单独的文件系统,根据其特性,可以配置以下限制nosuid
: 禁止其中的文件/目录配置 SUID 或 SGID 权限nodev
: 禁止其中的设备被内核识别,放置在此目录下的设备可能都是恶意设备,应该被禁止识别并使用noexec
: 禁止此文件系统中的可执行文件执行。
/tmp/
目录也可以设置以下限制nosuid
nodev
noexec
关键文件审计及监控
auditd 审计
可以使用 `auditd` 服务对系统上的关键文件进行审计日志记录关键文件监控
系统上的某些关键文件,如常用可执行文件(/sbin/
下的文件)、关键配置文件等,要监控其是否被恶意修改。可以参考以下方法
find
命令搜索文件修改时间
find
命令的-mtime
可以查找文件的 内容修改时间find
命令的-ctime
可以查找文件的 创建时间/属性修改时间如常用的系统命令不会出现内容的修改和属性的修改,如果出现这些现象,很可能属于恶意篡改,可以使用
find
命令查找或是监控这些变化find /sbin -mtime -1
/sbin
/sbin/init
/sbin/reboot在发现关键文件被篡改后可以及时发送告警。可以使用
stat
命令检查文件变更的更详细信息stat /sbin/init
File: '/sbin/init' -> '../bin/systemd'
Size: 14 Blocks: 0 IO Block: 4096 symbolic link
Device: fd01h/64769d Inode: 9551 Links: 1
Access: (0777/lrwxrwxrwx)
Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:bin_t:s0
Access: 2016-02-03 03:34:57.276589176 -0500
Modify: 2016-02-02 23:40:39.139872288 -0500
Change: 2016-02-02 23:40:39.140872415 -0500
Birth: -为了更好的监控关键文件的篡改,可以在系统运行之初就为其创建一个包含关键文件的
mtimes
和ctimes
信息的数据库,并在系统运行过程中通过脚本检测关键文件的mtimes
和ctimes
并和原始数据库中的信息进行对比已检测文件是否被篡改。通常的 Intrusion Detection System 基本都实现了类似的功能。通常需要关注的可以被
find
检查的其他特殊类型文件和特殊权限还可能包括以下事项:File or Settings Scan Command Problem With File or Settings SUID
find / -perm -4000
Allows anyone to become the file’s owner temporarily while the file is being executed in memory GID
find / -perm -2000
Allows anyone to become a group member of the file’s group temporarily while the file is being executed in memory. rhost files
find /home -name .rhosts
Allows a system to trust another system completely. It should not be in /home
directories.Ownerless files
find / -nouser
Indicates files that are not associated with any username. Groupless files
find / -nogroup
Indicates files that are not associated with any group name.
Viruses
ClamAV
ClamAV 是一个开源并免费的 Linux 杀毒(Antivirus Software)软件。
Rootkit
chkrootkit
chkrootkit
是 Linux 上常用的检测 rootkit
的工具,这个工具的结果需要更深入的分析,它可能出错
chkrootkit | grep INFECTED |
Rootkit Hunter
Rootkit Hunter 是另一个比较出名的 rootkit
检测工具
Intrusion Detection and Prevention System
入侵检测和防御系统 可以监控系统上的活动并找到潜在的恶意活动或者进程并报告相关活动。Linux 上常用的入侵检测系统有
aide
: Advanced Intrusion Detection Environment.snort
tripwire