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