Ubuntu SSH監控與日志管理指南
systemctl
是Ubuntu管理systemd服務的核心工具,可全面監控SSH服務(ssh
)的狀態:
sudo systemctl status ssh
,輸出會顯示服務是否運行(Active: active)、最近日志片段及進程ID(Main PID)。sudo systemctl start ssh
(啟動)、sudo systemctl stop ssh
(停止)、sudo systemctl restart ssh
(重啟,中斷現有連接)。sudo systemctl reload ssh
(不中斷現有連接,應用/etc/ssh/sshd_config
的修改)。sudo systemctl enable ssh
(啟用)、sudo systemctl disable ssh
(禁用)。通過netstat
或ss
命令可確認SSH服務是否在默認端口(22)監聽:
sudo netstat -tuln | grep 22
:顯示TCP端口22的監聽狀態(LISTEN
)及進程信息。sudo ss -tuln | grep 22
:更現代的工具,輸出更簡潔,包含進程PID和名稱(如sshd
)。Ubuntu系統默認將SSH認證及連接日志記錄在/var/log/auth.log
(Debian/Ubuntu系),包含登錄成功/失敗、會話開啟/關閉等信息。
sudo grep "sshd" /var/log/auth.log
,篩選出所有包含sshd
的日志條目。sudo tail -f /var/log/auth.log | grep sshd
,持續顯示新增的SSH日志(按Ctrl+C
退出)。sudo journalctl -u ssh
,通過systemd查看sshd
服務的日志,支持時間過濾(如--since "2025-09-01"
)。sudo grep "Accepted" /var/log/auth.log
,輸出包含用戶、IP、端口及認證方式(如publickey
、password
)的信息。sudo grep "Failed password" /var/log/auth.log
(密碼認證失?。?、sudo grep "Invalid user" /var/log/auth.log
(無效用戶名嘗試),用于檢測暴力破解。sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
,按IP統計失敗次數(從高到低排序)。fail2ban
通過監控日志識別多次失敗嘗試,自動封禁惡意IP:
sudo apt install fail2ban
。sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
,編輯jail.local
啟用SSH監獄:[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # 允許的最大失敗次數
bantime = 600 # 封禁時間(秒,如10分鐘)
sudo systemctl restart fail2ban
,生效后會自動封禁觸發規則的IP。auditd
可記錄系統調用(如文件訪問、進程執行),適合需要詳細追蹤SFTP活動的場景:
sudo apt install auditd audispd-plugins
。/etc/audit/rules.d/sftp.rules
,添加以下規則(監控/path/to/sftp/directory
目錄的讀寫操作):-a exit,always -F arch=b64 -S openat,open,close,close_write -F auid!=unset -F auid>=1000 -F key=sftp
-a exit,always -F arch=b32 -S openat,open,close,close_write -F auid!=unset -F auid>=1000 -F key=sftp
sudo systemctl restart auditd
,查看審計日志用sudo ausearch -k sftp
。使用iftop
、nload
或tcpdump
監控SSH流量,識別異常連接:
sudo apt install iftop
,運行sudo iftop -i eth0
(eth0
為網絡接口)。sudo apt install nload
,運行nload
。sudo apt install tcpdump
,運行sudo tcpdump -i eth0 port 22
。