在Linux系统中配置网络安全审计,核心是通过系统自带的审计工具和日志服务,记录网络访问、权限变更、敏感操作等关键行为,为后续的安全分析和问题追溯提供可靠依据。常见的配置方案主要围绕auditd服务、syslog日志收集和SELinux审计规则三个部分展开。

一、安装并启动auditd审计服务
auditd是Linux系统默认的审计守护进程,负责收集系统调用、文件访问、网络连接等行为的审计记录,大多数主流Linux发行版都默认预装了该服务,若未安装可通过包管理器手动安装。
1.1 安装auditd
不同发行版的安装命令如下:
# CentOS/RHEL系统 yum install audit -y # Ubuntu/Debian系统 apt-get install auditd -y
1.2 启动并设置开机自启
安装完成后启动auditd服务,并配置开机自动启动:
# 启动服务 systemctl start auditd # 设置开机自启 systemctl enable auditd # 查看服务运行状态 systemctl status auditd
二、配置auditd审计规则
auditd的审计规则分为系统内置规则和自定义规则,自定义规则可以满足网络安全审计的特定需求,比如记录所有网络连接、敏感文件访问、特权命令执行等行为。
2.1 临时添加审计规则
使用auditctl命令可以临时添加审计规则,重启auditd服务后规则会失效,适合测试场景:
# 记录所有对/etc/passwd文件的写操作 auditctl -w /etc/passwd -p wa -k passwd_change # 记录所有ssh登录相关的网络连接 auditctl -a always,exit -F arch=b64 -S connect -F exe=/usr/bin/ssh -k ssh_connect # 记录所有使用sudo命令的操作 auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
规则参数说明:-w指定监控的文件路径,-p指定权限类型(r读、w写、x执行、a属性变更),-k是自定义的规则标签,方便后续筛选日志;-a指定规则的添加位置和触发条件,-F是过滤条件,-S指定系统调用类型。
2.2 永久配置审计规则
若需要规则永久生效,需要将规则写入/etc/audit/rules.d/目录下的规则文件,系统重启后会自动加载该目录下的所有规则文件。
创建自定义规则文件:
vim /etc/audit/rules.d/security_audit.rules
在文件中添加以下内容:
# 监控敏感配置文件变更 -w /etc/passwd -p wa -k passwd_change -w /etc/shadow -p wa -k shadow_change -w /etc/ssh/sshd_config -p wa -k ssh_config_change # 记录所有网络连接行为 -a always,exit -F arch=b64 -S connect -k network_connect -a always,exit -F arch=b32 -S connect -k network_connect # 记录特权命令执行 -w /usr/bin/sudo -p x -k sudo_exec -w /usr/bin/su -p x -k su_exec # 设置缓冲区大小,避免审计日志丢失 -b 8192 # 设置审计日志文件大小上限,单位MB --max-log-size 100 # 日志满时采取的动作,1为旋转日志,0为忽略,2为崩溃 --max-log-size-action 1
保存文件后,重启auditd服务加载规则:
systemctl restart auditd
三、配置syslog收集网络相关日志
除了auditd的审计记录,系统自带的syslog服务(rsyslog或syslog-ng)可以收集网络服务、防火墙、登录行为等相关日志,补充审计维度。
3.1 配置rsyslog收集网络日志
编辑rsyslog配置文件:
vim /etc/rsyslog.conf
在文件末尾添加以下内容,将网络相关日志单独存储到指定文件:
# 收集ssh登录日志 authpriv.* /var/log/secure # 收集防火墙日志,需要提前配置iptables或firewalld输出日志到syslog kern.warning /var/log/firewall.log # 收集网络连接相关日志 daemon.* /var/log/network.log
重启rsyslog服务使配置生效:
systemctl restart rsyslog
3.2 配置防火墙输出审计日志
以firewalld为例,添加规则记录被拒绝的网络连接:
# 添加规则记录被拒绝的入站连接 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" drop log prefix="firewall_drop: " level="warning"' # 重新加载防火墙规则 firewall-cmd --reload
四、配置SELinux审计规则(可选)
若系统开启了SELinux,可以通过配置SELinux的审计规则,记录违反SELinux安全策略的操作,进一步补充安全审计维度。
4.1 查看SELinux状态
getenforce # 输出Enforcing表示SELinux处于强制模式,Permissive表示宽容模式,Disabled表示关闭
4.2 配置SELinux审计规则
使用semanage命令添加SELinux审计规则,比如记录所有对httpd服务的网络访问拒绝行为:
# 安装semanage工具(CentOS系统) yum install policycoreutils-python -y # 添加规则记录httpd的网络连接拒绝行为 semanage auditallow -a -s httpd_t -t http_port_t -c tcp_socket -p name_connect -l all
五、审计日志查看与分析
配置完成后,可以通过对应的工具查看和分析审计日志,快速定位异常行为。
5.1 查看auditd审计日志
auditd的日志默认存储在/var/log/audit/audit.log,可以使用ausearch命令按标签筛选日志:
# 查看所有sudo执行记录 ausearch -k sudo_exec # 查看所有网络连接记录 ausearch -k network_connect # 查看指定时间段的审计记录 ausearch -ts today -k passwd_change
也可以使用aureport命令生成审计报告:
# 生成所有审计事件的汇总报告 aureport # 生成登录相关的审计报告 aureport -l # 生成网络连接相关的审计报告 aureport -n
5.2 查看syslog网络日志
直接查看对应路径的日志文件即可:
# 查看ssh登录日志 tail -f /var/log/secure # 查看防火墙日志 tail -f /var/log/firewall.log
六、审计配置的优化建议
- 定期清理过期的审计日志,避免占用过多磁盘空间,可以通过配置
logrotate实现审计日志的自动轮转。 - 根据系统实际业务场景调整审计规则,避免记录过多无用的日志,影响系统性能和分析效率。
- 将审计日志定期同步到远程日志服务器,避免本地日志被篡改,保证审计记录的可靠性。
- 定期对审计日志进行分析,识别异常访问和操作行为,及时优化系统安全策略。