iptables基本概念介绍和常见使用方法

 ipatbles:

(一):

理解一个命令行工具,用户通过iptables将其设定的安全规则执行到对应的安全框架netfilter中。netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙。

机制:按照网络管理员定义的规则rules条件),当数据包头符合这样的条件,就这样处理这个数据包。

实现: 规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP UDPICMP)和服务类型(如HTTPFTPSMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop等。配置防火墙的主要工作就是添加、修改和删除这些规则。

netfilter作为内核中是真正的防火墙,所有进出的报文都要通过这些关卡,符合进出条件的才能通过,符合阻拦条件的则被阻止。如上:input关卡和output关卡,这些关卡在iptables中被称为""

(二):

客户端发来的报文访问的目标地址不是本机,而是其他服务器,当本机的内核支持IP_FORWARD时,我们可以将报文转发给其他服务器,所以,这个时候,我们就会提到iptables中的其他关卡,也就是其他。分别是  路由前( PREROUTING )、转发( FORWARD )、路由后(POSTROUTING

(三):

iptables为我们定义了4"",当他们处于同一条""时,执行的优先级如下。

优先级次序(由高而低):raw --> mangle --> nat --> filter

filter表:负责过滤功能,防火墙;内核模块:iptables_filter

nat表:network address translation,网络地址转换功能;内核模块:iptable_nat

mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle

raw表:关闭nat表上启用的连接追踪机制;iptable_raw

(四):

(五):

规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;

:我们把具有相同功能的规则的集合叫做"",不同功能的规则,我们可以放置在不同的表中进行管理

机制:每条""都是一个"关卡",每个通过这个"关卡"的报文都要匹配这个关卡上的规则,如果匹配,则对报文进行对应的处理,

处理动作

ACCEPT:允许数据包通过。

DROP:直接丢弃数据包,不给任何回应信息,过了超时时间才会有反应。

REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。

(六):iptables实际操作:

iptables –t filter –L   (或者iptables -L:    -t选项,指定要操作的表; 使用-L选项,列出对应的表的规则

以上命令会显示出了5条链,如:INPUT链、FORWARD链、OUTPUT链,每条链中都有自己的规则比作关卡不同关卡拥有不同的能力,INPUT链、FORWARD链、OUTPUT链都拥有过滤的能力。所以当我们要定义某过滤规则时,我们会在filter表中定义

添加规则

1: 在指定表的指定链的尾部添加一条规则,-A选项表示在对应链的末尾添加规则,省略-t选项时,表示默认操作filter表中的规则

命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作

示例:iptables -t filter -A INPUT -s 150.165.1.1 -j DROP

 

2: 在指定表的指定链的首部添加一条规则,-I选型表示在对应链的开头添加规则

命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作

示例:iptables -t filter -I INPUT -s 150.165.1.1 -j ACCEPT

 

3: 在指定表的指定链的指定位置添加一条规则

命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作

示例:iptables -t filter -I INPUT 5 -s 150.165.1.1 -j REJECT

 

4: 设置指定表的指定链的默认策略(默认动作),并非添加规则。

命令语法:iptables -t 表名 -P 链名 动作

示例:iptables -t filter -P FORWARD ACCEPT

删除规则

按照规则序号删除规则,删除指定表的指定链的指定规则,-D选项表示删除对应链中的规则

命令语法:iptables -t 表名 -D 链名 规则序号

示例:iptables -t filter -D INPUT 3

上述示例表示删除filter表中INPUT链中序号为3的规则。

 

按照具体的匹配条件与动作删除规则,删除指定表的指定链的指定规则。

命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作

示例:iptables -t filter -D INPUT -s 150.165.1.1 -j DROP

上述示例表示删除filter表中INPUT链中源地址为150.165.1.1并且动作为DROP的规则。

 

删除指定表的指定链中的所有规则,-F选项表示清空对应链中的规则。

命令语法:iptables -t 表名 -F 链名

示例:iptables -t filter -F INPUT

 

删除指定表中的所有规则。

命令语法:iptables -t 表名 -F

示例:iptables -t filter -F

 

修改规则:

如果使用-R选项修改规则中的动作,那么必须指明原规则中的原匹配条件,例如源IP,目标IP等。

 

修改指定表中指定链的指定规则,-R选项表示修改对应链中的规则,使用-R选项时要同时指定对应的链以及规则对应的序号,并且规则中原本的匹配条件不可省略。

命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作

示例:iptables -t filter -R INPUT 3 -s 150.165.1.1 -j ACCEPT

上述示例表示修改filter表中INPUT链的第3条规则,将这条规则的动作修改为ACCEPT, -s 150.165.1.1为这条规则中原本的匹配条件,如果省略此匹配条件,修改后的规则中的源地址可能会变为0.0.0.0/0

 

修改指定表的指定链的默认策略(默认动作),并非修改规则,可以使用如下命令。

命令语法:iptables -t 表名 -P 链名 动作(这里注意不要修改默认动作为DROP

示例:iptables -t filter -P FORWARD ACCEPT

上例表示将filter表中FORWARD链的默认策略修改为ACCEPT

 

保存规则

保存规则命令如下,表示将iptables规则保存至/etc/sysconfig/iptables文件中,如果对应的操作没有保存,那么当重启iptables服务以后

service iptables save

注意点:centos7中使用默认使用firewalld,如果想要使用上述命令保存规则,需要安装iptables-services

或者使用如下方法保存规则

iptables-save > /etc/sysconfig/iptables

iptables-restore < /etc/sysconfig/iptables

 

 iptables规则中的匹配条件:

-s用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

#示例如下

iptables -t filter -I INPUT -s 192.16.1.111,192.16.1.118 -j DROP

iptables -t filter -I INPUT -s 192.16.1.0/24 -j ACCEPT

iptables -t filter -I INPUT ! -s 192.16.1.0/24 -j ACCEPT

 

-d用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

#示例如下

iptables -t filter -I OUTPUT -d 192.16.1.111,192.16.1.118 -j DROP

iptables -t filter -I INPUT -d 192.16.1.0/24 -j ACCEPT

iptables -t filter -I INPUT ! -d 192.16.1.0/24 -j ACCEPT

 

-p用于匹配报文的协议类型,可以匹配的协议类型tcpudpudpliteicmpespahsctp等(centos7中还支持icmpv6mh)。

#示例如下

iptables -t filter -I INPUT -p tcp -s 192.168.1.14 -j ACCEPT

iptables -t filter -I INPUT ! -p udp -s 192.168.1.14 -j ACCEPT

 

-i用于匹配报文是从哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文流入的网卡,所以在OUTPUT链与POSTROUTING链中不能使用此选项。

#示例如下

iptables -t filter -I INPUT -p icmp -i eth4 -j DROP

iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP

 

-o用于匹配报文将要从哪个网卡接口流出本机,于匹配条件只是用于匹配报文流出的网卡,所以在INPUT链与PREROUTING链中不能使用此选项。

#示如下

iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP

iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP

 

tcp扩展模块

常用的扩展匹配条件如下:

-p tcp -m tcp --sport 用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围

-p tcp -m tcp --dport 用于匹配tcp协议报文的目标端口,可以使用冒号指定一个连续的端口范围

#示例如下

iptables -t filter -I OUTPUT -d 192.168.1.14 -p tcp -m tcp --sport 22 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m tcp --dport 22:25 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m tcp --dport :22 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m tcp --dport 80: -j REJECT

iptables -t filter -I OUTPUT -d 192.168.1.14 -p tcp -m tcp ! --sport 22 -j ACCEPT

 

 

multiport扩展模块

常用的扩展匹配条件如下:

-p tcp -m multiport --sports 用于匹配报文的源端口,可以指定离散的多个端口号,端口之间用"逗号"隔开

-p udp -m multiport --dports 用于匹配报文的目标端口,可以指定离散的多个端口号,端口之间用"逗号"隔开

#示例如下

iptables -t filter -I OUTPUT -d 192.168.1.14 -p udp -m multiport --sports 137,138 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m multiport --dports 22,80 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m multiport ! --dports 22,80 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m multiport --dports 80:88 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.14 -p tcp -m multiport --dports 22,80:88 -j REJECT

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值