iptables简介(二)
  Qn0V923SdTA7 2023年11月13日 20 0


iptables 命令基本语法

一、命令格式

iptables    [-t 表名]    命令选项   [链名]    [条件匹配]     [-j 目标动作]

分解如下:

iptables

-t   表名

命令选项

链名

条件匹配

-j   目标动作

-t   filter

-t   nat

-t   mangle


-A

-D

-I

-R

-L

-F

-Z

-N

-X

-P

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

-p

-s

-d

-i

-o

--sport

--dport

......

......


-j  ACCEPT

-j  DROP

-j  REJECT

iptables  命令用于对表进行操作,表有三个,链有五个,就是三表五链

(如果省略表名,默认是操作filter表)

-j   目标动作    比较重要,主要的有三个动作,根据英文字母可以知道,含义如下

-j   ACCEPT

允许数据包通过本链而不拦截它

-j   DROP

丢弃数据包;阻止数据包通过本链

-j   REJECT

拒绝数据包;阻止数据包通过本链

二、命令选项解释

在命令格式中,其它有中括号的部分是可以省略的,命令不省略。

iptables    [-t 表名]    命令选项   [链名]    [条件匹配]     [-j 目标动作]

1. 查看

iptables   -L

还可以再带选项:

    n:只显示 IP 地址和端口号码,不显示域名和服务名称

    v:显示详细信息,包括每条规则的匹配包数量和匹配字节数

    x:在 v 的基础上,禁止自动单位换算(K、M)

    --line-number:可以查看到规则号

举例:

iptables   -nL 
iptables   -nL --line-number
后面的一条命令显示时会加上规则编号

2. 清空规则

-F

就是Flush,清空规则

举例:

iptables -F                    #清空filter 表中所有链上的规则  
iptables -F INPUT              #清空filter 表中INPUT链上的规则
iptables -t nat -F PREROUTING  #清空NAT表中PREROUTING链上的规则
iptables -t nat -F             #清空NAT表中所有链上的规则

3. 追加一条规则

-A

Append,追加一条规则(放到最后)


举例:

iptables -A INPUT -j DROP            #拒绝所有人访问服务器(作为最后一条规则)                             


4.插入规则

-I

Insert,在指定的位置插入规则

 举例:

iptables -I INPUT 2 -s 10.10.10.1 -j ACCEPT          #允许10.10.10.1主机访问本机

    // 在 filter 表的 INPUT 链插入成第2条规则

注释:-s   10.10.10.1 是条件匹配,后面再介绍

5.删除规则

-D

Delete,从规则列表中删除规则

 举例:

iptables -D INPUT 2

    // 删除 filter 表 INPUT 链中的第 2 条规则

6.  设置某个链的默认规则

-P

Policy,设置某个链的默认规则

举例:

iptables -P INPUT DROP

    // 设置 filter 表 INPUT 链的默认规则是 DROP


    当数据包没有被任何规则匹配时,则按默认规则处理。

7.计数器归零

 -Z

zero,将指定链的所有计数器归零。(如未指定,则认为是所有链)

举例:

iptables -Z INPUT

    //清除filter表INPUT链上的计数器

三、条件匹配参数

1. 按网络接口匹配

  -i

匹配数据进入(input)的网络接口,此参数主要应用nat表,例如目标地址转换。

  -o

匹配数据流出(output)的网络接口

举例:

-i eth0

    // 匹配从网卡eth0进来的数据包

-o eth1

    // 匹配从网卡eth1流出的数据包

2. 按源及目的地址匹配

    -s

匹配源地址(source),可以是IP、网段、域名,也可空(代表任何地址)

    -d

匹配目标地址(destination)

举例:

    -s 参数举例:

iptables -A INPUT -s 10.10.10.10 -j DROP

    // 拒绝10.10.10.10主机访问本机

    -d 参数举例:

iptables -A OUTPUT -d www.baidu.com -j DROP

    // 禁止本机访问百度

3.按协议类型匹配

    -p

匹配协议(protocol)类型,可以是TCP、UDP、ICMP等

  举例:

iptables -A INPUT -s 10.10.10.10 -p icmp -j DROP

    // 禁止10.10.10.10主机ping通本机

按源及目的端口匹配

    --sport

