上一篇
如何配置linux下的防火墙
- Linux
- 2025-08-08
- 4
Linux下配置防火墙,通常使用
iptables
或
firewalld
,
iptables
通过命令行规则设置,而
firewalld
提供更友好的界面和区域管理。
Linux系统中,配置防火墙是确保系统安全的重要步骤,以下是详细的配置指南,涵盖常见的防火墙工具如iptables
、firewalld
和nftables
。
使用iptables
配置防火墙
iptables
是一个强大的命令行工具,用于配置Linux内核中的网络包过滤规则。
安装iptables
大多数Linux发行版默认安装了iptables
,如果没有,可以通过以下命令安装:
sudo apt-get install iptables # Debian/Ubuntu sudo yum install iptables # CentOS/RHEL
基本规则配置
- 查看当前规则:
sudo iptables -L -v
- 清除所有规则:
sudo iptables -F
- 设置默认策略:
sudo iptables -P INPUT DROP # 默认丢弃所有进入的流量 sudo iptables -P FORWARD DROP # 默认丢弃所有转发的流量 sudo iptables -P OUTPUT ACCEPT # 默认允许所有外出的流量
添加规则
- 允许本地回环接口(lo)的所有流量:
sudo iptables -A INPUT -i lo -j ACCEPT
- 允许SSH访问(假设端口22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 允许HTTP/HTTPS访问(端口80和443):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
保存规则
- Debian/Ubuntu:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
- CentOS/RHEL:
sudo service iptables save
使用firewalld
配置防火墙
firewalld
是一个动态的防火墙管理工具,支持区域(zone)概念,适合需要动态管理防火墙的场景。
安装firewalld
sudo apt-get install firewalld # Debian/Ubuntu sudo yum install firewalld # CentOS/RHEL
启动并启用firewalld
sudo systemctl start firewalld sudo systemctl enable firewalld
配置默认区域
- 查看当前区域:
sudo firewall-cmd --get-default-zone
- 更改默认区域:
sudo firewall-cmd --set-default-zone=public
添加规则
- 允许SSH访问:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
- 允许HTTP/HTTPS访问:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
查看当前规则
sudo firewall-cmd --list-all
使用nftables
配置防火墙
nftables
是iptables
的继任者,提供了更强大的功能和更简洁的语法。
安装nftables
sudo apt-get install nftables # Debian/Ubuntu sudo yum install nftables # CentOS/RHEL
基本配置
- 查看当前规则:
sudo nft list ruleset
- 清除所有规则:
sudo nft flush ruleset
添加规则
- 创建表和链:
sudo nft add table inet filter sudo nft add chain inet filter input { type filter hook input priority 0 ; }
- 添加规则:
sudo nft add rule inet filter input iifname lo accept sudo nft add rule inet filter input tcp dport 22 accept sudo nft add rule inet filter input tcp dport 80 accept sudo nft add rule inet filter input tcp dport 443 accept sudo nft add rule inet filter input counter drop
保存规则
将规则写入配置文件(如/etc/nftables.conf
),然后通过以下命令加载:
sudo nft -f /etc/nftables.conf
相关问答FAQs
Q1: 如何查看当前防火墙规则?
A1: 取决于使用的防火墙工具:
iptables
:sudo iptables -L -v
firewalld
:sudo firewall-cmd --list-all
nftables
:sudo nft list ruleset
Q2: 如何临时允许某个端口的流量?
A2: 根据防火墙工具选择相应的命令:
iptables
:sudo iptables -A INPUT -p tcp --dport <port> -j ACCEPT
firewalld
: `sudo firewall-cmd –permanent –add-port=/tcp && sudo firewall-cmd –reload