Linux安全之iptables高级特性

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


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


# 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 模块

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

  • 使用需求
    • 对内核中的**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 = 1l7-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 !

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章