iptables防火墙示意图

1、防火墙的分类:
硬件,购买设备
软件,安装软件
2、iptables的功能:
强制访问指定站点
发布内网服务器nat/snat/dnat
智能型DNS
3、iptables的格式:
|
iptables |
-t filter |
-A INPUT |
-p tcp--dport 23 |
-j REJECT |
|
命令 |
4表 |
5链 |
数据描述 |
处理方式 |
4表:
|
filter |
过滤(数据过滤,默认) |
INPUT/OUTPUT/FORWARD |
|
nat |
转换(地址转换) |
PREROUTING/POSTROUTING/OUTPUT |
|
mangle |
校正(数据包打标记) |
INPUT/OUTPUT/FORWARD/PREROUTING/POST ROUTING |
|
raw |
|
|
5链:
INPUT:接收,发送方不一定是你,但接收方一定是你
OUTPUT:发送,接收方不一定是你,但发送方一定是你
FORWARD:转发,接收方和发送方全都不是你
PREROUTING:路由前时,指代在决定去向前处理
POSTROUTING:路由后时,指代在决定去向后处理
4、外出的包:
1、本地程序
2、路由判断(决定包使用源地址,外出接口)
3、mangle表OUTPUT链(标记、生存时间、服务类型)
4、nat表OUTPUT链(对防火墙自己发出的包做DNAT)
5、Filter表OUTPUT链(过滤)
6、mangle表POSTROUTING链(标记、生存时间、服务类型)
7、nat表POSTROUTING链(对数据包做SNAT)
8、离开接口
9、网络传输
5、进入的包:
1、网络传输
2、进入接口
3、mangle表PREROUTING链(标记、生存时间、服务类型)
4、nat表PREROUTING链(对数据包做DNAT)
5、路由判断(决定包的去向,给自己的)
6、mangle表INPUT链(标记、生存时间、服务类型)
7、filter表INPUT链(过滤)
8、交给本地程序处理
6、转发的包:
1、网络传输
2、进入接口
3、mangle表PREROUTING链(标记、生存时间、服务类型)
4、nat表PREROUTING链(对数据包做DNAT)
5、路由判断(决定包的去向,发给别人)
6、mangle表FORWARD链(标记、生存时间、服务类型)
7、filter表FORWARD链(过滤)
8、mangle表POSTROUTING链(标记、生存时间、服务类型)
9、nat表POSTROUTING链(对数据包做SNAT)
10、离开接口
11、网络传输
走向:
|
不考虑链 |
mangle>nat>filter |
|
不考虑表 |
PREROUTING>INPUT>(FORWARD)>OUTPUT>POSTROUTING |
绿色代表注释
7、参数
|
A |
在所选择的链末尾添加规则 iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT |
|
t |
指定表(可省略) Iptables -t filter -L INPUT |
|
R |
替换规则 iptables -R INPUT 1 -s 192.168.0.123 -j DROP |
|
D |
删除规则 iptables -D INPUT -p tcp --dport 80 -j DROP iptables -D INPUT 3 |
|
I |
插入规则 iptables -I INPUT 3 -s 192.168.1.222 -j DROP |
|
L |
查看规则 iptables -t filter -L INPUT |
|
X |
删除非内建链(连接数非“0“不可删) iptables -X birdteam |
|
F |
清空规则 iptables -t nat -F OUTPUT |
|
Z |
将计数器清空(包计数器、字节计数) iptables -Z |
|
N |
新创建链 iptables -N birdteam |
|
P |
修改默认规则 iptables -P INPUT DROP |
|
E |
自定义链改名 iptables -E birdteam vfast |
# Iptables -L INPUT 与 iptables -L INPUT -x

选项:
|
v |
详细信息 |
|
x(与“v“一起使用) |
精确 |
|
n |
显示端口 |
|
--line-numbers(缩写--lin) |
显示规则序号 |

