复习网络七层模型
简介
在Linux中防火墙全称为Netfilter/Iptables
。Netfilter
工作在内核空间,负责根据规则执行具体的动作如数据包过滤、网络地址转换、数据包内容修改等。Iptables
位于用户空间,是一个命令行工具,用来设定各种规则从而操作Netfilter
。
iptables有五条链:
- PREROUTING 路由前
- INPUT 流入
- FORWARD 转发
- OUTPUT 流出
- POSTROUTING 路由后
以及四张表:
- Raw
- Mangle 主要负责修改数据包标记
- Nat 主要负责网络地址转换
- Filter 主要负责过滤
表和链的组合设定多条规则,实现对数据包的控制。iptables中四张表按优先级执行 raw -> mangle -> nat -> filter。
命令
1 |
|
iptables规则示例
- 禁用SSHD默认的22端口
1
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
- 只允许特定网段10.160.0.0/16访问本机的10.160.100.1的SSHD(22端口)服务
1
2
3
4
5
6
7#设置默认的drop,再允许特定的网段进入和出去
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t filter -A INPUT -s 10.160.0.0/16 -d 10.160.100.1 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 10.160.100.1 -d 10.160.0.0/16 -p tcp --dport 22 -j ACCEPT - 过滤掉状态有问题的http包。只允许http80端口且限定连接状态为Established和Related的数据包
1
iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
- 开启儿童上网模式,星期一到星期五的8:00-21:00禁止游戏相关网页”game“
1
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "game" -m time --timestart 8:00 --timestop 21:00 --days Mon,Tue,Wed,Thu,Fri -j DROP
- 生产环境mysql数据库仅允许内网特定ip访问
1
iptables –A INPUT –s 10.160.41.1 –p tcp –dport 3306 –j ACCEPT
- 将目的IP为10.160.132.55且目的端口为9090的我们做DNAT修改目标地址处理,重定向到10.162.37.1:8080
1
iptables -A INPUT -d 10.160.132.55 -p tcp --dport 9090 -j DNAT --to 10.162.37.1:8080
- 拦截所有入站tcp80端口和8080端口数据包重定向到某个代理服务的15001端口进行统一处理
1
iptables -A INPUT -p tcp --dport 80,8080 -j REDIRECT --to-ports 15001
Docker的iptables
列出所有nat规则
1 |
|
列出所有filter规则
1 |
|