iptables防火墙
防火墙的分类:
硬件,购买设备
软件,安装软件
iptables的功能:
强制访问指定站点
发布内网服务器nat/snat/dnat
智能型DNS
iptables的格式:
iptables-t filter-A INPUT-p tcp --dport 23-j REJECT
命令 4表 5链 数据描述 处理方式
-t 指定表
4表:
filter过滤(数据过滤,默认)INPUT/OUTPUT/FORWARD
nat转换(地址转换)PREROUTING/POSTROUTING/OUTPUT
mangle校正(数据包打标记)INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
raw
5链:
INPUT:接收,发送方不一定是你,但接收方一定是你
OUTPUT:发送,接收方不一定是你,但发送方一定是你
FORWARD:转发,接收方和发送方全都不是你
PREROUTING:路由前时,指代在决定去向前处理
POSTROUTING:路由后时,指代在决定去向后处理
外出的包:
本地程序
路由判断(决定包使用源地址,外出接口)
mangle表OUTPUT链(标记、生存时间、服务类型)
nat表OUTPUT链(对防火墙自己发出的包做DNAT)
filter表OUTPUT链(过滤)
mangle表POSTROUTING链(标记、生存时间、服务类型)
nat表POSTROUTING链(对数据包做SNAT)
离开接口
网络传输
进入的包:
网络传输
进入接口
mangle表PREROUTING链(标记、生存时间、服务类型)
nat表PREROUTING链(对数据包做DNAT)
路由判断(决定包的去向,给自己的)
mangle表INPUT链(标记、生存时间、服务类型)
filter表INPUT链(过滤)
交给本地程序处理
转发的包:
网络传输
进入接口
mangle表PREROUTING链(标记、生存时间、服务类型)
nat表PREROUTING链(对数据包做DNAT)
路由判断(决定包的去向,发给别人)
mangle表FORWARD链(标记、生存时间、服务类型)
filter表FORWARD链(过滤)
mangle表POSTROUTING链(标记、生存时间、服务类型)
nat表POSTROUTING链(对数据包做SNAT)
离开接口
网络传输
走向:
不考虑链mangle>nat>filter
不考虑表PREROUTING>INPUT>(FORWARD)>OUTPUT>POSTROUTING
数据包的流程:
参数:
A在所选择的链末尾添加规则
iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT
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删除非内建链
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
选项:
v详细信息
x精确
n显示端口
line-numbers显示规则序号
通用匹配:
p匹配协议
s匹配来源地址
iptables -A INPUT -s ! 192.168.1.123 -j ACCEPT
d匹配目的地址
i匹配包进入的接口
o匹配包送出的接口
OUTPUT/FORWARD/POSTROUTING
f匹配被分片的包的第二片及后续部分
TCP的端口:
sport匹配来源端口
dport匹配目的端口
tcp-flags匹配TCP的封包标记
SYN/ACK/FIN/RST/URG/PSH
syn
tcp-option检查TCP的包头信息
8位选项类型、长度、内容
iptables -A INPUT -p tcp --tcp-flags syn,ack,fin syn
=
iptables -A INPUT -p tcp --syn
UDP的端口: -
sport匹配来源端口
dport匹配目的端口
ICMP的端口:
icmp-type匹配ICMP的类型
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对方的端口和地址
显示匹配
iptables -A INPUT -p tcp -m multiport --port 23,26,76 限制来源目的
iptables A INPUT -m state --state ESTABLISHED,RELATED
limit匹配平均速率--limit
--limit-burst
mac匹配源MAC地址--mac-source
multiport不连续多端口匹配--source-port
--destination-port
--port
mark标记--mark
owner匹配所有--uid-owner
--gid-owner
--pid-owner
--sid-owner
state匹配包的状态--state
tos匹配服务类型--tos
ttl匹配生存时间--ttl
处理:
ACCEPT允许
REJECT拒绝并且返回错误信息
DROP丢弃并不返回错误信息
LOG记录到/var/log/messages--log-prefix
--log-level
--log-tcp-sequence
--log-tcp-options
--log-ip-options
DNAT目标地址转换--to-destination
MARK标记--set-mark
MASQUERADE伪装--to-ports
SNAT来源地址转换--to-source
MIRROR镜像换掉源和目标
QUEUE队列需要配合设备使用
REDIRECT重新定向--to-ports
RETURN返回返回上级
TOS服务类型--set-tos
TTL生存时间--ttl-set
--ttl-dec
--ttl-inc
ULOG记录用户被匹配的包的信息
应用实例:
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
iptables -I INPUT -p all -j ACCEPT 实现所有服务可用