iptables (一)

Netfilter组件前端

运行在内核空间,集成在linux内核中,扩展各类网络服务的结构化底层框架。linux

在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放。安全

而咱们常说iptables(Centos 6)和firewalld(Centos 7)只是配置Netfilter的前端工具。网络


iptables由四个表和五个链以及一些规则组成并发


四个表框架

tcp

(tables)ide

工具

(chains)性能

filter

这是默认表,过滤规则表,根据预约义的规则过滤符合条件的数据包

应用场景:主机防火墙

INPUT

过滤全部目标是本机地址的数据包

FORWARD

转发流经本机的数据包。起到转发的做用

OUTPUT

处理全部源地址本机地址的数据包,就是处理从主机发出的数据包

nat

负责网络地址转换

应用场景:局域网共享上网

FREROUTING

在数据包到达防火墙时,进行路由判断以前执行的规则,

做用是改变数据包的目的地址、目的端口等

OUTPUT

与主机流出去的数据包有关,改变主机发出数据包的目的地址

POSTROUTING

在数据包离开防火墙时进行路由判断以后执行的规则,

做用改变数据包的源地址,源端口等。

mangle

这个表专门用于改变数据包的结构(通常改变数据包首部格式)

修改数据标记位规则表

INPUT

进入到设备自己的包

FORWARD

对路由后的数据包信息进行修改

FREROUTING

在路由以前更改传入的包

OUTPUT

本地建立的数据包在路由以前改变

POSTROUTING

在数据包即将离开时更改数据包信息

raw

关闭NAT表上启用的链接跟踪机制,加快封包穿越防火墙速度

PREROUTING

for packets arriving via any network interface

OUTPUT

for packets  generated by local processes

1.png

五个内置链chain


Centos 6

