Linux防火墙-iptables
firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘
对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,
对于能够被规则所匹配的报文做出相应处理的组件(这个组件可以是硬件,也可以是软件):
- 主机防火墙
- 网络防火墙

iptables/netfilter
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具。iptables 工具运行在用户态,主要是设置各种规则。而 netfilter 则运行在内核态,执行那些设置好的规则。
功能(表):
filter nat mangle raw
filter:过滤,防火墙
nat:network address translation,网络地址转换
mangle:拆分报文,做出修改,封装报文
raw:关闭nat表上启用的连接追踪机制
链(内置):
prerouting input forward output postrouting
PREROUTING:在进行路由选择前处理数据包
INPUT:处理流入的数据包
OUTPUT:处理流出的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
应用优先级:raw > mangle > nat > filter
常用优先级:filter nat mangle raw
表中的链:
filter: INPUT,FORWARD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,INPUT,POSTROUTING(SNAT)
mangle: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题,修改报文的源地址。
DNAT:目标地址转换,修改报文的目的地址
iptables工具:
-P:指定链的默认规则
-t:指定表
-L:查看规则
-n:以数字形式查看
-F:清空所有规则
-X:清除自定义链
-j:指定要执行的动作
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
-A:append追加策略
-I:insert插入策略
-s:source源ip(网段)
-d:destination目标ip(网段)
-p:protocol指定协议
--dport:指定目标端口
--sport:指定源端口
--line-num:显示规则行号
-D:按照行号删除某链中的规则
-i:从指定网卡流入的报文
-o:从指定网卡流出的报文
-m: multiport PORT,PORT,[PORT] | PORT:PORT 代表连续端口
iprange --src-range 网段
保存防火墙配置:iptables-save > filename (文件名)
恢复防火墙配置:iptables-restore < filename (文件名)
filter表例:
(1)拒绝访问本机web服务(80端口)
iptables -t filter -A IPPUT -p tcp --dport 80 -j DROP
iptables -t filter -I OUTPUT -p -tcp --dport 80 -j DROP
(2)限制所有主机ping本主机
iptables -t filter -A INPUT -s 192.168.200.0/24 -d 192.168.200.12(本机) -p icmp -j REJECT
(3)拒绝192.168.200.1这个主机发送icmp协议的报文流入本主机的ens33网卡
iptables -t filter -A INPUT -s 192.168.200.1 -i ens33 -p icmp -j REJECT
iptables -t filter -A OUTPUT -d 192.168.200.1 -o ens33 -p icmp -j REJECT
(4)修改INPUT链上的默认策略
iptables -t filter -P INPUT DROP
(5)拒绝192.168.200.1-254的机器访问本主机的21,80端口
iptables -t filter -A INPUT -p tcp -m multiport --dports 21,80 -m iprange --src-range 192.168.200.1-192.168.200.254 -j REJECT
NAT表:
开启核心转发功能
临时性:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久性:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
(1)源地址为192.168.200.2的主机地址经过防火墙都转换成172.16.100.1这个ip地址(SNAT:源地址转换)
iptables -t nat -A POSTROUTING -s 192.168.200.2 -d 172.16.100.2 -j SNAT --to-source 172.16.100.1
(2)访问目标地址为172.16.100.1这个机器并且是tcp协议80号端口的都转发给192.168.200.2的80端口(DNAT目标地址转换)
iptables -t nat -A PREROUTING -d 172.16.100.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.200.2:80
(3)访问目标地址为172.16.100.1这个机器并且是tcp协议80号端口的都转发给192.168.200.2的8080号端口(DNAT目标端口地址转换)
iptables -t nat -A PREROUTING -d 172.16.100.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.200.2:8080
浙公网安备 33010602011771号