您的位置:首页 > 其它

iptables基础知识

2016-07-13 12:06 260 查看
iptables由3个表filter,nat,mangle组成,主要实验了filter表,这个表是用来过滤数据包的,

有三个链INPUT,OUTPUT,FORWARD。

配置防火墙策略有固定的格式

Iptables  表名   链名    匹配条件  动作

-t 表名 (默认为filter)



-A 链名(在该链末尾append追加策略)

-I 链名 数字

-I (insert)插入链,如果不加数字,默认是将写的策略添加到表中所有策略的前面

但是我们要指定插入到相应的行,我们可以这样

Iptables –t filter –I INPUT 2 ……  这里就是插到第二个

匹配条件:

-i   网卡    数据包进入的网卡

-o  网卡   出去的

-s   ip   源ip

-d   ip    目的ip

-p   协议

--dport  端口号   目的端口号

--sport   端口号   源端口号

动作:

ACCEPT:对满足策略的数据包允许通过

DROP:丢弃数据包,且不返回任何信息

REJECT:丢弃数据包,但是会返回拒绝的信息

LOG:把通过的数据包写到日志中(相当于一个门卫对进去的人进行登记)

iptables   -t filter  -A INPUT –s 192.168.0.0/24  -p tcp  --dport 80 –j REJECT

上面这句的意思是:对filter表的INPUT链,追加一条策略,策略是,源地址在192.168.0.0/24网段内,使用tcp协议,目标端口为80的所有输入包都执行REJECT动作(拒绝)

实验室完成了filter表的INPUT链的基本操作和增加删除一条链,过程如下:

Iptables命令的管理控制选项

-A(append) 在指定链的末尾添加一条新的规则

-I (insert)在指定链中插入一条新规则,为指明插入位置

-D(delete)删除指定链里的某条规则

-R (replace)修改、替换指定链的某条规则,按序号或内容确定要替换的规则

-L (list)列出指定链中所有规则进行查看

-F (flush)清空指定链中的所有规则

-N 新建一条用户自己定义的规则链

-X(delete-chain)删除指定表中用户自己定义的规则链

-P 设置指定链的默认策略

-V 查看iptables命令工具的版本(--version)信息

-v 查看规则列表时显示详细(--verbose)的信息

-h 查看命令帮助信息(--help)

-n 使用数字形式(--number)显示输出结果,如显示主机的ip地址而不是主机名

--line-number 查看规则列表时,同时显示规则在链中的顺序号



添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。





[root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP

再插入一条规则到第三行,将行数直接写到规则链的后面:

[root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP

查看:

[root@test ~]# iptables -nLv --line-number

Iptables命令的匹配条件选项

Ip地址:

来源地址:—s (source)。

目标地址:—d (destination)。

端口(port):

来源端口:——sport。

目标端口:——dport。

协议:—p。

个服务的端口和协议:

这里只列出比较常用的参数,详细的请查看man iptables

1、查看

iptables -nvL –line-number

-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数

-n 不对ip地址进行反查,加上这个参数显示速度会快很多

-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口

–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到

[plain] view
plain copy

[root@mail ~]# iptables -L  #查看当前内存中iptables策略,默认是filter表  

Chain INPUT (policy ACCEPT)  

target     prot opt source               destination           

  

Chain FORWARD (policy ACCEPT)  

target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

target     prot opt source               destination           

[root@mail ~]# iptables -t filter -vnL  #加vn参数,有更多选项  

Chain INPUT (policy ACCEPT 31471 packets, 4322K bytes)  

 pkts bytes target     prot opt in     out     source               destination           

  

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)  

 pkts bytes target     prot opt in     out     source               destination           

  

Chain OUTPUT (policy ACCEPT 37490 packets, 3056K bytes)  

 pkts bytes target     prot opt in     out     source               destination         

   

#策略格式:iptables 表名 链名 匹配条件 动作  

#下面这句话的意思是

对于filter表的INPUT链,源地址为192.169.1.0/24网段内的使用tcp
 #协议80端口的输入包,都执行REJECT(拒绝)动作  

[root@mail ~]# iptables -t filter -A INPUT -s 192.169.1.0/24 -p tcp --dport 80 -j REJECT  

[root@mail ~]# iptables -L  #需要注意的是,该策略目前只在内存中,/etc/sysconfig/iptables配置文件中是没有的
 


Chain INPUT (policy ACCEPT)  

target     prot opt source               destination           

  

  

  

REJECT     tcp  --  192.169.1.0/24       anywhere            tcp dpt:http reject-with icmp-port-unreachable   

  

Chain FORWARD (policy ACCEPT)  

target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

target     prot opt source               destination           

[root@mail ~]# iptables -vnL    #看的更详细点  

Chain INPUT (policy ACCEPT 88 packets, 8188 bytes)  

 pkts bytes target     prot opt in     out     source               destination           

    4   240 REJECT     tcp  --  *      *       192.169.1.0/24       0.0.0.0/0           tcp dpt:80 reject-with icmp-port-unreachable   

  

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)  

 pkts bytes target     prot opt in     out     source               destination           

  

Chain OUTPUT (policy ACCEPT 131 packets, 11625 bytes)  

 pkts bytes target     prot opt in     out     source               destination           

[root@mail ~]# vim /etc/sysconfig/iptables  #iptables中没有  

  

  

# Firewall configuration written by system-config-firewall  

# Manual customization of this file is not recommended.  

*filter  

:INPUT ACCEPT [0:0]  

:FORWARD ACCEPT [0:0]  

