增强服务器安全性能,加强Linux服务器安全的20项建议
很多人都說(shuō) Linux 在默認(rèn)配置下很安全,我在一定程度上同意這個(gè)說(shuō)法(很值得商榷的話題)。不過(guò) Linux 內(nèi)置的安全模型和工具做得確實(shí)很到位,用戶只需進(jìn)行簡(jiǎn)單的調(diào)整和自定義就可以加強(qiáng) Linux 服務(wù)器安全。
與惡意用戶做斗爭(zhēng)對(duì)于所有 Linux 系統(tǒng)管理員來(lái)說(shuō)都是一項(xiàng)艱巨的任務(wù),本文我們將介紹如何加強(qiáng) Linux 服務(wù)器安全的 20 項(xiàng)建議,希望對(duì)保護(hù)你的系統(tǒng)有所幫助。
1. 物理安全
在服務(wù)器 BIOS 中禁用光驅(qū)、軟驅(qū)、U盤等可引導(dǎo)的外部設(shè)備,并啟用 BIOS 密碼及 GRUB 密碼來(lái)限制對(duì)系統(tǒng)的物理訪問(wèn)。
2. 磁盤分區(qū)
我們可以通過(guò)使用不同的分區(qū)來(lái)分散存儲(chǔ)數(shù)據(jù)以獲得更高的數(shù)據(jù)安全性,當(dāng)發(fā)生任何災(zāi)難時(shí),由于數(shù)據(jù)是隔離存儲(chǔ)的,會(huì)將數(shù)據(jù)損失的幾率降到最低。
3. 盡量減少軟件包以減少漏洞
建議管理員盡量避免在 Linux 中安裝非必要的軟件包,而且不要使用來(lái)源不明的包,以盡可能的避免程序漏洞。當(dāng)一個(gè)服務(wù)出問(wèn)題時(shí),很可能會(huì)波及到其它服務(wù)甚至整個(gè)系統(tǒng),所以「非必要的服務(wù)就不運(yùn)行」這是一個(gè)鐵則。
對(duì)于 CentOS 系統(tǒng)可以使用 chkconfig 來(lái)查看運(yùn)行在 runlevel 3 的服務(wù):
/sbin/chkconfig --list |grep '3:on'
一旦發(fā)現(xiàn)有不需要的服務(wù)正常運(yùn)行,可以使用如下命令禁用:
chkconfig serviceName off
對(duì)于使用 RPM 包或 DEB 安裝的服務(wù)可以使用 yum 或 apt-get 找出包名稱并用如下命令移除:
yum -y remove package-name
sudo apt-get remove package-name
4. 查看網(wǎng)絡(luò)偵聽(tīng)端口
使用 netstat 命令可以看到什么樣的網(wǎng)絡(luò)應(yīng)用正在偵聽(tīng)哪些端口,找出不必要的程序之后再用上面的方面來(lái)處理。
netstat –tulpn
5. 使用安全的遠(yuǎn)程連接(SSH)
Telnet 和 rlogin 都使用明文的協(xié)議,而且已被證實(shí)存在多種已經(jīng)安全漏洞,SSH 是一種安全的協(xié)議,它可以使用加密技術(shù)與服務(wù)器進(jìn)行通訊。
非必要時(shí),不要使用 root 賬戶登錄 SSH,要習(xí)慣使用 sudo 來(lái)切換身份。
SSH 22 端口目標(biāo)過(guò)于明顯,建議大家改成一個(gè)不常用的高端口并在 vi /etc/ssh/sshd_config 配置文件中至少配置如下選項(xiàng):
#禁用root登錄
PermitRootLogin no
#僅允許特定用戶
AllowUsers username
#SSH協(xié)議版本
Protocol 2
6. 保持系統(tǒng)更新
盡量始終保持系統(tǒng)內(nèi)核、應(yīng)用補(bǔ)丁及安全修復(fù)處在最新?tīng)顟B(tài):
yum updates
yum check-update
7. 鎖定定時(shí)任務(wù)
cron 可以指定哪些用戶可以使用,只需將允許的用戶添加到 /etc/cron.allow 或?qū)⒔玫挠脩籼砑拥?/etc/cron.deny 中即可。如果希望禁用所有用戶使用任務(wù)計(jì)劃,只需將ALL添加到cron.deny文件當(dāng)中。
echo ALL >>/etc/cron.deny
8. 禁用USB存儲(chǔ)設(shè)備檢測(cè)
很多時(shí)候我們都需要禁用 USB 存儲(chǔ)設(shè)備以防數(shù)據(jù)拷出,此時(shí)可以創(chuàng)建一個(gè)/etc/modprobe.d/no-usb文件并填入如下內(nèi)容即可禁用 USB 存儲(chǔ)設(shè)備檢測(cè):
install usb-storage /bin/true
9. 啟用SELinux
安全增強(qiáng)型 Linux(SELinux)是在內(nèi)核中提供的強(qiáng)制訪問(wèn)控制的安全機(jī)制。很多網(wǎng)絡(luò)文章為了方便配置都建議大家禁用 SELinux 功能,我在這里到是建議大家在考慮關(guān)閉 SELinux 前應(yīng)該三思。
SELinux 提供用戶三種基本操作模式:
Enforcing:啟用和執(zhí)行機(jī)器上的 SELinux 策略(默認(rèn)配置)
Permissive:在此種模式下,SELinux 不會(huì)強(qiáng)制執(zhí)行系統(tǒng)上的安全策略,只會(huì)產(chǎn)生相應(yīng)日志和警告。Permissive 模式在 SELinux 排錯(cuò)時(shí)經(jīng)常會(huì)乃至。
Disabled:禁用 SELinux 功能
如果你想查看當(dāng)前系統(tǒng) SELinux 的狀態(tài)可以使用:
sestatus
如果要從禁用狀態(tài)啟用 SELinux 可以使用:
setenforce enforcing
以上配置只對(duì)當(dāng)前系統(tǒng)狀態(tài)有用,重啟會(huì)失效。要一勞永逸開(kāi)關(guān) SELinux 可以更改其配置文件/etc/selinux/config。
10. 移除KDE/GNOME桌面
不論你是運(yùn)行 LAMP 的專屬服務(wù)器還是其它類型服務(wù)器,KDE 或 GNOME 這樣 X Window 桌面環(huán)境是沒(méi)多大必要使用的,禁用之后可以提高服務(wù)器性能和增強(qiáng)安全性。使用如下命令即可完全卸載:
yum groupremove "X Window System"
11. 禁用IPv6
IPv6 目前還沒(méi)有大規(guī)模普及,如果你不使用 IPv6 協(xié)議,可以在 /etc/sysconfig/network 配置文件中將其禁用。
NETWORKING_IPV6=no
IPV6INIT=no
12. 限制用戶重復(fù)使用舊密碼
很多用戶習(xí)慣在強(qiáng)制定期更換密碼時(shí)重復(fù)循環(huán)使用以前的密碼,這對(duì)于服務(wù)器管理員來(lái)說(shuō)是一種非常不好的習(xí)慣。因此建議大家限制用戶重復(fù)使用舊密碼,該功能可以通過(guò) PAM 來(lái)實(shí)現(xiàn)。
RHEL/CentOS/Fedora:/etc/pam.d/system-auth
Ubuntu/Debian/Linux Mint:/etc/pam.d/common-password
在上述配置文件中的auth區(qū)塊添加一行:
auth sufficient pam_unix.so likeauth nullok
在password區(qū)塊添加一行:
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5
配置好后,服務(wù)器會(huì)禁止使用最近 5 個(gè)被使用過(guò)的用戶密碼。
13. 配置密碼過(guò)期策略
Linux 中,用戶密碼是被加密存儲(chǔ)到/etc/shadow文件當(dāng)中的,要配置密碼過(guò)期的詳細(xì)信息需要用到change命令。例如要查看某個(gè)賬戶的密碼過(guò)期日期和時(shí)間,可以使用如下命令:
chage -l username
要更改密碼過(guò)期策略可以使用類似如下命令:
chage -M 60 username
chage -M 60 -m 7 -W 7 username
-M 密碼使用最長(zhǎng)天數(shù)
-m 密碼使用最短天數(shù)
-W 密碼過(guò)期提示天數(shù)
14. 手動(dòng)鎖定或解鎖賬戶
在不從系統(tǒng)中移除賬戶的情況下,對(duì)賬戶進(jìn)行鎖定和解鎖是非常有用的一個(gè)安全手段。需要鎖定一個(gè)賬戶時(shí),可以使用如下命令:
passwd -l accountname
賬戶鎖定同樣適用于 root 賬戶,當(dāng)某賬戶被鎖定時(shí)會(huì)增加 (!) 字串,賬戶解鎖時(shí)移除 (!) 字串。需要解鎖時(shí)使用如下命令:
passwd -u accountname
15. 強(qiáng)制使用強(qiáng)密碼
弱密碼或用生日密碼之類的密碼太容易被字典和社會(huì)工程學(xué)攻破了,所以建議大家打開(kāi)強(qiáng)密碼要求。Linux 中的強(qiáng)密碼要求還是使用 PAM 模塊,只需編輯/etc/pam.d/system-auth文件:
/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1
16. 啟用Iptables
強(qiáng)烈建議大家使用 Iptables 來(lái)保護(hù) Linux 服務(wù)器安全,Iptables 可以在不同的鏈上配置不同的規(guī)則來(lái)處理數(shù)據(jù)包。
17. 在Inittab中禁用Ctrl+Alt+Delete
大多數(shù) Linux 發(fā)行版中按下「Ctrl+Alt+Delete」時(shí)都會(huì)重啟系統(tǒng),對(duì)于 Linux 生產(chǎn)服務(wù)器來(lái)說(shuō),這幾乎是一個(gè)白癡設(shè)計(jì)。如果你希望關(guān)閉這個(gè)默認(rèn)重啟功能,可以將/etc/inittab配置文件中的如下兩千注釋掉:
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
18. 查看空密碼賬戶
如果系統(tǒng)中存在有權(quán)限的空密碼賬戶,就相當(dāng)于開(kāi)了一扇門。所以建議大家仔細(xì)清查一下:
cat /etc/shadow | awk -F: '($2==""){print $1}'
19. 忽略ICMP或廣播請(qǐng)求
要忽略 ICMP 或廣播請(qǐng)求我們可以編輯/etc/sysctl.conf配置文件:
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
配置文件改好之后使用如下命令載入生效:
sysctl –p
20. 定期審查日志
建議大家將日志文件進(jìn)行專門的集中存放和處理,這樣可以比較有效避免入侵者對(duì)日志進(jìn)行篡改,下面是 Linux 常見(jiàn)的默認(rèn)日志路徑:
/var/log/message – 系統(tǒng)日志或當(dāng)前活動(dòng)日志
/var/log/auth.log – 驗(yàn)證日志
/var/log/kern.log – 內(nèi)核日志
/var/log/cron.log – 任務(wù)計(jì)劃日志
/var/log/maillog – 郵件服務(wù)器日志
/var/log/boot.log – 系統(tǒng)啟動(dòng)日志
/var/log/mysqld.log – MySQL 服務(wù)器日志
/var/log/secure – 包含驗(yàn)證和授權(quán)方面信息
/var/log/utmp或/var/log/wtmp – 登錄記錄文件
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的增强服务器安全性能,加强Linux服务器安全的20项建议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工资6k是什么意思
- 下一篇: 玩转linux文件描述符和重定向,玩转L