歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

PortSentry實戰

  簡介 1.能夠檢測到的端口掃描 2.監視模式和處理方式 A.安裝 1.編輯portsentry_config.h文件 CONFIG_FILE WRAPPER_HOST_DENY SYSLOG_FACIL99vY SYSLOG_LEVEL 2.編輯PortSentry的配置文件portsentry.conf TCP_PORTS UDP_PORTS ADVANCED_PORT_TCP ADVANCED_PORT_UDP ADVANCED_EXCLUDE_TCP ADVANCED_EXCLUDE_UDP IGNORE_FILEB BLOCKED_FILE HISTORY_FILE BLOCK_UDP BLOCK_TCP KILL_ROUTE KILL_HOST_DENY KILL_RUN_CMD SCAN_TRIGGER PORT_BANNER 3.編輯portsentry.ignore文件 4.編譯 B.使用 C.測試 D.輸出信息以及記錄文件 E.總結 簡介 PortSentry是Abacus工程的一個組成部分。Abacus工程的目標是建立一個基於主機的網絡入侵檢測系統,可以從http://www.psonic.com的到關於Abacus工程更為詳細的信息。 1.能夠檢測的端口掃描 PortSentry主要用來檢測外部對主機的端口掃描,它能夠對多種掃描方法進行檢測,包括: 完全連接掃描 這是最基本的一種掃描方式,使用connect()系統調用,建立完整的TCP連接,如果連接能夠建立,就表明目標主機的目標端口打開。 SYN/半公開掃描 因為不用建立完整的TCP連接,所以這種方法通常稱為半公開掃描。這種掃描方法不進行三次握手建立TCP連接,只是向目標主機發出一個SYN數據包。然後等待來自目標主機的相應。如果收到SYNACK數據包,表示目標端口打開;如果收到RST數據包就表示端口沒開。 FIN掃描 向目標主機發出FIN數據包進行掃描,由Uriel Maimon在Rhrack第49期文15提出。如果收到RST數據包,就表示目標端口關閉;如果沒有收到數據包,就表示目標端口可能打開。 NULL掃描 使用這種方法發出的探測包中,所有TCP包頭標志都被關閉和聖誕樹(xmas)掃描相反 聖誕樹掃描 探測包TCP包頭的所有標志都被打開,象燈都被打開的聖誕樹,夠形象吧:) UDP掃描 使用recvfrom()和write()系統調用掃描 以上無法包括的其它類型的掃描 為了便於對PortSentry的使用,本文對一些端口掃描技術做了一些簡單的解釋,如果想了解更加詳細的技術細節請參考http://www.insecure.org/nmap關於nmap的技術文檔。 2.監視模式和處理方式 PortSentry可以對一般的TCP、UDP掃描進行監視,使用-tcp、-udp選項;對於隱秘掃描,PortSentry有四種檢測模式:-stcp、-atcp、-sudp、-audp。有兩種方法設置PortSentry需要監視的端口: 使用預定義端口列表。在配置文件中,指定需要監視的端口列表,一旦發生對這些端口的刺探行為,PortSentry就被激活。 反向端口綁定。你可以指定PortSentry監視某個范圍內,除了被系統網絡精靈進程綁定端口之外的所有端口,用戶也可以指定不需要監視的端口。使用這種配置方法,會使PortSentry對端口掃描行為很敏感,從另一方面看,也會產生大量的誤報警,凡事有利則必有弊嘛:)。 如果檢測到端口掃描,PortSentry有多種方式應付掃描行為: 使用syslog()系統調用將掃描行為記錄到日志中 將發起掃描的主機名加入到/etc/hosts.deny文件中,這種方式需要TCP_Wrappers的配合 自動修改路由表,刪除到發起掃描主機的路由,使回應數據包無法返回


