linux防火墙
一.基本
1.iptables和firewalld服务都是管理防火墙的工具,并不是防火墙.rhel7用firewalld服务代替了iptables服务
2.策略:
ACCEPT: 接受 REJECT: 拒绝 DROP: 丢弃 LOG: 记录日志,然后传给下一个规则匹配(日志/var/log/message)
3.规则表:
raw表: 确定是否对数据包进行状态跟踪 mangle表: 为数据包设置标记 nat表:修改数据包中的源,目标IP地址或端口 filter:确定是否放行该数据包(过滤,这是默认的表类型)
先后顺序:raw -> mangle -> nat -> filter
4.规则链:
PREROUTINT: 在进行路由选择前处理数据包 INPUT: 处理入站数据包 OUTPUT:处理出站的数据包 FORWARD:处理转发数据包 POSTROUTING:路由选择后处理数据包
先后顺序
入站顺序:PREROUTINT -> INPUT
出站顺序:OUTPUT -> POSTROUTING
转发顺序:PREROUTINT -> FORWARD -> POSTROUTING
综合示意图:
5.注意
a.没有指定规则表,则默认是filter
b.没有指定规则链则指表内所有规则链
c.规则链中匹配规则时,会依次检查,匹配即停止(LOG除外)
二.命令格式
1.基本格式
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
2.参数:
-P 设置默认策略,如: iptables -P INPUT (DROP|ACCEPT) -F 清空规则链 -L 查看规则链 -A 规则链末尾插入新规则 -I num 规则链头部插入新规则 -D num 删除某一条规则 -s 匹配来源地址ip/MASK, 加!表示除了这个IP外 -d 匹配目标地址 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据 -p 匹配协议,如tcp/upd/icmp --dport num 目标端口号 --sport num 来源端口号
查看nat链:
iptables -t nat -nL
允许ping:
iptables -I INPUT -p icmp -j ACCEPT
3.snat(源地址转换技术)和dnat(目标地址转换技术)
本机80端口转发到81端口:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 81 iptables -I INPUT -p tcp --dport 81 -j ACCEPT
将访问本机的80端口时转向到192.168.2.10的9000端口
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.2.10:9000 iptables -t nat -A POSTROUTING -j MASQUERADE