linux下防御ddos攻击_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
11
每页帖数
101/2页12
返回列表
0
发起投票  发起投票 发新帖子
查看: 1398 | 回复: 10   主题:  linux下防御ddos攻击        上一篇   下一篇 
Irvinna
注册用户
等级:新兵
经验:51
发帖:46
精华:0
注册:2011-8-19
状态:离线
发送短消息息给Irvinna 加好友    发送短消息息给Irvinna 发消息
发表于: IP:您无权察看 2015-11-4 14:38:46 | [全部帖] [楼主帖] 楼主

ddos攻击是一种分布式拒绝服务攻击

原理:通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人

的通讯

首先确认服务器是否收到ddos攻击

显示服务器上每个IP多少个连接数,连接数过大的话就有问题了,几个或几十个还好,成百上千就有问题了

# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# vim /etc/sysctl.conf

加入下面这些

#开启CentOS SYN Cookies,这是个BOOLEAN。当出现CentOS SYN等待队列溢出时,启用cookies来处理,可防范少量CentOS SYN攻击,默认为0,表示关闭

net.ipv4.tcp_syncookies=1


#开启重用,这是个BOOLEAN。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_reuse=1


开启TCP连接中TIME-WAIT sockets的快速回收,这是个BOOLEAN,默认为0,表示关闭
net.ipv4.tcp_tw_recycle=1

#net.ipv4.tcp_synack_retries和net.ipv4.tcp_syn_retries是定义CentOS SYN重试次数。如果你不想修改/etc/sysctl.conf,你也可以直接使用命令修改:

sbin/sysctl -w key=value
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syn_retries=1

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息

net.ipv4.tcp_max_syn_backlog=8000

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。单位为秒

net.ipv4.tcp_fin_timeout=30
net.ipv4.conf.all.send_redirects=0net.ipv4.conf.all.accept_redirects=0
net.ipv4.tcp_window_scaling=1net.ipv4.icmp_echo_ignore_all=1net.ipv4.icmp_echo_ignore_broadcasts=1


即时生效

sysctl -p




                                                                                                                           --转自



赞(0)    操作        顶端 
k3neeb
版主
等级:上尉
经验:799
发帖:15
精华:0
注册:2015-5-28
状态:离线
发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
发表于: IP:您无权察看 2016-3-17 9:44:12 | [全部帖] [楼主帖] 2  楼

虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux 系统本身提供的防火墙功能来防御。SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。 Linux内核提供了若干SYN相关的配置,加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。而DDOS则是通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人的通讯。可以通过配置防火墙或者使用脚本工具来防范

通过sysctl和iptables来防范
对sysctl参数进行修改
$ sudo sysctl -a  | grep ipv4 | grep syn
输出类似下面:
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5

net.ipv4.tcp_syncookies:是否打开SYN COOKIES的功能,“1”为打开,“2”关闭。
net.ipv4.tcp_max_syn_backlog:SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_synack_retries和net.ipv4.tcp_syn_retries:定义SYN重试次数。
把如下加入到/etc/sysctl.conf即可,之后执行“sysctl -p”!
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

提高TCP连接能力

net.ipv4.tcp_rmem = 32768
net.ipv4.tcp_wmem = 32768

net.ipv4.sack=0  

使用iptables
命令:
# netstat -an | grep ":80" | grep ESTABLISHED
来查看哪些IP可疑~比如:221.238.196.83这个ip连接较多,并很可疑,并不希望它再次与221.238.196.81有连接。可使用命令:

iptables -A INPUT -s 221.238.196.83 -p tcp -j DROP
将来自221.238.196.83的包丢弃。
对于伪造源IP地址的SYN FLOOD攻击。该方法无效
其他参考
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
# iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

使用DDoS deflate自动屏蔽攻击ip
DDoS deflate介绍
DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,
在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.
DDoS deflate官方网站:http://deflate.medialayer.com/
如何确认是否受到DDOS攻击?
执行:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
以下是我自己用VPS测试的结果:
li88-99:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1 114.226.9.132
1 174.129.237.157
1 58.60.118.142
1 Address
1 servers)
2 118.26.131.78
3 123.125.1.202
3 220.248.43.119
4 117.36.231.253
4 119.162.46.124
6 219.140.232.128
8 220.181.61.31    VPS侦探 http://www.vpser.net/
2311 67.215.242.196      
#(这个看起来像攻击)
每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。
1、安装DDoS deflate
wget http://www.inetbase.com/scripts/ddos/install.sh   //下载DDoS deflate
chmod 0700 install.sh      //添加权限
./install.sh         //执行
2、配置DDoS deflate下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"  //IP地址白名单
CRON="/etc/cron.d/ddos.cron"    //定时执行程序
APF="/etc/apf/apf"
IPT="/sbin/iptables"

