防火墙基本流程
防火墙是对于访问的请求数据经过多层规则,层层过滤。
有ACCEPT(接受),DROP(拒绝)两种。任意一种匹配则说明匹配成功,那么数据包则不需要继续往下匹配。
如果没有匹配到规则,那么最终会匹配默认规则。
防火墙默认规则是所有规则都匹配后,最后匹配默认规则。
规则存放
一般拒绝的规则放在所有规则的最上面,允许的规则放在所有规则的最下面。
iptables表链
4张表:filter,nat,raw,mangle
伍个链:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
filter表
nat表
请求经过防火墙流程
防火墙命令
1.查看防火墙规则
防火墙默认是filter表,所以默认展示的是filter表规则。
#查看所有表
iptables -nL
#-t制定表
iptables -t nat -nL
#显示数字行号
iptables -nL --line-number
iptbales屏蔽地址
1.设置入网ip拒绝
-t 指定表,-I指定链(拒绝类的),-A追加规则(接受类的),-D删除规则,-s指定源ip,-j指定策略(拒绝/接受/重定向)
iptables -t filter -I INPUT -s 10.10.200.11 -j DROP
2.屏蔽整个网段
iptables -I INPUT 192.168.1.0/24 -j DROP
3.删除规则
-D 指定要删除的链,1(第几条)
iptables -D INPUT 1
iptable屏蔽端口
-s 指定网段,-p指定协议,--dport指定本地端口,-j DROP屏蔽丢弃
iptables -I INPUT -s 98.13.17.0/24 -p tcp --dport 8848 -j DROP
2.禁止98.13.17.0网段之外的其他网段连入,!表示取反。
iptables -I INPUT ! -s 98.13.17.0/24 -j DROP
3.禁止多个端口连入
-m multiport 指定多个端口
--deport 88:90 端口如果有规律,可使用:表示范围
iptables -I INPUT -m multiport -p tcp --dport 88,443,8848 -j DROP
iptables -I INPUT -m multiport -p tcp --dport 88:90 -j DROP
iptables禁止ping
-p指定协议icmp
iptables -I INPUT -p ICMP --icmp-type 8 -j DROP
iptables保存规则
iptabels-save > /etc/sysconfig/iptables
iptables恢复默认规则
iptables-restore < /etc/sysconfig/iptables
iptables清空所有规则
iptables -F
iptables修改默认规则
iptables -P INPUT DROP
生产环境使用方式
原理:先设置规则,将需要的规则都设置上,然后修改默认规则为DROP
iptables -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -o lo -j ACCEPT
iptabels -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptabels -A INPUT -s 172.16.1.0/24 -j ACCEPT
#tcp连接状态
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j
#修改默认规则,-P指定规则策略
iptables -P INPUT DROP
iptabels防火墙实现局域网通过一台服务器实现共享上网(SNAT)
场景:内网172.16.1网段,无法上网,通过一台中专服务器实现上共享上网。
注:
1.需要在防火墙服务器事先开启内核转发功能
2.需要上网的客户端(内网服务器)网管指向中专服务器。
3.通过iptables命令将内网ip经过防火墙时更改成防火墙的公网ip,(数据包出去时更改IP,也就是POSTROUTING)
-j SNAT:源地址转换。 --to-source 10.0.0.61:更改目标IP
-j MASQUERADE:不指定目标IP,随公网IP变化而变化
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
或者
ptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
iptables实现公网到内网服务器的端口映射访问(DNAT)
场景:公网服务器想访问内网某一台服务器的地址:端口
通过防火墙服务器实现端口映射
iptables -t nat -A PREROUTING -d 10.10.1.61 -p tcp --deport 9000 -j DNAT --to-destination 172.16.1.7:22
也可以实现公网IP到内网IP的映射,上面的的规则去掉端口就是IP映射。