歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux安裝 >> 15步戰略輕松提升Linux服務器安全水平

15步戰略輕松提升Linux服務器安全水平

日期:2017/4/19 13:57:59   编辑:Linux安裝

15步戰略輕松提升Linux服務器安全水平

【51CTO.com快譯】很多人認為Linux天然安全——這顯然是種荒謬的誤解。想象一下,如果我們的筆記本設備未經安全保護且被他人盜取,那麼對方往往能夠輕松猜到我們的用戶名為“root”而密碼為“toor”——因為這是大多數人都在無腦使用的默認組合。如果是這樣,Linux的安全性體現在哪裡?

為了避免上述問題的出現,我們將通過本篇文章共享15項重要心得,幫助大家在多種Linux發行版當中利用其中的通用邏輯實現安全性強化。

1-記錄主機信息

在進行系統保護之前,我們首先需要創建一份文檔,其中包含全部待檢查條目。另外,在文檔開頭,大家還需要包含以下Linux主機信息:

設備名稱

IP地址

Mac地址

實施安全強化工作的人員姓名

日期

資產編號(如果在企業當中,則需要包含用於標記主機的資產編號)

2-BIOS保護

需要利用密碼保護主機BIOS,避免最終用戶變更或者覆蓋其中的安全設定。每一家計算機制造商都會提供不同的BIOS模式進入方式,接下來則是設定理想的管理密碼。

之後,大家需要禁用外部介質啟動(USB/CD/DVD)。如果不變更此配置,那麼任何人都能夠利用U盤啟動系統並訪問其中的數據。

最新的服務器主板內包含一套內部Web服務器,大家可以對其進行遠程訪問。確保變更管理頁面中的默認密碼或者在可行時加以禁用。

3-硬盤加密(保密)

大多數Linux發行版允許大家在安裝前對磁盤進行加密。磁盤加密非常重要,特別是考慮到設備失竊這種可能性的存在。

如下圖所示,大家可以從列表中選擇第三個選項:Guided-use entire disk and set up encrypted LVM(LVM代表邏輯分卷管理器)。

15步戰略輕松提升Linux服務器安全水平

如果您的Linux發行版不支持加密,則可選擇TrueCrypt等軟件方案。

15步戰略輕松提升Linux服務器安全水平

4-磁盤保護(可用性)

備份對於系統受損以及系統更新bug等問題擁有良好的解決效果。對於重要服務器,我們可以考慮將備份數據傳輸至異地以實現災難恢復。在設計備份方案時,大家需要考慮幾項重要問題,包括舊備份需要保留多久、何時需要進行系統備份(每天一次抑或每周一次)等。

關鍵性系統應分為多個不同分區:

/

/boot

/usr

/home

/tmp

/var

/opt

磁盤分區允許大家在遭遇系統錯誤時保持其性能與安全性。如下圖所示,大家可以看到該選項如何在Kali Linux的安裝過程中進行分區劃分。

15步戰略輕松提升Linux服務器安全水平

5-鎖定引導目錄

引導目錄中包含有與Linux內核密切相關的重要文件,因此大家需要確保此目錄被鎖定為只讀模式。首先,打開“fstab”文件。

此後,在末尾添加最後的高亮行。

15步戰略輕松提升Linux服務器安全水平

完成文件編輯後,大家需要執行以下命令設定其擁有者:

#chown root:root /etc/fstab

此後,我設置了幾項權限用以保護引導設置:

將擁有者與/etc/grub.conf組設定為root用戶:

#chown root:root /etc/grub.conf

在/etc/grub.conf文件上將權限設定為僅root可讀寫:

#chmod og-rwx /etc/grub.conf

單用戶模式要求使用驗證:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-禁用USB

某些高重要度系統需要禁用U盤使用。我們可以通過多種方式拒絕U盤存儲介質的接入,以下介紹一種較為普遍的作法:

利用文本編輯器打開 “blacklist.conf” 文件:

