對於互聯網IT從業人員來講,愈來愈多的工做會逐漸轉移到Linux系統之上,這一點,不管是開發、運維、測試都應該是深有體會。曾有技術調查網站W3Techs於2018年11月就發佈一個調查報告,報告顯示Linux在網站服務器的系統中使用率高達37.2%,這一數據也代表,Linux系統被普遍應用。其實,除了在網站服務器中的應用,Linux系統還被用於DNS域名解析服務器、電子郵件服務器、一些開源軟件的應用(大數據應用:據Linux基金會的研究,86%的企業已經使用Linux操做系統進行雲計算、大數據平臺的構建)服務器等之上。node
大多數使用者都會認爲Linux默認是安全的,有時候這種說法也的確是一個存在爭議的話題。Linux默認確實有內置的安全模型。你須要打開它而且對其進行定製,這樣才能獲得更安全的系統。Linux更難管理,不過相應也更靈活,有更多的配置選項。數據庫
對於系統管理員,讓產品的系統更安全,免於駭客和黑客的攻擊,一直是一項挑戰。並且,近些年來對於Linux遭遇攻擊的案例不少,因此,如何構建一個安全、強大且牢固的Linux系統一直是一個可探索性的話題。今天,民工哥將從系統的各個層面,給你們分享一下我在平常工做中是如何構建、或者加固Linux系統安全的。但願這些方法對你有所幫助,碼字不易,若有幫助,請轉發分享加點在看支持一下民工哥。vim
一、物理安全安全
這應該說是對於服務器安全保障的第一步。性能優化
硬件服務器,首先得專業人的來作專業的維護。其次就是關閉從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
二、保證系統最新ssh
這個就是說要保證系統無其它漏洞存在,好比:已經有的漏洞要及時的修復。保證系統包含了最新版本的補丁、安全修復和可用內核。工具
yum updates yum check-update
這個就須要管理員常常關注國內外關於、系統最新漏洞以及補丁發佈的信息了:
三、最小化處理原則
不管是安裝系統,仍是經常使用的軟件,都必須遵照這個原則:最小化安裝,同時也是減小漏洞存在的可能性。
對於系統一些沒必要要的服務、端口,建議關閉。
[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
四、登陸與鏈接
對於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,爲服務器安全保駕護航!
五、用戶管理
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
六、文件管理
這裏的文件管理指的是存儲用戶信息的重要文件:/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用戶以外的用戶無權限修改與訪問。
七、啓用防火牆
利用系統的防火牆來過濾出入站的流量,這是一個很好的預防攻擊的策略,並且系統防火牆的規則能夠逐條設置,很是強大,強裂建議開啓。
Linux系統安全配置iptables服務介紹
八、軟件包的管理
對於系統安裝的軟件,咱們使用RPM包管理器來管理,對於使用yum或者apt-get命令列出來的軟件,在對其進行刪除、卸載時,必定要使用下面的命令進行:
yum -y remove software-package-name sudo apt-get remove software-package-name
九、禁用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的軟連接。因此,最終正確的方法是:移動掉這個文件到其它目錄,而後重載配置文件使用其它生效,若是再須要這個功能就只須要從新添加這個軟件連接便可。
十、監控用戶行爲
若是你的系統中有不少的用戶,去收集每個用戶的行爲和和他們的進程消耗的信息很是重要。能夠隨後和一些性能優化和安全問題處理時進行用戶分析。可是若是監視和蒐集用戶行爲信息呢 ?有兩個頗有用的工具‘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
十一、按期檢查日誌
將系統及其重要的日誌保存在本服務器以外的專業日誌服務器上,從而避免黑客經過分析日誌來入侵系統及應用,如下是常見的日誌文件:
十二、數據備份
這個不用說都知道是很是重要的,尤爲是重要的生產數據,必須本地、異地、不一樣介質備份及保存,同時還須要按期檢查數據的完整性、可用性。
Xtrabackup實現數據的備份與恢復
高逼格企業級MySQL數據庫備份方案,原來是這樣....
關於數據誤刪後恢復:不當心執行了 rm -f,先別急着跑路 !
1三、安全工具
對於系統來講,經常使用的安全掃描工具是必備的,好比:掃描開放端口nmap。對於系統中的WEB應用等來講,可使用一些開源的工具:IBM AppScan、SQL Map等,一樣這類的商用產品也不少,這裏就不作介紹了(又不給我廣告費)。
對於文件有文件加密工具,對於系統還有一些入侵檢測、漏洞掃描工具,不管是開源仍是商業,都是能夠根據實際需求與企業成原本決定使用哪一款工具。
1四、管理方法
對於安全管理來講,好的流程與管理制度一樣也是必須的,不然,上述13點基本的做用爲0,有方法,沒有制度去讓方法落地執行!!
因此,不管對於小企業、大企業來講,流程、管理制度始終是先行於全部的處理方法以前的。人才是世界上最不可控的因素!!
不掉坑,不背鍋!史上最全的服務器安全管理規範開源了
但願這些方法對你有所幫助,碼字不易,若有幫助,請轉發分享加點在看支持一下民工哥。以上就是民工哥結合我的工做經驗的一些總結,可能不全也可能會有不正之處,若是你也有不一樣的理解或強化系統安全的方法,也請文章後面留言分享出來,咱們一探討、一同交流、共同構建更增強大、安全、可靠的Linux系統環境。
關注民工哥技術之路微信公衆號,在後臺回覆關鍵字:1024 能夠獲取一份最新整理的技術乾貨。