iptables实例2-state模块

iptables实例2-state模块

state模块介绍

state扩展是"conntrack"模块的子集。"state"允许访问这个包的连接追踪状态。
[!] --state state:INVALID ESTABLISHED NEW RELATED或UNTACKED.
NEW:新连接请求
ESTABLISHED:已建立的连接
INVALID:无法识别的连接
RELATED:相关联的连接,当前连接是一个新请求,但附属某个已存在的连接
UNTRACKED:未追踪连接
state扩展:
内核模块装置:nf_conntrack nf_conntrack_ipv4
手动装置:nf_conntrack_ftp

    追踪到的连接:/proc/net/nf_conntrack
    调整可记录的连接数量最大值:/proc/sys/net/nf_conntrack_max

实验准备:

见https://blog.csdn.net/yuyuyuliang00/article/details/123012202?spm=1001.2014.3001.5501中的准备工作
清空前一次实验中iptables filter表中链上的所有规则:
iptables实例2-state模块_第1张图片

在web1上添加INPUT链规则

1、允许目标地址192.168.200.3,目标端口是22,80的状态为新建tcp连接入栈
2、允许目标地址192.168.200.3,源地址是指定ip,源端口为7000的状态为新建tcp连接入职
3、允许目标地址192.168.200.3的所有已建立连接入栈
4、拒绝目标地址192.168.200.3的所有数据包入栈
在这里插入图片描述

查看web1上的filter表

iptables实例2-state模块_第2张图片

在web1上添加OUTPUT链规则

1、允许源地址192.168.200.3的所有状态已建立连接出栈
2、拒绝源地址192.168.200.3的所有状态为其它状态的连接出栈
在这里插入图片描述

在web2上测试web1的http和telnet服务

web2可以访问web1的http服务,web2不能访问web1的telnet服务
iptables实例2-state模块_第3张图片

更改web1上filter表INPUT链上第一条规则,放行telnet

iptables实例2-state模块_第4张图片

测试web1的telnet服务

从web2上通过telnet登录web1测试成功:
iptables实例2-state模块_第5张图片

web1作为客户端访问时间服务器

用proxy(192.168.200.2)上运行时间服务器chronyd
iptables实例2-state模块_第6张图片
在放行123,323 udp端口前,在web1上进行时间同步:
结果如下:同步失败
iptables实例2-state模块_第7张图片
在web1上添加放行访问123,323 udp端口的输出规则,并且时间同步测试成功测试:
在这里插入图片描述

添加日志记录功能:

在web1上添加以下规则:对web1进行telnet访问时,在新建telnet连接时将在/var/log/messages中记录一条访问记录:
iptables -t filter -I INPUT 1 -d 192.168.200.3 -p tcp --dport 23 -m state --state NEW -j LOG --log-prefix “access telnet”

在web2上telnet登录web1后,返回web1查看/var/log/messages中日志,可以看到一条从192.168.200.4登录192.168.200.3:23的记录:
在这里插入图片描述

iptables 自定义链使用

在web1上定义自定义链:iptables -N in_ping_rules
iptables实例2-state模块_第8张图片
在web1的自定义链上定义规则:
#拒绝web1和web2之间的icmp报文
iptables -t filter -A in_ping_rules -d 192.168.200.3 -s 192.168.200.4 -p icmp -j REJECT
#允许目标地址为192.168.200.3的icmp请求报文
iptables -A in_ping_rules -d 192.168.200.3 -p icmp --icmp-type 8 -j ACCEPT
iptables实例2-state模块_第9张图片
应用自定义链:
#把自定义链in_ping_rules插入到INPUT链中第五条规则的位置:
iptables -t filter -I INPUT 5 -p icmp -j in_ping_rules
在这里插入图片描述
测试:
1)在web1上对proxy进行icmp请求失败;
2)在proxy和web2上分别对web1进行icmp请求,proxy请求成功,web2请求失败;
iptables实例2-state模块_第10张图片

你可能感兴趣的:(iptables,网络,网络协议)