Linux IPTables:如何添加防火墙规则
摘要:本文介绍了如何使用“iptables -A”命令添加 iptables 防火墙规则。
本文分享自华为云社区《Linux IPTables:如何添加防火墙规则(使用允许 SSH 示例)》,作者:Tiamo_T 。
本文介绍了如何使用“iptables -A”命令添加 iptables 防火墙规则。
“-A”用于追加。如果它让你更容易记住“-A”作为添加规则(而不是附加规则),那就没问题了。但是,请记住,“-A”在链的末尾添加了规则。
同样,记住 -A 在末尾添加规则非常重要。
通常,最后一条规则是丢弃所有数据包。如果您已经有一个丢弃所有数据包的规则,并且如果您尝试在命令行中使用“-A”来创建新规则,您最终会在当前的“丢弃所有数据包”规则之后添加新规则,这将使您的新规则几乎毫无用处。
一旦您掌握了 iptables,并且当您在生产中实现它时,您应该使用 shell 脚本,您可以在其中使用 -A 命令添加所有规则。在那个 shell 脚本中,你的最后一行应该总是“丢弃所有数据包”规则。当您想要添加任何新规则时,请修改该 shell 脚本并将您的新规则添加到“丢弃所有数据包”规则之上。
句法:
iptables -A chain firewall-rule
- -A 链 - 指定应附加规则的链。例如,对传入数据包使用 INPUT 链,对传出数据包使用 OUTPUT。
- firewall-rule – 各种参数构成防火墙规则。
如果您不知道链是什么意思,最好先阅读iptables 基础知识。
防火墙规则参数
以下参数可用于所有类型的防火墙规则。
-p 用于协议
- 指示规则的协议。
- 可能的值为 tcp、udp、icmp
- 使用“all”允许所有协议。当您不指定 -p 时,默认情况下将使用“所有”协议。使用“all”并始终指定协议并不是一个好习惯。
- 使用名称(例如:tcp)或编号(例如:6 表示 tcp)作为协议。
- /etc/protocols 文件包含所有允许的协议名称和编号。
- 你也可以使用--protocol
-s 是源
- 指示数据包的来源。
- 这可以是 IP 地址、网络地址或主机名
- 例如:-s 192.168.1.101 表示具体的ip地址
- 对于网络掩码,使用 /mask。例如:“-s 192.168.1.0/24”表示该网络的网络掩码为 255.255.255.0。这匹配 192.168.1.x 网络。
- 当您不指定来源时,它将匹配所有来源。
- 您还可以使用 –src 或 –source
-d 是目的地
- 指示数据包的目的地。
- 这与“-s”相同(除了它代表目标主机、IP 地址或网络)
- 您还可以使用 –dst 或 –destination
-j 是目标
- j 代表“跳转到目标”
- 这指定了匹配此防火墙规则的数据包需要发生什么。
- 可能的值为 ACCEPT、DROP、QUEUE、RETURN
- 您还可以指定其他用户定义的链作为目标值。
-i 用于接口
- i 代表“输入接口”
- 您可能会忽略这一点并假设“-i”用于接口。请注意 -i 和 -o 都用于接口。但是,-i 用于输入接口,-o 用于输出接口。
- 指示传入数据包通过 INPUT、FORWARD 和 PREROUTING 链进入的接口。
- 例如:-i eth0 表示此规则应考虑通过接口 eth0 传入的数据包。
- 如果您不指定 -i 选项,则系统上所有可用的接口都将被考虑用于输入数据包。
- 您也可以使用 –in-interface
-o 用于输出接口
- o 代表“输出接口”
- 指示通过 INPUT、FORWARD 和 PREROUTING 链发送传出数据包的接口。
- 如果您不指定 -o 选项,则系统上所有可用的接口都将被视为输出数据包。
- 你也可以使用--out-interface
防火墙参数的附加选项
上面的一些防火墙参数依次具有可以与它们一起传递的自己的选项。以下是一些最常见的选项。
要使用这些参数选项,您应该在防火墙规则中指定相应的参数。例如,要使用“–sport”选项,您应该在防火墙规则中指定“-p tcp”(或“-p udp”)参数。
注意:所有这些选项前面都有两个破折号。例如,sport 前面有两个连字符。
–sport 用于源端口(用于 -p tcp 或 -p udp)
- 默认情况下,所有源端口都匹配。
- 您可以指定端口号或名称。例如,要在防火墙规则中使用 SSH 端口,请使用“–sport 22”或“–sport ssh”。
- /etc/services 文件包含所有允许的端口名称和编号。
- 在规则中使用端口号比使用端口名更好(为了性能)。
- 要匹配端口范围,请使用冒号。例如,22:100 匹配从 22 到 100 的端口号。
- 您也可以使用 –source-port
–dport 用于目标端口(用于 -p tcp 或 -p udp)
- 一切都与 –sport 相同,除了这是针对目标端口。
- 您也可以使用 –destination-port
–tcp-flags 用于 TCP 标志(用于 -p tcp)
- 这可以包含以逗号分隔的多个值。
- 可能的值有:SYN、ACK、FIN、RST、URG、PSH。您也可以使用 ALL 或 NONE
–icmp-type 用于 ICMP 类型(用于 -p icmp)
- 当您使用icmp协议“-p icmp”时,您还可以使用“-icmp-type”参数指定ICMP类型。
- 例如:“-icmp-type 0”用于“Echo Reply”,“-icmp-type 8”用于“Echo”。
允许传入 SSH 连接的示例防火墙规则
现在您了解了防火墙规则的各种参数(及其选项),让我们构建一个示例防火墙规则。
在这个例子中,让我们只允许传入的 SSH 连接到服务器。所有其他连接都将被阻止(包括 ping)。
警告:使用防火墙规则可能会导致您的系统无法访问。如果您不知道自己在做什么,您可能会将自己(和其他所有人)锁定在系统之外。因此,仅在没有人使用的测试系统上进行所有学习,并且如果您被锁定,您可以访问控制台以重新启动 iptables。
1. 删除现有规则
如果您已经有一些 iptables 规则,请在删除现有规则之前进行备份。
删除所有现有规则并允许防火墙接受所有内容。使用我们之前讨论过的iptables flush清理所有现有规则并从头开始。
测试以确保您能够从外部 ssh 和 ping 此服务器。
完成此示例后,您将只能通过 SSH 连接到此服务器。您将无法从外部 ping 此服务器。
2. 只允许 SSH
仅允许与此服务器的传入 SSH 连接。您可以从任何地方通过 ssh 连接到此服务器。
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
上面的 iptables 命令有以下 4 个组件。
- “-A INPUT”——这表明我们正在向 INPUT 链追加(或添加)一条新规则。因此,此规则适用于传入流量。
- “-i eth0” – 将根据此规则检查通过接口 eth0 的传入数据包。
- “-p tcp –dport 22” – 此规则适用于 TCP 数据包。这有一个名为“-dport 22”的 tcp 选项,它表示服务器上此规则的目标端口是 22(即 ssh)。
- “-j ACCEPT”——跳转到接受,它只是接受数据包。
简单来说,上述规则可以表述为:所有通过 eth0 for ssh 传入的数据包都将被接受。
3.丢弃所有其他数据包
一旦您指定了接受数据包的自定义规则,您还应该有一个默认规则来丢弃任何其他数据包。
这应该是您在 INPUT 链中的最后一条规则。
要丢弃所有传入的数据包,请执行以下操作。
iptables -A INPUT -j DROP
4.查看SSH规则和测试
要查看当前的 iptables 防火墙规则,请使用“iptables -L”命令。
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere
从上面的输出中可以看出,它依次具有以下两条规则。
- 接受所有传入的 ssh 连接
- 丢弃所有其他数据包。
与其从命令行添加防火墙规则,不如创建一个包含规则的 shell 脚本,如下所示。
# vi iptables.sh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP# sh -x iptables.sh
+ iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
+ iptables -A INPUT -j DROP# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere
与 iptables append/add 命令类似,iptables 可用的其他命令很少。
点击关注,第一时间了解华为云新鲜技术~
Linux IPTables:如何添加防火墙规则相关推荐
- linux 脚本自动添加防火墙规则
#!/bin/bash while true doecho "1,放行端口2,封锁端口3,放行IP4,封锁IP"read -ep "请输入您要操作编号:" bh ...
- Linux的iptables在指定的防火墙规则序号前添加防火墙规则
一.问题背景 背景:公司安全部门检测到公司的hadoop集群中存在Yarn的未授权漏洞,即8080.8088端口外网可以访问的问题,于是,产生了给服务器增加防火墙规则的需求,具体如下: 二.问题处理 ...
- linux的nfs端口111,【NFS】NFS设置固定端口,添加防火墙规则
NFS server启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFS sever 端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口. 以前配置的nfs端口一 ...
- windows添加防火墙规则屏蔽特定网站
windows添加防火墙规则屏蔽特定网站 1.查看特定网站ip nslookup 网址 2.添加防火墙规则 防火墙设置->新建规则->自定义,之后全部默认下一步,名字随便取. 点击刚刚新建 ...
- 037_自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)
#!/bin/bash #设置变量定义需要添加到防火墙规则的服务和端口号 #使用 firewall-cmd --get-services 可以查看 firewall 支持哪些服务 service=&q ...
- Windows 系统中添加防火墙规则
本文以在 Windows 10 中添加允许指定 IP 段的入站规则为例. 1.打开 Windows 防火墙配置界面: 2.点击高级设置,打开高级安全 Windows 防火墙: 3.点击入站规则 → 新 ...
- linux iptables 端口 防火墙 规则
开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCE ...
- 详解Linux上iptables配置命令及常见的生产环境防火墙规则
本文出自:https://www.toutiao.com/a6743215775915442692/ http://www.safebase.cn/article-259542-1.html 摘要: ...
- Deepin/Linux系统使用GUFW可视化管理、配置防火墙规则
对于没有接触过 Linux 的人,配置防火墙难于上青天,即便是缙哥哥这样玩过一丢丢的,也不喜欢用命令控制.所以,今天就给大家带来一款Deepin/Linux系统可视化管理.配置防火墙规则的软件--GU ...
最新文章
- 20165333第一次课堂测试补漏
- 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)
- math python 向上取整_计算机等级考试二级Python语言模拟试卷单选解答详解第1期...
- oracle 数据库bak文件怎么打开,Oracle数据库的参数文件备份与恢复
- python模块大全_哎呀,不错哦!3步带你用Python打造一款智能语音聊天小软件
- 面试—每日一题(5)
- popwindow下拉筛选 二级联动_工作录入数据需要三级联动下拉菜单,Excel轻松制作!-Excel教程...
- 大数据学习入门到实战教程,精心整理万字长文入门第一章,老奶奶看了都说学会了
- tkmybatis 子查询_最全的真假童子命查询方法!不想被忽悠就看看
- 兴业数金java开发笔试+一面
- Laya1.x Timer小记
- PCA主成分分析遥感影像融合
- 上千程序员在支付宝开party?——记 BASIC College 超级技术嘉年华
- 什么是ETL,ETL是什么技术?
- Space chick获得Blockchain、SNZ、1con等多家资本战略投资 助推项目快速发展
- hdu1540 Tunnel Warfare
- pandas一行代码绘制26种美图
- ***实战:教你轻松查看QQ空间加密后的好友图片
- bug_ renren-fast注册到 nacos上
- 海康威视工业相机MV-CE060-10UC使用指北