一、防火墙概述
1、防火墙分类
a、硬件防火墙:
如思科的ASA防火墙,H3C的Sepath防火墙等
(物理机器就是个防火墙,自带操作系统)
b、软件防火墙:
如iptables等
二、iptables匹配流程
入站:input 目标是网关
出站:output 源是网关
转发:forword 目标不是网关
路由选择前:Prerouting 进路由前
路由选择后:Postrouting 出路由后
链是什么??
防护墙一共有四表五链,五个链就是防火墙。
链就是一堆规则组名;
INPUT里面也有防火墙规则,控制的就是入站这段的防火墙规则。
出站:OUTPUT,控制的就是出站这段的防火墙规则
转发:FORWARD,控制的就是转发网关这段的防火墙规则
路由选择前:PREROUTING,控制的就是进网关前这段的防火墙规则
路由选择后:POSTROUTING,控制的就是出网关后这段的防火墙规则
规则就是如何处理数据包。
链就是代表这每一段,而这段链包含一组规则,规则就是当数据包经历这一段的时候我如何控制它;总共有五个链,就有五个规则。
防火墙无法卸载
因为防火墙不在应用层,而是在kernel里
我们使用service iptables status不是关闭防火墙,而是把规则清了,没有任何限制了。
三、查看防火墙规则命令
iptables -L #默认是看filter表,里面只有INPUT FORWARD OUTPUT
iptables -t filter -L #指定看filter表
iptables -n
iptables -nv
查看路由网关:route -n
看nat表
iptables -t nat -L
有PREROUTING POSTROUTING OUTPUT
#一般只有对路由前和路由后操作,才动NAT表;OUTPUT在filter表里限制
四、链表结构关系图
五、封锁命令
iptables -I INPUT -p icmp -j DROP #给INPUT链插入限制所有的icmp协议都丢包
所有的协议都是icmp规则;
iptables -F #清空规则
iptables -I OUTPUT -p icmp -j DROP #给OUTPUT链插入限制所有的icmp协议都丢包
iptables -I FORWARD -p icmp -j DROP #给FORWARD链插入限制所有的icmp协议都丢包
上面链默认都允许通过,下面做限制通过
上面链默认都拒绝通过,下面做允许通过
iptables -P FORWARD DROP #直接修改链规则,直接所有拒绝
关闭大链,xshell不掉
iptables -I OUTPUT -s 192.168.154.133 -d 192.168.154.1 -p tcp --sport 58888 -j ACCEPT
#OUTPUT限制源没有意义,都是从自己这发出去。OUTPUT只能限制目标的端口。
#-p是协议, --sport定端口
iptables -I INPUT -s 192.168.154.1 -d 192.168.154.133 -p tcp --dport 58888 -j ACCEPT
#INPUT限制目标没有意义,都在找自己的。
#-p是协议,--dport定端口;别人来找我,源端口是随机的,只能限制目标端口。
限制端口的前提,要先限制协议。
六、常见的匹配条件汇总表
service iptables stop 清空所有规则
LINUX /etc/sysctl.conf
sysctl -p重启配置文件
七、隐现匹配
八、显示匹配
netstat -rn
ip route
route -n
看网关
SNAT 对源做NAT(源网络地址转换) 在出路由口做
在出网段做SNAT 为的是让对方能从公网转发回来。
SNAT是私网能上公网,从一个网关出去数据包;SNAT做转换为的是让百度发回来;因此我们家庭数据包出家庭出完的一霎那,加个家庭公网IP(SNAT)
iptables -t nat -A POSTROUTING -s 192.168.200.0/24(左边进的网段) -o eth1 -j SNAT --to-soutce 右(出)网卡地址
-i eth0 入网卡 -o eth1出网卡
##目标地址转换用DNAT ##是在进路由口做DNAT
要在进目标之前做DNAT转换,-d为百度公网路由IP --dport 找自己的端口号, -j为DNAT类型 --to-destination 百度web服务器的私网IP 冒号(:)后加端口号
iptables -t nat -A PREROUTING -i eth1 -d 百度公网IP -p tcp --dport 80 -j DNAT --to-destination 私网ip:8080