防火墙分类
逻辑分类:主机防火墙(个人)和网络防火墙(集体)
主机防火墙:针对单个主机进行防护
网络防火墙:往往处于网络入口或者边缘,针对于网口入口进行防护,服务于防火墙背后的局域网
物理分类:硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分基于软件实现。性能高,成本高
软件防火墙:应用软件处理逻辑运行与通用硬件平台之上。性能低,成本低
iptables其实并不是真正的防火墙,netfilter(安全框架)才是真正的防火墙
四表五链
四表
:
raw 追踪数据包 (PREROUTING OUTPUT)
mangle 对数据包打标记 (PREROUTING/INPUT/FORWAND/OUTING/POSTROUTING)
nat 地址转换 (PREROUTING INPUT OUTPUT POSTROUTING)
filter 数据包过滤 (INPUT FORWAND OUTPUT)
五链
:
PREROUTING 在路由之前
INPUT 数据包进入时
FORWAND 数据包经过时
OUTPUT 数据包出去时
POSTROUTING 在路由之后
语法
iptables -t 表 动作 链 匹配条件 -j 目标动作
动作:
添加规则 -A
插入规则 -I
替换(修改)规则 -R
删除规则 -D
修改默认策略 -P (谨慎使用 DROP ACCEPT)
添加自定义链 -N (默认不会生效,是用来存储规则的)
修改自定义链名称 -E
删除自定义规则 -X
计数清零 -Z
查看 -L
删除 -F
匹配条件
-p port协议(tcp udp icmp)
–sport源端口
–dport目标端口
-s 源地址
-d 目的地址
目标动作
ACCEPT 允许数据包通过(默认策略)
DROP 直接丢弃数据包,不给任何回应
REJECT 拒绝数据包,必要时会给数据发送端一个响应
SNAT 源地址转换,可以解决內网用户用一个公网IP上网问题 POSTROUTING
DNAT 目标地址转换 PREROUTING
REDIRECT 做端口映射(扩展)
练习
- 添加规则: -A
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.192.129 -j REJECT
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.192.131 -j REJECT
查看
iptables -L --line
- 插入规则: -I
iptables -t filter -I INPUT -p udp --dport 22 -s 192.168.192.133 -j REJECT
iptables -t filter -I INPUT 3 -p udp --dport 22 -s 192.168.192.134 -j REJECT
查看
iptables -L --line
- 替换修改规则 : -R
iptables -t filter -R INPUT 2 -p udp --dport 22 -s 192.168.192.135 -j REJECT
- 删除规则 -D
iptables -t filter -D INPUT 2
- 修改默认策略 -P
iptables -t filter -P INPUT DROP
iptables -t filter -P INPUT ACCEPT
- 添加自定义链 -N
iptables -N hualaotou
iptables -t filter -A hualaotou -p udp --dport 22 -j REJECT
关联自定义链
iptables -A INPUT -j hualaotou
- 修改自定义链名称: -E
iptables -E hualaotou jiajia
- 删除自定义链: -X
iptables -X jiajia
- 网络地址转换NAT(企业应用)
SNAT
client ----------------iptables----内网ip–公网( baidu公网)
iptables -t nat -A POSTROUTING -s 192.168.192.0/24 -d 192.168.192.0/24 -j SNAT --to-source 192.168.92.1
DNAT
iptables -t nat -A PREROUTING -d 192.168.1.2 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A POSTROUTING -d 192.168.2.2 -j SNAT --to 192.168.2.1
iptables -t nat -A PREROUTING -p tcp -d 192.168.122.1 -dport 80 -j REDIRECT --to-destination 192.168.1.1:8080
docker 端口映射 namespace 命名空间 -p 80:8080