侧边栏壁纸
博主头像
伯淳的个人博客博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

防火墙设置方法

Administrator
2023-12-04 / 0 评论 / 0 点赞 / 45 阅读 / 6908 字

使用'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 更易于管理和理解。

0

评论区