iptables5表5链及语法

来源:互联网 发布:中国预警机 知乎 编辑:程序博客网 时间:2024/06/02 02:36

Iptables是linux上特有的防火墙机制,其功能非常强大

netfilter5表5链介绍

  • filter 这个表主要用于过滤包的,是系统预设的表。内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。

  • nat 主要用处是网络地址转换,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。

  • mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。这个表几乎不怎么用。

还有两个不常用的表:raw和security,在此不多讲述。

iptables语法

iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

  • 命令语法
    iptables [选项][参数]

  • 命令选项
    -n:不针对IP反解析主机名
    -v:显示更详细的信息
    -t:指定表(iptables命令默认作用于filter表)
    -L:显示信息
    -F:清空所有规则
    -A/D:=add/delete,添加/删除一条规则
    -I:插入一条规则
    -p:指定协议,可以是tcp,udp或icmp
    –sport:跟-p一起使用,指定源端口
    –dport:跟-p一起使用,指定目标端口
    -s:指定源IP(可以是一个IP段)
    -d:指定目的IP(可以是一个IP段)
    -j:后面跟动作(ACCEPT表示允许包;DROP表示丢掉包;REJECT表示拒绝包)
    -i:指定网卡
    -Z:把包以及流量计数器清零
    -P:=pre,预设策略

实战

  • iptables命令选项输入顺序
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-sIP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

  • 查看规则
[root@localhost ~]# iptables -t nat -nvLChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destinationChain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destinationChain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destinationiptables规则配置文件:/etc/sysconfig/iptables

说明:-t 后面跟表名,-nvL 即查看该表的规则,其中-n表示不针对IP反解析主机名;-L表示列出的意思;而-v表示列出的信息更加详细。如果不加-t ,则打印filter表的相关信息。


  • 清空规则
[root@dl-001 ~]# iptables -F[root@dl-001 ~]# iptables -Z   //把包以及流量计数器清零

说明: -F 是把当前规则清除,但这个只是临时的,重启系统或者重启 iptalbes 服务后还会加载已经保存的规则,所以需要使用 /etc/init.d/iptables save 保存一下规则


  • 增加一条规则
# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

说明:这就是增加了一条规则,省略-t所以针对的是filter表。-A 表示增加一条规则,另外还有-I 表示插入一条规则,-D删除一条规则;后面的INPUT即链名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); –sport/–dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。


  • 删除一条规则方法1
root@adai003 ~]# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

说明: 要删除一条规则时,必须和插入的规则一致,也就是说,两条iptables命令除了-A/I和-D不一样外,其他地方都一样。


  • 删除一条规则方法2

有时候你的服务器上iptables过多了,想删除某一条规则时,又不容易掌握当时创建时的规则。其实有一种比较简单的方法:

[root@localhost ~]# iptables -nvL --line-numbers   //查看规则序号Chain INPUT (policy ACCEPT 133 packets, 9740 bytes)num   pkts bytes target     prot opt in     out     source               destination1        0     0 ACCEPT     all  --  eth0   *       192.168.1.0/24       0.0.0.0/0

删除某一条规则使用如下命令:

[root@localhost ~]# iptables -D INPUT 1

说明:-D 后跟链名,然后是规则num,这个num就是查看iptables规则时第一列的值。再次查看刚才的规则,已经没有了:

[root@localhost ~]# iptables -nvL --line-numbers

说明:iptables还有一个选项经常用到,-P(大写)选项,表示预设策略。用法如下:

[root@localhost ~]# iptables -P INPUT DROP

说明:-P后面跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。注意:如果你在连接远程服务器,千万不要随便敲这个命令,因为一旦你敲完回车你就会断掉。

这个策略一旦设定后,只能使用 iptables -P INPUT ACCEPT 才能恢复成原始状态,而不能使用-F参数。

原创粉丝点击