##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
#####            option so that the new frequency takes effect
FREQ=1   //检查时间间隔,默认1分钟
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150     //最大连接数,超过这个数IP就会被屏蔽,一般默认即可
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1        //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1   //是否屏蔽IP,默认即可
##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root"   //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600    //禁用IP时间,默认600秒,可根据情况调整
3、选项
/usr/local/ddos/ddos.sh -h    //查看选项
/usr/local/ddos/ddos.sh -k n  //杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS
/usr/local/ddos/ddos.sh -c    //按照配置文件创建一个执行计划
4、卸载

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos
使用以上方法可以缓解一些攻击。如果服务器是nginx的话可以按照
1、打开nginx访问日志
log_format    access    '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';  #设置日志格式
#access_log  /dev/null;
access_log    /usr/local/nginx/logs/access.log    access;
2、观察nginx日志
more /usr/local/nginx/logs/access.log
查看哪些ip重复很严重。
(1)agent的特征

比如:MSIE 5.01
配置nginx

location /{
if ( $http_user_agent ~* "MSIE 5.01" ) {

#proxy_pass http://www.google.com;
return 500;
#access_log /home/logs/1.log main;
}
}
将ip加入iptable内
iptables -A INPUT    -s 202.195.62.113 -j DROP
我发现的 攻击时代理+ddos
搜索ip均为代理地址。日志最后一部分为真实ip(重复很多)。

如何查看user_agent
在地址栏输入:
javascript:alert(navigator.userAgent)
回车就会弹出当前使用的浏览器的useragent.

ps:ie和firefox的user—agent
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"  ( ie6.0)
Mozilla/4.0 (compatible; MSIE 8.0; ; Trident/4.0; .NET CLR 2.0.50727; CIBA)  (ie8.0)
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
注意:都含有Windows NT 5.1。
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)"(这个应该就是攻击者使用user_agent).



赞(0)    操作        顶端 
twany
注册用户
等级:少校
经验:1408
发帖:17
精华:0
注册:2015-6-2
状态:离线
发送短消息息给twany 加好友    发送短消息息给twany 发消息
发表于: IP:您无权察看 2016-3-18 9:23:42 | [全部帖] [楼主帖] 3  楼

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。



赞(0)    操作        顶端 
jinggege
注册用户
等级:中士
经验:241
发帖:0
精华:0
注册:2016-2-26
状态:离线
发送短消息息给jinggege 加好友    发送短消息息给jinggege 发消息
发表于: IP:您无权察看 2016-3-18 21:26:14 | [全部帖] [楼主帖] 4  楼

  DDOS是DOS攻击中的一种方法。


  DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。


  DDOS:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。


  举一个最通俗的例子,下面的图片是TCP的通信的三次握手,如果说攻击端,发送完第一次握手的数据后,然后就“消失”了,那么服务器就会不断的发送第二次握手的数据,可是攻击端的人找不到了。于是,服务器的资源大量被消耗,直到死机为止。当然要完全弄懂机制,需要对TCP有相当深入的了解。

  事实上DOS的攻击方式有很多种,比如下面的常见的:

  1、SYN FLOOD
  利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
  如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。

  2、IP欺骗DOS攻击
  这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。
  攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。
  
  3、带宽DOS攻击
  如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。


  4、自身消耗的DOS攻击
  这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。
  这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。


  上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。
  
  5、塞满服务器的硬盘
  通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:
  发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。
  让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。
  向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。



赞(0)    操作        顶端 
jinggege
注册用户
等级:中士
经验:241
发帖:0
精华:0
注册:2016-2-26
状态:离线
发送短消息息给jinggege 加好友    发送短消息息给jinggege 发消息
发表于: IP:您无权察看 2016-4-25 19:56:54 | [全部帖] [楼主帖] 5  楼

DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。如果说 以前网络管理员对抗Dos可以采取过滤IP地址方法的话,那么面对当前ddos众多伪造出来的地址则显得没有办法。



赞(0)    操作        顶端 
山友木樨
注册用户
等级:少校
经验:1040
发帖:9
精华:0
注册:2015-6-1
状态:离线
发送短消息息给山友木樨 加好友    发送短消息息给山友木樨 发消息
发表于: IP:您无权察看 2016-4-28 8:27:32 | [全部帖] [楼主帖] 6  楼

厉害



赞(0)    操作        顶端 
arcona
注册用户
等级:少校
经验:1100
发帖:10
精华:0
注册:2015-6-1
状态:离线
发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
发表于: IP:您无权察看 2016-5-5 9:20:53 | [全部帖] [楼主帖] 7  楼

膜拜!



赞(0)    操作        顶端 
k3neeb
版主
等级:上尉
经验:799
发帖:15
精华:0
注册:2015-5-28
状态:离线
发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
发表于: IP:您无权察看 2016-5-11 8:56:38 | [全部帖] [楼主帖] 8  楼



赞(0)    操作        顶端 
twany
注册用户
等级:少校
经验:1408
发帖:17
精华:0
注册:2015-6-2
状态:离线
发送短消息息给twany 加好友    发送短消息息给twany 发消息
发表于: IP:您无权察看 2016-5-11 11:10:58 | [全部帖] [楼主帖] 9  楼

好厉害



赞(0)    操作        顶端 
ettu
注册用户
等级:上尉
经验:787
发帖:0
精华:0
注册:2016-2-22
状态:离线
发送短消息息给ettu 加好友    发送短消息息给ettu 发消息
发表于: IP:您无权察看 2016-5-11 11:53:43 | [全部帖] [楼主帖] 10  楼

学习,学习。



赞(0)    操作        顶端 
总帖数
11
每页帖数
101/2页12
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论