防火墙:位于网络之间的,根据所定义的规则对进出网络数据包进行匹配,并匹配到包用指定的处理机制进行处理的硬件,软件或者二者的结合。
防火墙分类:
包过滤防火墙:有状态监测简单包过滤
网关代理防火墙:工作在应用层,对某种特定协议进行检测,能够将检测结果记录到日志中,以便管理员在后续审计时发现潜在风险的防火墙,比包过滤防火墙效率低,但安全性好。
iptables软件防火墙:
数据包的走向:
数据包进入内网卡,然后读进内核缓冲区,等待进入TCP/IP协议栈进行处理。
在经过TCP/IP协议栈进行处理时,首先检查数据包的IP首部,判断其目标地址(DIP)。2.1当DIP所指向的主机是内网卡地址时,将检查数据包的TCP首部,判断数据包所访问的目标端口,将访问这个套接字端口,将把该数据包从用户空间送往用户空间。
2当DIP所所指向的主机不是本地主机,则将通过查找路由表将数据包从内核空间通过另一块网卡发出。
回应数据包与收到的数据包流程相同。
内存分配:低地址的1G是内核空间,高地址的3G是用户空间。
内核空间TCP/IP协议栈数据包流入流出的五个NetFilter(Hook function):
Iptables的四种功能:
Filter:包过滤。在Input,output,forward上实现。
NAT:SNAT必须在路由之后做,DNAT必须在路由之前做。在prerouting,postrouting,output实现。
Mangle:将数据包封装拆开,修改后再进行封装。五个NetFilter都可做。
Raw
优先级(高―>低):mangle, nat,filter
语法:
#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表上,策略有ACCEPT和DROP,REJECT
View:
-L(list):列出所有规则
-n 不反解IP地址
-v �Cvv -vvv 显示详细信息
-x 显示精确值
--line-numbers 显示行号
Cretiria匹配条件(通用匹配,扩展匹配)
通用匹配:
-s(!取反)IP/NETWORK 指定IP或网络地址
-d(!取反)IP/NETWORK 指定目标地址
-p 匹配第四层的协议(tcp|udp|icmp)
-iinterface 数据包流入的接口(不能用于OUTPUT和POSTROUTING)
-ointerface 数据包流出的接口(不能用于INPUT和PREROUTING)
-j跳转方法:ACCEPT DROPREJECT
防火墙分为主机防火墙和网络防火墙。
扩展匹配:
隐式扩展:一般指对-p选项中指定的协议进行的扩展。
-p tcp
--sport PORT[-PORT](都可以取反)
--dport PORT[-PORT]
--tcpflags 要检查的标记必须为1的标记(剩余的位必须为0)SYN,ACK,FIN,RST,PSH,URG
--tcpflags SYN,ACK,RST,FIN SYN(可简写为--syn)
-p udp
-- sport
--dport
-p icmp
--icmp-type
Echo-request:8 回显请求echo-reply:0 回显响应
显式扩展:一般指必须使用-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
例子:
禁止来自172.16.100.1的主机ping数据包
Iptables �Ct filter �CA INPUT �Cs 172.16.0.0/16 �Cd172.16.100.1 �Cp icmp �Cj DROP
拒绝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
允许172.16.100.200访问本地的ssh服务:22
Iptables �CA INPUT �Cs 172.16.100.200 �Cd 172.16.100.1 �Cp tcp �Cdport22 �Cj ACCEPT
删除filter中INPUT的第一条规则
Iptables �Ct filter �CD INPUT 1
查看filter规则,并显示行号
Iptables �Ct filter �CL �Cn �Cline-numbers
修改默认处理机制
Iptables �Ct filter �CP INPUT DROP
允许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.将22,23,80,110,143,25端口的服务放行
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之间的地址访问服务,且状态为NEW和ESTABLISHED
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.2月18号-2月26号8: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