在Linux系统中,搭建强固的防火墙是确保系统安全的重要步骤。通过合理配置防火墙规则,可以有效防范网络攻击、限制不必要的访问,并保障系统的稳定性。本文将详细介绍基础防火墙配置的步骤和示例代码,以帮助管理员提升系统的安全性。
firewall-cmd 是基于 firewalld 的命令行工具,用于配置 iptables 防火墙规则。
- # 示例代码:启用 firewalld 服务
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
-
- # 示例代码:查看防火墙状态
- sudo firewall-cmd --state
-
- # 示例代码:查看已开放端口
- sudo firewall-cmd --list-ports
-
- # 示例代码:开放端口
- sudo firewall-cmd --add-port=80/tcp --permanent
- sudo firewall-cmd --reload
-
- # 示例代码:关闭端口
- sudo firewall-cmd --remove-port=80/tcp --permanent
- sudo firewall-cmd --reload
-
- # 示例代码:允许特定IP访问
- sudo firewall-cmd --add-source=192.168.1.2 --permanent
- sudo firewall-cmd --reload
-
- # 示例代码:拒绝特定IP访问
- sudo firewall-cmd --add-source=192.168.1.3 --permanent --zone=drop
- sudo firewall-cmd --reload
-
- # 示例代码:配置端口转发
- sudo firewall-cmd --add-forward-port=80:internal_ip:80 --permanent
- sudo firewall-cmd --reload
-
- # 示例代码:开放SSH服务
- sudo firewall-cmd --add-service=ssh --permanent
- sudo firewall-cmd --reload
-
- # 示例代码:开启防火墙日志
- sudo firewall-cmd --set-log-denied=all
- sudo firewall-cmd --reload
-
- # 示例代码:定制富规则
- sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.2" drop' --permanent
- sudo firewall-cmd --reload
-
对于熟悉传统 iptables 的管理员,也可以使用 iptables 命令进行防火墙配置。
- # 示例代码:开放端口
- sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- sudo service iptables save
- sudo service iptables restart
-
- # 示例代码:备份防火墙规则
- sudo firewall-cmd --zone=public --list-all > firewall-backup.xml
-
- # 示例代码:恢复防火墙规则
- sudo firewall-cmd --restore < firewall-backup.xml
- sudo firewall-cmd --reload
-
fail2ban 是一个基于日志文件的入侵防御工具,它可以监控系统日志,自动封锁恶意的IP地址。
- # 示例代码:安装fail2ban
- sudo yum install epel-release
- sudo yum install fail2ban
-
- # 示例代码:启动并配置fail2ban
- sudo systemctl start fail2ban
- sudo systemctl enable fail2ban
-
- # 示例代码:配置端口转发
- sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination internal_ip:80
- sudo iptables -t nat -A POSTROUTING -j MASQUERADE
- sudo service iptables save
- sudo service iptables restart
-
- # 示例代码:创建ipset集合
- sudo ipset create blocked_ips hash:ip
-
- # 示例代码:添加IP到集合
- sudo ipset add blocked_ips 192.168.1.2
-
- # 示例代码:使用ipset阻止IP
- sudo iptables -A INPUT -m set --match-set blocked_ips src -j DROP
- sudo service iptables save
- sudo service iptables restart
-
- # 示例代码:开放IPv6端口
- sudo firewall-cmd --add-port=80/tcp --permanent --zone=public
- sudo firewall-cmd --reload
-
SELinux 是Linux内核的安全模块,可以提供更强大的安全策略。
- # 示例代码:查看SELinux状态
- sudo sestatus
-
- # 示例代码:禁用SELinux
- sudo setenforce 0
-
/etc/hosts.allow 和 /etc/hosts.deny 可以用于配置TCP Wrapper规则,限制允许和拒绝的访问。
- # 示例代码:仅允许特定IP访问SSH
- echo "sshd: 192.168.1.2" | sudo tee -a /etc/hosts.allow
- echo "sshd: ALL" | sudo tee -a /etc/hosts.deny
-
- # 示例代码:查看防火墙规则
- sudo iptables -L -n
-
- # 示例代码:查看firewalld规则
- sudo firewall-cmd --list-all
-
- # 示例代码:开启连接跟踪
- sudo modprobe nf_conntrack
-
- # 示例代码:查看连接跟踪表
- sudo cat /proc/net/nf_conntrack
-
- # 示例代码:使用iptables限制连接速率
- sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 32 -j DROP
- sudo service iptables save
- sudo service iptables restart
-
在搭建基础防火墙规则以保障Linux系统安全方面,本文提供了丰富而详细的示例代码,助力管理员深入了解和配置系统防火墙。从基础的端口管理、IP地址允许和拒绝,到更高级的防火墙配置、IPv6规则、SELinux和TCP Wrapper,本文深入介绍了多种工具和技术,使得管理员能够全面地提升系统的安全性。
通过 firewall-cmd、iptables 以及其他工具的灵活应用,管理员可以定制防火墙规则,限制不必要的访问,防范网络攻击。fail2ban 的引入增加了对恶意IP的自动封锁,提高了系统的主动防御能力。此外,学习如何配置端口转发、使用ipset管理IP集合、设置IPv6规则,以及定期审查和优化防火墙规则,都是提高系统安全性的关键步骤。
对于更高级的安全需求,本文还介绍了使用 SELinux 增强系统安全性、配置TCP Wrapper限制访问、设置连接跟踪规则以及限制连接速率等技术。这些工具和技术的综合使用,为管理员提供了多层次、全方位的系统安全保障。总体而言,通过不断学习和实践这些防火墙配置技巧,管理员将更有信心、更灵活地维护和提升Linux系统的安全性。