Linux服務器安全技巧

2022-10-07    分類: 網(wǎng)站建設

毋庸置疑,對于系統(tǒng)管理員,提高服務器的安全性是最重要的事情之一。因此,也就有了許多針對這個話題而生的文章、博客和論壇帖子。

一臺服務器由大量功能各異的部件組成,這一點使得很難根據(jù)每個人的需求去提供定制的解決方案。這篇文章盡可能涵蓋一些有所裨益的小技巧來幫助管理員保證服務器和用戶安全。

有一些常識是每個系統(tǒng)管理員都應該爛熟于心的,所以下面的幾點在本文將不會提及:

務必保證系統(tǒng)是最新的 經(jīng)常更換密碼 - 使用數(shù)字、字母和非字母的符號組合 給予用戶最小的權限,滿足他們?nèi)粘J褂盟杓纯? 只安裝那些真正需要的軟件包

Linux 服務器安全技巧

下面是一些更有意思的內(nèi)容:

更改SSH默認端口

在搭建好一臺全新的服務器后要做的第一件事情就是更改SSH的默認端口。這個小小的改動能夠使你的服務器避免受到成千上萬的暴力攻擊(LCTT 譯注:不更改默認端口相當于黑客們知道你家的門牌號,這樣他們只需要一把一把的試鑰匙就可能打開你家的鎖)。

要更改默認的SSH端口,先打開sshd_config文件:

?
1
sudo vim /etc/ssh/sshd_config

找到下面這行:

?
1
#Port 22

“#”號表示這行是注釋。首先刪除#號,然后把端口號改成目的端口。端口號不能超過65535,確保要指定的端口號沒有被系統(tǒng)或其它服務占用。建議在[維基百科]上查看常用端口號列表。在本文中,使用這個端口號:

?
1
Port 16543

然后保存并關閉文件,等待更改生效。

接下來的一步是:

使用SSH密鑰認證

在通過SSH訪問服務器時,使用SSH密鑰進行認證是尤其重要的。這樣做為服務器增加了額外的保護,確保只有那些擁有密鑰的人才能訪問服務器。

在本地機器上運行下面命令以生成SSH密鑰:

?
1
ssh-keygen -t rsa

你會看到下面的輸出,詢問要將密鑰寫到哪一個文件里,并且設置一個密碼:

?
1
2
3
4
5
6
7
8
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): my_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in my_key.
Your public key has been saved in my_key.pub.
The key fingerprint is:
SHA256:MqD/pzzTRsCjZb6mpfjyrr5v1pJLBcgprR5tjNoI20A

完成之后,就得到兩個文件:

my_key

my_key.pub

接下來把my_key.pub拷貝到~/.ssh/authorized_key中

?
1
cp my_key.pub ~/.ssh/authorized_keys

然后使用下面命令將密鑰上傳到服務器:

?
1
scp -P16543 authorized_keys user@yourserver-ip:/home/user/.ssh/

至此,你就可以從這臺本地機器上無密碼地訪問服務器了。

關閉SSH的密碼認證

既然已經(jīng)有了SSH密鑰,那么關閉SSH的密碼認證就會更安全了。再次打開并編輯sshd_config,按如下設置:

?
1
2
3
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
關閉Root登錄

下面關鍵的一步是關閉root用戶的直接訪問,而使用sudo或su來執(zhí)行管理員任務。首先需要添加一個有root權限的新用戶,所以編輯這個路徑下的sudoers文件:

?
1
/etc/sudoers/

推薦使用如visudo這樣的命令編輯該文件,因為它會在關閉文件之前檢查任何可能出現(xiàn)的語法錯誤。當你在編輯文件時出錯了,這就很有用了。

接下來賦予某個用戶root權限。在本文中,使用用戶sysadmin。確保在編輯后這個文件時使用的用戶是系統(tǒng)已有的用戶。找到下面這行:

?
1
root ALL=(ALL) ALL

拷貝這行,然后粘貼在下一行,然后把root更改為“sysadmin”,如下所示:

?
1
2
root ALL=(ALL) ALL
sysadmin ALL=(ALL) ALL

現(xiàn)在解釋一下這行的每一個選項的含義:

?
1
(1) root (2)ALL=(3)(ALL) (4)ALL

(1) 指定用戶

(2) 指定用戶使用sudo的終端

(3) 指定用戶可以擔任的用戶角色

(4) 這個用戶可以使用的命令

(LCTT 譯注:所以上面的配置是意思是:root 用戶可以在任何終端擔任任何用戶,執(zhí)行任何命令。)

使用這個配置可以給用戶訪問一些系統(tǒng)工具的權限。

這時,可以放心保存文件了。

為了關閉通過SSH直接訪問root,需要再次打開sshd_config,找到下面這行:

?
1
#PermitRootLogin yes

更改為:

?
1
PermitRootLogin no

然后保存文件,重啟sshd守護進程使改動生效。執(zhí)行下面命令即可:

?
1
sudo /etc/init.d/sshd restart
設置防火墻

