![](/img/trans.png)
[英]How can I extract TCP SYN flag from pcap file and detect SYN Flood attack using Python (Scapy)?
[英]Defend Python socket from TCP SYN flood
我有一個服務器示例,該服務器獲取命令並在python中返回答案:
import socket
import time
import random
CommandDict = {"TIME" : time.strftime("%d-%m-%Y"),"NAME": "Ori","RANDOM": str(random.randint(0,10))}
server_socket = socket.socket()
server_socket.bind(('127.0.0.1',8820))
server_socket.listen(5)
while True:
print "Waiting for commands"
(client_socket, client_address) = server_socket.accept()
client_data = client_socket.recv(1024)
print "GOT COMMAND FROM " + client_address[0] + " : " + client_data
try:
client_socket.send(CommandDict[client_data])
except Exception:
client_socket.send("ERROR!")
client_socket.close()
server_socket.close()
我對它進行了一次Syn Flood攻擊,然后崩潰了。 我想防御同步洪水攻擊,我該怎么辦? 我是套接字編程的新手,所以我很樂意獲得一些建議^ _ ^
首先,您需要一台更好的服務器。 正如@Nikolai N Fetlissov指出的那樣,由於從未關閉客戶端連接,因此您正在泄漏文件描述符。
看這個例子,看看如何避免這種泄漏:
http://ilab.cs.byu.edu/python/socket/echoserver.html
特別是,請注意在哪里進行了client.close()
調用以及其縮進級別。
接下來,您的代碼僅處理來自客戶端的一個命令。 在這里看看:
http://code.activestate.com/recipes/578247-basic-threaded-python-tcp-server/
討論編寫一個線程服務器,該服務器可以處理多個連接以及每個連接的多個命令。
最后,基於用戶空間的基於套接字的程序(更是如此,是用解釋語言編寫的)太慢了,無法以任何方式處理真正的SYN泛濫。 標准方法是為此使用防火牆軟件(在一定范圍內使用硬件 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.