雲伺服器-Ubuntu更新系統版本-更新Linux內核-伺服器安全配置優化-防反彈shell

購入了一台阿里雲的ESC伺服器,以前都用CentOS感覺Yum不怎麼方便,這次選的Ubuntu16.04.7

搭好服務之後做安全檢查,發現Ubuntu16.04版本漏洞眾多;雖然也沒有涉及到16.04.7版本(這麼說來阿里雲給的鏡像還是可以的)但升級一下更安全一些;於是就有了今天這篇文章,做個總結。

我原來的內核版本

首先,更新內核版本(4.4x內核有些許漏洞,見圖)

 

 

一、Linux更新內核版本

1、下載內核deb安裝文件

對於Ubuntu,需要去//kernel.ubuntu.com/~kernel-ppa/mainline/選擇合適的內核安裝包

注意:X86硬體架構64位作業系統應選擇AMD64

 

 

 瀏覽器下載4個內核deb安裝文件,並上傳到伺服器,或在伺服器執行:

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-headers-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-headers-5.9.10-050910_5.9.10-050910.202011221708_all.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-image-unsigned-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-modules-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb

2、安裝deb包

切換至root或使用sudo

sudo dpkg -i *.deb

3、更新grub,重啟驗證

update-grub
reboot
uname -sr #查看內核版本

 

 

 二、更新Ubuntu系統版本

更新系統版本之前記得換軟體源,如果軟體源過慢或不穩定那將是一個大麻煩

換源及apt-get常用命令參考://www.jianshu.com/p/a79ee7f59036

1、更新安裝源(Source)

sudo apt-get  update #更新安裝源(Source)

2、對軟體升級

apt-get dist-upgrade #更新已安裝的軟體包(識別並處理依賴關係的改變)

3、更新系統版本

sudo update-manager -c -d

註:如果提示「update-manager」未安裝,可以使用「sudo apt-get install update-manager」安裝

如果安裝後仍然無法執行,提示「update-manager」服務沒有運行,可以使用「systemctl status update-manager」查看該服務情況,我的顯示「找不到該服務的文件,該服務處於死的狀態」;如果像我一樣,嘗試卸載該服務「sudo apt-get –purge autoremove update-manager」然後下一步

4、另一種方法

sudo do-release-upgrade -d
#中間只要是停下來需要選擇,一路選擇Y即可

#更新之後查看系統版本
lsb_release -a

三、安全配置-禁用root遠程登錄-禁用sudo

1、為防止暴力窮舉root登錄密碼,修改配置文件禁用root遠程登錄

#修改root密碼(一是為了增加root密碼強度,二是有些Ubuntu默認root沒有密碼,一直使用普通用戶sudo在運行;創建root密碼使root可登錄對下面的操作至關重要)
passwd root

#創建普通用戶(用于禁用root遠程登錄後自己登錄使用)
useradd 用戶名

#修改該用戶的密碼,創建時默認沒有密碼(沒有密碼將無法登錄)
passwd 用戶名

#在/home下創建該用戶的家目錄(有些Ubuntu在創建用戶後,用戶並沒有家目錄)
mkdir /home/用戶名

#修改該用戶的默認bash(有些Ubuntu創建用戶後bash也不是默認bash)
usermod -s /bin/bash 用戶名

#禁用root遠程登錄
vim /etc/ssh/sshd_config #將PermitRootLogin的值改為prohibit-password

保存重啟伺服器才能生效

2、禁用sudo,防止黑客控制普通用戶後控制伺服器

vim /etc/sudoers

#注釋掉:
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

%wheel  ALL=(ALL)   ALL

包括:「用戶名 ALL=(ALL:ALL) ALL」等語句

 三、防反彈shell

伺服器一旦被上傳惡意文件並執行,就有可能被黑客獲得控制許可權,無論這個許可權大小,為防止進一步提權或破壞伺服器有必要阻止他

但防止上傳惡意文件難度是巨大的,例如web網站允許上傳用戶頭像(萬一某個人上傳了一個PHP呢?)儘管程式設計師會在網站源碼里做防護,但PHP也有很多漏洞;況且百密必有一疏,例如php5.6版本就存在任意文件上傳漏洞。一般網站源碼可兼容的PHP版本是有限度的,無節制更新PHP版本也不太可能。以及web服務經常發生的xss攻擊,伺服器運行的各種docker和應用程式及手機app服務端;防護覆蓋面廣,難度大。

上傳文件無非獲得伺服器控制權,反彈shell就是常用的一種;另一種目的是損壞伺服器,利用漏洞刪除伺服器數據、破壞服務正常運行 (可以通過更新內核版本防護)。

GitHub上有一個項目來實現這個功能

 

 GitHub項目地址://github.com/zhanghaoyil/seesaw

具體使用還在研究中,本文章持續更新!