匹配源端口;可以是单个端口,也可以是端口范围

    --dport

匹配目的端口

举例:

-- sport 23

    //匹配源端口是23的数据包

-- sport 2000:3000

    //匹配源端口是 2000-3000 的数据包

-- sport :2000

    //匹配2000以下的数据包(包含2000)

- --sport 1000:

    //匹配1000以上的数据包(包含1000)

    注意:--sport 和 --dport 必须配合 -p 参数使用,例如:

iptables -A INPUT  -p tcp –dport 80 -j ACCEPT

    //允许外部数据访问我的本地服务器80端口

    详细解释:

    1、这是一条从外部进入内部本地服务器的数据

2、协议是  tcp

    3、数据包的目的(dport)地址是80,就是要访问我本地的80端口

    4、允许以上的数据行为通过


四、目标动作

1.   -j ACCEPT

允许数据包通过本链而不拦截它

举例:

iptables -A INPUT -j ACCEPT

    // 允许所有访问本机的数据包通过

2.   -j DROP

丢弃数据包;阻止数据包通过本链

举例:

iptables -A FORWARD -s 10.10.10.10 -j DROP

    // 阻止来自10.10.10.10 的数据包通过本机

3. -j   REJECT

拒绝数据包;阻止数据包通过本链

举例:

iptables -A FORWARD -s 10.10.10.10 -j REJECT

    // 阻止来自10.10.10.10 的数据包通过本机

4.   -j SNAT

源地址转换,支持转换为单IP,也支持转换到IP地址池

举例:

    转换到单IP举例:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 172.16.171.60

    // 将内网 192.168.2.0/24 转换为公网172.16.171.60地址;SNAT,用于访问互联网

    转换到一组地址池:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 172.16.171.60-172.16.171.70

    //同上,只不过是转换到一组IP地址池

5.  -j DNAT

目的地址转换,支持转换为单IP,也支持转换到IP地址池

举例:

    转换到单IP举例:

 

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.1

    //把从eth0口进来访问TCP/80端口的数据包目的地址改成192.168.1.1

    转换到一组地址池:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.1-192.168.1.10


6. -j MASQUERADE

动态SNAT转换(适用于动态 IP 场景 )

举例:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

    // 将源地址是 192.168.1.0/24 的数据包进行地址伪装,转换成 eth0 上的 IP 地址

五、iptables 常用附加模块

1.  按包状态匹配 (state)

-m state --state 状态

举例:

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

    // 将目前已运行的服务端口全部放行!无风险,良心推荐使用

2.  按来源 MAC 匹配(mac)

-m mac --mac-source MAC

举例:

iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

    // 拒绝来自某 MAC 地址的数据包进入本机

3.  按包速率匹配 (limit)

-m limit --limit 匹配速率

  举例:

iptables -A FORWARD -d 192.168.1.1 -m limit --limit 50/s -j ACCEPT
    iptables -A FORWARD -d 192.168.1.1 -j DROP

    limit 英语上看是限制的意思,但实际上只是按一定速率去匹配而已,50/s 表示 1 秒中转发 50 个数据包,要想限制的话后面要再跟一条DROP规则

4.  多端口匹配 (multiport)

-m multiport <--sports|--dports|--ports> 端口 1[,端口 2,..,端口 n]

举例:

iptables -A INPUT -p tcp -m multiport --dports 22,53,80,443 -j ACCEPT

    // 允许访问本机TCP/22,53,80,443端口

    注意:该参数必须与 -p 参数一起使用

六、iptables 规则备份和恢复

  我们执行 iptables 命令时,规则只是保存在内存中,并没有保存到某一个文件中。因此系统重启之后,之前设定的规则就没有了,所以规则设定完毕,检查无误后要及时保存规则,使用命令:

service iptables save

命令执行后,显示:

iptables: Saving firewall rules to /etc/sysconfig/iptables: [  确定  ]

表示防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。所以如果要备份防火墙规则,复制该配置文件即可。例如:

cp /etc/sysconfig/iptables /opt/myipt.rule

本命令将配置文件复制成另一个文件(/opt/myipt.rule)做备份

如果需要恢复这些规则,使用以下命令(使用重定向,从备份文件中恢复配置):

iptables-restore < /opt/myipt.rule
service iptables save


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
Qn0V923SdTA7