:OUTPUT ACCEPT [0:0]  

COMMIT  

  

  

#执行save后会将这条策略写入/etc/sysconfig/iptables,在保存的时候,是执行覆盖式的保存

  

#内存中有的保存下来,内存中没有的,这个文件中有的将会被删除。 

 

[root@mail ~]# service iptables save      

iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]  

[root@mail ~]# vim /etc/sysconfig/iptables  

  

  

# Generated by iptables-save v1.4.7 on Wed Aug 15 17:28:53 2012  

*filter  

:INPUT ACCEPT [4:352]  

:FORWARD ACCEPT [0:0]  

:OUTPUT ACCEPT [4:298]  

-A INPUT -s 192.169.1.0/24 -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable   

COMMIT  

# Completed on Wed Aug 15 17:28:53 2012  

  

  

#表的每条链后面都有一个默认动作,Chain INPUT (policy ACCEPT),默认动作意思是  

#没有匹配所以策略的匹配条件时(按序匹配),就执行的动作,可以修改链的默认动作  

[root@mail ~]# iptables -t filter -P INPUT DROP

             #修改filter表的INPUT链的默认动作  

[root@mail ~]# iptables -L  

Chain INPUT (policy DROP) 

 

target     prot opt source               destination           

REJECT     tcp  --  192.169.1.0/24       anywhere            tcp dpt:http reject-with icmp-port-unreachable   

  

Chain FORWARD (policy ACCEPT)  

target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

target     prot opt source               destination    

  

[root@mail ~]# iptables -t filter -P INPUT ACCEPT   #暂时改回来  

  

#可以删除一条策略,策略是有序的,从1开始,要删除一条策略,需要知道它的序号  

[root@mail ~]# iptables -L --line-numbers   #查看策略的序号  

Chain INPUT (policy ACCEPT)  

num  target     prot opt source               destination           

1    REJECT     tcp  --  192.169.1.0/24       anywhere            tcp dpt:http reject-with icmp-port-unreachable   

  

Chain FORWARD (policy ACCEPT)  

num  target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

num  target     prot opt source               destination    

       

[root@mail ~]# iptables -D INPUT 1  #删除INPUT链的序号为1的策略  

[root@mail ~]# vim /etc/sysconfig/iptables  #和前面一样,这只是删除内存中

的,/etc/sysconfig/iptables中仍然存在  

  

# Generated by iptables-save v1.4.7 on Wed Aug 15 17:28:53 2012  

*filter  

:INPUT ACCEPT [4:352]  

:FORWARD ACCEPT [0:0]  

:OUTPUT ACCEPT [4:298]  

-A INPUT -s 192.169.1.0/24 -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable  

COMMIT  

# Completed on Wed Aug 15 17:28:53 2012  

  

  

[root@mail ~]# service iptables save    #执行保存,配置文件中也被删除了  

iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]  

[root@mail ~]# vim /etc/sysconfig/iptables  

  

# Generated by iptables-save v1.4.7 on Wed Aug 15 17:45:03 2012  

*filter  

:INPUT ACCEPT [0:0]  

:FORWARD ACCEPT [0:0]  

:OUTPUT ACCEPT [0:0]  

COMMIT  

# Completed on Wed Aug 15 17:45:03 2012  

  

  

#除了INPUT,FORWARD,OUTPUT链,可以定义自己的链 

 

[root@mail ~]# iptables -N chen     #定义一个chen链,相当于多了一扇门  

  

#拒绝通过chen链,地址为192.169.1.99,协议为tcp端口为80的数据包  

[root@mail ~]# iptables -t filter -A chen -s 192.169.1.99 -p tcp --dport 80 -j REJECT     

[root@mail ~]# iptables -t filter -A INPUT -j chen  #把经过INPUT链的数据引入到chen这个链上  

[root@mail ~]# iptables -L --line-numbers    

 

Chain INPUT (policy ACCEPT)  

num  target     prot opt source               destination           

1    chen       all  --  anywhere             anywhere    #INPUT链的target变为chen了          

  

Chain FORWARD (policy ACCEPT)  

num  target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

num  target     prot opt source               destination           

  

Chain chen (1 references)   #可以看到多了一个链,下面的策略也存在  

num  target     prot opt source               destination           

  

1    REJECT     tcp  --  192.169.1.99         anywhere            tcp dpt:http reject-with icmp-port-unreachable   

[root@mail ~]#   

[root@mail ~]# service iptables save  

iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]  

[root@mail ~]# vim /etc/sysconfig/iptables  

  

  

# Generated by iptables-save v1.4.7 on Wed Aug 15 18:11:28 2012  

*filter  

:INPUT ACCEPT [1:125]  

:FORWARD ACCEPT [0:0]  

:OUTPUT ACCEPT [1:71]  

:chen - [0:0]  

-A INPUT -j chen   

-A chen -s 192.169.1.99/32 -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable   

COMMIT  

# Completed on Wed Aug 15 18:11:28 2012  

  

  

[root@mail ~]# iptables -X chen     #删除chen这条链  

iptables: Too many links.  

[root@mail ~]# iptables -F      #删除前需要清空策略,否则删除不掉  

[root@mail ~]# iptables -X chen  

[root@mail ~]# iptables -L  

Chain INPUT (policy ACCEPT)  

target     prot opt source               destination           

  

Chain FORWARD (policy ACCEPT)  

target     prot opt source               destination           

  

Chain OUTPUT (policy ACCEPT)  

target     prot opt source               destination           

[root@mail ~]#   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: