一、iptables基础:
1、了解iptables防火墙。
(1)iptables的表:按照功能的不同表分为raw(状态跟踪)、mangle(标记)、nat(地址修改)、filter(过滤)。
(2)iptables规则链:按照不同时机链分为INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后);
在链中存放规则:
filter: INPUT/FORWARD/OUTPUT
nat: PREROUTING/POSTROUTING/OUTPUT
mangle: PREROUTING/INPUT/FORWARD/OUTPUT/POSTROUTING
raw: PREROUTING/OUTPUT
2、iptables匹配流程:根据数据流的方向确定匹配顺序;
入站数据流向:PREROUTING --> INPUT
出战数据流向:OUTPUT --> POSTROUTING
转发数据流向:PREROUTING --> FORWARD --> POSTROUTING;
(1)表的匹配顺序:
raw --> mangle --> nat --> filter
(2)链的匹配顺序:根据数据流的方向确定匹配顺序。
(3)链内规则匹配顺序:从上到下,匹配即停止未匹配使用默认规则。
二、编写iptables规则:
语法:iptables -t 表名 选项 链名 条件 -j 动作
1、编写iptables语法注意:
(1)省略表名,表示filter表,省略链名,表示表内所有链
(2)除非设置默认规则,否则必须设置匹配的规则
(3)选项,链名,动作必须大写,其他小写
2、动作:对匹配条件进行处理,常见有:
ACCEPT:允许; DROP:丢弃; REJECT:拒绝; LOG:日志;
3、选项:
对链进行的规则的增、删、改、查操作。
(1)增加:-A链的末尾添加、-I链的制定位置添加。
(2)删除:-D删除一条规则、-F清空链内所有规则
(3)查看:-L -n 查看规则、-L -n -V 显示更详细的信息、-L -n --line-number显示规则序号。
(4)设置默认规则:-P 链名 DROP或者ACCEPT
4、匹配条件:
(1)通用的匹配条件:
-P 协议 ##常用ICMP/UDP/TCP
-s 源地址,-d 目的地址 ##能确认的地址
-i 入站接口, -o 出战接口 ##注意数据流向,如INPUT只能用-i
(2)隐含匹配条件:
端口:-p 协议 --dport 目的端口 或 --sport 源端口
ICMP类型:-p icmp --icmp-type 8请求 或 0返回 或 3网络不可达
TCP标识:-p tcp --tcp-flags 范围 标记 (syn,ack,fin,rst)
(3)显示匹配条件:
多端口:-m multiport -p tcp或udp --dports 端口1,端口2,端口:端口
ip地址范围:-m --iprange --src-range ip1-ip2
mac地址:-m mac --source-mac MAC地址
状态:-m state --state NEW,ESTABLISHED,RELATED (NEW新建,ESTABLISHED已经建立连接,RELATED和已经建立的任务已经相关)
三、企业服务器防火墙设置实战:
/etc/init.d/iptables stop ##清空规则,包括默认
iptables -A INPUT -i lo -j ACCEPT ##允许本地所有访问
iptables -A INPUT -p tcp -m -multiport --dports 80,443,20,21,45000:50000 -j ACCEPT ##开放本地所有端口
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ##本机可以访问其他主机
iptables -p INPUT DROP ##设置INPUT的默认规则
iptables -p FORWARD DROP ##禁止转发
/etc/init.d/iptables save ##保存规则
chkconfig iptables on ##开机启动