iptables详解

防火墙:位于网络之间的,根据所定义的规则对进出网络数据包进行匹配,并匹配到包用指定的处理机制进行处理的硬件,软件或者二者的结合。

防火墙分类:

包过滤防火墙:有状态监测简单包过滤

网关代理防火墙:工作在应用层,对某种特定协议进行检测,能够将检测结果记录到日志中,以便管理员在后续审计时发现潜在风险的防火墙,比包过滤防火墙效率低,但安全性好。

 

iptables软件防火墙:

数据包的走向:

  1. 数据包进入内网卡,然后读进内核缓冲区,等待进入TCP/IP协议栈进行处理。

  2. 在经过TCP/IP协议栈进行处理时,首先检查数据包的IP首部,判断其目标地址(DIP)。2.1DIP所指向的主机是内网卡地址时,将检查数据包的TCP首部,判断数据包所访问的目标端口,将访问这个套接字端口,将把该数据包从用户空间送往用户空间。

  3. 2DIP所所指向的主机不是本地主机,则将通过查找路由表将数据包从内核空间通过另一块网卡发出。

回应数据包与收到的数据包流程相同。

 

内存分配:低地址的1G是内核空间,高地址的3G是用户空间。

 

内核空间TCP/IP协议栈数据包流入流出的五个NetFilter(Hook function)

wKioL1O1NSri_LcTAACR3Ek8sdk102.jpg

Iptables的四种功能:

Filter:包过滤。在Input,output,forward上实现。

NAT:SNAT必须在路由之后做,DNAT必须在路由之前做。在prerouting,postrouting,output实现。

Mangle:将数据包封装拆开,修改后再进行封装。五个NetFilter都可做。

Raw

 

优先级(―>)mangle, nat,filter

wKioL1O1NU7yFxAsAAHQXTr_p4U676.jpg

wKiom1O1NY6y_kiGAAL8BmaR1VE489.jpg

语法:

#iptables [-t btale] sub_command CHAIN[num] [cretiria] [-j ACCTION]

-t filter nat mangle raw

 

sub_command

新增一条规则:-A(append):追加

-I(insert):插入 -I INPUT 3

删除一条规则:-d(delete):删除 �Cd OUTPUT8

替换一条规则:-R(replace):替换 �CRFORWARD 6

 

CHAIN

  清空一条链:-F(flush):如果不指定链,则清空所有链。

  新建一条链:-N(new)

  删除一条链:-X删除用户自定义的空链。

  清空计数器:-Z 每一条规则都有两个计数器,一个用于记录被本条规则所匹配到的包的个数,另一个用于记录所有匹配到的包的体积之和。

  重命名链(一般是自定义链)-E

 

Policy

  -P:定义在filter表上,策略有ACCEPTDROPREJECT

 

View

 -L(list):列出所有规则

-n 不反解IP地址

-v �Cvv -vvv 显示详细信息

-x 显示精确值

--line-numbers 显示行号

 

Cretiria匹配条件(通用匹配,扩展匹配)

