iptables 预防DDOS 攻击.docx
- 文档编号:6715451
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:19
- 大小:371.02KB
iptables 预防DDOS 攻击.docx
《iptables 预防DDOS 攻击.docx》由会员分享,可在线阅读,更多相关《iptables 预防DDOS 攻击.docx(19页珍藏版)》请在冰豆网上搜索。
iptables预防DDOS攻击
iptables预防DDOS攻击
1、iptables扩展匹配
2、iptables脚本
3、TCP三次握手剖析
4、TCP四次断开剖析
5、DDOS(分布式拒绝服务)原理,及轻量级别攻击的防止
6、PAM的原理
7、PAM的使用
8、pam_mysql与vsftpd的整合
1、iptables扩展匹配
1)iptables(userspace)/netfilter(kernelspace)
iptables只是管理工具
netfilter是具体的功能实现
2)netfilter组成(表(功能模块)/链/规则)3张表,5条链(INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING),8个规则
filter(INPUT/OUTPUT/FORWARD)过滤
nat(PREROUTING/POSTROUTING/OUTPUT)地址转换
mangle(5个链)更封装层数据包结构
-->PREROUTING-->FORWARD-->POSTROUTING-->
INPUT||OUTPUT
本机
规则的匹原则:
1、自上而下按顺序匹配
2、如果匹配到某条规则,执行这个规则动作,就不往后匹配其它规则
3、如果列表的所有的规则都匹配不到,则匹配默认规则
iptables[-ttalbe]-A|-I|-D|-R|-Echianoption(-s-d-i-o-p--dport-m)-jaction(ACCEPT/DROP/REJECT/SNAT/DNAT....)
应用层
传输层(tcp/udp/sport/doprt/tcp6个控制位匹配)
网络层(-s/-d/icmp)
数据链路层(mac)
物理层(-i/-o)
扩展匹配
1、通用匹配-i-o-s-d
2、隐含匹配tcpudpicmpsportdport
3、扩展匹配-mmac|iprange|state
-m+模块
以下是常用的模块:
模块可以通过:
man8iptables,通过关键字“-m”查找到所有的模块介绍
/lib/modules/2.6.18-194.el5/kernel/net/ipv4/netfilter/:
存放模块的位置
-mconnlimit:
每个IP的并发连接数(TCP)--关注的是新发起的连接(NEW--syn)
#iptables-mconnlimit--help
connlimitmatchoptions:
[!
]--connlimit-abovenmatchifthenumberofexistingconnectionsis(not)aboven
--connlimit-maskngrouphostsusingmask
#mount-olooprhel55.iso/mnt
#rpm-Uvh/mnt/Server/iptables-1.3.5-5.3.el5_4.1.i386.rpm
#iptables-tfilter-AINPUT-s192.168.1.115-ptcp--dport22-mconnlimit--connlimit-above1-jDROP一个以上就拒绝!
!
#iptables-tfilter-L-n-v--line-v可以看状态--line数字显示
#iptables-tfilter-AINPUT-s192.168.1.115-ptcp--dport22-mconnlimit!
--connlimit-above1-jACCEPT一个以下就允许访问
-micmp:
ping包请求与发送
[root@~]#iptables-AINPUT-picmp-micmp--icmp-typeecho-reply-jACCEPT
[root@~]#iptables-AINPUT-picmp-micmp--icmp-typeecho-request-jACCEPT
[root@~]#iptables-AINPUT-picmp-jDROP
[root@~]#iptables-AOUTPUT-picmp-micmp--icmp-type0-jACCEPT==>0相当于echo-reply
[root@~]#iptables-AINPUT-picmp-micmp--icmp-type8-jACCEPT==>8相当于echo-request
删除哪张表的哪条链:
#iptables-tfilter-DINPUT2
插入哪张表作为第几条规则:
#iptables-tfilter-IINPUT1-s192.168.0.182-ptcp--dport22-mconnlimit--connlimit-above1-jDROP
-miprange:
IP范围(一段连续的IP)
[!
]--src-rangeip-ipMatchsourceIPinthespecifiedrange
[!
]--dst-rangeip-ipMatchdestinationIPinthespecifiedrange
只是允许一个范围内的人可以ping我:
#iptables-tfilter-RINPUT1-picmp-micmp-miprange--src-range192.168.1.102-192.168.1.104-jACCEPT
[root@~]#iptables-tfilter-AFORWARD-miprange--src-range192.168.1.1-192.168.1.100-jACCEPT
[root@~]#iptables-tfilter-AFORWARD-miprange--dst-range192.168.1.101-192.168.1.252-jDROP
-mlimit:
速率限制
[root@~]#watchiptables-LINPUT-nv
[root@~]#iptables-AINPUT-s192.168.1.115-picmp-micmp--icmp-typeecho-request-mlimit--limit1/second--limit-burst1-jACCEPT
[root@~]#iptables-AINPUT-s192.168.1.115-picmp-micmp--icmp-typeecho-request-jDROP
-mmac:
匹配源地址的MAC地址(mac源地址是固定的)
#iptables-mmac--help
macmatchoptions:
[!
]--mac-sourceXX:
XX:
XX:
XX:
XX:
XX
MatchsourceMACaddress
[root@~]#iptables-AINPUT-mmac--mac00:
0C:
29:
58:
01:
9A-picmp-jDROP
-mmultiport:
多端口
[root@html]#iptables-AINPUT-s192.168.1.0/24-ptcp-mmultiport--dport22:
25,25,110,80,53,21-jDROP
-mstate(NEW/ESTABLISHED/RELATED/INVALID):
NEW--第一个数包,跟TCP状态无关,第一个发过来的
ESTABLISHED--第二个数据包,第二个回复的包,后面继续发的包也是这样个状态
RELATED--已经发生关系的数据(FTP)
INVALID--无效数据包
个人简单的防火墙(状态):
ESTABLISHED不允许其他主机发起的主动访问,只允许本地主机主动发起的功能访问以及lo通讯
如果是远程上来的,必须先允许ssh,不然会死得很难看。
#iptables-tfilter-AINPUT-ptcp--dport22-jACCEPT
[root@stu110~]#iptables-PINPUTDROP
[root@stu110~]#iptables-AINPUT-ilo-jACCEPT-----允许本机内的通信和操作
[root@stu110~]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
[root@stu110~]#iptables-AINPUT-picmp-mstate--stateNEW-mlimit--limit1/second--limit-burst3-jACCEPT
[root@stu110~]#iptables-tfilter-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
RELATED:
已发生关系的
(1)vsftpd数据传输(考虑模式,默认是主动模式)
主动模式:
21--控制端口
20--数据端口
被动模式:
21--控制端口
1024+--数据端口
[root@mail~]#ismod/lib/modules/2.6.18-164.el5xen/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko需要模块的支持,内核才能支持RELATED状态
[root@mail~]#iptables-tfilter-AINPUT-ptcp--dport21-jACCEPT
[root@mail~]#iptables-tfilter-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT
被动模式/主动:
#servicevsftpdstart
#iptables-AINPUT-ptcp-mmultiport--dport21-jACCEPT
#iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
#modprobe-l|grepftp
kernel/net/netfilter/nf_conntrack_ftp.ko
#modproblenf_conntrack_ftp--加载FTP状态自动跟踪模块,它可以完成自动切换端口
-mstring:
字符串内容进行匹配(局限大,效率低,不太用)
[root@~]#iptables-AINPUT-s192.168.1.8-ptcp--dport22-mstring--algobm--string"sex"-jDROP
-mtime:
时间限制
[root@linux]#insmod/lib/modules/$(uname-r)/kernel/net/ipv4/netfilter/ipt_time.ko
[root@linux]#iptables-tfilter-AINPUT-s192.168.1.1.0/24-mtime--timestart9:
00--timestop17:
00--daysMon,Tue,Wed,Thu,Fri-jACCEPT
[root@linux]#iptables-tfilter-AINPUT-s192.168.1.1.0/24-ptcp--dport80-jDROP
2、iptables脚本
#!
/bin/bash
###############先定义一些变量############
lan=eth0
wan=eth1
lan_ip=192.168.0.20
wan_ip=192.168.1.20
TCP_PORT="20:
22,80"
UDP_PORT="53,67"
IPTABLES=/sbin/iptables
mod=/sbin/modprobe
/sbin/depmod-a
$modip_conntrack_ftp
start(){
##########ALLOW##########
$IPTABLES-Nallowed--------自定义链
$IPTABLES-Aallowed-pTCP--syn-jACCEPT-------所有tcp第一次握手都可以通过
$IPTABLES-Aallowed-pTCP-mstate--stateESTABLISHED,RELATED-jACCEPT
$IPTABLES-Aallowed-pTCP-jDROP
###############BAD_TCP################
$IPTABLES-Nbad_tcp_packets
$IPTABLES-Abad_tcp_packets-ptcp--tcp-flagsSYN,ACKSYN,ACK-mstate--stateNEW-jREJECT--reject-withtcp-reset-----SYN,ACKSYN,ACKsyn和ack都为1假的包
$IPTABLES-Abad_tcp_packets-ptcp!
--syn-mstate--stateNEW-jLOG--log-prefix"Newnotsyn:
"----记录性的东西,就算匹配了,所以还是会继续往下面匹配
$IPTABLES-Abad_tcp_packets-ptcp!
--syn-mstate--stateNEW-jDROP
###############TCPRULES#################
$IPTABLES-Ntcp_packets
$IPTABLES-Atcp_packets-ptcp--syn--dport80-mlimit--limit10/s--limit-burst10-mconnlimit--connlimit-above10-jDROP
$IPTABLES-Atcp_packets-ptcp--syn--dport22-mconnlimit--connlimit-above3-jREJECT
$IPTABLES-Atcp_packets-ptcp-mmultiport--dport$TCP_PORT-jACCEPT
$IPTABLES-Atcp_packets-mstate--stateESTABLISHED,RELATED-jACCEPT
$IPTABLES-Atcp_packets-pTCP-jDROP
##############UDPRULES##################
$IPTABLES-Nudp_packets
$IPTABLES-Audp_packets-pudp-mmultiport--dport$UDP_PORT-jACCEPT
##############ICMPRULES###############
$IPTABLES-Nicmp_packets
$IPTABLES-Aicmp_packets-picmp-mlimit--limit1/s--limit-burst1-s0/0--icmp-type8-jACCEPT
$IPTABLES-Aicmp_packets-pIcmP-mlimit--limit1/s--limit-burst1-s0/0--icmp-type0-jACCEPT
#DENYALL
$IPTABLES-PINPUTDROP
$IPTABLES-POUTPUTDROP
$IPTABLES-PFORWARDDROP
#INPUT
$IPTABLES-AINPUT-ptcp-jbad_tcp_packets
$IPTABLES-AINPUT-ilo-jACCEPT
$IPTABLES-AINPUT-s192.168.0.0/24-jACCEPT
$IPTABLES-AINPUT-ptcp-jtcp_packets
$IPTABLES-AINPUT-pudp-judp_packets
$IPTABLES-AINPUT-picmp-jicmp_packets
#OUTPUT
$IPTABLES-AOUTPUT-ptcp-jbad_tcp_packets
$IPTABLES-AOUTPUT-olo-jACCEPT
$IPTABLES-AOUTPUT-ptcp-jallowed
$IPTABLES-AOUTPUT-picmp-jicmp_packets
$IPTABLES-AOUTPUT-jACCEPT
#FORWARD
$IPTABLES-AFORWARD-ptcp-jbad_tcp_packets
$IPTABLES-AFORWARD-ptcp-jallowed
$IPTABLES-AFORWARD-pudp-jACCEPT
$IPTABLES-AFORWARD-picmp-jicmp_packets
#table:
NAT
#SNAT
#$IPTABLES-tnat-APOSTROUTING-s192.168.0.0/24-o$wan-jSNAT--to$wan_ip
#DNAT
#$IPTABLES-tnat-APREROUTING-i$wan-d$wan_ip-ptcp--dport80-jDNAT--to192.168.0.1:
80
}
stop(){
$IPTABLES-PINPUTACCEPT
$IPTABLES-POUTPUTACCEPT
$IPTABLES-PFORWARDACCEPT
#FILTER
$IPTABLES-F
$IPTABLES-Z
$IPTABLES-X
#NAT
$IPTABLES-tnat-F
$IPTABLES-tnat-Z
$IPTABLES-tnat-X
#MANGLE
$IPTABLES-tmangle-F
$IPTABLES-tmangle-Z
$IPTABLES-tmangle-X
}
restart(){
stop
start
}
case"$1"in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo$"Usage:
$0{start|stop|restart}"
exit2
esac
exit$?
3、TCP三次握手剖析
SYN-RECVD拒绝服务出现的征兆
TCP连接已建立,进入数据传输
4、TCP四次断开剖析
5、DDOS原理,及轻量级别攻击的防止
#sysctl-a
----查看以下的内核参数
#vim/etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog=8096--超过最大连接数后产生新syn队列的长度
net.ipv4.tcp_synack_retries=2--syn确认的重试次数
net.ipv4.ip_local_port_range=102465535--表示用于向外连接的端口范围。
缺省情况下很小:
32768到61000,改为1024到65000。
net.ipv4.tcp_syncookies=1--表示开启SYNCookies。
当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse=1--表示开启重用。
允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle=1--表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_max_tw_buckets=5000--表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
默认为180000,改为5000。
#sysctl-p重新加载配置文件,配置立即生效
1、通过iptables防止轻量级别的DDOS
-mlimit
-mconnlimit
2、DDOS的原理,三次握手(客户端第三次不回应服务端)
3、通过内核增大TCP缓冲区,支持更多的连接。
4、增加更强大的硬件防火墙,用于丢弃(过滤)掉不正常syn请求,搭建负载均衡集群,另外保证你的外网有足够大的带宽
6、PAM的原理
验证分类:
1、本地验证
2、网络验证
login
sshd
samba
vsftpd
su
sudo
postfix
ssh_client-->username/password->sshd-->pam_lib-->pam-->/etc/pam.d/sshd(/lib64/security/pam_xxxxxx.so)-->/etc/passwd|/etc/shadow
eg:
#ldd/usr/sbin/sshdldd----查看动态库
libpam.so.0=>/lib64/libpam.so.0(0x00007fbe526d0000)
有这个模块的就是调用了验证模块
所谓的三栏、四栏
cat/etc/pam.d/xxx
三栏:
模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iptables 预防DDOS 攻击 预防 DDOS
![提示](https://static.bdocx.com/images/bang_tan.gif)