Ubuntu配置iptables防火墙

2025-01-16 11:25:30 75

欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。


在 Ubuntu 系统中配置 iptables 防火墙,实际上是通过一系列步骤来控制网络流量的进出,确保系统的安全性。下面我将详细讲解如何安装、配置以及确保防火墙生效的过程。

1. 检查是否安装 iptables

首先,检查系统中是否已经安装了 iptables:

whereis iptables

如果输出了相关信息,说明已经安装了。如果没有安装,可以通过以下命令进行安装:

sudo apt-get install iptables

 

2. 编辑 iptables 策略

iptables 的规则可以通过编辑 /etc/iptables.rules 文件来进行配置。在这个文件中,我们可以设置允许和拒绝的网络流量。例如,常见的规则设置如下:

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

# 允许常用端口

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT     # 允许 HTTP

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT    # 允许 HTTPS

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT     # 允许 SSH

# 允许本地回环接口

-A INPUT -i lo -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

# 允许 ICMP 请求(即 ping)

-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 允许已建立连接的流量

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 其他未明确允许的流量一律拒绝

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

在上述规则中,我们开放了 HTTP (80)、HTTPS (443) 和 SSH (22) 端口,同时确保本地回环接口 (lo) 不受限制。此外,我们允许 ICMP 请求(即 ping)并确保已建立的连接能够正常通信。

 

3. 加载并生效规则

编辑完成规则文件后,可以通过以下命令加载并使规则生效:

sudo iptables-restore < /etc/iptables.rules

使用 iptables -L -n 命令可以查看当前的防火墙规则,确认配置是否生效。

 

4. 确保防火墙开机自启

为了确保防火墙配置在系统重启后自动加载,我们需要做以下操作:

 

创建软链接,确保防火墙规则在系统启动时加载:

sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/

编辑 /lib/systemd/system/rc-local.service 文件,在 [Install] 部分添加以下内容:

[Install]

WantedBy=multi-user.target

编辑并创建 /etc/rc.local 文件,添加防火墙启动命令:

sudo vi /etc/rc.local

在文件中加入:

iptables-restore < /etc/iptables.rules

/etc/rc.local 文件添加执行权限:

sudo chmod +x /etc/rc.local

最后,启用并启动服务:

sudo systemctl start rc-local.service

sudo systemctl enable rc-local.service

 

5. 常见命令和操作

查看现有规则:

sudo iptables -L -n

 

清空现有规则并设置默认策略:

sudo iptables -P INPUT ACCEPT

sudo iptables -F

sudo iptables -X

sudo iptables -Z

 

允许来自本地回环接口的数据包:

sudo iptables -A INPUT -i lo -j ACCEPT

 

开放常用端口:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许 SSH

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许 HTTP

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # 允许 HTTPS

 

拒绝来自特定 IP 的请求:

sudo iptables -I INPUT -s 192.168.1.100 -j DROP

 

保存规则:

sudo service iptables save

 

蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。


更多技术知识,蓝队云期待与你一起探索。

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: