服務(wù)端安全
服務(wù)端安全一直是一個不容忽視卻最容易被忽視的問題,本篇將介紹一些使服務(wù)端更為安全的最佳實踐较锡。此篇使用 Ubuntu 作為服務(wù)端操作系統(tǒng)蚂蕴。
Ubuntu
升級軟件
對當前系統(tǒng)中默認安裝的軟件進行版本更新和安全修補骡楼,這一步可以使軟件庫和系統(tǒng)應(yīng)用到最新的安全補犊闯伞:
apt-get update && apt-get upgrade
創(chuàng)建新用戶
我們需要創(chuàng)建一個自己的用戶來登錄和使用服務(wù)器資源川慌,而不是 root 這種眾所周知的神一般的存在:
adduser Dearmadman --force-badname
接著梦重,把 Dearmadman 加入 sodu 用戶組琴拧,讓自己擁有神的能力:
usermod -a -G sudo Dearmadman
啟用 SSH 密鑰對認證
通常遠程連接到服務(wù)器時,一般都是用用戶名密碼的方式進行驗證除师,類似下面這樣:
ssh root@dearmadman.com
password: _
服務(wù)端要求你輸入密碼進行驗證汛聚,這種密碼驗證是有可能被暴力破解的倚舀,所以我們可以禁用密碼登錄功能忍宋,使用密鑰對來進行認證痕貌。
所謂密鑰對就是在本地機器中生成一對密鑰 —— 公鑰和私鑰,你需要將公鑰存儲于服務(wù)器中糠排,服務(wù)器會在你請求認證時要求你使用私鑰對公鑰內(nèi)容進行解密舵稠,并把解密后的消息傳遞到服務(wù)器進行驗證。這種方式可以有效的杜絕暴力破解的可能乳讥,同時也避免了中間人攻擊的可能柱查。
生成 SSH 密鑰對
ssh-keygen
這個命令會生成一對秘鑰,存放在 ~/.ssh 目錄中云石,其中 id_rsa.pub 是公鑰,你需要將公鑰傳遞到服務(wù)端研乒,我們可以使用 scp
命令來復(fù)制公鑰到服務(wù)端:
scp ~/.ssh/id_rsa.pub Dearmadman@dearmadman.com:
該命令會將公鑰傳遞到服務(wù)器的 Dearmadman 用戶的根目錄中汹忠,我們需要確認在用戶根目錄中是否存在 .ssh
目錄,如果不存在則需要手動創(chuàng)建雹熬,并在 .ssh 目錄中創(chuàng)建一個保存一系列公鑰的文件 authorized_keys
宽菜,然后將上傳的公鑰追加到文件中:
cd /home/Dearmadman
mkdir .ssh
touch .ssh/authorized_keys
cat ~/id_rsa.pub >> /home/Dearmadman/.ssh/authorized_keys
最后修改目錄和文件的訪問權(quán)限竿报,只讓 Dearmadman 用戶訪問 .ssh 目錄和 .ssh/authorized_keys 文件:
chwon -R Dearmadman:Dearmadman .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
SSH 配置
SSH 的配置信息存放在 /etc/ssh/sshd_config 文件中。
修改默認端口
SSH 默認監(jiān)聽的是 22 號端口挚赊,我們可以轉(zhuǎn)換為監(jiān)聽其他端口:
Port 6293
禁用密碼登錄
PasswordAuthentication no
禁用 root 用戶
PermitRootLogin no
重啟 SSh
sudo service ssh restart
IPTABLES
利用 IPTABLES 可以對服務(wù)端流入和流出的數(shù)據(jù)包進行有效的管理旺矾。
保存原有規(guī)則:
iptables-save > /etc/iptables.rules
修改 filter 部分內(nèi)容:
*filter
# 設(shè)置默認的鏈策略
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
# 開放 6293 端口懊直,用于 SSH 認證,默認為 22 端口融撞,前文修改為 6293
-A INPUT -p tcp -m tcp --dport 6293 -j ACCEPT
# 開放 80 和 443 端口,分別用于 http 和 https 協(xié)議
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# 禁止 ping,默認的連策略已經(jīng)禁止了 ping,這里修改 DROP 為 ACCEPT 將允許 ping
#-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
COMMIT
刷新規(guī)則:
iptables-restore < /etc/iptables.rules
下面是一些常用 web 服務(wù)相關(guān)軟件耍群,對于這些軟件應(yīng)獨立出一個低權(quán)限用戶來獨立運行袖裕,并且應(yīng)禁用該賬號的登錄權(quán)限谤民。在此不做詳細說明
PHP
修改 php.ini 禁止響應(yīng)版本號
expose_php = Off
Nginx
修改 nginx.conf 隱藏版本號
http {
server_tokens off;
}
MySQL
禁用遠程訪問兢榨,如果必要凌那,請選擇 ssh 密鑰登錄