`
purpen
  • 浏览: 796642 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux iptables防攻擊使用

阅读更多

虛擬主機服務商在運營過程中可能會受到黑客攻擊,常見的攻擊方式有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

 

分享到:
评论

相关推荐

    防cc攻击脚本配合iptables

    linux上防cc攻击,本脚本配置iptables使用,安装cckiller -i,卸载cckiller -U

    Linux主机防CC攻击的方法.pdf

    在 Linux 主机防 CC 攻击的方法中,还可以使用其他防火墙规则和参数,例如使用“-m state”参数来跟踪客户端的连接状态,使用“-m multiport”参数来限制多个端口的访问,等等。通过组合使用这些参数,可以创建一个...

    Linux下使用Iptables配置NAT防火墙

    Linux下使用Iptables配置NAT防火墙 分析防火墙技术原理和防火墙类别,结合校园网实际设计使用Linux下的Iptables 防火墙NAT 方案,能够实现NAT和对网络进行用户管理和信息过滤,并能防范一定的网络攻击手段和防病毒 ...

    Linux减缓CC攻击

    Linux 减缓 CC 攻击是指使用 Linux 操作系统自带的防火墙工具 iptables 来减缓 CC 攻击的方法。CC 攻击是一种常见的网络攻击方式,攻击者通过大量的请求来压垮服务器,导致服务器瘫痪。使用 iptables,可以设置规则...

    linux防火墙iptables用denyhosts防止黑客入侵.zip

    linux iptables用denyhosts防止黑客入侵.zip

    Linux防火墙iptables简明教程.docx

    8. iptables 在手动防 CC 攻击中的简单应用 iptables 可以用来防止 CC 攻击,例如: `iptables -I INPUT -s 123.123.123.123 -j DROP` 这条命令将屏蔽特定 IP 的访问。 本文提供了一个简明的 iptables 教程,...

    使用iptables建设Linux防火墙

    iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了

    LINUX防火墙iptables入门.docx

    IPTABLES 的功能包括数据包过滤、数据转发、限速和防攻击等。它有四个表:filer 表、nat 表、mangle 表和 raw 表,每个表都有其特定的功能。filer 表用于实现包过滤,nat 表用于实现地址转换,mangle 表用于重构修改...

    Linux平台下防御SYN Flood攻击策略的研究.pdf

    具体实现上,文章构建了一个新型的防御模块,结合Linux内建的防火墙工具iptables,以增强对SYN Flood攻击的检测和响应能力。 iptables作为Linux内核的一部分,提供了丰富的规则集来控制网络流量。在防御SYN Flood...

    Linux防火墙.pdf

    书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际作。 ...

    通过iptables限制sftp端口连接数(运维笔记)

    本文档详细介绍了通过iptables限制sftp端口连接数的运维操作方法,以及预防CC/DDOS攻击的设置措施.在此分享,希望能帮助到有用到的朋友!

    iptables详解

    2. **安全防护**: iptables可以作为第一道防线,阻止恶意流量和攻击尝试到达服务器。 3. **流量管理**: 结合其他工具,iptables还能帮助管理网络流量,例如限制带宽使用或优先级调整。 #### 六、iptables常见问题及...

    解析Linux安全防护策略.pdf

    同时,为了切断黑客的网络连接,可以使用"iptables"等工具设置规则。 在追踪黑客活动时,观察命令历史记录(如通过"history"或"lastlog"命令)可以帮助识别异常行为。如果黑客通过SSH等服务进行攻击,他们可能会...

    [Linux防火墙].(Linux.Firewalls.Attack.Detection.and.Response.with.iptables,.psad,.and.fwsnort)(美)拉什.中文高清PDF版1.pdf

    书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。 ...

    深入解析iptables防火墙配置与实战应用

    内容涵盖了iptables的不同应用场景、各种常见网络攻击防御(如SYN Flood攻击)、实用配置技巧及其与其他安全系统的整合使用等方面的内容。通过理论讲解与实战练习的组合形式帮助用户全面了解iptables。 适合人群:...

    《Linux防火墙 》 [PDF]

    书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。 ...

    Linux防止ARP攻击一些方法总结linux操作系统电脑资料.doc

    【Linux防止ARP攻击的方法】 ARP攻击,全称为Address Resolution Protocol(地址解析协议)攻击,是一种网络欺骗技术,攻击者通过伪造ARP响应来控制网络流量,可能导致数据泄露、服务中断等问题。在Linux系统中,有...

Global site tag (gtag.js) - Google Analytics