iptables 常用命令,选项,参数及实例整理收集

前言

本文整理收集了 iptables 的常用命令,参数,选项及实例以备不时之需.

iptables 是运行在使用者空间的应用软体,通过控制 Linux 内核 netfilter 模组,来管理网路封包的处理和转发.目前 iptables 已内置在各 Linux 发行版中.本文将收集整理其命令,选项,参数及实例以备不时之需.

本文转载于 原文 ,经测试,整理发布.如需转载请联系原作者获得授权,并注明转载地址.

安装

查询当前防火墙状态

停止并禁用firewalld

安装iptables

启动命令

保存配置

机制

命令

工作机制

规则链名包括「也被称为五个钩子函数(hook functions)」:

  • INPUT链 :处理输入数据包。
  • OUTPUT链 :处理输出数据包。
  • FORWARD链 :处理转发数据包。
  • PREROUTING链 :用于目标地址转换(DNAT)。
  • POSTOUTING链 :用于源地址转换(SNAT)。

防火墙的策略

防火墙策略一般分为两种,一种叫通策略,一种叫堵策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。

我们现在用的比较多个功能有3个:

  1. filter 定义允许或者不允许的,只能做在3个链上:INPUT ,FORWARD ,OUTPUT
  2. nat 定义地址转换的,也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
  3. mangle功能:修改报文原数据,是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

我们修改报文原数据就是来修改TTL的。能够实现将数据包的元数据拆开,在里面做标记/修改内容的。而防火墙标记,其实就是靠mangle来实现的。

小扩展:

  • 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
  • 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
  • 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。

iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。

注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。

表名包括:

  • raw :高级功能,如:网址过滤。
  • mangle :数据包修改(QOS),用于实现服务质量。
  • nat :地址转换,用于网关路由器。
  • filter :包过滤,用于防火墙规则。

动作包括:

  • ACCEPT :接收数据包。
  • DROP :丢弃数据包。
  • REDIRECT :重定向、映射、透明代理
  • SNAT :源地址转换。
  • DNAT :目标地址转换。
  • MASQUERADE :IP伪装(NAT),用于ADSL。
  • LOG :日志记录。

选项

参数

参数 说明
-P 设置默认策略:iptables -P INPUT (DROP)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号”!”表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
–dport num 匹配目标端口号
–sport num 匹配来源端口号

实例

空当前的所有规则和计数

配置允许ssh端口连接

允许本地回环地址可以正常使用

设置默认的规则

配置白名单

开启相应的服务端口

保存规则到配置文件中

列出已设置的规则

  • 四个表名 raw,nat,filter,mangle
  • 五个规则链名 INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
  • filter表包含INPUT、OUTPUT、FORWARD三个规则链

清除已有规则

删除已添加的规则

将所有iptables以序号标记显示,执行:

比如要删除INPUT里序号为8的规则,执行:

开放指定的端口

屏蔽端口

屏蔽域名

屏蔽IP

指定数据包出去的网络接口

只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。

查看已添加的规则

启动网络转发规则

公网210.14.67.7让内网192.168.188.0/24上网

端口映射

本机的 2222 端口映射到内网 虚拟机的22 端口

字符串匹配

比如,我们要过滤所有TCP连接中的字符串test,一旦出现它我们就终止这个连接,我们可以这么做:

阻止Windows蠕虫的攻击

防止SYN洪水攻击


结语

本文主要为 iptables 常用命令信息整理以便使用.后期会根据使用经验增加实例参考.参考来源:


本站提供免费和付费的技术支持.你可以通过留言,邮件,TG群的方式来技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享