防火墙 :
linux 内核自带 iptables
iptables/netfilter
netfilter 是防火墙 工作在内核空间 让规则生效
iptables 写规则工具 工作在用户 写完规则送到netfilter生效
网络层防火墙 3层
还有7层的防火墙 安全点 效率低
常用的 两者合用
它本身并不是防火墙
需要管理员写规则
本身并不工作
防火墙要想生效需放在内核中。
数据包要想出去或进来必须要经过这5个链
5个 内置的规则链
1. PREROUTING 路由前
2. INPUT 数据包 流入接口
3.FORWARD 转发关卡
4.OUTPUT 从本机出来的管卡
5.POSTROUTING 离开本机 路由后
"通" 默认门是关着的 , 全通
"堵" 门是开着的 但需要证
堵是 单堵
3个表:
1,过滤 filter
2,地址转换 nat
3,mangle 修改报文原数据
3表5链的关系
1,filter
INPUT,FORWARD,OUTPUT
2,nat
PREROUTING,OUTPUT,POSTROUTING
3,mangle
PREROUTING, INPUT,FORWARD,OUTPUT
POSTROUTING
iptables 写规则 放在netfilter 立即生效的
一旦匹配到第二条报文,就不在往下匹配
写规则很重要顺序 ,匹配范围越小就放在上面
删除链 只能删除自己定义的链,内置删不掉的
指定表 链 匹配标准 处理规则
iptables [-t filter] COMMAND chain CRETIRIA -j ACTION
对这条命令剖析:
command:
1, 链管理命令
-P 设定门是开着还是关着 默认策略
格式 # iptables -P INPUT {DROP|ACCEPT} 立即生效的
设定默认 要注意 ,一旦执行 远程就无法连接了
-F 清空表
格式 # iptable -t nat -F PREROUTING
如果不加上 最后单词 就是清空所有表的链
-N 新建用户自定义链
# iptables -N inbound_tcp_web 检查tcp 的web链
-X 删除用户自定义空链 删除之前把里边规则清空
-E 用重命名 用户自定义链
-Z 清空链 链规则计数器
2 , 规则管理命令
-A 追加 到最后
-I 3 插入到第3条
-R num 替换规则
-D num 删除第几条
3, 查看命令
-L -n 加n解析非常快
-v 显示详细信息
-vv
-x 精确值 不做单位换算
--line-numbers 显示行号
匹配标准:
1,通用匹配
-s 指定做原地址匹配
IP,NETWORK/NETMASK,0.0.0.0/0.0.0.0
-d 匹配目标主机地址
-p 匹配协议的
)tcp|udp|icmp
-i eth0 数据流入接口
-o 流出接口
2,扩展匹配
)隐含扩展 对协议扩展
-p tcp
--dport 目标端口
--sport 源端口
--tcp-flags 检查的标志位,必须为1标志位 tcp表示位
tcp 6个表标志位 SYN,ACK,FIN,PSH,PST,URG
--tcp-fiags sys,ack,fin,rst,syn syn为1 其余都为0
-p udp
--dport
--sport
-p icmp
--icmp-type 类型
ech0-request 8
ech0-reply 0
)显"式"扩展
各扩展模块
-p tcp -m multiport --dports 21,23,80
-j ACTION
DROP 悄悄丢弃
REJECT 明确拒绝
ACCEPT 接受
custom_chain 转向一个自定义的链
DNAT 目标地址转换
SNAT 源地址转换
MASQUEPADE 源地址伪装
REDIRECT 端口重定向
MARK 打标记
RETURN 返回
例 iptables -t filter -A INPUT -s 172.16.0.0./16 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT
只是定义进来的包
查看 iptables -L -n -v
定义出去的包: 原地址 目标 原端口
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
查看 iptables -L -n -v
常用的策略 “通” 策略 默认ACCEPT
把 ACCEPT 改为 DROP
iptables -P OUTPUT DROP
iptables -p INPUT DROP
查看 iptables -L -n -v
状态检测: state 基于tcp,udp
1 ,NEW 全新链接
2 , ESTABLISHED 已建立连接
3, RALATED 关联关系
4, INVALID 无法识别的链接
链 进来的 端口 状态 数据包进来
例 iptables -R INPUT 2 -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
第一条规则
例 iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT
只要是 tcp ESTABLISHED 统统放行
例 允许80端口
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m stata --sate NEW,ESTABLISHED -j ACCEPT