使用'nftables'
1. 安装nftables
sudo apt-get update
sudo apt-get install nftables
2. 启动和启用 nftables:
sudo systemctl start nftables
sudo systemctl enable nftables
3. 配置规则:
编辑 /etc/nftables.conf 文件来设置防火墙规则。这包括指定允许或阻止的端口和协议。例如,允许 80、443和54321端口):
在配置文件中的合适位置(通常在 chain input 内),添加规则以允许 80、443 和 54321 端口。确保其他重要的基本规则(如允许已建立的连接和本地流量)也在规则集中。
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# 允许已建立的连接和本地流量
ct state established,related accept
iif "lo" accept
# 开放端口 80, 443, 54321
tcp dport 80 accept
tcp dport 443 accept
tcp dport 54321 accept
# 其他规则...
}
}
这里的 ct state established,related accept 规则允许已经建立和相关的连接,这是一个常用的安全做法。iif "lo" accept 规则允许本地(loopback)接口的所有流量,这对于正常的系统操作是必要的。
4. 应用规则:
保存配置后,重新加载 nftables 以应用新规则:
sudo nft flush ruleset
sudo nft -f /etc/nftables.conf
5. 检查规则:
使用以下命令检查当前规则:
sudo nft list ruleset
使用 UFW(Uncomplicated Firewall)
UFW 提供了一个更简单的界面来管理 iptables 规则。
1. 安装 UFW:
sudo apt-get update
sudo apt-get install ufw
2. 启动和启用 UFW:
sudo ufw enable
3. 配置规则:
通过 UFW 命令添加或删除规则。例如,允许 SSH:
sudo ufw allow 22
或者,如果想指定协议:
sudo ufw allow 22/tcp
4. 检查状态和规则:
查看当前状态和所有应用的规则:
sudo ufw status verbose
查看防火墙规则的标号(便于删除):
sudo ufw status numbered
![c51ce5360626e0c3a0df00c2370c04fe.png](:/c64707abdaf1448e892db505d3a3a339)
删除一条规则(下图的5对应8008端口):
sudo ufw delete 5
5. 禁用UFW:
sudo ufw disable
6. 重载配置
sudo ufw reload
7. 其他操作
#禁止所有入站流量
sudo ufw default deny incoming
#允许所有出站流量
sudo ufw default allow outgoing
使用iptables
iptables 是 Linux 上一个非常强大和灵活的防火墙工具,用于管理网络流量。配置 iptables 通常涉及创建规则来允许或阻止流量。下面是基本的 iptables 配置步骤:
1. 安装 iptables(如果尚未安装)
大多数现代 Linux 发行版默认安装了 iptables。如果需要安装,可以使用包管理器来安装它。例如,在基于 Debian 的系统上:
sudo apt-get update
sudo apt-get install iptables
2. 查看现有的 iptables 规则
在创建新规则之前,最好先查看当前的 iptables 配置:
sudo iptables -L
3. 创建新规则
使用 iptables 命令来添加、修改或删除规则。规则可以基于多种条件设置,如端口号、IP 地址、网络协议等。
示例规则
允许所有本地回环(lo)接口的流量:
sudo iptables -A INPUT -i lo -j ACCEPT
允许所有已建立的连接和相关连接:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
开放特定端口(例如:允许端口 80 的 HTTP 流量):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
阻止来自特定 IP 的流量:
sudo iptables -A INPUT -s 123.123.123.123 -j DROP
4. 保存规则
在一些发行版中,重启后 iptables 规则会丢失。为了持久化这些规则,可以使用 iptables-save 和 iptables-restore 命令,或者使用专门的工具,如 iptables-persistent(在 Debian/Ubuntu 系统上)。
sudo iptables-save > /etc/iptables/rules.v4
5. 重启 iptables 服务
一些发行版可能需要重启 iptables 服务来应用新规则。
注意事项
谨慎操作:iptables 配置不当可能导致远程访问中断。在远程操作之前,请确保有其他访问服务器的方式。
规则顺序很重要:iptables 按照规则添加的顺序处理流量。如果有多个规则可能匹配同一种类型的流量,第一个匹配的规则将被应用。
iptables 的高度可配置性意味着可以根据特定的网络需求定制复杂的规则集。对于刚开始使用 iptables 的用户来说,建议从简单规则开始,随着对工具的理解加深逐渐增加复杂性。
使用firewalld
1. 安装 firewalld(如果尚未安装):
sudo yum install firewalld
2. 启动 firewalld 服务:
sudo systemctl start firewalld
3. 设置 firewalld 开机自启:
sudo systemctl enable firewalld
常用 firewalld 命令
- 检查防火墙状态:
sudo firewall-cmd --state
- 列出当前所有规则:
sudo firewall-cmd --list-all
- 添加防火墙规则(例如,允许 HTTP 服务):
sudo firewall-cmd --zone=public --add-service=http --permanent
- 移除防火墙规则(例如,移除 HTTP 服务):
sudo firewall-cmd --zone=public --remove-service=http --permanent
- 允许特定端口(例如,允许 TCP 端口 8080):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 禁止特定端口(例如,禁止 TCP 端口 8080):
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
- 重新加载防火墙规则(应用更改):
一般更改规则后,都需重新加载。
sudo firewall-cmd --reload
- 理解防火墙区域(Zones)
Zones 定义了防火墙的规则应用于哪些接口或源地址。public、home、internal、external 等是不同的防火墙区域。
可以为每个区域设置不同的规则。默认情况下,大多数系统使用 public 区域。
# 管理 firewalld 服务
- 停止 firewalld 服务:
sudo systemctl stop firewalld
- 禁用 firewalld 开机自启:
sudo systemctl disable firewalld
- 检查 firewalld 服务状态:
sudo systemctl status firewalld
高级配置
对于更复杂的规则,可以编辑 /etc/firewalld/zones/ 目录下的相应区域文件。
使用文本编辑器(如 vim 或 nano)编辑这些文件以进行更详细的配置。
注意事项
使用 --permanent 标志将规则永久添加到防火墙中。不使用这个标志的话,规则在重启后将不会生效。
firewalld 提供了一种动态管理防火墙规则的方式,比起传统的 iptables 更易于管理和理解。
评论区