当前位置:首页 > 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 noPasswordAuthentication 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
0