■ 西安 王震華
筆者單位的核心防火墻啟用了VRRP主備模式,但近期發(fā)現(xiàn)不規(guī)律的網(wǎng)絡(luò)中斷,經(jīng)過一段時間觀察和登錄核心防火墻查看日志,發(fā)現(xiàn)核心防火墻會出現(xiàn)主備狀態(tài)翻滾。在防火墻區(qū)域啟用流量分析工具,發(fā)現(xiàn)DMZ區(qū)一臺Linux服務(wù)器會隨機性向外發(fā)送大量數(shù)據(jù)包,不斷建立TCP連接,最大流量可達(dá)8Gb/s,阻塞上行帶寬。
此服務(wù)器操作系統(tǒng)版本為RedHat 6.5,上面部署了業(yè)務(wù)系統(tǒng),部署時開放了用戶自定義的Tomcat和Nginx負(fù)載均衡端口。此系統(tǒng)使用不多,系統(tǒng)本身不可能耗費太多網(wǎng)絡(luò)資源,因此筆者認(rèn)為遭到非法流量攻擊的可能性較大。
首先使用“sar -n DEV 210”命令,意為間隔2秒統(tǒng)計一次網(wǎng)絡(luò)信息,總共統(tǒng)計10次。發(fā)現(xiàn)txpck/s即每秒發(fā)送的數(shù)據(jù)包數(shù)值較大,服務(wù)器確實出現(xiàn)大量發(fā)包的問題,因此筆者懷疑是被植入了Rootkit惡意軟件。
先使用Wondershaper工具對服務(wù)器上傳速度作出限制,以免影響其他服務(wù)器正常使用。接著使用Rootkit檢測工具Rkhunter對系統(tǒng)文件進行分析,并對服務(wù)器系統(tǒng)命令和可信版本MD5值做出對比,發(fā)現(xiàn)/usr/bin/.sshd被人為修改,并在系統(tǒng)中添加了root權(quán)限賬戶。
首先分析/var/log下的日志文件,使用last命令獲得用戶最近登錄信息,發(fā)現(xiàn)root用戶于某日15:10通 過ip(:2.0)登錄系統(tǒng)。其他日志IP均為合法地址,筆者懷疑該用戶通過其他方式登錄系統(tǒng)。使用“netstat-ntlp”命令對系統(tǒng)中開啟的端口進行排查,發(fā)現(xiàn)VNC占用了5902端口及相應(yīng)其他端口。通過“service vncserver status”命令查看VNC處于開啟狀態(tài)。查看VNC配置文件后發(fā)現(xiàn)VNC用戶為默認(rèn)的“2:root”,登錄口令為默認(rèn)“123456”,為了驗證VNC登錄的IP地址,下載VNC Viewer后通過圖形界面登錄系統(tǒng),使用last命令查看系統(tǒng)后發(fā)現(xiàn)新登錄的IP為(:2.0),通過外網(wǎng)可以Telnet通此端口,由此可以判斷非法攻擊者通過掃描不同IP網(wǎng)段的5902端口后發(fā)現(xiàn)此端口開啟,并使用默認(rèn)的用戶名和口令進行系統(tǒng)登錄,然后植入Rootkit。
對RedHat 6.5的默認(rèn)防火墻軟件iptables配置進行查看后發(fā)現(xiàn),配置文件中:INPUT ACCEPT [0:0],防火墻軟件對所有的input鏈默認(rèn)同意,用戶未將其改為:INPUT DROP [0:0]后,并自定義規(guī)則。
系統(tǒng)被Rootkit攻擊后,相關(guān)文件會自啟動并且受到保護,因此系統(tǒng)變得不再安全,通過更換操作系統(tǒng),才能徹底解決問題。
在經(jīng)歷了此次網(wǎng)絡(luò)攻擊后,筆者總結(jié)了以下幾點經(jīng)驗教訓(xùn)。
1.部署系統(tǒng)時應(yīng)該盡量使用較高版本的操作系統(tǒng),仔細(xì)檢查系統(tǒng)中存在的端口和默認(rèn)開啟的應(yīng)用。
2.在應(yīng)用防火墻中對開啟的端口做出限制,只放行自己開啟服務(wù)的端口,避免其他端口映射到互聯(lián)網(wǎng)上。
3.禁止root用戶直接通過SSH登錄到系統(tǒng)上,避免使用密碼登錄。應(yīng)該使用專門的登錄賬戶登錄通過私鑰進行登錄,然后通過su命令進行切換。
具體的安全防護措施(以Centos 7.5為例)如下:
1.只允許用戶通過DMZ區(qū)SSH登錄,禁止通過其他網(wǎng)段SSH登錄。
(1)修改/etc/hosts.allow文件:
sshd:192.*.*.*:allow
(2)修改/etc/hosts.deny文件:
sshd:all
2.創(chuàng)建登錄用戶,采用私鑰的方式進行登錄,禁止root用戶通過SSH登錄,更改SSH默認(rèn)端口。
(1)增加用戶并創(chuàng)建密碼:
useradd XXX passwd XXX
(2)在用戶目錄下新建.ssh目錄,并將其目錄權(quán)限改為700(僅用戶自身有讀寫操作權(quán)限):
mkdir .ssh
chmod 777 .ssh
(3)進入.ssh目錄,使用ssh-keygen命令生成RSA密鑰對:
ssh-keygen
(4)在.ssh目錄中新建一個文件名為authorized_keys,將公鑰內(nèi)容拷貝到該文件,并將文件權(quán)限改為600(僅用戶自身有讀寫權(quán)限):
touch authorized_keys
cat id_rsa.pub >>authorized_keys
chmod 600 authorzied_keys
(5)修改sshd_config配置:
禁用root賬戶登錄
PermitRootLogin no
是否:sshd去檢查用戶家目錄或相關(guān)檔案的權(quán)限數(shù)據(jù)
StrictModes no
是否允許用戶自行使用成對的密鑰系統(tǒng)進行登入行為
RSAAuthentication yes
PubkeyAuthentication yes
將自制的公鑰數(shù)據(jù)就放置于用戶家目錄下的.ssh/authorized_keys內(nèi)。
AuthorizedKeysFile.ssh/authorized_keys
禁用密碼登錄
PasswordAuthentication no
更改SSH端口
port xxxx;
修改完畢后重啟sshd服務(wù)
systemctl restart sshd
3.開啟Firewalld防火墻,并自定義規(guī)則,放行應(yīng)用端口。
(1)開啟防火墻:
systemctl start firewalld
(2)開啟端口:
firewall-cmd--zone=public --addport=XXX/tcp–permanent