[!NOTE|style:flat|lable:Mylable|iconVisibility:hidden]
iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在
/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML
1、filter:用于防火墙,默认有INPUT/OUTPUT/FORWARD三条链
2、nat:网络地址转换,PREROUTING/POSTROUTING/OUTPUT三条链
3、mangle:流量整形,五条链
4、raw:用于状态跟踪
1、INPUT: 如果一个数据包的目的地址是LINUX本身,则进入INPUT链
2、OUTPUT: 源地址是LINUX本身
3、FORWARD: 数据包从一块网卡接收,从另一块网卡发出,经过LINUX的包,进入这条链
4、PREROUTING: 路由前
5、POSTROUTING: 路由后
-t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。# 通用匹配:源地址目标地址的匹配
-p:指定要匹配的数据包协议类型;
-s, --source [!] address[/mask] :把指定的一个/一组地址作为源地址,按此规则进行过滤。当后面没有 mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0。
-d, --destination [!] address[/mask] :地址格式同上,但这里是指定地址为目的地址,按此进行过滤。
-i, --in-interface [!] <网络接口name> :指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反。
-o, --out-interface [!] <网络接口name> :指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。# 查看管理命令
-L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则。# 规则管理命令
-A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定。
-I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号。
-D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则。
-R num:Replays替换/修改第几条规则# 链管理命令(这都是立即生效的)
-P, --policy chain target :为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的。
-F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。
-N, --new-chain chain 用指定的名字创建一个新的链。
-X, --delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。
-E, --rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部造成任何影响。
-Z, --zero [chain] :把指定链,或者表中的所有链上的所有计数器清零。-j, --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链。
-h:显示帮助信息;
--state 匹配一组连接状态
--string 匹配应用层数据字节序列
--comment 注释数据
--probability 0.50000000000 -j KUBE-SEP-ID6YWIT3F6WNZ47P 使连接有50%的概率进入到KUBE-SEP-ID6YWIT3F6WNZ47P链
1、拒绝PING防火墙本身
$ iptables -F
$ iptables -A INPUT -p icmp -j DROP
2、ping linux的IP地址
3、把防火墙规则再清空,把拒绝ICMP的目标规则改为REJECT,再次ping测试,看结果。
4、查看防火墙规则
$ iptables -nvL
5、允许指定IP地址的主机PING防火墙
$ iptables -I INPUT 1 -s 192.168.194.1 -p icmp -j ACCEPT
6、查看防火墙规则,每个规则注明序号
$ iptables -nL --line-numbers
7、删除防火墙的INPUT链中第二条规则
$ iptables –D INPUT 2
8、把OUTPUT的默认规则改为DROP
$ iptables -P OUTPUT DROP
# 限制syn并发数为每秒1次
$ iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT# 限制单个IP在60秒新建立的连接数为10
$ iptables -I INPUT -p tcp --dport 80 --syn -m recent --name SYN_FLOOD --update --seconds 60 --hitcount 10 -j REJECT
1、允许特定IP地址访问LINUX的telnet服务
$ yum install -y telnet-server
$ service xinetd start
$ chkconfig telnet on
$ iptables -P INPUT DROP
$ iptables -A INPUT -s 192.168.194.1 -p tcp --dport 23 -j ACCEPT
2、继续第1步。向INPUT链插入规则,作为第一条。从eth0网卡收到的、访问telnet服务的数据包,拒绝。
$ iptables -I INPUT -i eth0 -p tcp --dport 23 -j REJECT
IS: 中间系统,路由器。
ES: 终端系统,主机系统。
1、临时打开路由功能
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
1
2、永久打开转发功能
$ echo ‘echo 1 > /proc/sys/net/ipv4/ip_forward’ >> /etc/rc.local
或
$ vim /f
net.ipv4.ip_forward = 1
$ sysctl -p
1、拓扑
2、拒绝192.168.195.0/24网段访问192.168.194.0/24网段的telnet服务
$ iptables -A FORWARD -s 192.168.195.0/24 -d 192.168.194.0/24 -p tcp --dport 23 -i eth1 -o eth0 -j REJECT
3、从拒绝SSH协议通过防火墙
$ iptables -A FORWARD -p tcp --dport 22 -j REJECT
4、不是192.168.195.0/24网段的主机访问SSH服务,可通过
$ iptables -I FORWARD ! -s 192.168.195.0/24 -p tcp --dport 22 -j ACCEPT
5、防火墙拒绝icmp的请求
$ iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
6、允许192.168.195.0/24网段进行PING
$ iptables -I INPUT -s 192.168.195.0/24 -p icmp --icmp-type echo-request -j ACCEPT
7、防火墙拒绝发送echo-reply
$ iptables -A OUTPUT -p icmp --icmp-type echo-reply -j REJECT
8、允许防火墙回应192.168.195.0/24网段的ping
$ iptables -I OUTPUT -s 192.168.195.0/24 -p icmp --icmp-type echo-reply -j ACCEPT
9、防火墙拒绝192.168.195.0/24对其进行TCP连接。
检查SYN/ACK/RST/FIN四个位置,其中SYN被置位
$ iptables -I INPUT -s 192.168.195.0/24 -p tcp --tcp-flags SYN,ACK,RST,FIN SYN -j REJECT
-m state --state <状态>
,网络连接的五种状态
NEW
,请求建立连接的包、完全陌生的包ESTABLISHED
,将要或已经建立连接的包RELATED
,与已知某个连接相关联的包INVALID
,无对应连接,以及连接无效的包UNTRACKED
,未跟踪状态的包-m limit --limit 匹配速率 如: -m limit --limit 50/s -j ACCEPT
-m state --state 状态 如: -m state --state INVALID,RELATED -j ACCEPT
2、192.168.194.0/24作为内网,192.168.195.0/24作为外网。从内到外的访问不受限制,从外到内的主动连接全部拒绝。
$ iptables -A FORWARD -s 192.168.194.0/24 -j ACCEPT
$ iptables -A FORWARD -d 192.168.194.0/24 -j REJECT
$ iptables -I FORWARD 2 -d 192.168.194.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
3、减轻DOS(拒绝服务)攻击
4、免状态跟踪
-m connlimit --connlimit-above n 限制为多少个
//表示限制链接数最大为9个 iptables -I FORWARD -p tcp -m connlimit --connlimit-above 9 -j DROP //表示访问80端口服务最大为10个链接
iptable -A INPUT -p tcp -- dport 80 -m connlimit --connlimit-above 10 -j REJECT
iptables -A FORWARD -p icmp -m statistic --mode random --probability 0.31 -j REJECT //表示31%的丢包率-m random --average 5 -j DROP 表示模拟丢掉5%比例的包
追踪数据包
# 在宿主机上执行
$ iptables -t raw -A OUTPUT -p icmp -j TRACE
$ iptables -t raw -A PREROUTING -p icmp -j TRACE
更多阅读:
本文发布于:2024-01-31 07:45:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170665830926811.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |