iptables防火墙

1.了解iptables

防火墙分为硬件(ASA,华为USG)和软件防火墙(ISA,iptables),根据数据的特征进行过滤或者控制。

iptableslinux的默认的软件防火墙。

角色:netfilter(内核的模块)和iptables(工具,用户使用)

iptables工作在网络层(TCP/IP五层:应,传,网,数,物),对数据包依据IP及端口进行过滤和其他操作,iptables是一个包过滤防火墙。

iptables组织管理规则方法:表-->-->规则

 

2.ptables的表:区分依据功能;表分为:

raw表:状态跟踪

mangle表:标记,可以实现QOS

nat表:修改(IP/端)

filter表:过滤

 

iptables链:区分依据,时机

INPUT链:入站

OUTPUT链:出站

FORWARD链:转发

PREROUTING链:路由前

POSTROUTING链:路由后

 

3.iptables匹配流程

表的匹配流程:raw-->mangle-->nat-->filter

链的匹配流程:根据数据流向(方向),分为如下:

入站流向:PREROUTING-->INPUT

出站流向:OUTPUT-->POSTROUTING

转发数据流向:PREROUTING-->FORWARD-->POSTROUTING

链内规则的匹配流程:顺序匹配,匹配即停止,LOG除外;无匹配使用默认规则。

 

raw包含默认链:PREROUTING,OUTPUT

mangle包含默认链:PREROUTING,POSTROUTING,FORWARD,OUTPUT,INPUT

nat包含默认链:PREROUTING,POSTROUTING,OUTPUT

filter包含默认链:INPUT,OUTPUT,FORWARDwKiom1g4VrPSNzRyAAHPnB1sPRc440.jpg-wh_50


wKioL1g4VyLwYgRWAAGLAwieZ7g813.jpg-wh_50

wKiom1g4VyPx-cmVAAFO2vfs3vk095.jpg-wh_50


总结:iptables规则就是在什么时机干什么事怎么干(rule--chain--function)。


4.编写链内规则

语法:

iptables -t  表名  [选项]  链名  条件  -j  动作

选项:管理规则

增:-A(链最后新建记录)-I(链的开始新建记录,指定新建记录的位置号)

删:-D(删除一条记录规则)-F(清空链内规则)-X(删除用户自定义的链)

查:-L(查看)v(详细信息)n(数字显示)--line-numbers(显示规则的行号)

动作:

DROP:丢弃

REJECT:拒绝

ACCEPT:允许

LOG:日志

设置默认规则:-P(iptables  -t  表名 -P  链名  DROP/ACCEPT)

注意事项:

a.省略表时默认使用filter,省略链时默认使用表中的所有链,省略表和链表示:filterINPUT/OUTPUT/FORWARD

b.选项、链名、动作是大写,其他为小写,查看的子选项除外

匹配条件:根据是否需要额外加载,分为通用、隐含、显式

a.通用

协议:-p  协议(tcp/udp/icmp

地址匹配:-s  源地址;-d  目的地址

接口匹配:-i 入站网卡,-o  出站网卡

iptables -I INPUT  -i  eth0 -s  192.168.100.0/24 -p icmp -j ACCEPT 

iptables -I INPUT -i lo -j ACCEPT  ##允许本地对本地的访问

 

b.隐含:必须依赖一个协议匹配

端口匹配:--sport  源端口 --dport  目的端口

iptables -I INPUT  -p tcp --dport 80 -j ACCEPT   ##服务器发布80端口

iptables -I FORWARD -p tcp --dport 80 -j ACCEPT

iptables -I FORWARD  -p tcp  --sport 80  -j ACCEPT

TCP标记匹配:--tcp-flags 检查的范围  被设置标记

iptables -I  INPUT  -p tcp --tcp-flags  ACK,SYN,RST,FIN  SYN -j  DROP

iptalbes -I  INPUT  -p  tcp ! --syn  -j  ACCEPT

ICMP类型匹配:--icmp-type  ICMP类型(0echo-reply回应,8echo-request,请求)

iptables -I INPUT -p icmp  --help ##帮助

iptables -I INPUT -p icmp  --icmp-type  0  -j ACCEPT  ##结合默认规则为DROP可以实现本机可以ping通其他主机,其他主机禁ping

 

c.显式匹配:

多端口匹配:-m multiport --sports  端口 |-m  multiport --dports 端口  -->减少iptables规则


wKioL1g4V5jjm2n6AAGlT_UuGwA351.jpg-wh_50

主机型防火墙:

个人电脑:

/etc/init.d/iptables  stop  ##清空所有规则,包括默认规则

iptables -I INPUT  -i lo -j ACCEPT

iptables -A INPUT  -m state  --state  ESTABLISHED,RELATED  -j ACCEPT 

iptables  -P INPUT DROP

iptables  -P FORWRAD DROP

/etc/init.d/iptables save

 

服务器防火墙设置:httpddnsdhcpvsftpdpostfixdovecotmysqlsmbssh

/etc/init.d/iptables  stop

iptables -I INPUT -m multiport -p tcp  --dport  20,21,22,25,53,80,110,139,445,50000:510000 -j ACCEPT

iptables -I INPUT -m multiport -p udp  --dports 53,67 -j  ACCEPT

iptables  -I INPUT -i lo  -j  ACCEPT

iptables  -A INPUT -m  state  --state ESTABLISHED,RELATED  -j  ACCEPT

iptables -P INPUT  DROP

iptables -P  FORWRAD DROP

/etc/init.d/iptables  save

 

iptables -t 表名-A/I,-D/F/X,-L -n -v  --line-numbers,-P 链名 条件 -j  ACCEPT/DROP/REJECT/LOG


wKiom1g4V7vydhNpAAE54jqlHAw985.jpg-wh_50