防火墻有助于過濾出入端口和阻止使用暴力法的登錄嘗試。我傾向于使用SCF(Config Server Firewall)這個強力防火墻。它使用了iptables,易于管理,而且對于不擅于輸入命令的用戶提供了web界面。

要安裝CSF,先登錄到服務器,切換到這個目錄下:

?
1
cd /usr/local/src/

然后以root權限執(zhí)行下面命令:

?
1
2
3
4
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

只需等待安裝程序完成,然后編輯CSF的配置文件:

?
1
/etc/csf/csf.conf

默認情況下CSF是以測試模式運行。通過將“TESTING”的值設置成0,切換到product模式。

?
1
TESTING = "0"

下面要設置的就是服務器上允許通過的端口。在csf.conf中定位到下面的部分,根據(jù)需要修改端口:

?
1
2
3
4
5
6
7
8
9
# 允許入站的 TCP 端口
TCP_IN = "20,21,25,53,80,110,143,443,465,587,993,995,16543"
# 允許出站的 TCP 端口
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,16543"
# 允許入站的 UDP 端口
UDP_IN = "20,21,53"
# 允許出站的 UDP 端口
# 要允許發(fā)出 traceroute 請求,請加 33434:33523 端口范圍到該列表
UDP_OUT = "20,21,53,113,123"

請根據(jù)需要逐一設置,推薦只使用那些需要的端口,避免設置對端口進行大范圍設置。此外,也要避免使用不安全服務的不安全端口。比如只允許端口465和587來發(fā)送電子郵件,取代默認的SMTP端口25。(LCTT 譯注:前提是你的郵件服務器支持 SMTPS)

重要:千萬不要忘記允許自定義的 ssh 端口。

允許你的IP地址通過防火墻,而絕不被屏蔽,這一點很重要。IP地址定義在下面的文件中:

?
1
/etc/csf/csf.ignore

被屏蔽了的IP地址會出現(xiàn)在這個文件中:

?
1
/etc/csf/csf.deny

一旦完成更改,使用這個命令重啟csf:

?
1
sudo /etc/init.d/csf restart

下面是在某臺服務器上的csf.deny文件的部分內(nèi)容,來說明CSF是很有用的:

?
1
2
3
4
5
211.216.48.205 # lfd: (sshd) Failed SSH login from 211.216.48.205 (KR/Korea, Republic of/-): 5 in the last 3600 secs - Fri Mar 6 00:30:35 2015
103.41.124.53 # lfd: (sshd) Failed SSH login from 103.41.124.53 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 01:06:46 2015
103.41.124.42 # lfd: (sshd) Failed SSH login from 103.41.124.42 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 01:59:04 2015
103.41.124.26 # lfd: (sshd) Failed SSH login from 103.41.124.26 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 02:48:26 2015
109.169.74.58 # lfd: (sshd) Failed SSH login from 109.169.74.58 (GB/United Kingdom/mail2.algeos.com): 5 in the last 3600 secs - Fri Mar 6 03:49:03 2015

可以看到,嘗試通過暴力法登錄的IP地址都被屏蔽了,真是眼不見心不煩?。?/p> 鎖住賬戶

如果某個賬戶在很長一段時間內(nèi)都不會被使用了,那么可以將其鎖住以防止其它人訪問。使用如下命令:

?
1
passwd -l accountName

當然,這個賬戶依然可以被root用戶使用(LCTT 譯注:可用 su 切換為該賬號)。

了解服務器上的服務

服務器的本質(zhì)是為各種服務提供訪問功能。使服務器只運行所需的服務,關閉沒有使用的服務。這樣做不僅會釋放一些系統(tǒng)資源,而且也會使服務器變得更加安全。比如,如果只是運行一個簡單的服務器,顯然不需要X顯示或者桌面環(huán)境。如果不需要Windows網(wǎng)絡共享功能,則可以放心關閉Samba。

使用下面的命令能查看伴隨系統(tǒng)啟動而啟動的服務:

?
1
chkconfig --list | grep "3:on"

如果系統(tǒng)運行了systemd,執(zhí)行這條命令:

?
1
systemctl list-unit-files --type=service | grep enabled

然后使用下面的命令關閉服務:

?
1
2
3
chkconfig service off
systemctl disable service

在上面的例子中,把“service”替換成真正想要停止的服務名稱。實例如下:

?
1
2
3
chkconfig httpd off
systemctl disable httpd
小結

這篇文章的目的是涵蓋一些通用的安全步驟以便幫助你保護服務器。你可以采取更多方式去增強對服務器的保護。請記住保證服務器安全是你的責任,在維護服務器安全時盡量做出明智的選擇,盡管并沒有什么容易的方式去完成這件事情,而建立“完善的”安全需要花費大量的時間和測試直到達到想要的結果。

via: 原文

作者:Marin Todorow 譯者:KayGuoWhu 校對:wxy

本文由 LCTT 原創(chuàng)翻譯,Linux中國 榮譽推出

名稱欄目:Linux服務器安全技巧
網(wǎng)站路徑:http://www.bm7419.com/news25/202975.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化企業(yè)建站、品牌網(wǎng)站制作App設計、自適應網(wǎng)站、電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設