Portsentry & Logcheck

来源:百度文库 编辑:神马文学网 时间:2024/05/01 21:23:24
Portsentry & Logcheck
Portsentry 可立即偵測並封鎖意圖侵入者 (掃 port、嘗試連入特定埠口) 的行動; Logcheck 能在短時間內將系統異常記錄 mail 給系統管理者.
以下是在 Fedora Core Linux 安裝並使用Portsentry 與 Logcheck 這兩個工具的操作備忘:
取得並安裝 Portsentry
wgethttp://nchc.dl.sourceforge.net/sourceforge/sentrytools/portsentry-1.2.tar.gz
tar -zxf portsentry-1.2.tar.gz
cd portsentry_beta
vi portsentry.c
將 1584 和 1585 行合併為一行, 如下:
printf ("Copyright 1997-2003... users dot sourceforget dot net>\n");
ps. sourceFORGET? :)
make linux
make install
cd /usr/local/sbin
ln -s /usr/local/psionic/portsentry/portsentry
設定 Portsentry
vi /usr/local/psionic/portsentry/portsentry.conf
#設定是否解析 domain name (0 表示不解析, 速度較快)
RESOLVE_HOST = "0"
#以 routing table 封鎖對方 (不能與其他 KILL_ROUTE 方法並存)
KILL_ROUTE = "/sbin/route add -host $TARGET$ gw 127.0.0.1"
#以 iptables 封鎖對方 (不能與其他 KILL_ROUTE 方法並存)
KILL_ROUTE = "/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
#加入 TCPWrappers 封鎖清單 (/etc/hosts.deny)
KILL_HOSTS_DENY = "ALL: $TARGET$"
#觸發幾次就封鎖 (0 表示一但被 portsentry 偵測到就立即封鎖)
SCAN_TRIGGER="0"
vi /usr/local/psionic/portsentry/portsentry.ignore
編輯不予制裁的 IP 來源
啟用 Portsentry
TCP 與 UDP 各有三種模式, 但分別只能選用一種模式來啟用 (如: atcp 與 sudp):
portsentry -tcp / -udp
以 listen mode 聆聽 portsentry.conf 中 TCP_PORTS / UDP_PORTS 所指定的 port
netstat -ntulp | grep portsentry 可看到正在被 portsentry 聆聽的埠口清單
portsentry -stcp / -sudp
以 stealth listen mode 聆聽 portsentry.conf 中 TCP_PORTS / UDP_PORTS 所指定的 port
netstat -ntulp 看不到正在被 portsentry 聆聽的埠口清單
此種模式可偵測 stealth 掃瞄, 詳情請見 README.stealth 文件
portsentry -atcp / -audp
以 Advanced Stealth scan detection mode 監聽 1 ~ 指定範圍 (預設 1024) 的 port
portsentry 會自動忽略監聽範圍內, 系統原本就在聆聽的 port
可於 portsentry.conf 檔案中, 調整 ADVANCED_PORTS_TCP/UDP 增減監聽範圍
可於 ADVANCED_EXCLUDE_TCP/UDP 指定排除監聽的 port
此種模式可偵測 stealth 掃瞄, 詳情請見 README.stealth 文件
測試 Portsentry
nmap your.linux.host.ip 或 telnet your.linux.host.ip 1 (或任一個 Portsentry 防護中的 port)
若在 /var/log/messages 中出現 portsentry[ pid ]: attackalert 訊息表示 portsentry 運作正常
並可在 /usr/local/psionic/portsentry 的 portsentry.blocked.* 與 portsentry.history 查到相關記錄
Portsentry 無法作用的情況
既然 portsentry 是在它所監聽的埠口被 "觸動" 時才會進行反制, 那麼如果封包被防火牆擋掉後, portsentry 自然就不會發揮作用了:
情況一、只允許本機連出, 封鎖所有連入本機的封包
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT (允許本機連出後對方回應的封包)
iptables -A INPUT -s ! 127.0.0.1 -j DROP (丟棄所有非來自本機的封包)
情況二、只開放系統服務埠口, 封鎖其他連入本機的封包
iptables -A INPUT -p tcp -m multiport --dports 25,110 -j ACCEPT (開放 smtp 與 pop3 埠口)
iptables -A INPUT -p udp --dport 53 -j ACCEPT (開放 dns query 埠口)
iptables -A INPUT -s ! 127.0.0.1 -m state --state NEW -j DROP (丟棄非來自本機的連線封包)
所以, 本機埠口以 iptables 保護之後, portsentry 可應用的情況如下:
通常 Linux Server 對內不予限制 (-s 192.168.0.0/16 -j ACCEPT), 因此 portsentry 可用於防範內賊、及早發現內部電腦中毒 (如: SQL Slammer) 以及避免被植入木馬的內部電腦被駭客當成攻擊跳板. 可刻意對外開放某個沒有作用的埠口 (如 tcp 23), 讓 portsentry 自動隔絕可能的侵入者.
Logcheck 檢查異常 log 訊息
取得並安裝 logcheck
wgethttp://nchc.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz
tar -zxf logcheck-1.1.1.tar.gz
cd logcheck-1.1.1
make linux
排程 logcheck 自動執行
vi /etc/crontab
*/15 * * * * root /usr/local/etc/logcheck.sh
手動執行 logcheck
/usr/local/etc/logcheck.sh
執行後, 系統會有兩個動作:
在 /var/log 產生 *.offset, 記錄每次搜尋結束的參考點, 作為下次再執行 logcheck.sh 時的起始點. 將有問題的 log 內容寄給 root. 包含 Security Violations 與 Unusual System Events 兩部份, 而當 portsentry 偵測到入侵訊號時, 會出現 Active System Attack Alerts.
若要排除不必要的訊息報告, 可自行編輯 /usr/local/etc 目錄裡的這兩個檔案, 將欲忽略的關鍵字加入檔案中:
logcheck.violations.ignore (Security Violations 忽略的關鍵字) logcheck.ignore (Unusual System Events 忽略的關鍵字)
如: vi /usr/local/etc/logcheck.ignore 加入以下字串:
DHCPACK
DHCPOFFER
DHCPREQUEST
DHCPDISCOVER
crond.*session opened for user
crond.*session closed for user
(排除 DHCP 與 crond 訊息. 其中 .* 是正規表示法中, 代表零 ~ 多個任意字元的意思)
相關網頁:
Portsentry & Logcheck @ SourceforgeLIDS (Linux Intrusion Detection System)Linux/BSD/Unix 技术文档 >> 系统安全
後記:
從 rpmfind.net 可找到 portsentry 的 RPM 封裝, 可是在 Fedora Core 3 運行時, iptables 設定會被清空 :( Promise Array Management - Remote Monitoring Utility (RAID Card 管理程式) 會固定發出 UDP 廣播封包 (to UDP 712 port), 在 portsentry -audp 模式下會被判為入侵訊號, 可於 portsentry.conf 的 ADVANCED_EXECLUDE_UDP 設定排除.
Posted by Jamyy at 2006年03月20日 14:01
from: http://cha.homeip.net/blog/archives/2006/03/portsentry_logc.html#more