- 浏览: 795173 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
aliang032:
文章很赞,有几个缺点:1、是你的服务端是单进程的,如果进程挂了 ...
php socket编程实例详解 -
最佳蜗牛:
最佳蜗牛 写道是不是缺少了一个toolbar.Realize( ...
wxPython写的简易编辑器(原创) -
最佳蜗牛:
是不是缺少了一个toolbar.Realize()?
wxPython写的简易编辑器(原创) -
最佳蜗牛:
2.7.3版本里不能显示工具栏的图标
wxPython写的简易编辑器(原创) -
sogo6:
我怎么安装的也不行? 裸奔啊。。。。。
让TextMate支持中文显示
虛擬主機服務商在運營過程中可能會受到黑客攻擊,常見的攻擊方式有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配置文件內容如下:
英文代碼
如果/etc/sysconfig/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
发表评论
-
Web性能压力测试工具之Siege详解
2013-05-28 18:01 1618Siege是一款开源的压力测试工具,设计用于评估WEB应用在 ... -
Linux的IO性能监控工具iostat详解
2013-05-26 03:08 3047Linux系统出现了性能问题,一般我们可以通过top、ios ... -
linux,centos下解压tar,gz,bz2,tgz,zip
2013-03-23 19:55 3185今天从ix主机上打包了个zip文件,到linuxvps下总 ... -
Installing Phusion Passenger and nginx on Mac OS X
2013-03-08 18:04 1673I was trying to install Phusi ... -
ld: symbol(s) not found for architecture x86_64
2013-03-08 10:58 3792GraphicsMagic 有一个Nodejs的客户端: ... -
在Mac下安装GraphicsMagick
2013-01-31 23:11 1474GraphicsMagic 有一个Nodejs的客户端: ... -
Mac Lion 的textmate全屏设置
2011-08-31 09:53 1822You’ll need: TextMate Xcod ... -
Linux服务器下查看网络流量
2011-08-01 01:37 1975推荐Linux下检测网卡流量的两款软件,其一是:nload,另 ... -
linux下ps 命令详解
2011-08-01 00:48 3393linux上进程有5种状态: 1. 运行(正在运行或在运行队列 ... -
linux sysstat 工具详细说明(二)
2011-08-01 00:41 2321iostat iostat 的命令格式 iosta ... -
sysstat 工具详细说明(一)
2011-08-01 00:38 6590sysstat 工具 内容提要 了解 ... -
uptime查看linux负载及数值的意义
2011-07-31 23:56 1285uptime命令都会用,但是结果什么意思呢?一般来说只要每个C ... -
查看linux版本命令
2011-07-31 18:45 10501. 查看内核版本命令: 1) [root ... -
修改Linux系統的默認連接數
2011-07-29 01:39 24781、修改用戶進程可打 ... -
提升Linux服務器的安全性能
2011-07-29 01:34 1185眾所周知,就安全性而言,Linux相對於Windows ... -
Linux hosts.allow与hosts.deny文件设置
2011-07-29 01:05 51552redhat as4常用应用之hosts.allow和ho ... -
linux禁止root通过SSH远程登录访问设置
2011-07-29 00:38 1192禁止ROOT通过SSH远程登录访问改/etc/ssh/sshd ... -
Linux安全策略:你能信任你的ps命令吗?
2011-07-27 23:54 1402找出rootkit的首 ... -
Linux系统Iptables防火墙
2011-07-27 23:44 895Linux 的内置firewall机制,是通过kernel中的 ... -
防范攻击 Linux安全技巧11则
2011-07-27 23:40 10551、禁止使用ping ...
相关推荐
linux上防cc攻击,本脚本配置iptables使用,安装cckiller -i,卸载cckiller -U
在 Linux 主机防 CC 攻击的方法中,还可以使用其他防火墙规则和参数,例如使用“-m state”参数来跟踪客户端的连接状态,使用“-m multiport”参数来限制多个端口的访问,等等。通过组合使用这些参数,可以创建一个...
Linux下使用Iptables配置NAT防火墙 分析防火墙技术原理和防火墙类别,结合校园网实际设计使用Linux下的Iptables 防火墙NAT 方案,能够实现NAT和对网络进行用户管理和信息过滤,并能防范一定的网络攻击手段和防病毒 ...
Linux 减缓 CC 攻击是指使用 Linux 操作系统自带的防火墙工具 iptables 来减缓 CC 攻击的方法。CC 攻击是一种常见的网络攻击方式,攻击者通过大量的请求来压垮服务器,导致服务器瘫痪。使用 iptables,可以设置规则...
linux iptables用denyhosts防止黑客入侵.zip
8. iptables 在手动防 CC 攻击中的简单应用 iptables 可以用来防止 CC 攻击,例如: `iptables -I INPUT -s 123.123.123.123 -j DROP` 这条命令将屏蔽特定 IP 的访问。 本文提供了一个简明的 iptables 教程,...
iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了
IPTABLES 的功能包括数据包过滤、数据转发、限速和防攻击等。它有四个表:filer 表、nat 表、mangle 表和 raw 表,每个表都有其特定的功能。filer 表用于实现包过滤,nat 表用于实现地址转换,mangle 表用于重构修改...
具体实现上,文章构建了一个新型的防御模块,结合Linux内建的防火墙工具iptables,以增强对SYN Flood攻击的检测和响应能力。 iptables作为Linux内核的一部分,提供了丰富的规则集来控制网络流量。在防御SYN Flood...
书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际作。 ...
本文档详细介绍了通过iptables限制sftp端口连接数的运维操作方法,以及预防CC/DDOS攻击的设置措施.在此分享,希望能帮助到有用到的朋友!
2. **安全防护**: iptables可以作为第一道防线,阻止恶意流量和攻击尝试到达服务器。 3. **流量管理**: 结合其他工具,iptables还能帮助管理网络流量,例如限制带宽使用或优先级调整。 #### 六、iptables常见问题及...
同时,为了切断黑客的网络连接,可以使用"iptables"等工具设置规则。 在追踪黑客活动时,观察命令历史记录(如通过"history"或"lastlog"命令)可以帮助识别异常行为。如果黑客通过SSH等服务进行攻击,他们可能会...
书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。 ...
内容涵盖了iptables的不同应用场景、各种常见网络攻击防御(如SYN Flood攻击)、实用配置技巧及其与其他安全系统的整合使用等方面的内容。通过理论讲解与实战练习的组合形式帮助用户全面了解iptables。 适合人群:...
书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。 ...
【Linux防止ARP攻击的方法】 ARP攻击,全称为Address Resolution Protocol(地址解析协议)攻击,是一种网络欺骗技术,攻击者通过伪造ARP响应来控制网络流量,可能导致数据泄露、服务中断等问题。在Linux系统中,有...