Linux默認(rèn)情況下是安全的,并同意進(jìn)行一些擴(kuò)展(這是有爭議的話題)。但是,默認(rèn)情況下,Linux 具有內(nèi)置的安全模型。需要根據(jù)你的需要對其進(jìn)行調(diào)整和自定義,這可能有助于構(gòu)建更安全的系統(tǒng)。Linux 更難管理,但提供了更多的靈活性和配置選項(xiàng)。
1. 物理系統(tǒng)安全
配置 BIOS 禁用從啟動 CD/DVD, External Devices, Floppy Drive 在 BIOS. 接下來,啟用BIOS 密碼和保護(hù) GRUB 使用密碼來限制對系統(tǒng)的物理訪問。
2. 磁盤分區(qū)
如果發(fā)生任何事故,擁有不同的分區(qū)以獲得更高的數(shù)據(jù)安全性很重要。通過創(chuàng)建不同的分區(qū),可以對數(shù)據(jù)進(jìn)行分離和分組。當(dāng)發(fā)生意外事故時(shí),只會損壞該分區(qū)的數(shù)據(jù),而其他分區(qū)的數(shù)據(jù)則保存下來。確保你必須有以下單獨(dú)的分區(qū),并確保第三方應(yīng)用程序應(yīng)安裝在單獨(dú)的文件系統(tǒng)下/opt.
/
/boot
/usr
/var
/home
/tmp
/opt
3. 禁止不必要開機(jī)啟動的服務(wù)
從服務(wù)器中查找并刪除或禁用不需要的服務(wù),以最大限度地減少漏洞。使用 chkconfig 命令來找出正在運(yùn)行的服務(wù) runlevel 3.
# /sbin/chkconfig --list |grep '3:on'
一旦發(fā)現(xiàn)任何不需要的服務(wù)正在運(yùn)行,請使用以下命令禁用它們。
# chkconfig serviceName off
使用 RPM 包管理器,例如yum或者 apt-get工具列出系統(tǒng)上所有已安裝的軟件包并使用以下命令刪除它們。
# yum -y remove package-name
# sudo apt-get remove package-name
4.檢查監(jiān)聽網(wǎng)絡(luò)端口
netstat 網(wǎng)絡(luò)命令可以查看所有打開的端口和相關(guān)程序。使用 chkconfig 命令禁用系統(tǒng)中所有不需要的網(wǎng)絡(luò)服務(wù)。
# netstat -tulpn
5. 使用安全(SSH)
Telnet 和 rlogin 協(xié)議使用純文本,而不是加密格式,這是安全漏洞。SSH 是一種在與服務(wù)器通信時(shí)使用加密技術(shù)的安全協(xié)議。切勿直接以身份登錄 root除非必要。用 ”sudo”來執(zhí)行命令。sudo 在/etc/sudoers 文件也可以用visudo應(yīng)用程序打開 VI 編輯。建議更改默認(rèn)值 SSH 22端口號與其他一些更高級別的端口號。打開主SSH 配置文件,并做一些如下參數(shù)來限制用戶訪問。
# vi /etc/ssh/sshd_config
禁用 root 登錄
PermitRootLogin no
只允許特定用戶
AllowUsers username
使用 SSH 協(xié)議 2 版本
Protocol 2
6. 保持系統(tǒng)更新
當(dāng)系統(tǒng)可用時(shí),始終使用最新版本的補(bǔ)丁、安全修復(fù)和內(nèi)核更新系統(tǒng)。
# yum updates
# yum check-update
7. 鎖定 Cronjobs
Cron有它自己的內(nèi)置功能,它允許指定誰可以和誰不想運(yùn)行作業(yè)。這是通過使用名為的文件來控制的/etc/cron.allow 和 /etc/cron.deny. 要使用 cron 鎖定用戶,只需在cron.deny 并允許用戶運(yùn)行 cron add in cron.allow文件。如果你想禁止所有用戶使用 cron,請?zhí)砑?ALL 行到 cron.deny 文件。
# echo ALL >>/etc/cron.deny
8. 禁用U盤檢測
很多時(shí)候我們想限制用戶使用 USB避免系統(tǒng)數(shù)據(jù)遭竊取。創(chuàng)建一個(gè)文件/etc/modprobe.d/no-usb 并添加以下行將不會檢測到 USB 貯存。
install usb-storage /bin/true
9. 開啟SELinux
Security-Enhanced Linux (SELinux) 是內(nèi)核提供的強(qiáng)制訪問控制安全機(jī)制。禁用SELinux意味著從系統(tǒng)中刪除安全機(jī)制。在刪除之前請三思,如果你的系統(tǒng)連接到互聯(lián)網(wǎng)并被公眾訪問,那么請多考慮一下。SELinux 提供了三種基本的操作模式,它們是。
Enforcing:這是啟用和強(qiáng)制執(zhí)行的默認(rèn)模式 SELinux 機(jī)器上的安全策略。Permissive: 在這種模式下, SELinux不會在系統(tǒng)上強(qiáng)制執(zhí)行安全策略,只會警告和記錄操作。此模式在故障排除方面非常有用SELinux 相關(guān)問題。Disabled:SELinux 已關(guān)閉。
你可以查看當(dāng)前狀態(tài) SELinux 使用 ' 從命令行模式system-config-selinux, getenforce 或者 sestatus 命令。
# sestatus
如果已禁用,請啟用 SELinux 使用以下命令。
# setenforce enforcing
它也可以從 /etc/selinux/config 文件,你可以在其中啟用或禁用它。
10. 刪除 KDE/GNOME 桌面
沒有必要跑 X Window 臺式機(jī)之類的 KDE 或者 GNOME在你的專用LAMP服務(wù)器上。你可以刪除或禁用它們以提高服務(wù)器的安全性和性能。禁用簡單打開文件/etc/inittab 并將運(yùn)行級別設(shè)置為 3. 如果你希望將其從系統(tǒng)中完全刪除,請使用以下命令。
# yum groupremove 'X Window System'
11. 關(guān)閉 IPv6
如果你不使用 IPv6 協(xié)議,那么你應(yīng)該禁用它,因?yàn)榇蠖鄶?shù)應(yīng)用程序或策略不需要 IPv6協(xié)議,目前在服務(wù)器上不需要它。轉(zhuǎn)到網(wǎng)絡(luò)配置文件并添加以下行以禁用它。
# vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no
12. 限制用戶使用舊密碼
如果你想禁止用戶使用相同的舊密碼,這將非常有用。舊密碼文件位于/etc/security/opasswd. 這可以通過使用來實(shí)現(xiàn)PAM 模塊。打開 /etc/pam.d/system-auth 文件在 RHEL / CentOS / Fedora.
# vi /etc/pam.d/system-auth
打開 '/etc/pam.d/common-password 文件
# vi /etc/pam.d/common-password
將以下行添加到auth 部分。
auth sufficient pam_unix.so likeauth nullok
將以下行添加到password 部分禁止用戶重復(fù)使用最后一個(gè) 5 他或她的密碼。
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5
只有最后 5服務(wù)器記住密碼。如果你嘗試使用最后一個(gè)5 舊密碼,你會收到類似的錯(cuò)誤。
Password has been already used. Choose another.
13. 如何查看用戶密碼是否過期
在 Linux 中,用戶的密碼存儲在 /etc/shadow 加密格式的文件。要檢查用戶的密碼過期,你需要使用 chage 命令。它顯示密碼到期詳細(xì)信息以及最后一次密碼更改日期。系統(tǒng)使用這些詳細(xì)信息來決定用戶何時(shí)必須更改他/她的密碼。查看任何現(xiàn)有用戶的老化信息,例如 expiry date 和 time,使用以下命令。
#chage -l username
要更改任何用戶的密碼時(shí)效,請使用以下命令。
#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
參數(shù)
14.手動鎖定和解鎖帳戶
鎖定和解鎖功能非常有用,你可以將其鎖定一周或一個(gè)月,而不是從系統(tǒng)中刪除帳戶。要鎖定特定用戶,你可以使用以下命令。
# passwd -l accountName
Note : 鎖定的用戶仍然可用 root僅限用戶。鎖定是通過用 (!) 。如果有人嘗試使用此帳戶訪問系統(tǒng),他將收到類似于以下內(nèi)容的錯(cuò)誤。
# su - accountName
This account is currently not available.
要解鎖或啟用對鎖定帳戶的訪問,請使用命令 as。這將刪除 (!) 帶有加密密碼的字符串。
# passwd -u accountName
15. 使用更強(qiáng)的密碼
許多用戶使用軟密碼或弱密碼,他們的密碼可能會被黑客入侵 dictionary based或蠻力攻擊。這 pam_cracklib 模塊在 PAM (Pluggable Authentication Modules) 模塊堆棧,這將強(qiáng)制用戶設(shè)置強(qiáng)密碼。使用編輯器打開以下文件。> 另請閱讀:
# vi /etc/pam.d/system-auth
并使用信用參數(shù)添加行作為 (lcredit, ucredit, dcredit 和/或 ocredit 分別為小寫、大寫、數(shù)字等)
/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1
16.啟用Iptables(防火墻)
強(qiáng)烈建議啟用 Linux firewall以保護(hù)你的服務(wù)器未經(jīng)授權(quán)的訪問。應(yīng)用規(guī)則iptables 過濾器 incoming, outgoing 和 forwarding數(shù)據(jù)包。我們可以指定源地址和目的地址來允許和拒絕特定的udp/tcp 端口號。
17.在Inittab中禁用Ctrl+Alt+Delete
在大多數(shù) Linux 發(fā)行版中,按 CTRL-ALT-DELETE’將使你的系統(tǒng)重新啟動過程。因此,如果有人錯(cuò)誤地這樣做,至少在生產(chǎn)服務(wù)器上啟用此選項(xiàng)并不是一個(gè)好主意。> 這在 ' 中定義/etc/inittab 文件,如果你仔細(xì)查看該文件,你將看到類似于下面的一行。默認(rèn)情況下,該行沒有被注釋掉。我們必須將其注釋掉。這個(gè)特定的按鍵序列信號將關(guān)閉系統(tǒng)。
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
18. 檢查帳戶是否有空密碼
任何具有空密碼的帳戶都意味著它可以對網(wǎng)絡(luò)上的任何人進(jìn)行未經(jīng)授權(quán)的訪問,這是 Linux 服務(wù)器內(nèi)安全的一部分。因此,你必須確保所有帳戶都具有強(qiáng)密碼,并且沒有人具有任何授權(quán)訪問權(quán)限??彰艽a帳戶存在安全風(fēng)險(xiǎn),很容易被黑客入侵。要檢查是否有任何密碼為空的帳戶,請使用以下命令。
# cat /etc/shadow | awk -F: '($2==''){print $1}'
19. 登錄前顯示 SSH Banner
在 SSH 身份驗(yàn)證之前,最好有一個(gè)帶有一些安全警告的合法橫幅或安全橫幅。要設(shè)置此類橫幅,請閱讀以下文章。
20. 監(jiān)控用戶活動
如果你要與大量用戶打交道,那么收集他們使用的每個(gè)用戶活動和進(jìn)程的信息并在以后或在任何類型的性能、安全問題的情況下對其進(jìn)行分析很重要。但是我們?nèi)绾伪O(jiān)控和收集用戶活動信息。有兩個(gè)有用的工具叫做psacct 和 acct 用于監(jiān)視系統(tǒng)上的用戶活動和進(jìn)程。這些工具在系統(tǒng)后臺運(yùn)行,并持續(xù)跟蹤系統(tǒng)上的每個(gè)用戶活動和服務(wù)消耗的資源,例如Apache, MySQL, SSH, FTP等
21. 定期查看日志
將日志移動到專用日志服務(wù)器中,這樣可以防止入侵者輕松修改本地日志。以下是常見的 Linux 默認(rèn)日志文件名稱及其用法:
/var/log/message – 整個(gè)系統(tǒng)日志或當(dāng)前活動日志可用的地方。/var/log/auth.log – 身份驗(yàn)證日志。/var/log/kern.log – 內(nèi)核日志。/var/log/cron.log – Crond 日志(cron 作業(yè))。/var/log/maillog – 郵件服務(wù)器日志。/var/log/boot.log – 系統(tǒng)啟動日志。/var/log/mysqld.log – MySQL 數(shù)據(jù)庫服務(wù)器日志文件。/var/log/secure – 身份驗(yàn)證日志。/var/log/utmp 或者 /var/log/wtmp : 登錄記錄文件。/var/log/yum.log:Yum 日志文件。
22.重要文件備份
在生產(chǎn)系統(tǒng)中,有必要對重要文件進(jìn)行備份并將它們保存在安全庫、遠(yuǎn)程站點(diǎn)或異地災(zāi)難恢復(fù)中。
23. 網(wǎng)卡綁定
有兩種模式 NIC
mode=1 – Active and Backup
NIC Bonding幫助我們避免單點(diǎn)故障。在網(wǎng)卡綁定中,我們將兩個(gè)或多個(gè)網(wǎng)絡(luò)以太網(wǎng)卡綁定在一起,形成一個(gè)虛擬的接口,在這個(gè)虛擬接口中,我們可以分配IP地址與其他服務(wù)器進(jìn)行通信。我們的網(wǎng)絡(luò)將可用的情況下,一個(gè)網(wǎng)卡是down或不可用的任何原因。
24. 保持 /boot 為只讀
Linux內(nèi)核及其相關(guān)文件在 /boot 目錄默認(rèn)為 read-write. 將其更改為read-only降低未經(jīng)授權(quán)修改關(guān)鍵引導(dǎo)文件的風(fēng)險(xiǎn)。為此,打開/etc/fstab“ 文件。
# vi /etc/fstab
在底部添加以下行,保存并關(guān)閉它。
LABEL=/boot /boot ext2 defaults,ro 1 2
請注意,如果你以后需要升級內(nèi)核,則需要將更改重置為讀寫。
25. 忽略 ICMP 或廣播請求
在/etc/sysctl.conf要忽略的文件 ping 或者 broadcast 要求。
Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1
Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1
通過運(yùn)行以下命令加載新設(shè)置或更改
#sysctl -p