14個Linux系統安全小妙招,總有一招用的上!

對於互聯網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

咱們打開終端嘗試登陸看看:

clipboard.png

這時發現已經沒法正常登陸鏈接了,代表剛剛的配置是正確的。等到下次須要登陸時,可使用下面的命令進行解鎖:

[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
#
這個文件裏已經說明了相關的介紹。

clipboard.png

通過測試,若是將上面文件中的配置註釋掉以後,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

十一、按期檢查日誌

將系統及其重要的日誌保存在本服務器以外的專業日誌服務器上,從而避免黑客經過分析日誌來入侵系統及應用,如下是常見的日誌文件:

clipboard.png

十二、數據備份

clipboard.png

這個不用說都知道是很是重要的,尤爲是重要的生產數據,必須本地、異地、不一樣介質備份及保存,同時還須要按期檢查數據的完整性、可用性。

Xtrabackup實現數據的備份與恢復

高逼格企業級MySQL數據庫備份方案,原來是這樣....

關於數據誤刪後恢復:不當心執行了 rm -f,先別急着跑路 !

1三、安全工具

對於系統來講,經常使用的安全掃描工具是必備的,好比:掃描開放端口nmap。對於系統中的WEB應用等來講,可使用一些開源的工具:IBM AppScan、SQL Map等,一樣這類的商用產品也不少,這裏就不作介紹了(又不給我廣告費)。

對於文件有文件加密工具,對於系統還有一些入侵檢測、漏洞掃描工具,不管是開源仍是商業,都是能夠根據實際需求與企業成原本決定使用哪一款工具。

1四、管理方法

對於安全管理來講,好的流程與管理制度一樣也是必須的,不然,上述13點基本的做用爲0,有方法,沒有制度去讓方法落地執行!!

因此,不管對於小企業、大企業來講,流程、管理制度始終是先行於全部的處理方法以前的。人才是世界上最不可控的因素!!

不掉坑,不背鍋!史上最全的服務器安全管理規範開源了

但願這些方法對你有所幫助,碼字不易,若有幫助,請轉發分享加點在看支持一下民工哥。以上就是民工哥結合我的工做經驗的一些總結,可能不全也可能會有不正之處,若是你也有不一樣的理解或強化系統安全的方法,也請文章後面留言分享出來,咱們一探討、一同交流、共同構建更增強大、安全、可靠的Linux系統環境。

關注民工哥技術之路微信公衆號,在後臺回覆關鍵字:1024 能夠獲取一份最新整理的技術乾貨。

clipboard.png

相關文章
相關標籤/搜索