当前位置:首页 > Linux > 正文

linux如何安装防火墙

Linux中,可通过安装iptables、firewalld或Gufw等工具来搭建防火墙

Linux系统中,防火墙是保障网络安全的重要工具,以下是如何在Linux中安装和配置防火墙的详细指南:

linux如何安装防火墙 第1张

选择防火墙工具

防火墙工具 特点 适用系统
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,可通过之前保存的规则文件恢复:

    linux如何安装防火墙 第2张

    linux如何安装防火墙 第3张

    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

0