ubuntu怎么使用iptables防火墙

77次阅读
没有评论

共计 2889 个字符,预计需要花费 8 分钟才能阅读完成。

本篇内容介绍了“ubuntu 怎么使用 iptables 防火墙”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

iptables 是整合在 Linux 操作系统中的防火墙软件,绝大部分 Ubuntu 发行版都预装了 iptables。在一些非默认安装的 Ubuntu 系统或者容器环境中,可能没有预装 iptables,我们可以通过下面的命令来安装。

sudo apt-get install iptables iptables-persistent

安装 iptables 之后,系统会提示我们是否保存当前防火墙规则。如果我们要设置自己的防火墙规则,这时可以不用保存。

扩展:

1、端口测试工具

我们可以使用以下工具来检测端口是否开启或关闭,用来测试 iptables 是否生效。

客户端测试工具(Windows 环境):

telnet [服务器 IP] [端口号]

服务端测试工具(Linux 系统):

sudo netstat -tulpn

2、iptables 的语法规则

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT

-A INPUT:添加一个 INPUT 类型的规则。最常见的规则类型有三种,分别是 INPUT、OUTPUT 和 PREROUTING。

-p tcp:设置这条规则的协议为 TCP 协议。其他支持的协议还有 udp、icmp 和 all。

-m tcp:使用 tcp 模块。iptables 通过模块来扩展功能特性,有些常用模块是 iptables 预装的,比如 geoip 模块。

–dport 22:双横线 – 表示为前面使用的模块的更多选项。在这个示例里,我们设置 tcp 模块只应用于 22 端口。

-m geoip:使用 geoip 模块。这个模块可以控制来自某个国家的网络请求。

–src-cc PE:这个选项是让 geoip 模块限制从秘鲁的网络请求。PE 是秘鲁的国家编码,这里可以替换成其他国家编码。

-j ACCEPT:告诉 iptables 对满足上述条件的请求如何处理。ACCEPT(接受)、ERJECT(拒绝)和 DROP(丢弃)是三种常用的处理方式。

3、iptables 的基本命令

查看当前规则:

sudo iptables -L

删除某条规则(- D 表示删除):

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

清空当前规则

sudo iptables -F

只清空 OUTPUT 类型的规则:

sudo iptables -F OUTPUT

创建 iptables 规则

在 eth0 接口允许 SSH 连接:

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

注:如果要应用于所有网络接口,请删除 -i eth0 指令。

允许特定 IP 进行 SSH 连接(以 10.0.3.1 为例):

sudo iptables -A INPUT -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT

设置默认规则:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT

说明:

-P INPUT DROP:表示丢弃所有流入请求,即无法访问云服务器上的任何服务,如 Apache、SQL 等。

-P FORWARD DROP:表示丢弃所有转发请求。

-P OUTPUT ACCEPT:表示接受所有流出请求。

接受所有的回环流量(推荐设置):

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

保存 iptables 规则

使用以下命令保存并加载 iptables 规则:

sudo netfilter-persistent save
sudo netfilter-persistent reload

在容器环境中,上面的 netfilter-persistent 很可能无法生效,需要重新设置一下 iptables。请执行以下命令重新配置 iptables 安装包:

sudo dpkg-reconfigure iptables-persistent

设置流出请求

允许 DNS 查询:

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

使用 state 模块接受相关的和已建立的请求:

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

接受端口请求(如 80 端口):

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

其他常见服务和端口:

服务协议端口 FTPTCP20 21HTTPSTCP443DHCPTCP67NTPTCP123

更多有用的规则

允许 Ping:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

端口转发(把来自 2200 端口的请求转发给 10.0.3.21:22,多用于容器场景):

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

创建 SSH 永久连接,阻止未经允许的 SSH 登录请求:

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

“ubuntu 怎么使用 iptables 防火墙”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计2889字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)