- 浏览: 1042204 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wenson:
lzjzy520 写道 求 项目完整元代码已经够清楚了,看不懂 ...
使用Spring JavaMail发送邮件总结 -
lzjzy520:
求 项目完整元代码
使用Spring JavaMail发送邮件总结 -
xiejx618:
能提高多大的性能? 不能用数据来说话吧希望你能用jmeter做 ...
利用APR本地库提高Tomcat性能 -
mrwalter:
学习了,挺好用的,局域网内速度很快
ssh远程文件传输命令scp -
wcily123:
不错
ssh远程文件传输命令scp
用Linux系统防火墙功能抵御网络攻击
虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间
比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux系统本身提供的防火墙功能来防御。
1. 抵御SYN
SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。
Linux内核提供了若干SYN相关的配置,用命令:
sysctl -a | 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
tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。
加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分SYN攻击,降低重试次数也有一定效果。
调整上述设置的方法是:
增加SYN队列长度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打开SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重试次数:
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syn_retries=3
为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。
2. 抵御DDOS
DDOS,分布式拒绝访问攻击,是指黑客组织来自不同来源的许多主机,向常见的端口,如80,25等发送大量连接,但这些客户端只建立连接,不是正常访
问。由于一般Apache配置的接受连接数有限(通常为256),这些“假” 访问会把Apache占满,正常访问无法进行。
Linux提供了叫ipchains的防火墙工具,可以屏蔽来自特定IP或IP地址段的对特定端口的连接。使用ipchains抵御DDOS,就是首先通过netstat命令发现攻击来源地址,然后用ipchains命令阻断攻击。发现一个阻断一个。
*** 打开ipchains功能
首先查看ipchains服务是否设为自动启动:
chkconfig --list ipchains
输出一般为:
ipchains 0:off 1:off 2:on 3:on 4:on 5:on 6:off
如果345列为on,说明ipchains服务已经设为自动启动
如果没有,可以用命令:
chkconfig --add ipchains
将ipchains服务设为自动启动
其次,察看ipchains配置文件/etc/sysconfig/ipchains是否存在。如果这一文件不存在,ipchains
即使设为自动启动,也不会生效。缺省的ipchains配置文件内容如下:
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 0/0 -d 0/0 -i lo -j ACCEPT
# allow http,ftp,smtp,ssh,domain via tcp; domain via udp
-A input -p tcp -s 0/0 -d 0/0 pop3 -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 http -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 https -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ftp -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 smtp -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ssh -y -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 domain -y -j ACCEPT
-A input -p udp -s 0/0 -d 0/0 domain -j ACCEPT
# deny icmp packet
#-A input -p icmp -s 0/0 -d 0/0 -j DENY
# default rules
-A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT
-A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT
-A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT
-A input -p udp -s 0/0 -d 0/0 2049 -j REJECT
-A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT
-A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT
如果/etc/sysconfig/ipchains文件不存在,可以用上述内容创建之。创建之后,启动ipchains服:
/etc/init.d/ipchains start
*** 用netstat命令发现攻击来源
假如说黑客攻击的是Web 80端口,察看连接80端口的客户端IP和端口,命令如下:
netstat -an -t tcp | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
输出:
161.2.8.9:123 FIN_WAIT2
161.2.8.9:124 FIN_WAIT2
61.233.85.253:23656 FIN_WAIT2
...
第一栏是客户机IP和端口,第二栏是连接状态
如果来自同一IP的连接很多(超过50个),而且都是连续端口,就很可能是攻击。
如果只希望察看建立的连接,用命令:
netstat -an -t tcp | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
*** 用ipchains阻断攻击来源
用ipchains阻断攻击来源,有两种方法。一种是加入到/etc/sysconfig/ipchains里,然后重启动ipchains服务。另一种是直接用ipchains命令加。屏蔽之后,可能还需要重新启动被攻击的服务,是已经建立的攻击连接失效
* 加入/etc/sysconfig/ipchains
假定要阻止的是218.202.8.151到80的连接,编辑/etc/sysconfig/ipchains文件,在:output ACCEPT
行下面加入:
-A input -s 218.202.8.151 -d 0/0 http -y -j REJECT
保存修改,重新启动ipchains:
/etc/init.d/ipchains restart
如果要阻止的是218.202.8的整个网段,加入:
-A input -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT
* 直接用命令行
加入/etc/sysconfig/ipchains文件并重起ipchains的方法,比较慢,而且在ipchains重起的瞬间,可能会有部分连接钻进来。最方便的方法是直接用ipchains命令。
假定要阻止的是218.202.8.151到80的连接,命令:
ipchains -I input 1 -p tcp -s 218.202.8.151 -d 0/0 http -y -j REJECT
如果要阻止的是218.202.8的整个网段,命令:
ipchains -I input 1 -p tcp -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT
其中,-I的意思是插入,input是规则连,1是指加入到第一个。
您可以编辑一个shell脚本,更方便地做这件事,命令:
vi blockit
内容:
#!/bin/sh
if [ ! -z "$1" ] ; then
echo "Blocking: $1"
ipchains -I input 1 -p tcp -s "$1" -d 0/0 http -y -j REJECT
else
echo "which ip to block?"
fi
保存,然后:
chmod 700 blockit
使用方法:
./blockit 218.202.8.151
./blockit 218.202.8.0/255.255.255.0
上述命令行方法所建立的规则,在重起之后会失效,您可以用ipchains-save命令打印规则:
ipchains-save
输出:
:input ACCEPT
:forward ACCEPT
:output ACCEPT
Saving `input'.
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i lo -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 110:110 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 88:88 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 89:89 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 90:90 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 91:91 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8180:8180 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 443:443 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 21:21 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 25:25 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 9095:9095 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8007:8007 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 17 -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 6000:6009 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 7100:7100 -p 6 -j REJECT -y
您需要把其中的"Saving `input'."去掉,然后把其他内容保存到/etc/sysconfig/ipchains文件,这样,下次重起之后,建立的规则能够重新生效。
3. 如果使用iptables
RH 8.0以上开始启用iptables替代ipchains,两者非常类似,也有差别的地方。
* 启用iptables
如果/etc/sysconfig/下没有iptables文件,可以创建:
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ftp -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ssh -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport http -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport smtp -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport pop3 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport mysql -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2001 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport domain -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport domain -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
COMMIT
以上配置允许了ftp, ssh, http, smtp, pop3, mysql, 2001(Prim@Hosting ACA端口),domain端口。
* 启动iptables
/etc/init.d/iptables start
* 设置iptables为自动启动
chkconfig --level 2345 iptables on
* 用iptables屏蔽IP
iptables -I RH-Lokkit-0-50-INPUT 1 -p tcp -m tcp -s 213.8.166.227 --dport 80 --syn -j REJECT
注意到,和ipchains的区别是:
-I 后面跟的规则名称的参数和ipchains不同,不是统一的input,而是在/etc/sysconfig/iptables里定义的那个,多了-m tcp,指定端口的参数是--dport 80,多了--syn参数,可以自动检测sync攻击
使用iptables禁止ping:
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable
#################################################################################
Linux 防止DDOS方法
方法一:先说这个简单效果不大的方法,Linux一般是apache做web服务软件,一般来说按照访问习惯全是设置的80端口。你可以改变一下服务端口,编辑httpd.conf文件,Linux下不清楚路径可以
find / -name httpd.conf
然后
vi $path$/httpd.conf
找到里面的
listen:80
更改为
listen:8080
重新启动apache,这样你的站点就运行在8080端口下了。
方法二:,方法一中攻击者如果对你足够关注的话还是会再攻击你的8080端口,所以还是会死得很惨,那么如何更有效的阻止攻击呢。这就要用到iptables了,安装一下iptables然后再配置一下。
iptables下载:
http://www.netfilter.org/downloads.html
下载文件的名字一般是iptables-1.*.*.tar.bz2
下载完后解压缩
tar -xvjf ./iptables-1.*.*.tar.bz2 -C /usr/src
我是解压到了/usr/src里
然后
cd /usr/src/iptables-1.*.*
安装:
/bin/sh -c make
/bin/sh -c make install
可以用iptables -V来检查安装是否正确。
如果有问题用这个命令修复一下
cp ./iptables /sbin
iptables的使用:
安装了iptables后先关闭ICMP服务
iptables -A OUTPUT -p icmp -d 0/0 -j DROP
这个是做什么的呢,最简单直观的说就是你服务器上的ip不能被ping到了,这个能防止一部分攻击。
比如你跟你的ISP联系了知道了ddos的来源ip 200.200.200.1可以用下面这个命令来阻止来自这个ip的数据流
iptables -A INPUT -s 200.200.200.1 -j DROP
说明:这个命令里200.200.200.1/24 200.200.200.* 格式都是有效的。意思相信大家都知道
执行完后你输入命令
iptables -L
会看到下面的结果
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 200.200.200.1 anywhere
你每输入一个iptables命令都会有个对应的num号,比如上面你执行的这个是第一次执行的那么这个对应的input id就是1,删除这个限制只要
iptables -D INPUT 1
就可以了。
因为在DDOS这个过程里很多ip是伪造的,如果你能找到他们的来源的mac地址(你太厉害了,太有关系了)那么你还可以用这个命令来禁止来自这个mac地址的数据流:
iptables -A INPUT --mac-source 00:0B:AB:45:56:42 -j DROP
以上是几个简单应用,关于一些别的应用我下面给出的英文文献里还有,大家可以根据自己的情况来利用iptables防止DDOS攻击。
顺带再说一下 iptables你第一次安装后输入了一些限制规则后,你服务器在启动后还是得重新提交规则,太麻烦了,怎么办?你只要用这个命令就可以了
/etc/init.d/iptables start
提供一篇英文文献:
http://www.cae.wisc.edu/site/public/?title=liniptables
另外关于Linux防止DDOS攻击还有另外一篇文献
http://www.yolinux.com/TUTORIALS
... ternetSecurity.html
我先写这么多将来还会继续把iptables的使用心得写出。
最后我还得多说一下,要是大规模分布式的攻击我建议老兄你还是把你的域名指到127.0.0.1吧.
本文轉自:http://blog.chinaunix.net/u/31547/showart_338517.html
发表评论
-
haproxy的日志问题
2012-08-21 12:45 2035在haproxy.cfg的global里添加日志配置: lo ... -
gluster3.2.x的安装配置
2012-04-19 19:00 4125一、 GlusterFS ... -
linux系统修改时区,时间自动同步
2011-12-25 23:40 26011、调整时区 cp /usr/share/zoneinf ... -
安裝memcached服務器時需要的libevent
2011-09-09 15:00 1347libevent下载地址:http://monkey.org/ ... -
扫盲:arping命令
2010-11-03 10:31 13693arping :向相邻主机发送ARP请求 语 法 ... -
heartbeat 的使用(三)
2010-09-28 20:08 3984来源:http://listen1001.blog.163.c ... -
heartbeat 的使用(二)
2010-09-28 20:06 2505Description: ... -
heartbeat3 使用(一)
2010-09-28 20:05 3382Description: ... -
基于Pacemaker、 Corosync和Heartbeat搭建HA集群
2010-09-28 09:21 2282相關內容請看這裡:http://asram.blog.51ct ... -
不用密碼直接用 ssh 登入到遠端電腦
2010-05-13 13:53 1586SSH Without a Password The fol ... -
linux ps命令,查看进程cpu和内存占用率排序
2010-03-31 18:40 32967使用以下命令查看: ps ... -
收藏以下linux查看系统信息的命令
2009-12-10 05:39 2483# uname -a # 查看内核 ... -
centos配置 svn(apache+mysql)
2009-12-09 11:53 46971,环境及相关服务检查 确认是否安装了apache,my ... -
Linux查看CPU信息
2009-09-08 15:57 3098Linux下如何查看CPU信息, 包括位数和多核信息 # u ... -
Linux iptables 设置
2009-04-21 21:40 0编辑 /etc/sysconfig/iptables 然后 ... -
linux syslogd
2009-01-09 14:22 01 什么是syslogd syslogd可以简单地被称 ... -
linux 绑定多个ip
2008-09-17 18:01 4316在Linux下有时候需要给一个网卡绑定多个I ... -
Linux cron 配置样例
2008-07-11 21:45 29901.cron 是一个可以用来根据时间、日期、月份、星期的组合来 ... -
linux文件同步工具Unison的使用
2008-07-11 21:32 7513linux文件同步工具Unison ... -
linux自動執行程序工具cron
2008-07-10 23:24 2351假如你有一些任务要定期执行,比如清理磁盘、删除过期文件、发送邮 ...
相关推荐
Linux下如何防止DOS和linux如何防火墙防止DDOS攻击方法.pdf
Linux iptables防火墙详解防止DDOS
DDoS防火墙能否打败DDoS攻击 随着网络攻击方式越来越狡诈,网络平安专家表示。以网络应用为主营业务的企业应该寻求更好的防火墙对自身进行防护,尤其是针对分布式拒绝服务攻击(DDOS 超越80%网络攻击是针对网络...
DoS(Denial of Service拒绝服务)和DoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一。...SYN Flood由于其攻击效果好,已经成为目前最流行的DoS和DDoS攻击手段。
Linux下DoS和DDoS攻击的防范.pdf
这文档主要讲解DoS与DDoS攻击原理以及对于安全人员如何来进行防范这种攻击
DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一。2000年2月,Yahoo、亚马逊、CNN被攻击等事例,曾被刻在重大安全事件的历史中。...
DoS和DDoS的攻击方法解析教你如何攻防
1.7 没有设置任何标志的TCP报文攻击 正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于...
linux系统怎么防止DDOS攻击.pdf
华为防御ddos攻击系统 AntiDDoS1600 DDoS防御系统详版彩页.zip
linux系统怎么防止DDOS攻击宣贯.pdf
应对DoS,DDoS攻击的十条军规.。。。。。。。。。。。。。。。。
DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一。SYN Flood由于其攻击效果好,已经成为目前最流行的DoS和DDoS攻击手段。防火墙...
Dos ddos 网络攻击原理及其实现
很多企业网站和个人网站都不止一次地遭遇过DoS/DDoS攻击,由此也积累了一些“亡羊补牢”的经验。下面列出的就是笔者收集的十个预防、应对DoS/DDoS攻击的有效方法
那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击 方式。而DdoS是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式,主要瞄准比较大的站点。如果说以前网络管理员对抗Dos可以采取过滤IP...
实战DoS Deflate DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.
中国战斧抗DDoS防火墙是目前国内效率最高的软件抗DDO防火墙,其自主研发的独特抗攻击算法,高效的主动防御系统可有效防御DoS/DDoS、SuperDDoS、DrDoS、代理CC、变异CC、僵尸集群CC、UDPFlood、变异UDP、随机UDP、...