iptables模块添加--七层过滤、防CC、DDOS

简介:
#!/bin/bash
# BY kerryhu
# QQ:263205768
# MAIL:king_819@163.com
# BLOG:http://kerry.blog.51cto.com
IPT=/sbin/iptables
/*
当前系统版本centos5.3,内核版本2.6.18-128.el5,对现有系统内核进行升级、优化,并添加L7-filter模块,使iptables支持L7filter,对七层应用进行过滤
*/

#============================= 内核编译 ===========================================
cd /opt
tar jxvf iptables-1.4.3.tar.bz2 
tar zxvf ipp2p-0.99.16.tar.gz
tar zxvf netfilter-layer7-v2.22.tar.gz
tar jxvf linux-2.6.28.10.tar.bz2
mv linux-2.6.28.10 /usr/src/
 
#
#给内核打L7-filter补丁,将以上各软件包都解压到 /usr/src 目录
cd /usr/src/linux-2.6.28.10
patch -p1 < /opt/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
#检查有无不正确的.o文件和依赖关系,使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令
#make mrproper
#使用make oldconfig可以继承老的kernel的配置,为自己的配置省去很多麻烦 
make oldconfig
#make menuconfig是文字界面下推荐一种方式,在这里可以选择你需要编译到核心的模块
make menuconfig
/*
空格键用于选择配置类型
对不同功能的配置选择
[   ]:空选时表示不需要在新内核中使用该功能
[ M ]:表示将此项功能编译为模块,以便在需要时加载  Module
[ * ]:将此项功能直接编入新内核,作为新内核的一部分需要配置哪些内核编译参数
*/
#Networking support  --->  
# Networking options  ---> 
#  Network packet filtering framework (Netfilter)  --->
#   iP:netfilter configuraton --->
<M> IPv4 connection tracking support (required for NAT)
#     Full NAT 
   
#Networking support  --->  
# Networking options  ---> 
#  Network packet filtering framework (Netfilter)  --->   
#   core netfilter configuration --->
 <M> Netfilter connection tracking support
#    "connlimit" match support"  
#    "time" match support
#    "string" match support  
#    "layer7" match support
#     [*] Layer 7 debugging output 
 
#升级内核
make
make modules
make modules_install
make install
#修改默认以新的内核启动。
vi /boot/grub/grub.conf 
default=0
#将新的内核配置文件复制到/boot目录。 
cp /usr/src/linux-2.6.28.10/.config /boot/config-2.6.28.10
#重启完成后确认内核版本是否正确。
reboot 
uname –r
2.6.28

#5.给iptables打补丁并升级 
#卸载系统中的旧版本iptables。
rpm -qa |grep iptables 
rpm -e --nodeps iptables-1.3.5-4.el5
rpm -e --nodeps iptables-ipv6-1.3.5-4.el5
#合并补丁,并编译安装新的iptables工具
cd /opt
tar jxvf iptables-1.4.3.tar.bz2 -C /opt/
cd /opt/iptables-1.4.3/
cp /opt/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*  extensions/
./configure  --prefix=/  --with-ksource=/usr/src/linux-2.6.28.10
make;make install

需要停止iptables服务

service iptables stop
用/usr/local/sbin/中的iptables(新版本)文件替换/sbin/iptables(这个是老版本的)

cp /usr/local/sbin/iptables /sbin/
cp /usr/local/sbin/iptables-restore /sbin/
cp /usr/local/sbin/iptables-save /sbin/
主要是上面三个文件,给整个目录也拿过去也行

测试一下

iptables -V
iptables v1.4.3

services iptables restart

 

确认iptables版本是否正确。
 
#6.安装l7-protocol
cd /opt
tar xzvf l7-protocols-2009-05-28.tar.gz 
cd l7-protocols-2008-11-23
make install
其实就是把响应的目录copy到 /etc/l7-protocols/
真正调用的是/etc/l7-protocols/protocols/下面的文件
可以打开下面具体的文件,里面是一些L7程序特征码的正则表达式形式
这样自己也可以按照这样的样子,写自己的特征码。
该特征码软件包一直在不停的更新,其后面的日期就是更新的日期,推荐定期选择最新的包进行更新。
#安装IPP2P
cd /opt/ipp2p-0.99.16
make
make install
cp ipt_ipp2p.ko /lib/modules/2.6.28.10/kernel/net/ipv4/netfilter/
cp libipt_ipp2p.so /lib/iptables/

#加载模块
modprobe ipt_connlimit
modprobe ipt_time
modprobe ipt_ipp2p
modprobe ipt_layer7
lsmod |grep x_tables
7.测试
$IPT -I FORWARD -p udp --dport 53 -m string --string "tencent" --algo bm -j DROP
$IPT -I FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto qq -j DROP
$IPT -I FORWARD -p udp --dport 8000 -j DROP
$IPT -I FORWARD -p tcp -m layer7 --l7proto socks -j DROP
$IPT -I FORWARD -p udp --dport 53 -m string --string "messenger" --algo bm -j DROP 
$IPT -I FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto msnmessenger -j DROP
$IPT -I FORWARD -p udp --dport 1863 -j DROP
$IPT -t mangle -A PREROUTING -m layer7 --l7proto qq -j DROP 
$IPT -t mangle -A PREROUTING -m layer7 --l7proto msnmessenger -j DROP
#======================================= layer7,time,ip2p2 ==================================
#测试layer7,time,ip2p2,可通过上面的策略表达式测试是否成功禁止掉qq、msn、ipp2p、xunlei
#$IPT -A FORWARD -m layer7 --l7proto qq  -m time --timestart 8:00 --timestop 17:30 --days Mon,Tue,Wed,Thu,Fri -m iprange --src-range 192.168.1.5-192.168.1.239 -m ipp2p --ipp2p -m ipp2p --xunlei -j DROP
#$IPT -A FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto qq -j DROP
#======================================= connlimit ============================================
# 允许单个 IP 的最大连接数为 30 
#$IPT -A FORWARD -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
#控制单个 IP 在一定的时间(比如60秒)内允许新建立的连接数 
#$IPT -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT 
#$IPT -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT 
#限制连往本机的web服务,1个C段的IP的并发连接不超过100个,超过的被拒绝
$IPT -A INPUT -i $INTERNET -p tcp -m multiport  --dports 80,443 -m connlimit --connlimit-above 500 --connlimit-mask  24 -j REJECT
 
