提高Linux安全性:14項檢查建立安全的Linux服務器
1. 記錄主機信息
每當您正在使用新的Linux主機進行安全增強時,您需要創(chuàng)建一個文檔并記錄本文檔中列出的項目,工作完成后,您將需要檢查這些項目。另外,在開始時該文檔,您需要記錄有關(guān)Linux主機的信息:
- 設備名稱
- IP地址
- MAC地址
- 負責安全提升工作的人(實際上是你)
- 日期
- 資產(chǎn)編號(如果您正在開展業(yè)務,則需要記錄設備的資產(chǎn)編號)
2. BIOS保護
您需要為此主機的BIOS設置密碼,以確保最終用戶無法修改或覆蓋BIOS中的安全設置,這非常重要!設置BIOS管理員密碼后,您需要從外部媒體設備(USB / CD / DVD)禁用主機啟動。如果忽略此設置,任何人都可以通過寫入引導映像的U盤訪問此主機中的數(shù)據(jù)。
在內(nèi)置Web服務器的新服務器主板中,您可以使用它來遠程訪問主機數(shù)據(jù)。因此,您需要確保已經(jīng)修改了服務器管理頁面的默認密碼,如果可以,直接禁用此功能。
3. 硬盤加密
大多數(shù)Linux發(fā)行版允許您在繼續(xù)安裝之前加密磁盤。磁盤加密非常重要,因為當您的電腦被盜時,即使小偷將您的硬盤驅(qū)入自己的電腦仍然無法讀取您的數(shù)據(jù)。
在下圖中,選擇列表中的第三個選項:引導使用整個磁盤并設置加密的LVM(LVM代表邏輯卷管理器)。
如果您的Linux發(fā)行版不支持加密,則可以選擇使用TrueCrypt等加密軟件。
4. 磁盤保護
數(shù)據(jù)備份是一個很好的習慣,當系統(tǒng)崩潰或系統(tǒng)更新失敗時,突出顯示備份的優(yōu)點。對于一些重要的服務器,為了防止災難(包括自然災害和人為因素)的影響,備份數(shù)據(jù)通常需要離線存儲。當然,備份也要求我們花費精力去管理。例如,需要保存舊備份文件多長時間?什么時候需要備份系統(tǒng)?(每日或每周)?
核心系統(tǒng)磁盤需要分區(qū):
- /
- / boot
- / usr
- /家
- / tmp
- / var
- /選擇
磁盤分區(qū)可能在系統(tǒng)故障的情況下仍然保護系統(tǒng)的性能和安全性。在下圖中,您可以在安裝過程中看到由Kali Linux提供的分區(qū)選項。
5. 鎖定引導目錄
引導目錄包含大量與Linux內(nèi)核相關(guān)的重要文件,因此您需要確保目錄僅通過以下步驟“只讀”才能打開。首先打開“fstab”文件。
接下來,添加下圖所示的最后一行數(shù)據(jù)。
完成此步驟后,您需要執(zhí)行以下命令來設置文件的所有者:
- #chown root:root /etc/fstab
那么您需要設置一些權(quán)限來保護啟動設置:-以root身份設置/etc/grub.com的所有者和組:
- #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存儲設備
根據(jù)您系統(tǒng)的重要性,有時您需要禁用Linux主機使用USB存儲設備。有很多方法來禁用USB存儲設備,以下是為您提供最常用的設備:
用你最喜歡的文本編輯器打開“blacklist.conf”文件:
- #nano /etc/modprobe.d/blacklist.conf
打開文件后,將以下信息添加到文件底部并保存并退出:
- blacklist usb_storage
然后打開rc.local文件,添加以下兩行數(shù)據(jù):
- modprobe –r usb_storage
- exit 0
7. 系統(tǒng)更新
第一次啟動后,首先要更新系統(tǒng),這個步驟應該被認為比較簡單。通常,您可以打開終端,然后執(zhí)行相應的命令。在Kali Linux中,您可以使用以下命令更新系統(tǒng):
- apt-get update & apt-get upgrade
8. 檢查已安裝的軟件包
列出您的Linux系統(tǒng)中的所有已安裝的軟件包,然后刪除不需要的軟件包。如果您正在服務器上工作,那么您必須非常小心,因為服務器通常僅用于安裝應用程序和服務。您可以按照以下命令列出在Kali Linux中安裝的軟件包:
記住要禁用那些不需要減少服務器攻擊面的服務。如果您在自己的Linux服務器中發(fā)現(xiàn)以下遺留服務,請快速刪除它們:
- Telnet服務器
- RSH服務器
- NIS服務器
- TFTP服務器
- TALK服務器
9. 檢查打開的端口
識別與互聯(lián)網(wǎng)的開放連接是非常重要的任務。在Kali Linux中,我們可以使用以下命令查找隱藏的開放端口:
10. 增強SSH的安全性
是的,SSH真的很安全,但是我們還要繼續(xù)在現(xiàn)有的基礎上增強其安全性。首先,如果你可以禁用SSH,那么問題就解決了。但是,如果仍然需要使用它,則需要修改SSH的默認配置。切換到目錄/ etc / ssh,然后打開“sshd_config”文件。
-將默認端口號(22)更改為另一個號碼(例如99)。
-確保root用戶無法通過SSH遠程登錄:
- PermitRootLogin no
-允許某些特殊用戶:
- AllowUsers [username]
如果您需要更豐富的配置,請確保您閱讀SSH手冊并了解該文件中的所有配置項。
另外,您還需要確保在“sshd_config”文件中配置以下配置選項:
- 協(xié)議2
- IgnoreRhosts為yes
- Hostbase驗證無
- PermitEmptyPasswords no
- 打開X11Forwarding 沒有
- MaxAuthTries 5
- 密碼aes128-ctr,aes192-ctr,aes256-ctr
- ClientAliveInterval 900
- ClientAliveCountMax 0
- UsePAM 是的
最后,設置文件訪問權(quán)限,以確保只有root用戶可以修改文件的內(nèi)容:
- #chown root:root etc/ssh/sshd_config
- #chmod 600 /etc/ssh/sshd_config
11 – 啟用SELinux
SELinux是支持訪問控制安全策略的內(nèi)核安全機制。SELinux有三種配置模式:
- 禁用:關(guān)閉
- 允許:打印警告
- 執(zhí)法:政策是強制執(zhí)行
打開配置文件:
- #nano /etc/selinux/config
確保SELinux已打開:
- SELINUX=enforcing
12. 網(wǎng)絡參數(shù)
保護Linux主機網(wǎng)絡活動也非常重要,從來沒有希望防火墻能夠幫助您完成所有的任務。打開/etc/sysctl.conf文件并進行以下設置:
- 將net.ipv4.ip_forward參數(shù)設置為0。
- 將net.ipv4.conf.all.send_redirects和net.ipv4.conf.default.send_redirects參數(shù)設置為0。
- 將net.ipv4.conf.all.accept_redirects和net.ipv4.conf.default.accept_redirects參數(shù)設置為0。
- 將net.ipv4.icmp_ignore_bogus_error_responses參數(shù)設置為1。
13. 密碼政策
人們通常在不同的地方使用相同的密碼,這是一個非常糟糕的習慣。舊密碼存儲在/ etc / security / opasswd文件中,我們需要使用PAM模塊來管理Linux主機中的安全策略。在Debian版本中,您可以打開/etc/pam.d/common-password文件,并添加以下信息,以防止用戶重復使用最近使用的四個密碼:
- auth sufficient pam_unix. so likeauthnullok
- password sufficient pam_unix.so remember=4
另一個密碼策略是強制用戶使用強大的密碼。PAM模塊提供了一個庫(pam_cracklib),可以幫助您的服務器進行字典攻擊和爆破攻擊。打開/etc/pam.d/system-auth文件并添加以下信息:
- /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8lcredit=–1 ucredit=–2 dcredit=–2 ocredit=–1
Linux是密碼哈希,所以你想確保系統(tǒng)使用SHA512哈希算法。
另一個有趣的功能是“五次鎖定帳戶后的密碼輸出錯誤”。打開/etc/pam.d/password-auth文件并添加以下數(shù)據(jù):
- auth required pam_env.so
- auth required pam_faillock.so preauth audit silent deny= 5unlock_time =604800
- auth [success=1 default =bad] pam_unix.so
- auth [default=die] pam_faillock.so authfail audit deny =5unlock_time=604800
- auth sufficient pam_faillock.so authsucc audit deny=5unlock_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 =5unlock_time=604800
- auth sufficient pam_faillock.so authsucc audit deny=5unlock_time = 604800
- auth required pam_deny.so
密碼錯誤五次后,只有管理員可以解鎖帳號,解鎖命令如下:
- # /usr/sbin/faillock –user <userlocked> –reset
另一個好習慣就是設置“密碼到期后的90天”。
- 將/etc/login.defs中的PASS_MAX_DAYS參數(shù)設置為90。
- 修改當前用戶的密碼到期時間:
- #chage –maxdays 90 <user>
現(xiàn)在,我們必須限制對su命令的訪問。打開/etc/pam.d/su文件,然后設置pam_wheel.so參數(shù):
- auth required pam_wheel.so use_uid
最后一步是禁止非root用戶訪問系統(tǒng)帳戶??梢允褂靡韵耣ash腳本完成此步驟:
- #!/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主機的安全性,那么權(quán)限當然是最重要的。
使用以下命令為/ etc / anacrontab,/ etc / crontab和/etc/cron.*設置適當?shù)臋?quán)限:
- #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分配適當?shù)臋?quán)限:
- #chown root:root <crontabfile>
- #chmod og-rwx <crontabfile>
為“passwd”,“group”,“shadow”和“gshadow”文件分配適當?shù)臋?quán)限:
- #chmod 644 /etc/passwd
- #chown root:root /etc/passwd
- #chmod 644 /etc/group
- #chown root:root /etc/group
- #chmod 600 /etc/shadow
- #chown root:root /etc/shadow
- #chmod 600 /etc/gshadow
- #chown root:root /etc/gshadow