通用匹配:

  -s(!取反)IP/NETWORK 指定IP或网络地址

  -d(!取反)IP/NETWORK 指定目标地址

  -p 匹配第四层的协议(tcp|udp|icmp

  -iinterface 数据包流入的接口(不能用于OUTPUTPOSTROUTING

  -ointerface 数据包流出的接口(不能用于INPUTPREROUTING

 

-j跳转方法:ACCEPT DROPREJECT

 

防火墙分为主机防火墙和网络防火墙。


扩展匹配:

隐式扩展:一般指对-p选项中指定的协议进行的扩展。

         -p tcp

            --sport PORT[-PORT](都可以取反)

            --dport PORT[-PORT]

            --tcpflags 要检查的标记必须为1的标记(剩余的位必须为0SYN,ACK,FIN,RST,PSH,URG

               --tcpflags SYN,ACK,RST,FIN SYN(可简写为--syn)

         -p udp

              -- sport

              --dport

         -p icmp

              --icmp-type

               Echo-request8 回显请求echo-reply0 回显响应

 

显式扩展:一般指必须使用-m选项明确指定要加载扩展。

state:连接状态 �Cstate STATE

NEW:专门匹配一个新发起的连接请求

ESTABLISHED:已建立连接的状态

RELATED:相关联的状态(主要用于FTP服务)

INVALID:无法识别的状态

 

多端口匹配,用于匹配多个非连续的端口

-m {mport|multiport}

  --source-ports

  --destination-ports

  --ports

 

-m iprange

[!]―src-range ip-ip

[!]―dst-range ip-ip

 

Connlimit 通常用于限制某个地址发起的并发连接请求个数

[!] �Cconnlimit-above n

通常! �Cconnlimit-above n �Cj ACCEPT 表示没超过连接请求个数的放行

 

Limit数据包的速率限制

--limit rate平均速率

实现流控:令牌桶过滤器

--limit-burst number峰值

 

-m time

 --timestart value

 --timestop value

 --days listofdays(format:Mon,Tue,Wed,Thu,Fri,Sat,Sun;default everyday)

 --datestart date

 --datestop date

  Format:YYYY[:MM[:DD[:hh[:mm[:ss]]]]]

 

 

-m string

--algo bm|kmp

-string pattern


例子:

  1. 禁止来自172.16.100.1的主机ping数据包

Iptables �Ct filter �CA INPUT �Cs 172.16.0.0/16 �Cd172.16.100.1 �Cp icmp �Cj DROP

  1. 拒绝172.16.100.200访问本地web服务:80

Iptables �CA INPUT �Cs 172.16.100.200 �Cd 172.16.100.1 �Cp tcp �Cdport 80�Cj DROP

  1. 允许172.16.100.200访问本地的ssh服务:22

Iptables �CA INPUT �Cs 172.16.100.200 �Cd 172.16.100.1 �Cp tcp �Cdport22 �Cj ACCEPT

  1. 删除filterINPUT的第一条规则

Iptables �Ct filter �CD INPUT 1

  1. 查看filter规则,并显示行号

Iptables �Ct filter �CL �Cn �Cline-numbers

  1. 修改默认处理机制

Iptables �Ct filter �CP INPUT DROP

  1. 允许172.16.100.0网段的主机ping172.16.100.1

Iptables �CI INPUT 1 �Cs 172.16.0.0/16 �Cd 172.16.100.1 �Cpicmp �Cicmp-type 8 �Cj ACCEPT

Iptables �CI OUTPUT 1 �Cs 172.16.100.1 �Cd 172.16.0.0/16 �Cpicmp �Cicmp-type 0 �Cj ACCEPT

8.拒绝eth1新发起的连接请求

Iptables �CA OUTPUT �Co eth1 �Cp tcp �Csyn �Cj DROP

Iptables �CA OUTPUT �Co eht1 �Cm state �Cstate NEW �Cj DROP

9.允许172.16.100.1发出已建立连接的数据包

Iptables �CP OUTPUT DROP

Iptables �CA OUTPUT �Cs 172.16.100.1 �Cm state �Cstate ESTABLISHED �CjACCEPT

10.允许172.16.100.1接收新建立连接和已经建立连接的数据包

Iptables �Cp INPUT DROP

Iptables �CA INPUT �Cd 172.16.100.1 �Cm state �Cstate NEW, ESTABLISHED �CjACCEPT

11.22238011014325端口的服务放行

Iptables �CA INPUT �Cd 172.16.100.1 �Cp tcp �Cm mport �Cdestination-ports22,23,80,110,143,25 �Cm state �Cstate NEW,ESTABLISHED �Cj ACCEPT

12.仅允许来自于192.168.1.9-192.168.1.200之间的地址访问服务,且状态为NEWESTABLISHED

Iptables �CA INPUT �Cd 172.16.100.1 -m iprange �Csrc-range192.168.1.9-192.168.1.200 �Cp tcp --dport 80 �Cm state NEW,ESTABLISHED �Cj ACCEPT

13.每秒只放行1个,并发数为3,不带状态监测

Iptables �CA INPUT �Cd 172.16.100.1 �Cp tcp �Cdport 80 �Cm limit �Climit1/second �Climit-burst 3 �Cj ACCEPT

14.218-2268:30-14:30允许访问本机的web服务

Iptables �CA INPUT �Cd 172.16.100.1 �Cp tcp �Cdport 80 �Cm time �Ctimestart08:30:00 �Ctimestop 14:30:00 �Cdatestart 2012:02:18 �Cdatestop 2012:02:26 �CjACCEPT

15.响应信息中包含web的不能访问

Iptables �CA OUTPUT �Cs 172.16.100.1 �Cp tcp �Csport 80 �Cm string �Calgobm �Cstring “web” �Cj DROP


你可能感兴趣的:(iptables,详解)