Linux安全1-使用者密碼被暴力破解
本人所用Linux為CentOS7,本文寫於2017-05-16,請注意版本區別和時效性。
1.緣由
今天連線伺服器時,發現有接近3萬次的連線失敗記錄。抓緊查了查怎麼回事,原來是被攻擊了,可能是殭屍網路乾的。大神們建議,root密碼要保證足夠複雜,如果用證書登入替換密碼登入,更能保證安全。
但是事情不能就這麼過了,得刨根問底。
2.檢視Linux日誌
1.首先要做的,先分析明白我們經歷了什麼。而這一切都在日誌裡。
Linux系統的日誌,都儲存在/var/log目錄下:
/var/log/boot.log:記錄了系統在開機引導過程中(開機自檢過程顯示在螢幕上)發生的事件
/var/log/lastlog:記錄最後一次使用者成功登陸的時間、登陸IP等資訊
/var/log/messages:記錄Linux作業系統常見的系統和服務錯誤資訊
/var/log/secure:Linux系統安全日誌,記錄使用者和工作組變化情況、使用者登陸認證情況
/var/log/btmp:記錄系統登陸失敗的使用者、時間以及遠端IP地址
/var/log/syslog:只記錄警告資訊,常常是系統出問題的資訊,使用lastlog檢視
/var/log/wtmp:該日誌檔案永久記錄每個使用者登入、登出及系統的啟動、停機的事件,使用last命令檢視
/var/run/utmp:該日誌檔案記錄有關當前登入的每個使用者的資訊。如 who、w、users、finger等就需要訪問這個檔案
/var/log/syslog或/var/log/messages 儲存所有的全域性系統活動資料,包括開機資訊。基於 Debian 的系統如 Ubuntu 在 /var/log/syslog中儲存,而基於RedHat的系統如RHEL或CentOS 則在/var/log/messages 中儲存。
/var/log/auth.log或/var/log/secure 儲存來自可插拔認證模組(PAM)的日誌,包括成功的登入,失敗的登入嘗試和認證方式。Ubuntu 和 Debian 在/var/log/auth.log 中儲存認證資訊,而RHEL或CentOS 則在/var/log/secure 中儲存。
我們需要的,就是/var/log/btmp(系統才安裝了3天,這個日誌檔案已經40多兆了,汗),部分截圖如下:
暴力破解的人,不停的嘗試各種使用者名稱+各種密碼,看來是有一個字典庫了。
###2.檢視發起攻擊的IP和攻擊次數
Linux命令:cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
資料:
101.200.1.126 = 3
101.95.184.150 = 3
103.207.36.69 = 1
103.207.39.37 = 5
103.207.39.38 = 9
106.57.36.158 = 6
106.75.35.108 = 12
109.163.234.4 = 2
109.163.234.9 = 2
111.73.1.31 = 6
112.101.170.251 = 6
112.126.89.5 = 11
113.122.41.161 = 6
113.123.34.205 = 6
113.195.145.21 = 2095
113.195.145.52 = 1109
113.69.26.141 = 6
114.141.132.53 = 6
115.209.234.171 = 6
116.252.34.161 = 6
116.31.116.11 = 2154
116.31.116.18 = 795
116.31.116.52 = 762
117.197.240.164 = 6
117.62.112.19 = 6
117.66.164.107 = 6
118.128.209.166 = 6
119.176.53.5 = 6
119.193.140.146 = 6
119.193.140.181 = 6
119.193.140.221 = 6
120.150.35.58 = 6
120.29.217.46 = 1
120.40.34.72 = 6
120.41.33.19 = 6
123.183.209.135 = 753
123.183.209.136 = 1487
95.68.183.161 = 6
...
有幾個IP攻擊次數超多,查一下位置:
59.63.188.3 = 19359
61.177.172.17 = 18945
好吧,是中國的被控制的計算機。。。
3.安裝軟體保護自己
如果你用證書登入,那啥都不用安裝。密碼登入的,還是安全第一。
有兩個比較常用的軟體,可以安裝在伺服器上:fail2ban(支援多種協議,登入失敗N次後拉黑IP)和denyhosts(支援SSH,自動遮蔽非法IP連線)。兩款軟體的對比參考:https://serverfault.com/questions/128962/denyhosts-vs-fail2ban-vs-iptables-best-way-to-prevent-brute-force-logons。fail2ban更全面,那就安裝fail2ban。wiki在此:https://en.wikipedia.org/wiki/Fail2ban。
1.fail2ban安裝配置教程:
https://linux.cn/article-5067-1.html
http://www.cnblogs.com/jasmine-Jobs/p/5927968.html
在CentOS7中安裝還是比較簡單的,yum install fail2ban
即可。然後配置,把自己的規則放在/etc/fail2ban/jail.local 裡以覆蓋/etc/fail2ban/jail.conf 裡的預設配置。配置摘要如下:
在針對服務的監獄區(在[DEFAULT]區後面的地方),你需要定義一個[ssh-iptables]區,這裡用來定義SSH相關的監獄配置。真正的禁止IP地址的操作是通過iptables完成的。
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 字首或者 DNS 主機名
# 用於指定哪些地址可以忽略 fail2ban 防禦
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24
# 客戶端主機被禁止的時長(秒)
bantime = 86400
# 客戶端主機被禁止前允許失敗的次數
maxretry = 5
# 查詢失敗次數的時長(秒)
findtime = 600
mta = sendmail
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
# Debian 系的發行版
logpath = /var/log/auth.log
# Red Hat 系的發行版
logpath = /var/log/secure
# ssh 服務的最大嘗試次數
maxretry = 3
根據上述配置,fail2ban會自動禁止在最近10分鐘內有超過3次訪問嘗試失敗的任意IP地址。一旦被禁,這個IP地址將會在24小時內一直被禁止訪問 SSH 服務。這個事件也會通過sendemail傳送郵件通知。
2.重啟fail2ban服務,測試是否可用
重啟:systemctl restart fail2ban
測試服務可用性:fail2ban-client ping
如果有響應:Server replied: pong
,表示成功。
測試暴力破解防護是否有效:用錯誤的密碼來用SSH連線到伺服器模擬一個暴力破解攻擊
檢視fail2ban日誌:tail -f /var/log/fail2ban.log
####3.檢視fail2ban當前活動的監獄列表:
fail2ban-client status
####4.檢視fail2ban指定監獄狀態(例如ssh-iptables):
fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- Filter
| |- Currently failed: 1
| |- Total failed: 92
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 3
|- Total banned: 3
`- Banned IP list: 116.31.116.52 113.195.145.52 192.99.210.174
哈哈,已經拉黑了3個IP。
5.設定 Fail2ban 自動啟動
systemctl enable fail2ban
每個IP在幾次嘗試後放棄,切換為其他IP(因為Linux有登入失敗N次自動鎖定當前使用者的機制),所以這種防護效果有限,最好還是用證書登入。現實世界中一個IP代表一臺主機,這麼多機器,是怎麼被人控制的呢?
3.更改sshd服務埠號
ssh預設是22埠,如果改為其他埠可以更安全一些。
修改SSHD服務的配置檔案
vim /etc/ssh/sshd_config
找到下面這一行,把行首的 #
註釋符號去掉,埠號改成你想用的即可:
#Port 22
例如:
Port 2222
在 vim 編輯器中輸入 :wq
儲存退出
重啟 SSHD 服務
根據自己的機器重啟服務,我用的CentOS命令為:
systemctl restart sshd
當然你的也可能是:service sshd restart
用新埠號重新登入即可
這裡如果無法登入,可能是防火牆把你的新埠號給過濾了,需要設定 iptables 開啟對於埠。如果是雲伺服器,可能還需要設定安全組。
4.殭屍網路跟IRC
殭屍網路(Botnet,Robot network)
從FreeBuf上看到一篇文章,把我給科普了一下,連結如下:
http://www.freebuf.com/articles/system/113690.html
殭屍網路:黑客用一臺臺受控制的計算機(肉雞)組成的網路。通過控制伺服器(Command and Control Server,C&C,C2)可以操控每一個節點。數量巨大的節點同時訪問指定伺服器,即DDoS攻擊(DDoS,Distributed Denial of Service)。
控制伺服器是整個網路的核心,負責執行黑客的指令,控制肉雞的行為。控制伺服器與肉雞之間通訊通常用IRC協議,這又是什麼鬼?
4.IRC協議
IRC(Internet Relay Chat)是一種網際網路聊天協議,速度快,頻寬佔用小,使用者可以在頻道(Channel)群聊(需要伺服器)或直接一對一聊天(可以不經過伺服器)。
so,控制伺服器就是IRC伺服器,每臺肉雞就是IRC客戶端,登入的IRC伺服器。黑客通過控制伺服器向肉雞下達指令。
每個肉雞通常至少開兩個執行緒:一個負責和IRC伺服器通訊接受指令,另一個則通過埠掃描嘗試感染其他機器。
常用的攻擊方式是UDP攻擊,它比TCP型別的攻擊更難防,因為TCP是需要建立連線的,很容易被IDS/IPS裝置RST,也很容易通過設定協議棧Syn Cookies遮蔽掉攻擊包。------PS:這裡暫時還不懂。。。
5.總結一下
有一部分人專門做這種生意:控制大批計算機,同時訪問某伺服器導致其癱瘓或暴力破解各種密碼。有些攻擊是有針對性的,有些完全是隨機的埠掃描。現在只能束手無策。。。待我好好研究研究再說。
相關文章
- 暴力破解FTP伺服器使用者名稱密碼FTP伺服器密碼
- Linux 修改預設SSH埠 22,避免被暴力破解密碼Linux解密密碼
- 自動擷取root密碼和防暴力破解sshd密碼密碼
- linux 賬號密碼安全加固Linux密碼
- 使用python進行密碼暴力破解Python密碼
- Python - 自導自演 密碼字典暴力破解Python密碼
- 無線Wifi密碼之暴力破解篇(WPA)WiFi密碼
- 動網論壇密碼暴力破解程式程式碼 (轉)密碼
- Oracle使用者密碼被鎖定導致的故障Oracle密碼
- linux 單使用者模式修改密碼Linux模式密碼
- Linux 使用者和密碼設定Linux密碼
- 被曝光的密碼密碼
- 安全乾貨,使用fail2ban避免ssh被暴力破解AI
- 使用 fail2ban 防 linux ssh 被暴力破解AILinux
- Oracle使用者密碼過期和使用者被鎖解決方法Oracle密碼
- 測試1:Access Point(Wifi)的密碼暴力破解WiFi密碼
- 如何安全的儲存使用者密碼?(中)程式碼篇密碼
- MongoDB 資料庫安全之使用者密碼修改MongoDB資料庫密碼
- Yahoo!使用者密碼洩漏安全啟示錄密碼
- 【密碼】Oracle使用者密碼系列密碼Oracle
- linux建立使用者並設定密碼Linux密碼
- Linux使用者登入密碼的生成Linux密碼
- linux下批量修改使用者密碼Linux密碼
- Oracle使用者密碼過期和使用者被鎖解決方法【轉】Oracle密碼
- PG密碼安全密碼
- 密碼安全加固密碼
- MySQL密碼安全MySql密碼
- 用生成模型為自己生成密碼,無懼暴力破解模型密碼
- Python攻防-暴力破解附近區域網WIFI密碼PythonWiFi密碼
- linux 指令碼切換使用者不用輸入密碼Linux指令碼密碼
- Linux增強系統安全性:防止單使用者模式(single)修改密碼Linux模式密碼
- [Linux]使用者及密碼相關命令(轉)Linux密碼
- 【PASSWORD】Linux環境下使用密碼驗證方式重置SYS使用者密碼Linux密碼
- 如何通過Python暴力破解網站登陸密碼Python網站密碼
- oracle密碼安全管理Oracle密碼
- oracle 密碼安全 (zt)Oracle密碼
- Linux安全-攻擊篇-密碼破解之Hydra工具Linux密碼
- 無密碼身份驗證如何保障使用者隱私安全?密碼