通用匹配:
|
p |
匹配协议 有三种( icmp udp tcp)或all |
|
s |
匹配来源地址 iptables -A INPUT ! -s 192.168.1.123 -j ACCEPT (“!“取反,”p“也可以用) |
|
d |
匹配目的地址(一般是服务器本身) |
|
i |
匹配包进入的接口 |
|
o |
匹配包送出的接口 OUTPUT/FORWARD/POSTROUTING(另外两个链不可使用) |
TCP的端口:
|
sport |
匹配来源端口 |
|
dport |
匹配目的端口(同上,匹配前要加上协议) |
|
tcp-flags |
匹配TCP的封包标记 SYN/ACK/FIN/RST/URG/PSH |
|
syn |
(代表连接请求) --syn |
|
tcp-option |
检查TCP的包头信息 8位选项类型、长度、内容 |
UDP的端口:
|
sport |
匹配来源端口 |
|
dport |
匹配目的端口 |
ICMP的端口:
|
icmp-type |
匹配ICMP的类型(代表:ping) |
INPUT链:
|
-s --sport |
对方的端口和地址 |
|
-d --dport |
自己的端口和地址 iptables -A INPUT -p tcp --dport 23 -j DROP |
OUTPUT链:
|
-s --sport |
自己的端口和地址 iptables -A OUTPUT -p tcp --sport 23 -j DROP |
|
-d --dport |
对方的端口和地址 |
显示匹配(无用匹配)
|
limit |
匹配平均速率 |
--limit --limit-burst |
|
mac |
匹配源MAC地址 |
--mac-source |
|
multiport |
不连续多端口匹配 (扩)添加连续的端口 |
来源--source-port 目的--destination-port 所有--port |
|
mark |
标记 |
--mark |
|
owner |
匹配所有 (限制uid=1001的用户发出数据) |
--uid-owner --gid-owner --pid-owner --sid-owner |
|
state |
匹配包的状态 |
--state NEW ESTABLISHED RELATED INVALID |
|
tos |
匹配服务类型 |
--tos |
|
ttl |
匹配生存时间 |
--ttl |
处理:
|
ACCEPT |
允许 |
|
|
REJECT |
拒绝并且返回错误信息 |
|
|
DROP |
丢弃并不返回错误信息 |
|
|
LOG |
记录到/var/log/messages (做个cjk标记) |
--log-prefix --log-level --log-tcp-sequence --log-tcp-options --log-ip-options |
|
DNAT |
目标地址转换 例:iptables -t nat -A POSTROUTING -d 192.168.7.251 -j DNAT --to-destination 192.168.7.254 |
--to-destination |
|
MARK |
标记 例:iptables -t mangle -A INPUT -p tcp -j MARK --set-mark 1 |
--set-mark |
|
MASQUERADE |
伪装 例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j MASQUERADE --to-ports 80 |
--to-ports |
|
SNAT |
来源地址转换 例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j SNAT --to-source 192.168.7.251 |
--to-source |
|
MIRROR |
镜像 例:iptables -t nat -A PREROUTING -s 192.168.7.250 -j MIRROR |
换掉源和目标 |
|
QUEUE |
队列 |
需要配合设备使用 |
|
REDIRECT |
重新定向 例:iptables -t nat -A POSTROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 |
--to-ports |
|
RETURN |
返回 |
返回上级 |
|
TOS |
服务类型 例:iptables -t mangle -A INPUT -p tcp -j TOS --set-tos 0x00 |
--set-tos |
|
TTL |
生存时间 例:iptables -t mangle -A INPUT -p tcp -j TTL --ttl-set 123 |
--ttl-set 设置 --ttl-dec 减少 --ttl-inc 增加 |
|
ULOG |
记录用户被匹配的包的信息 例:iptables -A OUTPUT -p tcp -j ULOG |
8、服务端口对应列表
# vim /etc/services
9、应用实例:
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 23 -j ACCEPT
firewalld切换到iptables防火墙
1、关闭firewall防火墙
# systemctl stop firewalld.service
2. 禁止firewall防火墙开机启动
# systemctl disable firewalld.service
3. 安装iptables防火墙相关组件
# yum -y install iptables*
4. 开启iptables防火墙
# systemctl start iptables.service
5. 设置iptables防火墙开机启动
# systemctl enable iptables.service











