保证Linux的网络安全需要从系统配置、访问控制、服务加固、监控审计等多个层面入手,构建多层防护体系,避免系统遭受恶意攻击、数据泄露等安全问题。

基础系统安全配置
首先要保证系统本身的基础安全,及时修复已知漏洞是最基础的操作。需要定期更新系统软件包,避免使用存在安全缺陷的旧版本组件。
可以执行以下命令更新系统软件包:
# 基于Debian/Ubuntu系统更新命令 sudo apt update sudo apt upgrade -y # 基于RHEL/CentOS系统更新命令 sudo yum update -y # 或者新版本使用dnf sudo dnf update -y
同时要关闭系统中不必要的服务,减少攻击面。可以通过systemctl命令查看当前运行的服务,禁用不需要的服务:
# 查看所有服务状态 systemctl list-units --type=service --all # 禁用不必要的服务,例如telnet服务 sudo systemctl disable telnet.socket sudo systemctl stop telnet.socket
配置防火墙限制网络访问
防火墙是Linux网络安全的第一道防线,常用的防火墙工具包括iptables和firewalld,可以根据需求选择合适的工具进行配置。
使用firewalld配置防火墙
firewalld是很多现代Linux发行版默认的防火墙管理工具,使用区域概念管理规则,配置更加灵活。
# 启动firewalld服务并设置开机自启 sudo systemctl start firewalld sudo systemctl enable firewalld # 查看当前活跃的区域 sudo firewall-cmd --get-active-zones # 允许SSH服务通过防火墙,永久生效 sudo firewall-cmd --zone=public --add-service=ssh --permanent # 允许指定端口的访问,例如开放8080端口 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 删除不必要的开放端口,例如关闭不使用的3306端口 sudo firewall-cmd --zone=public --remove-port=3306/tcp --permanent # 重新加载防火墙规则使配置生效 sudo firewall-cmd --reload # 查看当前防火墙规则 sudo firewall-cmd --zone=public --list-all
使用iptables配置防火墙
iptables是更底层的防火墙工具,适合需要精细化控制规则的场景,以下是基础的安全规则配置示例:
# 清除现有规则 sudo iptables -F sudo iptables -X # 设置默认策略,拒绝所有入站流量,允许所有出站流量 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT # 允许本地回环接口的流量 sudo iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接和相关连接的流量 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许SSH端口的访问,假设SSH端口为22 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许HTTP和HTTPS端口的访问 sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 保存iptables规则,不同系统保存方式不同 # Ubuntu系统 sudo iptables-save > /etc/iptables/rules.v4 # RHEL/CentOS系统 sudo service iptables save
加固SSH服务安全
SSH是Linux系统远程管理的常用服务,也是攻击者重点攻击的目标,需要对其进行针对性加固。
首先修改SSH的默认配置文件/etc/ssh/sshd_config,调整以下配置项:
# 禁止root用户直接登录 PermitRootLogin no # 修改SSH默认端口,避免使用22端口 Port 2222 # 禁止使用密码登录,仅允许密钥登录 PasswordAuthentication no PubkeyAuthentication yes # 设置登录超时时间 ClientAliveInterval 300 ClientAliveCountMax 2 # 限制最大登录尝试次数 MaxAuthTries 3
修改完成后重启SSH服务使配置生效:
sudo systemctl restart sshd
如果需要使用密钥登录,可以在客户端生成密钥对,然后将公钥上传到服务器的~/.ssh/authorized_keys文件中:
# 客户端生成密钥对 ssh-keygen -t rsa -b 4096 # 将公钥上传到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 用户名@服务器IP
启用SELinux增强访问控制
SELinux是Linux内核的强制访问控制机制,能够限制进程的权限,即使服务被攻破,也能限制攻击者的操作范围。
首先检查SELinux的状态:
getenforce # 输出Enforcing表示已启用,Permissive表示仅记录不拦截,Disabled表示已禁用
如果SELinux处于禁用状态,可以修改/etc/selinux/config文件启用它:
# 修改SELINUX参数为enforcing SELINUX=enforcing # 重启系统后生效
日常使用中可以根据需求调整SELinux的策略,例如允许HTTP服务访问指定目录:
# 查看目录的SELinux上下文 ls -Z /data/web # 修改目录的SELinux上下文,允许httpd进程访问 sudo semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?" sudo restorecon -Rv /data/web
日志监控与入侵检测
定期查看系统日志能够及时发现异常访问行为,Linux系统的日志默认存放在/var/log目录下,重点关注的日志包括:
/var/log/auth.log或/var/log/secure:记录认证相关的日志,包括SSH登录记录/var/log/syslog或/var/log/messages:记录系统通用日志/var/log/kern.log:记录内核相关日志
可以使用fail2ban工具自动封禁多次尝试登录失败的IP,减少暴力破解的风险:
# 安装fail2ban # Debian/Ubuntu系统 sudo apt install fail2ban -y # RHEL/CentOS系统 sudo dnf install fail2ban -y # 复制默认配置文件生成自定义配置 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 编辑jail.local文件,启用SSH防护 [sshd] enabled = true port = 2222 # 对应SSH实际端口 filter = sshd logpath = /var/log/auth.log # Debian/Ubuntu系统路径 # logpath = /var/log/secure # RHEL/CentOS系统路径 maxretry = 3 bantime = 3600 # 启动fail2ban服务并设置开机自启 sudo systemctl start fail2ban sudo systemctl enable fail2ban # 查看fail2ban状态 sudo fail2ban-client status sudo fail2ban-client status sshd
定期备份与应急响应
即使做好了所有防护措施,也不能完全避免安全事件的发生,因此需要定期备份重要数据,同时制定应急响应预案。
可以使用rsync工具定期备份重要数据到远程服务器或本地存储:
# 备份/data目录到远程服务器的/backup目录 rsync -avz --delete /data/ 用户名@192.168.0.1:/backup/data/
当发现系统出现异常时,首先要隔离受影响的系统,避免攻击扩散,然后收集相关日志和证据,分析攻击来源和影响范围,最后进行系统修复和漏洞修补。