linux访问控制:
Firewall:
rules、policy
防火墙分类:
工作在三层的网络防火墙、七层防火墙
NetFilter:
hook functions 五个“钩子函数”
chains
PREROUTINT 路由前的
INPUT 数据包包的流入接口
FORWARD 转发
OUTPUT 由本机出来的
POSTROUTING 路由后的
防火墙策略:“通”、“堵” : 通就全通,堵只需单堵
允许/不允许:filter
地址转换:nat
修改报文原数据:mangle
使用表来实现同一个链上的不同规则
三表五链
filter :INPUT,FORWARD,OUTPUT
nat :PREROUTING OUTPUT POSTROUTING
mngle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING
iptables定义规则
iptables [-t table(默认filter)] COMMAND chain CRETIRIA(匹配规则) -j ACTION
COMMAND:
链管理命令:
-P :设置默认策略
# iptables -P INPUT {DROP|ACCEPT}
-F : flush 清空规则链的
# iptables -t nat -F PREROUTING
-N :new 新建一个链
# iptables -N inbound_tcp_web
-X :删除用户自定义的空链,删除之前清空里面的规则
-E : 给用户自定义的链重命名
-Z :清空链默认规则及链中规的计数器的
规则管理命令:
-A :在当前的链中最后追加
-I num:插入为第num条
-R num:修改规则,替换
# iptables -R -num +新规则
-D num:删除,指定删除第num条
查看命令:
-L :list 查看
-n 以数字方式显示,不进行解析
-v 详细信息
-vv
-vvv
-x 计数器的精确值,不做单位换算
--line-numbers :显示行号
匹配标准
通用匹配:
-s,--source,-src :做原地址匹配,不能使用主机名,使用ip
eg: IP,NETWORK/NETMASK,0.0.0.0/0.0.0.0
-d :匹配目标地址
-p :匹配协议的{tcp|udp|icmp}
-i eth0: inbount流入的
-o eth0:流出的接口
扩展匹配:
隐含扩展:
-p tcp
--dport :目标端口
--sport : 源端口
--tcp-flags:tcp的标志位 SYN.ACK.FIN.PSH.RST.URG.
--tcp-flags 检查的标志位 必须为1的标志位
eg:--tcp-flags syn,ack,fin,rst syn ==--syn//实现第一次握手
-p udp
--dport
--sport
-p icmp
--icmp-type 8
echo-request ==8 ping出去的数据包
echo-reply ==0 ping的相应
显式扩展
使用各种扩展模块
-p tcp -m multiport --drops 21,23,80
ACTION
-j ACTION
DROP 悄悄拒绝
REJECT 明确拒绝
ACCEPT 接受
custom_chain
DNAT 目标nat
SNAT 原nat
MASQUERADE 地址伪装
REDIRECT重定向
MARK 标记
RETURN
state状态
NEW
ESTABLSHED
RELATED
INVALID
service iptables save 保存
默认保存在/etc/sysconfig/iptables iptable-save > /etc/sysconfig/iptables.2 保存到指定的文件中
iptables-restore < /etc/sysconfig/iptables.2 启动文件iptables.2里面定义的规则
iptables实现nat:
源地址转换
iptables -t nat -A POSTROUTING -s NETWORK/PREFIX -j SNAT --to-source Internet_IP
如果地址不是固定的,使用MASQUERADE来伪装地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
目标 地址转换
iptables -t nat -A PREROUTING -d INternet_fa -p tcp --dport 80 -j DNAT --to-destination NEI_IP
本文出自 “IT梦-齐-分享” 博客