Iptables之layer7 – l7
1、给内核打补丁,并重新编译内核
这里写图片描述
代码:patch -p1#忽略顶层目录,所以patch的选项为p1,这里的数字1是目录层号
这里写图片描述
这里写图片描述
执行make menuconfig后进入目录依次选择以下选项并启用相关模块
Networking support → Networking Options →Network packet filtering framework →Core Netfilter Configuration
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
Networking support → Networking Options →Network packet filtering framework → IP: Netfilter Configuration
这里写图片描述
这里写图片描述
这里写图片描述

[root@layer7 ~]# make 
[root@layer7 ~]# make modules_install 
[root@layer7 ~]# make install

这里写图片描述
这里写图片描述
这里写图片描述
安装内核完成后会在/etc/grub.conf下生成一个新的条目

[root@layer7 linux]# vim /etc/grub.conf

将default=1修改为default=0
这里写图片描述

[root@layer7 linux]# reboot

重启一下启用新编译的内核
这里写图片描述
重启完成查看内核确实是刚才新编译的
2、给iptables源码打补丁,并重新编译iptables
Compiles iptables :
自己编译安装的内核版本中实现netfilter的内核模块与此前红帽系列自带的iptables实现的内核模块名称有所不同,自己编译的内核版本中其内核模块都重命名为xt,此前为ipt
卸载系统自带的iptables包前先备份服务启动脚本以方便使用
这里写图片描述
这里写图片描述
这里写图片描述
安装路径与备份的服务脚本中的路径保持一致即可,如需修改,服务脚本中的路径也要做相应修改;并指明内核源码的目录
这里写图片描述
这里写图片描述
这里写图片描述
Which iptables查看iptables命令路径,编辑刚刚备份的iptables服务脚本做以下两处修改

[root@layer7 iptables-1.4.6]# vim /tmp/bak/iptables

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
3、安装l7proto的Kernel Patch
提供协议特征包,layer7所支持的QQ,MSN等协调过滤是靠协议本身的某些特征码来识别协议类型的,所以解压该包提供协议特征码的定义
这里写图片描述
这里写图片描述
测试:layer7有两块网卡,其中eth0:10.33.1.142可以连接外网,
eth1:192.168.5.125连接内网,修改物理机ip与eth1在同一网段,并设定网关为eth2,编写防火墙规则(图12)通过layer7的eth0代理物理机上网,同时根据协议添加规则禁用QQ(图13)
这里写图片描述
这里写图片描述
在物理机上登录QQ进行测试,策略生效,网络正常连接但QQ登录失败(注:策略13要在QQ登录前生效,才能看到测试结果)
这里写图片描述
添加基于时间的控制策略,规定上网8:00-12:00和下午15:00-18:00时间段内192.168.5.0/24网段不能上网,保存规则到/etc/sysconfig/iptables.admin

[root@layer7 ~]# iptables-restore

读入文件以生效规则
这里写图片描述
物理机测试,规则生效
这里写图片描述
利用iptables的recent模块来抵御DOS攻击
1.利用connlimit模块将单IP的并发设置为3;会误杀使用NAT上网的用户,可以根据实际情况增大该值;
2.利用recent和state模块限制单IP在300s内只能与本机建立3个新连接。被限制五分钟后即可恢复访问。
这里写图片描述
iptables的记录
这里写图片描述

[[email protected] ~]# iptables -I INPUT -d 10.33.1.143 -p tcp --dport 22 -m connlimit --connlimit-above 3  
[[email protected] ~]# iptables -I INPUT 2 -d 10.33.1.143 -p tcp --dport 22 -m state --state NEW -m recent  
[[email protected] ~]# iptables -I INPUT 3 -d 10.33.1.143 -p tcp --dport 22 -m state --state NEW -m recent  300 --hitcount 3--name SSH -j DROP

下面对最后两句做一个说明:
1.第二句是记录访问tcp 22端口的新连接,记录名称为SSH
–set 记录数据包的来源IP,如果IP已经存在将更新已经存在的条目
2.第三句是指SSH记录中的IP,300s内发起超过3次连接则拒绝此IP的连接。
–update 是指每次建立连接都更新列表;
–seconds必须与–rcheck或者–update同时使用
–hitcount必须与–rcheck或者–update同时使用
测试远程连接不可超过三个
这里写图片描述
这里写图片描述
也可以使用下面的这句记录日志:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name SSH --second 300 --hitcount 3 -j LOG --log-prefix "SSH Attack

知识点笔记:
1.自定义新链规定所有数据包先经过mychain过滤再返回到主链
这里写图片描述
这里写图片描述
删除mychain时要先删除引用并清空mychain
执行以下命令即可删除[[email protected] ~]# iptables -X mychain
2.配置防火墙放行http,sshd,ftp服务请求回应包
这里写图片描述
这里写图片描述
FTP相关,编辑配置文件/etc/sysconfig/iptables-config 在IPTABLES_MODULES中指明要加载的两个模块ip_nat_ftp ip_conntrack_ftp
这里写图片描述
这里写图片描述
这里写图片描述

[[email protected] ~]# iptables -L -n --line-numbers  
Chain INPUT (policy DROP) 
num  target     prot opt source               destination          
1  ACCEPT   all  --  0.0.0.0/0            10.33.1.117         state RELATED,ESTABLISHED  
2    ACCEPT     tcp  --  0.0.0.0/0            10.33.1.117         multiport dports 21,22,80 state NEW  
3    ACCEPT     icmp --  10.33.100.200        10.33.1.117         icmp type 8 state NEW  
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            
Chain FORWARD (policy ACCEPT) 
num  target     prot opt source               destination          
Chain OUTPUT (policy DROP) 
num  target     prot opt source               destination          
1    ACCEPT     all  --  10.33.1.117          0.0.0.0/0           state RELATED,ESTABLISHED  
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0    

发布评论
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

用iptables构建简单DMZ防火墙讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。