自動修改本地包過濾程序的配置,丟棄來自惡意主機的數據包 A.安裝 如果你經常使用源代碼安裝軟件,可能會習慣於./configure、make、make install的方式。但是,PortSentry到目前為止還沒有configure腳本,只能手工對一些選項進行配置,然後再進行編譯安裝。使用這種安裝方式很容易造成編譯錯誤,或者即使編譯通過,安裝後因為無法找到配置文件等原因,而使PortSentry程序無法執行。下面將詳細介紹起安裝過程。 1.編輯portsentry_config.h文件 portsentry_config.h文件中定義了一些很重要的信息,對於portsentry能否正常運行至關重要。 CONFIG_FILE PortSentry配置文件的路徑 WRAPPER_HOST_DENY tcp_wrappers的hosts.deny文件所在的路徑,PortSentry能夠使用tcp_wrappers應付掃描行為,它將發起掃描的主機放到hosts.deny文件中,tcp_wrappers就會拒絕從這個主機發起的連接。 SYSLOG_FACIL99vY PortSentry使用的syslog facility。它使用的默認syslog facility是LOCAL_DAEMON,使用這個syslog facility,syslogd一般會把PortSentry的警告信息記錄在/var/log/messages文件中,這取決於/etc/syslog.conf文件。 系統中,如果某個精靈程序不使用自己的日志文件,那麼它的日志信息將被syslogd記錄到/var/log/messages文件,造成這個文件的信息非常龐大、雜亂,不容易閱讀。因此用戶希望指定PortSentry自己的日志文件,專門保存PortSentry發出的警告信息。 可以按照以下步驟設置PortSentry自己使用的日志文件: 修改portsentry_config.h文件 修改PortSenry_config.h文件的SYSLOG_FACIL99vY一行,就可以改變PortSentry使用的日志FACIL99vY: SYSLOG_FACIL99vY LOG_LOCAL0 /*LOG_LOCAL0-7都可以*/ 修改/etc/syslog.conf文件 在/etc/syslog.conf文件中加入下面一行,設置PortSentry使用的日志文件。你也可以選擇自己喜歡的日志文件名。^_^ local0.* /usr/local/psionic/portsentry/portsentry.log 做了以上的修改後,syslogd將把PortSentry產生的報警信息同時記錄到/usr/local/psinic/portsentry/portsentry.log和/var/log/messages兩個文件。如果想避免這種情況,還要繼續修改/etc/syslog.conf文件。在這個文件有一行: *.info;mail.none;news.none;authpriv.none; /var/log/messages 把它改為: *.info;mail.none;news.none;authpriv.none;local0.none /var/log/messages 重新啟動syslogd程序 # /etc/init.d/syslog restart SYSLOG_LEVEL 警告信息的sylog級別。一般不必修改。 2.編輯PortSentry的配置文件portsentry.conf PortSentry使用portsentry.conf文件作為自己的配置文件。用戶可以編輯這個配置文件設置PortSentry的各項功能,用戶也可以在編譯安裝完成後的使用過程中,根據自己的實際情況進行調整。 TCP_PORTS 在TCP監視模式(-tcp)下使用,指定需要PortSentry監聽的端口號。端口號使用逗號分開,中間不能有空格。PortSentry會對端口進行綁定,綁定的數量默認是64,在源代碼的portsentry.h文件中定義#define MAXSOCKS 64。目前還沒有配置選項對其進行設置置,如果想使用其它值,需要修改源代碼。 如果使用隱秘掃描檢測模式,PortSentry不會對端口進行綁定,而是使用RAW套接字,在套接字層對連接進行監視。 UDP_PORTS 在UDP監視模式(-udp)下使用,指定要監視的UDP端口。你應該慎重使用UDP模式,稍有不慎就會給攻擊者以可乘之機,對系統進行拒絕服務攻擊。攻擊者可以在數據包中偽造一個端口范圍,誘使PortSentry阻塞主機的這些端口,達到拒絕服務攻擊的目的。如果你的站點是一個比較出名的站點,訪問量很大,最好不要使用UDP監視模式。

ADVANCED_PORT_TCP 設置要監視的最大TCP端口號。PortSentry會對小於這個值的端口號進行監視。默認值為1024,最大可以是65535。建議不要超過1024,因為如果超過這個值,PortSentry就會產生大量的誤報警。使用-atcp參數啟動PortSentry時,會用到這個值。 ADVANCED_PORT_UDP 設置PortSentry監視的最大UDP端口號。使用-audp參數啟動PortSentry時用到。 ADVANCED_EXCLUDE_TCP 和ADVANCED_PORT_TCP配合使用。設置在TCP高級監視模式(-atcp)下,不需要PortSentry監視的端口。在一些普通的端口上,一些遠程客戶程序的錯誤會造成PortSentry發出誤報警信息,可以使用這個配置選項去掉這些端口,例如:ident、SSL。 ADVANCED_EXCLUDE_UDP 和ADVANCED_PORT_UDP配合使用。設置不用



ADVANCED_PORT_TCP 設置要監視的最大TCP端口號。PortSentry會對小於這個值的端口號進行監視。默認值為1024,最大可以是65535。建議不要超過1024,因為如果超過這個值,PortSentry就會產生大量的誤報警。使用-atcp參數啟動PortSentry時,會用到這個值。 ADVANCED_PORT_UDP 設置PortSentry監視的最大UDP端口號。使用-audp參數啟動PortSentry時用到。 ADVANCED_EXCLUDE_TCP 和ADVANCED_PORT_TCP配合使用。設置在TCP高級監視模式(-atcp)下,不需要PortSentry監視的端口。在一些普通的端口上,一些遠程客戶程序的錯誤會造成PortSentry發出誤報警信息,可以使用這個配置選項去掉這些端口,例如:ident、SSL。 ADVANCED_EXCLUDE_UDP 和ADVANCED_PORT_UDP配合使用。設置不用



Copyright © Linux教程網 All Rights Reserved