#nano /etc/modprobe.d/blacklist.conf

打開後,將以下行添加至文件內容末尾(而後保存並退出):

blacklist usb_storage

此後,打開rc.local文件:

#nano /etc/rc.local

最後,添加以下兩行:

modprobe -r usb_storage

exit 0

7-系統更新

在首次引導完成後,我們必須馬上進行系統更新。總體來講,大家只需要打開終端窗口並執行對應命令即可。在Kali Linux中,大家可以執行如下圖所示的命令:

15步戰略輕松提升Linux服務器安全水平

15步戰略輕松提升Linux服務器安全水平

8-檢查已安裝軟件包

列出Linux系統中已經安裝的全部軟件包,並將其中不必要的部分移除。大家需要以嚴格的方式進行篩選,這對於Linux服務器的安全保障非常重要。下面來看如何在Kali Linux中列出全部已有軟件包:

15步戰略輕松提升Linux服務器安全水平

請注意,禁用不必要的服務能夠有效削減攻擊面,因此如果大家在自己的Linux服務器中找到了以下服務,請馬上將其移除:

Telnet server

RSH server

NIS server

TFTP server

TALK server

9-檢查開放端口

正確識別指向互聯網的開放端口非常重要。在Kali Linux中,可使用以下命令以找到任意隱藏的開放端口:

15步戰略輕松提升Linux服務器安全水平

10-保護SSH

是的,SSH確實很安全,但大家仍然需要對其加以保護。首先,如果大家能夠禁用SSH,那這本身就是個問題。另外,如果要切實加以使用,大家還需要調整SSH的默認配置。前往/etc/ssh並打開sshd_config文件。

將默認端口數22變更為其它,例如99。

確保root無法通過SSH進行遠程登錄:

PermitRootLogin no

允許部分特定用戶接入:

AllowUsers [username]

當然,需要調整的內容遠不止如此。例如,某些企業會添加屏蔽機制以避免攻擊者的進一步深入。我建議大家查看SSH手冊以了解此文件中全部配置的含義。

以下為大家需要確保sshd_config文件中存在的部分其它選項:

Protocol2

IgnoreRhosts to yes

HostbasedAuthentication no

PermitEmptyPasswords no

X11Forwarding no

MaxAuthTries 5

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

ClientAliveInterval 900

ClientAliveCountMax 0

UsePAM yes

最後,在sshd_config上設置權限以確保只有root用戶能夠對其內容進行變更:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- 啟用SELinux

安全強化Linux,即SELinux,是一項內核安全保護機制,用於支持訪問控制安全策略。SELinux擁有以下三種配置模式:

Disabled: 關閉

Permissive: 輸出警告

Enforcing: 執行策略

使用文本編輯器打開config文件:

#nano /etc/selinux/config

確保其中的策略得到執行:

SELINUX=enforcing

15步戰略輕松提升Linux服務器安全水平

12- 網絡參數

保護Linux主機網絡活動同樣非常重要。不要假定防火牆能夠搞定一切問題。下面來看在保護主機網絡時需要認真考慮的幾項核心問題:

- 禁用IP轉發:在“/etc/sysctl.conf”中將net.ipv4.ip_forward參數設定為0。

- 禁用發送包重新定向:在“/etc/sysctl.conf”中將net.ipv4.conf.all.send_redirects與net.ipv4.conf.default.send_redirects參數設定為0。

- 禁用ICMP重新定向接受:在“/etc/sysctl.conf”中net.ipv4.conf.all.accept_redirects將與net.ipv4.conf.default.accept_redirects參數設定為0。

- 啟用惡性錯誤消息保護:在“/etc/sysctl.conf”中將net.ipv4.icmp_ignore_bogus_error_responses參數設定為1。

我強烈建議大家在Linux防火牆中應用iptable規則並過濾全部輸入、輸出以及轉發數據包。配置適合自身需求的iptable需要耗費一定時間,但這一切都是值得的。

