購入了一臺阿里雲的ESC服務器,之前都用CentOS感受Yum不怎麼方便,此次選的Ubuntu16.04.7php
搭好服務以後作安全檢查,發現Ubuntu16.04版本漏洞衆多;雖然也沒有涉及到16.04.7版本(這麼說來阿里雲給的鏡像仍是能夠的)但升級一下更安全一些;因而就有了今天這篇文章,作個總結。linux
我原來的內核版本git
首先,更新內核版本(4.4x內核有些許漏洞,見圖)程序員
對於Ubuntu,須要去http://kernel.ubuntu.com/~kernel-ppa/mainline/選擇合適的內核安裝包github
注意:X86硬件架構64位操做系統應選擇AMD64web
瀏覽器下載4個內核deb安裝文件,並上傳到服務器,或在服務器執行:docker
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
切換至root或使用sudoshell
sudo dpkg -i *.deb
update-grub reboot
uname -sr #查看內核版本
更新系統版本以前記得換軟件源,若是軟件源過慢或不穩定那將是一個大麻煩ubuntu
換源及apt-get經常使用命令參考:https://www.jianshu.com/p/a79ee7f59036vim
sudo apt-get update #更新安裝源(Source)
apt-get dist-upgrade #更新已安裝的軟件包(識別並處理依賴關係的改變)
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」而後下一步
sudo do-release-upgrade -d #中間只要是停下來須要選擇,一路選擇Y便可 #更新以後查看系統版本 lsb_release -a
ps:(如以上方法無效)Ubuntu登陸用戶時提供的一條命令,很穩定,按照嚮導更新很不錯(推薦)。
#修改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
保存重啓服務器才能生效
vim /etc/sudoers
#註釋掉:
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
%wheel ALL=(ALL) ALL
包括:「用戶名 ALL=(ALL:ALL) ALL」等語句
服務器一旦被上傳惡意文件並執行,就有可能被黑客得到控制權限,不管這個權限大小,爲防止進一步提權或破壞服務器有必要阻止他
但防止上傳惡意文件難度是巨大的,例如web網站容許上傳用戶頭像(萬一某我的上傳了一個PHP呢?)儘管程序員會在網站源碼裏作防禦,但PHP也有不少漏洞;何況百密必有一疏,例如php5.6版本就存在任意文件上傳漏洞。通常網站源碼可兼容的PHP版本是有限度的,無節制更新PHP版本也不太可能。以及web服務常常發生的xss攻擊,服務器運行的各類docker和應用程序及手機app服務端;防禦覆蓋面廣,難度大。
上傳文件無非得到服務器控制權,反彈shell就是經常使用的一種;另外一種目的是損壞服務器,利用漏洞刪除服務器數據、破壞服務正常運行 (能夠經過更新內核版本防禦)。
GitHub上有一個項目來實現這個功能
GitHub項目地址:https://github.com/zhanghaoyil/seesaw
具體使用還在研究中,本文章持續更新!