关于iptables与firewalld的详细总结和配置汇总

iptables由四个表和五个链以及一些规则组成


四个表table:filter、nat、mangle、raw
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表
Raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
优先级由高到低的顺序为:raw-->mangle-->nat-->filter


五个内置链chain
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING




查看当前规则
iptables -vnL


查看指定表支持的链
iptables -vnL -t filter|raw|mangle|nat


数据包过滤匹配流程


总入站数据流向
raw:PREROUTING
mangle:PREROUTING
nat:PREROUTING


进入的访问(谁访问的你)
mangle:INPUT
nat:INPUT
filter:INPUT


转发数据流向
mangle:FORWARD
filter:FORWARD


出去的访问(你访问别人)
raw:OUTPUT
mangle:OUTPUT
nat:OUTPUT
filter:OUTPUT




总出站数据流向
mangle:POSTROUTING
nat:POSTROUTING




数据包发送流程:


从外界进来的数据包如果是到达本机程序的,首先到达prerouting,prerouting过来后要先检查路由表,路由表中
判断该数据包是否给我的如果是则转发到INPUT,如果不是那检查是不是通过我穿过我经过可到达别的主机的数据包
那就是FORWARD了,如果是发给本机INPUT的收到了数据包请求后,那么他要做出回应就要通过output通过检查路由表
来决定从哪个网卡发出去,发出去的瞬间还要做一个汇总那就是POSTROUTING




1、链管理:
-N:new, 自定义一条新的规则链
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
ACCEPT:接受
DROP:丢弃
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除


2、查看:
-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息
-vv 更详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
--line-numbers:显示规则的序号
常用组合:
--vnL
--vvnxL --line-numbers
-S selected,以iptables-save 命令格式显示链上规则


3、规则管理:
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
(1) 指明规则序号
(2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和
chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING


命令操作


拒绝访问进来的单IP -s来自哪个IP
iptables -A INPUT -s 172.18.105.75 -j DROP|REJECT


取反除了172.18.105.75能通信其余全拒绝了
iptables -A INPUT ! -s 172.18.105.75 -j DROP|REJECT




精确显示计数
iptables -vnxL


重置计数
iptables -Z INPUT 




显示规则序号及删除
iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 999 packets, 87675 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     1226   12M REJECT     all  --  *      *       172.18.105.74        0.0.0.0/0   


删除指定条目规则      
iptables -D INPUT 1


全部清空条目
iptables -F




显示当前链规则,可当作保存脚本使用
[root@localhost ~]# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 172.18.105.74/32 -j REJECT --reject-with icmp-port-unreachable




插入条目到指定位置
iptables -I INPUT -s 172.18.105.100 -j REJECT
iptables -I 2 INPUT -s 172.18.105.100 -j REJECT
iptables -I 2 INPUT -s 172.18.105.100,172.18.105.101 -j REJECT
iptables -I 2 INPUT -s 172.18.105.100 -d 172.18.105.101 -j REJECT
iptables -I 2 INPUT -s 172.18.105.100 -p icmp -j ACCEPT  允许icmp
iptables -I INPUT 2 -s 172.18.105.74 -p tcp --dport 22  -j ACCEPT 




用新的条目替换现有的第2个条目
iptables -R INPUT 2 -S 172.18.105.101 -j REJECT




修改默认策略
iptables -P INPUT ACCEPT|DROP


只要是从ETH0,LO网卡进来的流量全部允许或者全部拒绝
iptables -I INPUT 3 -i eth0,lo -j ACCEPT|REJECT


iptables -I OUTPUT 3 -o eth1,lo -j ACCEPT|REJECT




常用规则姿势


允许或拒绝某地址访问本机
iptables -A INPUT -s 172.18.138.12 -j ACCEPT|REJECT   


允许或拒绝所有人访问本机
iptables -A INPUT  -j ACCEPT|REJECT      


允许或拒绝某主机访问本机tcp协议22端口
iptables -I INPUT 2 -s 172.18.105.74 -p tcp --dport 22  -j ACCEPT|REJECT
普通的只支持加连续端口,扩展的则支持连续端口和单端口混合
iptables -I INPUT 2 -s 172.18.105.74 -p tcp --dport 21:22  -j ACCEPT|REJECT




允许或拒绝本机访问172.18.105.74的icmp ping时响应回应包
iptables -A OUTPUT -p icmp --icmp-type 0 -d 172.18.105.74 -j ACCEPT|REJECT    


检查四个标记位中的syn为1 就拒绝 ,其中SYN为1,ACK,FIN,RST 为0  相当于第一次握手
iptables -I INPUT 3 -s 172.18.105.74 -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -j REJECT
检查四个标记位中的SYN,ACK位都为1  就拒绝 ,同上  相当于第二次握手
iptables -I INPUT 3 -s 172.18.105.74 -p tcp --tcp-flags SYN,ACK,FIN,RST SYN,ACK -j REJECT
iptables -I INPUT 3 -s 172.18.105.74 -p tcp --syn -j REJECT


针对一些黑客构造的伪装包过滤,正常情况下不可能全为0或1 ,对这些无效包拒绝
--tcp-flags ALL ALL   检查所有标记全为1的
--tcp-flags ALL NONE  检查所有标记全为0的




-------------------------------------------------------------------------------
-N:new, 自定义一条新的规则链
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
  ACCEPT:接受
  DROP:丢弃
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除


创建自定义链
iptables -N invalid_packet
iptables -E invalid_packet INVALID_PACKET  重命名
iptables -vnL
Chain invalid_packet (0 references)


对自定义链添加规则
iptables -A invalid_packet -p tcp --tcp-flags ALL ALL -j REJECT
iptables -A invalid_packet -p tcp --tcp-flags ALL NONE -j REJECT


将自定义链关联到现有的内置链
iptables -A OUTPUT -s 172.18.105.73(本机地址) -j invalid_packet


删除引用的自定义链
iptables -D 1 INPUT
iptables -D 1 OUTPUT


清空自定义链内容
iptables -F invalid_packet


删除自定义链
iptables -X invalid_packet





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值