13- 密碼策略

人們常常會重復使用密碼,而這顯然是一種糟糕的安全實踐。原有密碼會被存儲在/etc/security/opasswd文件當中。我們將利用PAM模塊以管理Linux主機的安全策略。在debian發行版中,打開/etc/pam.d/common-password文件並添加以下兩行:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (意味著用戶無法重復使用以往使用過的最後四條密碼。)

另一項需要強制執行的策略為強密碼要求。PAM模塊提供的pam_cracklib能夠保護服務器免受詞典及暴力破解攻擊的危害。要完成這項任務,打開/etc/pam.d/system-auth文件並添加以下行:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux會對密碼進行散列處理,以避免其被保存為明文形式。因此,我們需要確保將安全密碼定義中的散列算法設定為SHA512。

另一項有趣的功能是在五次失敗嘗試後鎖定該賬戶。要實現這一效果,大家需要打開/etc/pam.d/password-auth文件並添加以下行:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth [success=1 default=bad] pam_unix.so

auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

到這裡還沒有完成,我們還需要額外一項步驟。打開/etc/pam.d/system-auth文件並確保添加以下內容:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth [success=1 default=bad] pam_unix.so

auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

在五次失敗嘗試後,只有管理員能夠使用以下命令解鎖該賬戶:

# /usr/sbin/faillock --user <userlocked> --reset

另外,我們也可以為密碼設置為期90天的過期時長:

在“/etc/login.defs”中將PASS_MAX_DAYS參數設定為90

執行以下命令以變更活動用戶:

#chage --maxdays 90 <user>

下面這項提示用於強化密碼策略,即在/etc/pam.d/su文件內設置參數以限制指向su命令的訪問:

auth required pam_wheel.so use_uid

最後一項密碼策略相關提示在於面向非root用戶禁用系統賬戶,具體請使用以下腳本:

#!/bin/bash

for user in `awk -F: '($3 < 500) {print $1 }' /etc/passwd`; do

if [ $user != "root" ]

then

/usr/sbin/usermod -L $user

if [ $user != "sync" ] && [ $user != "shutdown" ] && [ $user != "halt" ]

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-權限與驗證

請保持耐心,因為以下列表內容較長。不過權限正是實現Linux主機安全保護目標的一大重要因素,因此值得我們多花點時間與精力。

執行以下命令以在/etc/anacrontab、/etc/crontab與/etc/cron.*上設定用戶/組擁有者及權限:

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

在/var/spool/cron上為root crontab設定權利與權限:

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

在passwd文件上設置用戶/組擁有者與權限:

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

在group文件上設置用戶/組擁有者與權限:

#chmod 644 /etc/group

#chown root:root /etc/group

在shadow文件上設置用戶/組擁有者與權限:

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

在gshadow文件上設置用戶/組擁有者與權限:

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15-其它安全強行舉措

作為最後一項建議,我將與大家分享其它幾項重要選項。

首先,限制核心轉儲:

向“/etc/security/limits.conf”文件添加hard core 0。

向“/etc/sysctl.conf”文件添加fs.suid_dumpable = 0。

第二,配置Exec Shield:

向“/etc/sysctl.conf”文件添加kernel.exec-shield = 1。

第三,啟用隨機虛擬內存區域放置:

向“/etc/sysctl.conf”文件添加kernel.randomize_va_space = 2。

原文標題: Linux hardening: a 15-step checklist for a secure Linux server,作者: Gus Khawaja

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

【編輯推薦】

在HTTPS安全頁面中加載HTTP不安全的內容,如何繞過安全警告?

值得收藏!國外最佳互聯網安全博客TOP30

保護工控系統網絡安全的關鍵三步

特朗普與即將任命的國家安全顧問均支持攻擊性網絡武器

安全專家呼吁希拉裡要求重新計票

Copyright © Linux教程網 All Rights Reserved