#过滤syn包
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 100/s --limit-burst 150 -m multiport --dports 80,443 -j DROP
 
$IPT -A INPUT -i $INTERNET  -p tcp --syn -m multiport  -dports 80,443 -m connlimit --connlimit-above 100 --connlimit -mask 32 -j DROP

 
 
#======================================= limit =============================================
#可达到每秒只接受一个 echo-request 封包 
$IPT -N pinglimit
$IPT -A pinglimit -m limit –limit 1/s –limit-burst 1 -j ACCEPT
$IPT -A pinglimit -j DROP
$IPT -A INPUT -p icmp –icmp-type echo-request -j pinglimit
#限制每秒只接受一个 icmp echo-request 封包
$IPT -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type echo-request -j DROP
#防治 SYN-Flood 碎片攻击(每秒只接受100个syn封包,)
#–limit 1/s 表示每秒一次; 1/m 则为每分钟一次; 1/h 则为每小时一次
#–limit-burst 表示允许触发 limit 限制的最大次数 (预设 5)
$IPT -N syn-flood
$IPT -A syn-flood -m limit –limit 100/s –limit-burst 150 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -I INPUT -j syn-flood
#===================================== string ================================================
#每个词都用baidu和google识别出来gbk编码和utf-8编码的字串,全封住。
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "股市" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%E8%82%A1%E5%B8%82" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%B9%C9%CA%D0" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "基金" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%E5%9F%BA%E9%87%91" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%BB%F9%BD%F0" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "股票" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%E8%82%A1%E7%A5%A8" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%B9%C9%C6%B1" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "证券" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%E8%AF%81%E5%88%B8" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "%D6%A4%C8%AF" -j DROP
#下面是些纯英文的词,做起来简洁多了
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "fund" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "finance" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "business" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "money" -j DROP
/usr/sbin/iptables -A FORWARD -m string --algo bm --string "stock" -j DROP
 
 本文转自king_819 51CTO博客,原文链接:http://blog.51cto.com/kerry/290479,如需转载请自行联系原作者
相关文章
|
缓存 网络协议 安全
网络安全-DoS与DDoS攻击原理(TCP、UDP、CC攻击等)与防御
网络安全-DoS与DDoS攻击原理(TCP、UDP、CC攻击等)与防御
741 0
|
域名解析 搜索推荐 网络协议
CC攻击和DDoS攻击的区别是什么
CC攻击和DDoS攻击的区别是什么
|
云安全 安全 网络协议
常见的网络攻击-CC与DDos,二者的不同之处.
DDos和CC攻击都是目前最常见的网络攻击,那么这个DDoS攻击和CC攻击有什么不同呢
|
安全 网络协议 网络安全
【云栖号案例 | 游戏&娱乐】冠赢网络上云 游戏盾彻底解决DDoS/CC攻击
DDoS/CC攻击是游戏APP类业务常遇到的安全问题。上云后通过将SDK嵌入客户端中,自动进行分组及调度,及时找出并处置风险设备,实现业务与安全的双赢。
【云栖号案例 | 游戏&娱乐】冠赢网络上云 游戏盾彻底解决DDoS/CC攻击
|
云安全 安全 网络安全
阿里云盾技术强在哪里?轻松防御DDoS、CC攻击
阿里云安全核心产品:云盾云盾是阿里巴巴集团多年来安全技术研究积累的成果,结合阿里云云计算平台强大的数据分析能力,为中小网站提供如安全漏洞检测、网页木马检测,以及面向云服务器用户提供的主机入侵检测、防DDoS等一站式安全服务。
|
安全 网络协议 网络安全
如何通过iptables设置来缓解DDoS攻击和CC攻击?
最近这几年,互联网高速发展的同时,网络安全威胁也日益严重。很多互联网公司经常会遭到各种各样的网络攻击,特别是DDOS攻击最让互联网企业感到头痛,因为DDOS攻击会直接造成服务器崩溃,导致用户无法访问,业务直接中断。
2722 0
|
24天前
|
运维 安全 网络安全
DDoS攻击升级,解读防御DDoS攻击的几大有效方法
DDoS攻击升级,解读防御DDoS攻击的几大有效方法
28 0
|
2月前
|
存储 人工智能 安全
DDoS攻击激增,分享高效可靠的DDoS防御方案
DDoS攻击激增,分享高效可靠的DDoS防御方案
52 0
|
8天前
|
存储 安全 应用服务中间件
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
20 0
|
1月前
|
Linux 网络安全 Windows
如何通过隐藏服务器真实IP来防御DDOS攻击
如何通过隐藏服务器真实IP来防御DDOS攻击