Linux系统中,防火墙是保障网络安全的重要工具,以下是如何在Linux中安装和配置防火墙的详细指南:
选择防火墙工具
防火墙工具 | 特点 | 适用系统 |
---|---|---|
iptables | 经典命令行工具,灵活性高,适合精细化控制 | 所有Linux发行版 |
firewalld | 动态管理工具,支持区域(zone)配置,简化操作 | CentOS/RHEL/Fedora等Red Hat系 |
UFW | 简单易用的命令行工具,适合Ubuntu/Debian系 | Ubuntu/Debian系 |
nftables | 新一代防火墙框架,性能更强,支持复杂规则 | 较新Linux内核(需手动安装) |
安装与配置步骤
使用iptables
安装与检查
# 检查是否已安装 sudo iptables -L # 安装iptables(CentOS/RHEL系) sudo yum install iptables iptables-services -y # 安装iptables(Debian/Ubuntu系) sudo apt-get install iptables -y
配置规则
# 清空现有规则 sudo iptables -F # 允许已建立的连接通过 sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许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 # 丢弃其他所有输入流量 sudo iptables -P INPUT DROP
保存规则
# 保存规则到文件 sudo iptables-save > /etc/iptables/rules.v4 # 设置开机自启 sudo systemctl enable iptables sudo systemctl start iptables
使用firewalld
安装与启动
# 检查是否已安装 sudo firewall-cmd --state # 安装firewalld(CentOS/RHEL系) sudo yum install firewalld -y # 启动并设置开机自启 sudo systemctl start firewalld sudo systemctl enable firewalld
配置规则
# 查看当前区域 sudo firewall-cmd --get-active-zones # 将接口加入公共区域(例如eth0) sudo firewall-cmd --zone=public --add-interface=eth0 --permanent # 允许特定IP访问 sudo firewall-cmd --zone=public --add-source=192.168.1.100/32 --permanent # 允许HTTP/HTTPS端口 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent # 禁止特定端口(例如关闭所有TCP端口) sudo firewall-cmd --zone=public --remove-port=1-65535/tcp --permanent # 重新加载配置 sudo firewall-cmd --reload
使用UFW(适用于Ubuntu/Debian)
安装与启用
# 检查状态 sudo ufw status # 启用UFW sudo ufw enable # 设置开机自启 sudo ufw enable
配置规则
# 允许SSH sudo ufw allow 22/tcp # 允许HTTP/HTTPS sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 拒绝特定IP sudo ufw deny from 192.168.1.101 # 重启UFW以应用规则 sudo ufw reload
安全优化建议
优化项 | 操作方法 |
---|---|
限制SSH访问 | 修改/etc/ssh/sshd_config ,设置PermitRootLogin no 和PasswordAuthentication no ,重启SSH服务 |
更改SSH端口 | 在/etc/ssh/sshd_config 中修改Port 为非标准端口(如10000以上),重启SSH服务 |
禁用ICMP请求 | 执行echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all ,防止服务器响应ping请求 |
日志监控 | 启用rsyslog 服务(sudo systemctl enable rsyslog ),记录防火墙日志以便分析 |
常见问题与解答(FAQs)
问题1:如何恢复误删的防火墙规则?
- 解答:
若使用iptables
,可通过之前保存的规则文件恢复:sudo iptables-restore < /etc/iptables/rules.v4
若使用
firewalld
,可重新加载运行时配置:sudo firewall-cmd --runtime-to-permanent
问题2:如何临时关闭防火墙而不删除规则?
- 解答:
- iptables:停止服务但保留规则:
sudo systemctl stop iptables
- firewalld:停止服务但保留规则:
sudo systemctl stop firewalld
- UFW:禁用防火墙:
sudo ufw disable
- iptables:停止服务但保留规则:
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/59316.html