Linux安全之iptables高级特性

iptables 是运行在用户空间的应用软件,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发。在大部分 Linux 发行版中,可以通过手册页 或 man iptables 获取用户手册。通常 iptables 需要内核模块支持才能运行,此处相应的内核模块通常是 Xtables。

Linux安全之iptables高级特性

Linux安全之iptables高级特性

1. recent 模块

利用iptables的recent模块来抵御DOS攻击(CC 攻击)

建立一个列表,保存有所有访问过指定的服务的客户端 IP 地址

#1
利用connlimit模块将单IP地址ssh远程连接的并发设置为3
会误杀使用NAT上网的用户,可以根据实际情况增大该值
$ sudo iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
bash
2
利用recent和state模块限制单IP在300s内只能与本机建立2个新连接,被限制五分钟后即可恢复访问
$ sudo iptables -I INPUT -p tcp --dport 22 -m state
–state NEW -m recent --set --name SSH

$ sudo iptables -I INPUT -p tcp --dport 22 -m state
–state NEW -m recent --update --seconds 300 --hitcount 3
–name SSH -j LOG --log-prefix "SSH Attach: "

$ sudo iptables -I INPUT -p tcp --dport 22 -m state
–state NEW -m recent --update --seconds 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同时使用

3.iptables的记录:/proc/net/xt_recent/SSH,也可以使用下面的这句记录日志
$ sudo 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”

2. layer7 模块

利用iptables的layer7模块能够识别应用层协议,实现七层访问过滤:对应用层协议进行限制,如微信等。

使用需求

对内核中的netfilter,打补丁layer7,重新编译内核
iptables打补丁,补上layer7模块,重新iptables
编译内核方法

$ sudo make menuconfig
$ sudo make -j xxx
$ sudo make modules_install
$ sudo make install
总结操作步骤

1、获取并编译内核
$ sudo useradd mockbuild
$ sudo rpm -ivh kernel-2.6.32-431.5.1.x86_64.el6.src.rpm
$ sudo cd rpmbuild/SOURCES
$ sudo tar linux-2.6.32-*.tar.gz -C /usr/src
$ sudo cd /usr/src
$ sudo ln -sv

2、给内核打补丁
$ sudo tar xf netfilter-layer7-v2.23.tar.bz2
$ sudo cd /usr/src/linux
$ sudo patch -p1 < /root/netfilter-layer7-v2.23/kernel-2.6.32-layer7-2.23.patch
$ sudo cp /boot/config-* .config
$ sudo make menuconfig

3、按如下步骤启用layer7模块
Networking support → Networking Options →Network packet filtering framework → Core Netfilter Configuration
“layer7” match support

4、编译并安装内核
$ sudo make
$ sudo make modules_install
$ sudo make install

5、重启系统,启用新内核
$ sudo reboot

6、编译iptables
$ sudo tar xf iptables-1.4.20.tar.gz
$ sudo cp /root/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/* /root/iptables-1.4.20/extensions/
$ sudo cp /etc/rc.d/init.d/iptales /root
$ sudo cp /etc/sysconfig/iptables-config /root
$ sudo rpm -e iptables iptables-ipv6 --nodeps
$ sudo ./configure --prefix=/usr --with-ksource=/usr/src/linux
$ sudo make && make install
$ sudo cp /root/iptables /etc/rc.d/init.d
$ sudo cp /root/iptables-config /etc/sysconfig

7、为layer7模块提供其所识别的协议的特征码
$ sudo tar zxvf l7-protocols-2009-05-28.tar.gz
$ sudo cd l7-protocols-2009-05-28
$ sudo make install

8、如何使用layer7模块
ACCT的功能已经可以在内核参数中按需启用或禁用。此参数需要装载nf_conntrack模块后方能生效。
net.netfilter.nf_conntrack_acct = 1
l7-filter uses the standard iptables extension syntax

$ sudo iptables [specify table & chain] -m layer7 --l7proto [protocol name] -j [action]
$ sudo iptables -A FORWARD -m layer7 --l7proto qq -j REJECT
提示:xt_layer7.ko 依赖于 nf_conntrack.ko 模块

文章作者: Escape

文章链接:
https://www.escapelife.site/posts/ff46f9a5.html

转载来源 Escape !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GLAB-Mary

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值