14個Linux系統安全小妙招,總有一招用的上
對于互聯網IT從業人員來說,越來越多的工作會逐漸轉移到Linux系統之上,這一點,無論是開發、運維、測試都應該是深有體會。曾有技術調查網站W3Techs于2018年11月就發布一個調查報告,報告顯示Linux在網站服務器的系統中使用率高達37.2%,這一數據也表明,Linux系統被廣泛應用。其實,除了在網站服務器中的應用,Linux系統還被用于DNS域名解析服務器、電子郵件服務器、一些開源軟件的應用(大數據應用:據Linux基金會的研究,86%的企業已經使用Linux操作系統進行云計算、大數據平臺的構建)服務器等之上。
大多數使用者都會認為Linux默認是安全的,有時候這種說法也的確是一個存在爭議的話題。Linux默認確實有內置的安全模型。你需要打開它并且對其進行定制,這樣才能得到更安全的系統。Linux更難管理,不過相應也更靈活,有更多的配置選項。
對于系統管理員,讓產品的系統更安全,免于駭客和黑客的攻擊,一直是一項挑戰。而且,近些年來對于Linux遭遇攻擊的案例很多,所以,如何構建一個安全、強大且牢固的Linux系統一直是一個可探索性的話題。今天,民工哥將從系統的各個層面,給大家分享一下我在日常工作中是如何構建、或者加固Linux系統安全的。希望這些方法對你有所幫助,碼字不易,如有幫助,請轉發分享加點在看支持一下民工哥。
1、物理安全
這應該說是對于服務器安全保障的第一步。
硬件服務器,首先得專業人的來做專業的維護。其次就是關閉從CD/DVD等這些方面的軟啟動方式。同時也可以設置BIOS密碼,并且要有限制訪問的策略與各類流程管控。
還可以禁用USB設備來達到安全的目的:
vim /etc/modprobe.d/stopusb install usb-storage /bin/true
或者使用下面的命令將USB的驅動程序刪除
[root@rs-server ~]# mv /lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz
2、保證系統最新
這個就是說要保證系統無其它漏洞存在,比如:已經有的漏洞要及時的修復。保證系統包含了最新版本的補丁、安全修復和可用內核。
yum updates yum check-update
這個就需要管理員經常關注國內外關于、系統最新漏洞以及補丁發布的信息了:
2018上半年回顧:網絡安全直面五大威脅!
nginx 被爆安全問題致使 1400 多萬臺服務器易遭受 DoS 攻擊
構建高效安全的Nginx Web服務器
3、最小化處理原則
無論是安裝系統,還是常用的軟件,都必須遵守這個原則:最小化安裝,同時也是減少漏洞存在的可能性。
對于系統一些不必要的服務、端口,建議關閉。
[root@rs-server ~]# chkconfig --list |grep "3:on" network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
然后使用下面的命令關閉:
chkconfig service-name off
4、登錄與連接
對于Linux服務器來說,一般都是采用遠程登錄(SSH)連接的方式去進行登錄操作。因此:
第一步:就是除了非必要情況,杜絕使用root用戶登錄,可以使用sudo來進行提權操作,然后利用系統命令將/etc/sudoers文件鎖定(除root用戶之外的用戶無權限修改)。
第二步:建議修改SSH配置文件,比如默認端口號22,禁止root密碼登錄(有些自有機房的還可以直接禁用root用戶通過SSH協議登錄)等。
[root@rs-server ~]# vim /etc/ssh/sshd_config #Port 22 可修改成其它端口號,民工哥常用IP+22混合使用 #PermitRootLogin yes 將yes改成No #PermitEmptyPasswords no 打開注釋即可 #AllowUsers username 指定特定的用戶通過SSH協議進行遠程連接
對于生產中的服務器,我們還可以使用堡壘機進行連接限制:
手把手從0開始教你搭建Jumpserver,為服務器安全保駕護航!
5、用戶管理
Linux是一個可多用戶并行操作的系統,所以,系統也對用戶進行了劃分:超級用戶與普通用戶。兩者權限不同,因此,能干的事也有所不同,所以,對于用戶的管理也是非常重要的一步。
設置用戶密碼:
這個可以通過系統命令passwd來進行設置,一般建議使用強度比較復雜的密碼,且各個系統中相同的用戶使用不同的密碼(日常可以使用管理器來管理)。
[root@rs-server ~]# passwd mingongge Changing password for user mingongge. New password: Retype new password: passwd: all authentication tokens updated successfully.
臨時用戶管理:
對于這種需要的臨時用戶管理,一般是使用過后可以刪除,也可以在一段時間后將其鎖定不讓其再登錄,在下次需要登錄時再次開啟權限。
刪除用戶很簡單,可以使用系統命令userdel -r username 進行刪除。
鎖定用戶其實就是修改用戶的屬性:
[root@rs-server ~]# usermod -L mingongge
我們打開終端嘗試登錄看看:
這時發現已經無法正常登錄連接了,表明剛剛的配置是正確的。等到下次需要登錄時,可以使用下面的命令進行解鎖:
[root@rs-server ~]# usermod -U mingongge #-L lock #-U unlock
6、文件管理
這里的文件管理指的是存儲用戶信息的重要文件:/etc/passwd、/etc/shadow這兩個文件。
[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: -
一般從上面的一些文件屬性上可以看出是不是這些文件遭遇篡改了,所以,一般情況建議將此兩個文件鎖定除了root用戶之外的用戶無權限修改與訪問。
7、啟用防火墻
利用系統的防火墻來過濾出入站的流量,這是一個很好的預防攻擊的策略,而且系統防火墻的規則可以逐條設置,非常強大,強裂建議開啟。
Linux系統安全配置iptables服務介紹
8、軟件包的管理
對于系統安裝的軟件,我們使用RPM包管理器來管理,對于使用yum或者apt-get命令列出來的軟件,在對其進行刪除、卸載時,一定要使用下面的命令進行:
yum -y remove software-package-name sudo apt-get remove software-package-name
9、禁用Crtl+Alt+Del 重啟
多數服務器在按下Crtl+Alt+Del組合鍵后,都會使用服務器重啟,這個對于線上服務器來說是絕對不友好的一個安全因素,必須禁止,否則一個誤操作就造成很大的影響。
#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 #注:兩種方法都無需重啟系統即可生效
對于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 #
這個文件里已經說明了相關的介紹。
經過測試,如果將上面文件中的配置注釋掉之后,reboot命令會不生效了:
[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
這個ctrl-alt-del.target這是reboot.target的軟鏈接。所以,最終正確的方法是:移動掉這個文件到其它目錄,然后重載配置文件使用其它生效,如果再需要這個功能就只需要重新添加這個軟件鏈接即可。
10、監控用戶行為
如果你的系統中有很多的用戶,去收集每一個用戶的行為和和他們的進程消耗的信息非常重要。可以隨后和一些性能優化和安全問題處理時進行用戶分析。但是如果監視和搜集用戶行為信息呢 ?有兩個很有用的工具‘psacct‘ 和 ‘acct‘可以用來監視系統中用戶的行為和進程。
[root@rs-server ~]# yum install psacct -y
使用方法如下:
ac 統計用戶連接時間 ac #顯示所有用戶連接總時間 ac -p #顯示每個用戶連接時間 ac -d #顯示每天所有用戶連接總時間 ac silence #顯示指定用戶連接時間 ac -d silence #顯示指定用戶每天連接時間 sa 輸出用戶活動信息 sa #顯示所有用戶執行命令情況 sa -u #按用戶顯示執行命令情況 sa -m #按進程顯示執行命令情況 sa -p #按使用率顯示執行命令情況 lastcomm 輸出最近執行命令信息 lastcomm #顯示所有執行命令 lastcomm silence #顯示指定用戶執行命令 lastcomm ls #顯示指定命令執行情況 其他 last #查看最近用戶登錄成功列表 last -x #顯示系統關機、重新開啟等信息 last -a #將IP顯示在最后一列 last -d #對IP進行域名解析 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、定期檢查日志
將系統及其重要的日志保存在本服務器之外的專業日志服務器上,從而避免黑客通過分析日志來入侵系統及應用,以下是常見的日志文件:
12、數據備份
這個不用說都知道是非常重要的,尤其是重要的生產數據,必須本地、異地、不同介質備份及保存,同時還需要定期檢查數據的完整性、可用性。
Xtrabackup實現數據的備份與恢復
高逼格企業級MySQL數據庫備份方案,原來是這樣....
關于數據誤刪后恢復:不小心執行了 rm -f,先別急著跑路 !
13、安全工具
對于系統來說,常用的安全掃描工具是必備的,比如:掃描開放端口nmap。對于系統中的WEB應用等來說,可以使用一些開源的工具:IBM AppScan、SQL Map等,同樣這類的商用產品也很多,這里就不做介紹了(又不給我廣告費)。
對于文件有文件加密工具,對于系統還有一些入侵檢測、漏洞掃描工具,無論是開源還是商業,都是可以根據實際需求與企業成本來決定使用哪一款工具。
14、管理方法
對于安全管理來說,好的流程與管理制度同樣也是必須的,否則,上述13點基本的作用為0,有方法,沒有制度去讓方法落地執行!!
所以,無論對于小企業、大企業來說,流程、管理制度始終是先行于所有的處理方法之前的。人才是世界上最不可控的因素!!
不掉坑,不背鍋!史上最全的服務器安全管理規范開源了
好啦!今天分享到這里結束了,希望大家持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!
文章來源于網絡,侵刪!