14個(gè)Linux系統(tǒng)安全小妙招,總有一招用的上!
對(duì)于互聯(lián)網(wǎng)IT從業(yè)人員來說,越來越多的工作會(huì)逐漸轉(zhuǎn)移到Linux系統(tǒng)之上,這一點(diǎn),無(wú)論是開發(fā)、運(yùn)維、測(cè)試都應(yīng)該是深有體會(huì)。曾有技術(shù)調(diào)查網(wǎng)站W(wǎng)3Techs于2018年11月就發(fā)布一個(gè)調(diào)查報(bào)告,報(bào)告顯示Linux在網(wǎng)站服務(wù)器的系統(tǒng)中使用率高達(dá)37.2%,這一數(shù)據(jù)也表明,Linux系統(tǒng)被廣泛應(yīng)用。其實(shí),除了在網(wǎng)站服務(wù)器中的應(yīng)用,Linux系統(tǒng)還被用于DNS域名解析服務(wù)器、電子郵件服務(wù)器、一些開源軟件的應(yīng)用(大數(shù)據(jù)應(yīng)用:據(jù)Linux基金會(huì)的研究,86%的企業(yè)已經(jīng)使用Linux操作系統(tǒng)進(jìn)行云計(jì)算、大數(shù)據(jù)平臺(tái)的構(gòu)建)服務(wù)器等之上。
大多數(shù)使用者都會(huì)認(rèn)為L(zhǎng)inux默認(rèn)是安全的,有時(shí)候這種說法也的確是一個(gè)存在爭(zhēng)議的話題。Linux默認(rèn)確實(shí)有內(nèi)置的安全模型。你需要打開它并且對(duì)其進(jìn)行定制,這樣才能得到更安全的系統(tǒng)。Linux更難管理,不過相應(yīng)也更靈活,有更多的配置選項(xiàng)。
對(duì)于系統(tǒng)管理員,讓產(chǎn)品的系統(tǒng)更安全,免于駭客和黑客的攻擊,一直是一項(xiàng)挑戰(zhàn)。而且,近些年來對(duì)于Linux遭遇攻擊的案例很多,所以,如何構(gòu)建一個(gè)安全、強(qiáng)大且牢固的Linux系統(tǒng)一直是一個(gè)可探索性的話題。今天,我將從系統(tǒng)的各個(gè)層面,給大家分享一下我在日常工作中是如何構(gòu)建、或者加固Linux系統(tǒng)安全的。
1. 物理安全
這應(yīng)該說是對(duì)于服務(wù)器安全保障的第一步。
硬件服務(wù)器,首先得專業(yè)人的來做專業(yè)的維護(hù)。其次就是關(guān)閉從CD/DVD等這些方面的軟啟動(dòng)方式。同時(shí)也可以設(shè)置BIOS密碼,并且要有限制訪問的策略與各類流程管控。
還可以禁用USB設(shè)備來達(dá)到安全的目的:
- vim /etc/modprobe.d/stopusb
- install usb-storage /bin/true
或者使用下面的命令將USB的驅(qū)動(dòng)程序刪除
- [root@rs-server ~]# mv /lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz
2. 保證系統(tǒng)最新
這個(gè)就是說要保證系統(tǒng)無(wú)其它漏洞存在,比如:已經(jīng)有的漏洞要及時(shí)的修復(fù)。保證系統(tǒng)包含了最新版本的補(bǔ)丁、安全修復(fù)和可用內(nèi)核。
- yum updates
- yum check-update
3. 最小化處理原則
無(wú)論是安裝系統(tǒng),還是常用的軟件,都必須遵守這個(gè)原則:最小化安裝,同時(shí)也是減少漏洞存在的可能性。
對(duì)于系統(tǒng)一些不必要的服務(wù)、端口,建議關(guān)閉。
- [root@rs-server ~]# chkconfig --list |grep "3:on"
- network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
然后使用下面的命令關(guān)閉:
- chkconfig service-name off
4. 登錄與連接
對(duì)于Linux服務(wù)器來說,一般都是采用遠(yuǎn)程登錄(SSH)連接的方式去進(jìn)行登錄操作。因此:
- 第一步:就是除了非必要情況,杜絕使用root用戶登錄,可以使用sudo來進(jìn)行提權(quán)操作,然后利用系統(tǒng)命令將/etc/sudoers文件鎖定(除root用戶之外的用戶無(wú)權(quán)限修改)。
- 第二步:建議修改SSH配置文件,比如默認(rèn)端口號(hào)22,禁止root密碼登錄(有些自有機(jī)房的還可以直接禁用root用戶通過SSH協(xié)議登錄)等。
- [root@rs-server ~]# vim /etc/ssh/sshd_config
- #Port 22
- 可修改成其它端口號(hào),民工哥常用IP+22混合使用
- #PermitRootLogin yes
- 將yes改成No
- #PermitEmptyPasswords no
- 打開注釋即可
- #AllowUsers username
- 指定特定的用戶通過SSH協(xié)議進(jìn)行遠(yuǎn)程連接
5. 用戶管理
Linux是一個(gè)可多用戶并行操作的系統(tǒng),所以,系統(tǒng)也對(duì)用戶進(jìn)行了劃分:超級(jí)用戶與普通用戶。兩者權(quán)限不同,因此,能干的事也有所不同,所以,對(duì)于用戶的管理也是非常重要的一步。
設(shè)置用戶密碼:
這個(gè)可以通過系統(tǒng)命令passwd來進(jìn)行設(shè)置,一般建議使用強(qiáng)度比較復(fù)雜的密碼,且各個(gè)系統(tǒng)中相同的用戶使用不同的密碼(日常可以使用管理器來管理)。
- [root@rs-server ~]# passwd mingongge
- Changing password for user mingongge.
- New password:
- Retype new password:
- passwd: all authentication tokens updated successfully.
臨時(shí)用戶管理:
對(duì)于這種需要的臨時(shí)用戶管理,一般是使用過后可以刪除,也可以在一段時(shí)間后將其鎖定不讓其再登錄,在下次需要登錄時(shí)再次開啟權(quán)限。
刪除用戶很簡(jiǎn)單,可以使用系統(tǒng)命令userdel -r username 進(jìn)行刪除。
鎖定用戶其實(shí)就是修改用戶的屬性:
- [root@rs-server ~]# usermod -L mingongge
我們打開終端嘗試登錄看看:
這時(shí)發(fā)現(xiàn)已經(jīng)無(wú)法正常登錄連接了,表明剛剛的配置是正確的。等到下次需要登錄時(shí),可以使用下面的命令進(jìn)行解鎖:
- [root@rs-server ~]# usermod -U mingongge
- #-L lock
- #-U unlock
6. 文件管理
這里的文件管理指的是存儲(chǔ)用戶信息的重要文件:/etc/passwd、/etc/shadow這兩個(gè)文件。
- [root@rs-server ~]# stat /etc/passwd
- File: ‘/etc/passwd’
- Size: 945 Blocks: 8 IO Block: 4096 regular file
- Device: fd00h/64768d Inode: 17135889 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2019-08-06 01:14:37.439994172 +0800
- Modify: 2019-08-06 01:14:37.440994172 +0800
- Change: 2019-08-06 01:14:37.442994172 +0800
- Birth: -
- [root@rs-server ~]# stat /etc/shadow
- File: ‘/etc/shadow’
- Size: 741 Blocks: 8 IO Block: 4096 regular file
- Device: fd00h/64768d Inode: 17135890 Links: 1
- Access: (0000/----------) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2019-08-06 01:14:37.445994172 +0800
- Modify: 2019-08-06 01:14:37.445994172 +0800
- Change: 2019-08-06 01:14:37.447994172 +0800
- Birth: -
一般從上面的一些文件屬性上可以看出是不是這些文件遭遇篡改了,所以,一般情況建議將此兩個(gè)文件鎖定除了root用戶之外的用戶無(wú)權(quán)限修改與訪問。
7. 啟用防火墻
利用系統(tǒng)的防火墻來過濾出入站的流量,這是一個(gè)很好的預(yù)防攻擊的策略,而且系統(tǒng)防火墻的規(guī)則可以逐條設(shè)置,非常強(qiáng)大,強(qiáng)裂建議開啟。
8. 軟件包的管理
對(duì)于系統(tǒng)安裝的軟件,我們使用RPM包管理器來管理,對(duì)于使用yum或者apt-get命令列出來的軟件,在對(duì)其進(jìn)行刪除、卸載時(shí),一定要使用下面的命令進(jìn)行:
- yum -y remove software-package-name
- sudo apt-get remove software-package-name
9. 禁用Crtl+Alt+Del 重啟
多數(shù)服務(wù)器在按下Crtl+Alt+Del組合鍵后,都會(huì)使用服務(wù)器重啟,這個(gè)對(duì)于線上服務(wù)器來說是絕對(duì)不友好的一個(gè)安全因素,必須禁止,否則一個(gè)誤操作就造成很大的影響。
- #CentOS6 禁用Ctrl+Alt+Del重啟功能
- #方法一:
- vi /etc/init/control-alt-delete.conf
- #start on control-alt-delete #注釋此行
- #方法二:
- mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bak
- #注:兩種方法都無(wú)需重啟系統(tǒng)即可生效
對(duì)于CentOS7 來說,方法有所不同:
- [root@rs-server ~]# cat /etc/inittab
- # inittab is no longer used when using systemd.
- #
- # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
- #
- # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
- #
- # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
- #
- # multi-user.target: analogous to runlevel 3
- # graphical.target: analogous to runlevel 5
- #
- # To view current default target, run:
- # systemctl get-default
- #
- # To set a default target, run:
- # systemctl set-default TARGET.target
- #
這個(gè)文件里已經(jīng)說明了相關(guān)的介紹。
經(jīng)過測(cè)試,如果將上面文件中的配置注釋掉之后,reboot命令會(huì)不生效了:
- [root@rs-server ~]# ll /usr/lib/systemd/system/ctrl-alt-del.target
- lrwxrwxrwx. 1 root root 13 Mar 14 17:27 /usr/lib/systemd/system/ctrl-alt-del.target -> reboot.target
這個(gè)ctrl-alt-del.target這是reboot.target的軟鏈接。所以,最終正確的方法是:移動(dòng)掉這個(gè)文件到其它目錄,然后重載配置文件使用其它生效,如果再需要這個(gè)功能就只需要重新添加這個(gè)軟件鏈接即可。
10. 監(jiān)控用戶行為
如果你的系統(tǒng)中有很多的用戶,去收集每一個(gè)用戶的行為和和他們的進(jìn)程消耗的信息非常重要。可以隨后和一些性能優(yōu)化和安全問題處理時(shí)進(jìn)行用戶分析。但是如果監(jiān)視和搜集用戶行為信息呢 ?有兩個(gè)很有用的工具‘psacct‘ 和 ‘acct‘可以用來監(jiān)視系統(tǒng)中用戶的行為和進(jìn)程。
- [root@rs-server ~]# yum install psacct -y
使用方法如下:
- ac 統(tǒng)計(jì)用戶連接時(shí)間
- ac #顯示所有用戶連接總時(shí)間
- ac -p #顯示每個(gè)用戶連接時(shí)間
- ac -d #顯示每天所有用戶連接總時(shí)間
- ac silence #顯示指定用戶連接時(shí)間
- ac -d silence #顯示指定用戶每天連接時(shí)間
- sa 輸出用戶活動(dòng)信息
- sa #顯示所有用戶執(zhí)行命令情況
- sa -u #按用戶顯示執(zhí)行命令情況
- sa -m #按進(jìn)程顯示執(zhí)行命令情況
- sa -p #按使用率顯示執(zhí)行命令情況
- lastcomm 輸出最近執(zhí)行命令信息
- lastcomm #顯示所有執(zhí)行命令
- lastcomm silence #顯示指定用戶執(zhí)行命令
- lastcomm ls #顯示指定命令執(zhí)行情況
- 其他
- last #查看最近用戶登錄成功列表
- last -x #顯示系統(tǒng)關(guān)機(jī)、重新開啟等信息
- last -a #將IP顯示在最后一列
- last -d #對(duì)IP進(jìn)行域名解析
- last -R #不顯示IP列
- last -n 3 #顯示最近3條
- lastb #查看最近用戶登錄失敗的列表
具體的使用例子:
- [root@rs-server ~]# ac -p
- root 71.88
- total 71.88
- [root@rs-server ~]# sa -u
- root 0.00 cpu 1043k mem 0 io accton
- root 0.00 cpu 3842k mem 0 io systemd-tty-ask
- root 0.03 cpu 72576k mem 0 io pkttyagent
- root 0.00 cpu 32112k mem 0 io systemctl
- root 0.00 cpu 2674k mem 0 io systemd-cgroups
- root 0.07 cpu 37760k mem 0 io ps
- root 0.00 cpu 28160k mem 0 io grep
- root 0.00 cpu 1080k mem 0 io ac
- root 0.14 cpu 0k mem 0 io kworker/u256:0 *
- root 0.10 cpu 0k mem 0 io kworker/0:0 *
- root 0.02 cpu 0k mem 0 io kworker/0:2 *
- [root@rs-server ~]# lastcomm sa
- sa root pts/0 0.00 secs Tue Aug 6 02:15
- [root@rs-server ~]# last -x
- root pts/0 192.168.1.14 Tue Aug 6 00:48 still logged in
- root tty1 Tue Aug 6 00:48 still logged in
- [root@rs-server ~]# lastb
- mingongg ssh:notty 192.168.1.14 Tue Aug 6 01:11 - 01:11 (00:00)
- mingongg ssh:notty 192.168.1.14 Tue Aug 6 01:11 - 01:11 (00:00)
- btmp begins Tue Aug 6 01:11:27 2019
11. 定期檢查日志
將系統(tǒng)及其重要的日志保存在本服務(wù)器之外的專業(yè)日志服務(wù)器上,從而避免黑客通過分析日志來入侵系統(tǒng)及應(yīng)用,以下是常見的日志文件:
12. 數(shù)據(jù)備份
這個(gè)不用說都知道是非常重要的,尤其是重要的生產(chǎn)數(shù)據(jù),必須本地、異地、不同介質(zhì)備份及保存,同時(shí)還需要定期檢查數(shù)據(jù)的完整性、可用性。
13. 安全工具
對(duì)于系統(tǒng)來說,常用的安全掃描工具是必備的,比如:掃描開放端口nmap。對(duì)于系統(tǒng)中的WEB應(yīng)用等來說,可以使用一些開源的工具:IBM AppScan、SQL Map等,同樣這類的商用產(chǎn)品也很多,這里就不做介紹了(又不給我廣告費(fèi))。
對(duì)于文件有文件加密工具,對(duì)于系統(tǒng)還有一些入侵檢測(cè)、漏洞掃描工具,無(wú)論是開源還是商業(yè),都是可以根據(jù)實(shí)際需求與企業(yè)成本來決定使用哪一款工具。
14. 管理方法
對(duì)于安全管理來說,好的流程與管理制度同樣也是必須的,否則,上述13點(diǎn)基本的作用為0,有方法,沒有制度去讓方法落地執(zhí)行!!
所以,無(wú)論對(duì)于小企業(yè)、大企業(yè)來說,流程、管理制度始終是先行于所有的處理方法之前的。人才是世界上最不可控的因素!!