表(tables

链(chains

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

filter

O

O

O

×

×

nat

×

×

O

O

O

mangle

O

O

O

O

O

raw

×

×

O

O

×

说明:O 表示有,× 表示无。


Centos 7

表(tables

链(chains

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

filter

O

O

O

×

×

nat

O

×

O

O

O

manale

O

O

O

O

O

raw

×

×

O

O

×

说明:O 表示有,× 表示无。


iptables工做流程


内核中数据包的传输过程

当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否须要转发出去

若是数据包就是进入本机的,数据包就会沿着图向上移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序能够发送数据包,这些数据包通过OUTPUT链,而后到达POSTROUTING链输出

若是数据包是要转发出去的,且内核容许转发(net.ipv4.ip_forward=1),数据包就会向右移动,通过FORWARD链,而后到达POSTROUTING链输出

1.png

一、iptables主要工做在OSI七层的2.3.4层。

二、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。全部顺序 很重要。

三、若是匹配上了规则,即明确代表是阻止仍是经过,此时数据包就不在向下匹配新规则了。

四、若是全部规则中没有匹配规则,则向下进行匹配,直到匹配默认规则。通常最后的默认规则是拒绝全部。

五、防火墙的默认规则是对应链的全部的规则执行完之后才会执行的(最后执行的规则)。

六、生产中根据具体状况启用服务。大并发的状况不能开iptables,影响性能,iptables是要消耗CPU的,大并发的状况下,使用硬件防火墙。

七、规则要添加在链chain上,才生效;添加在自定义上不会自动生效。只有Hook钩子调用自定义链时才生效。


iptables添加要点


iptables规则添加时考量点

 要实现哪一种功能:判断添加在哪张表上

 报文流经的路径:判断添加在哪一个链上

 报文的流向:判断源和目的地址

 匹配规则:根据业务须要


规则优化

任何不容许的访问,应该在请求到达时给予拒绝

规则在连接上的次序即为其检查时的生效次序

1 安全放行全部入站和出站的状态为ESTABLISHED状态链接

2 谨慎放行入站的新请求

3 有特殊目的限制访问功能,要在放行规则以前加以拒绝

4 同类规则(访问同一应用),匹配范围小的放在前面,用于特殊处理

5 不一样类的规则(访问不一样应用),匹配范围大的放在前面

6 应该将那些可由一条规则可以描述的多个规则合并为一条

7 设置默认策略,建议白名单(只放行特定链接)

1) iptables -P 设置默认策略为拒绝,不建议。由于iptables -F 连本身都没法远程了。悲剧。

2) 建议在规则的最后定义规则作为默认策略


在Centos7上,iptables和firewalld只能2选一


iptables工具

iptables v1.4.7  (Centos 6)

iptables v1.4.21 (Centos 7)

参数

参数说明

保存配置

方法一:/etc/init.d/iptables save  或 service iptables save

方法二:iptables-save > /etc/sysconfig/iptables

载入配置文件

方法一:iptables-restore  < /etc/sysconfig/iptables

方法二:service iptables reload 或 service iptables restart

-n:不清除原有规则

显示相关参数

-n

以数字的方式显示地址或端口信息

-L

列出一个链或全部链中的规则信息

-S

以iptables-save 命令格式显示链上规则

--line-number

显示规则的序号

-v 或 -vv

显示详细信息

-x

显示计数器结果的精确值,而非单位转换后的易读值

链管理相关参数

iptables -X

删除自定义的空的规则链

iptables -Z

链的计数器清零(数据包计数器与数据包字节计数器)

iptables -N

建立新的用户定义链

iptables -P

设置默认策略;对filter表中的链而言,其默认策略有:

ACCEPT:接受

DROP:丢弃

iptables -E

重命名自定义链;引用计数不为0的自定义链不可以被重命名,也不能被删除

规则管理经常使用参数(在前面加感叹号,表示是取反)

-t 表名称

指定配置哪一个表(4表),指定配置表名称。

-A 链名称

追加到指定链(链名称必须大写)默认将配置的规则插入到当前规则最后一条

-I 链名称

插入相应规则策略,到指定链上,默认将配置的规则插入到第一条

(能够根据规则序号插入到指定位置)

-D 链名称

删除指定的规则(能够根据如下方法删除

(1) 指明规则序号

(2) 指明规则自己)

-R 链名称 规则编号

替换指定链上的指定规则编号

例:iptables -R INPUT 2

-C

检查规则是否存在

-F

清除全部规则,不会处理默认的规则

-Z

置零计数器

iptables的每条规则都有两个计数器

(1) 匹配到的报文的个数

(2) 匹配到的全部报文的大小之和

[!] -p 协议名称

指定规则的协议名称,可使用协议表明的数字表示

常见值为all ,tcp, udp, icmp,

参看:/etc/protocols

-j 动做

匹配数据包后的动做    

ACCEPT

容许

DROP

丢弃(没有响应)推荐使用

REJECT

拒绝(回应请求者明确的拒绝)

MASQUERADE

假装上网时使用

SNAT

共享地址上网

DNAT

目的地址改写

RETURN

返回调用链,继续判断其余规则

REDIRECT

端口重定向

MARK

作防火墙标记

LOG

记录日志,dmesg

[!] -i

报文流入的接口;只能应用于数据报文流入环节,

只应用于INPUT、FORWARD、PREROUTING链

[!] -o

报文流出的接口;只能应用于数据报文流出的环节,

只应用于FORWARD、OUTPUT、POSTROUTING链

[!] -s

指定源IP地址或源网段信息

address[/mask][,...]

[!] -d

指定目标IP地址或目标网段信息

address[/mask][,...]

扩展参数

须要加载扩展模块(/usr/lib64/xtables/*.so),方可生效

查看帮助 man iptables-extensions

隐式扩展

在使用 -p 选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,

不须要手动加载扩展模块

TCP/UDP协议的扩展选项

--dport

匹配报文目标端口,可为端口范围

--sport

匹配报文源端口,可为端口范围

显式扩展

必须使用-m选项指明要调用的扩展模块的扩展机制

要手动加载扩展模块

-m 模块

表示加载扩展功能的参数(能够加载扩展参数)

multiport

以离散方式定义多端口匹配,

最多指定15个端口

iprange

指明连续的ip地址范围

(但通常不是整个网络)

icmp

使用icmp的扩展

mac

指明源MAC地址

time

根据将报文到达的时间与指定的时间范围

进行匹配

string

对报文中的应用层数据作字符串模式匹配检测

connlimit

根据每客户端IP作并发链接数数量匹配

可防止CC(Challenge Collapsar挑战黑洞)***

limit

基于收发报文的速率作匹配

state

根据”链接追踪机制“去检查链接的状态,

较耗资源

示例请看iptables (二)

更多说明:

man 8 iptables        iptables-extensions(8) (Centos 7才有)

相关文章
相关标签/搜索