一、賬號安全基本措施
1、系統(tǒng)賬號清理
------將非登錄用戶的Shell設(shè)為/sbin/nologin(禁止用戶登錄)-----
usermod -s /sbin/nologin 用戶名
-----鎖定長期不使用的賬號-----
usermod -L 用戶名
passwd -l 用戶名
passwd -S 用戶名
-----刪除無用的賬號-----
userdel [-r] 用戶名
----鎖定賬號文件passwd、shadow----
鎖定文件并查看狀態(tài)
chattr +i /etc/passwd /etc/shadow
lsattr /etc/passwd /etc/shadow
解鎖文件
chattr -i /etc/passwd /etc/shadow
文件無法被修改的原因:權(quán)限不夠或者賬號被鎖住了
2.密碼安全控制
- 設(shè)置密碼有效期
vim /etc/shadow 第五個字段查看密碼有效期
要求用戶下次登陸時修改密碼
-----修改密碼配置文件適用于新建用戶-----
[root@localhost ~]# vi /etc/login.defs ##修改密碼配置文件
......
PASS_MAX_DAYS 30
-------適用于已有用戶------
[root@localhost ~]# chage -M 30 lisi ##直接修改有效期
[root@localhost ~]# cat /etc/shadow | grep lisi
[root@localhost ~]# chage -d 0 zhangsan ##強制在下次登錄時更改密碼
[root@localhost ~]# cat /etc/shadow | grep zhangsan ##shadow文件中的第三個字段被修改
3、命令歷史限制
[root@localhost ~]# vi /etc/profile
export HISTSIZE=200 #減少記錄的命令條數(shù)。臨時設(shè)置,重啟系統(tǒng)就會恢復原樣
[root@localhost ~]# source /etc/profile ##重新加載配置文件
[root@localhost ~]# vi ~/.bashrc
echo " " > ~/.bash_history #登錄時自動清空命令歷史
>是重定項,可以覆蓋信息
或者直接history -c 清空歷史命令
4、終端自動注銷
- 閑置600秒后自動注銷
[root@localhost ~]# vi /etc/profile
......
export TMOUT=600 ##設(shè)置注銷時間為600秒
[root@localhost ~]# source /etc/profile ##重新加載配置文件
二、使用su命令切換用戶
1、用途及用法
- 用途:Substitute User,切換用戶
- 格式:su - 目標用戶
2、密碼驗證
-
root->任意用戶,不驗證密碼
-
普通用戶->其他用戶,驗證目標用戶的密碼
[jerry@localhost ~]$ su - root
##帶-選項表示將使用目標用戶的登錄Shell環(huán)境
口令:
[root@localhost ~]# whoami
root
3、限制使用su命令的用戶
將允許使用su命令的用戶加入wheel組
啟用pam_wheel認證模塊
[root@localhost ~]# gpasswd -a tsengyia wheel #首先把正在將用戶"tsengyia "加入到"wheel”組中
[root@localhost ~]# vi /etc/pam.d/su #在/etc/pam.d/su文件里設(shè)置禁止用戶使用su命令
#%PAM-1.0
auth sufficient pam rootok.so
…
auth required pam_ wheel.so use_ _uid
…
- 以上兩行是默認狀態(tài)(即開啟第一行,注釋第二行),這種狀態(tài)下是允許所有用戶間使用su命令進行切換的。
- 兩行都注釋也是運行所有用戶都能使用su命令,但root下使用su切換到其他普通用戶需要輸入密碼:如果第–行不注
釋,則root 使用su切換普通用戶就不需要輸入密碼(== pam_ rootok.so模塊的主要作用是使uid為0的用戶,即root用戶能夠直接通過認證而不用輸入密碼==) - 如果開啟第二行,表示只有root用戶和wheel1組內(nèi)的用戶才可以使用su命令。
- 如果注釋第一行,開啟第二行,表示只有whee1組內(nèi)的用戶才能使用su命令,root用戶也被禁用su命令。
gpasswd -a zhangsan wheel ##添加授權(quán)用戶zhangsan 到wheel組中
groups zhangsan
vim /etc/pam.d/su
auth required pam_ wheel.so use_ uid ##去掉此行開頭的注釋
啟用pam_wheel認證以后,未加入到wheel組內(nèi)的其他用戶將無法使用su命令
4、查看su操作記錄
- 安全日志文件:/var/log/secure
三、Linux中的PAM安全認證
1、su命令的安全隱患
- 默認情況下,任何用戶都允許使用su命令,有機會反復嘗試其他用戶(如root) 的登錄密碼,帶來安全風險
- 為了加強su命令的使用控制,可借助于PAM認證模塊,只允許極個別用戶使用su命令進行切換
2、PAM(Pluggable Authentication Modules)可插拔式認證模塊
- 是一種高效而且靈活便利的用戶級別的認證方式
- 也是當前Linux服務器普遍使用的認證方式
3、PAM認證原理
- 一般遵循的規(guī)律
. Service(服務)→ PAM(配置文件)→ pam_*.so - 首先要確定哪一項服務,然后加載相應的 PAM 的配置文件(位于 /etc/pam.d 下),最后調(diào)用認證文件(位于 /lib64/security下)進行安全認證
- 用戶訪問服務器時,服務器的某一個服務程序把用戶的請求發(fā)送到 PAM 模塊進行認證
- 不同的應用程序所對應的 PAM 模塊是不同的
- 如果想要查看某個程序是否支持 PAM 認證,可以使用 ls 命令,進行查看 /etc/pam.d/
4、每行認證的名稱
- PAM的配置文件中的每一行都是一個獨立的認證過程,它們按從上往下的順序依次由PAM模塊調(diào)用。
第一列代表PAM認證模塊類型
選項 | 說明 |
---|---|
auth | 對用戶身份進行識別,如提示輸入密碼,判斷是否為root |
account | 對賬號各項屬性進行檢查,如是否允許登錄系統(tǒng),賬號是否已經(jīng)過期,是否到達最大用戶數(shù)等 |
password | 使用用戶信息來更新數(shù)據(jù),如修改用戶密碼 |
session | 定義登錄前以及退出后所要進行的會話操作管理,如登錄連接信息,用戶數(shù)據(jù)的打開和關(guān)閉,掛載文件系統(tǒng) |
第二列代表PAM控制標記
選項 | 說明 |
---|---|
required | 表示需要返回一個成功值,如果返回失敗,不會立即將失敗結(jié)果返回,而是繼續(xù)進行同類型的下一步驗證,所有此類型的模塊都執(zhí)行完成后,再返回失敗 |
requisite | 與required類似,但如果此模塊返回失敗,則立刻返回失敗并表示此類型失敗 |
sufficient | 如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響這類型的返回值 |
optional | 不進行成功與否的返回,一般不用于驗證,只是顯示信息(通常用于session類型) |
include | 表示在驗證過程中調(diào)用其他的 PAM 配置文件。比如很多應用通過完整調(diào) |
用/etc/pam.d/system-auth (主要負責用戶登錄系統(tǒng)的認證工作)來實現(xiàn)認證而不需要重新逐一去寫配置項
第三列代表PAM模塊
- 默認是在/lib64/security/目錄下,如果不在此默認路徑下,要填寫絕對路徑
- 同一個模塊,可以出現(xiàn)在不同的模塊類型中,它在不同的類型中所執(zhí)行的操作都不相同,這是由于每個模塊針對不同的模塊類型編制了不同的執(zhí)行函數(shù)
第四列代表PAM模塊的參數(shù)
-
根據(jù)所使用的模塊進行添加
-
傳遞給模塊的參數(shù),參數(shù)可以有多個,之間用空格分隔開
5、控制標記地補充說明
- required
表示該行以及所涉及模塊的成功是用戶通過鑒別的【必要條件】。換句話說,只有當對應于應用程序的所有帶required標記的模塊全部成功后,該程序才能通過鑒別。同時,如果任何帶required標記的模塊出現(xiàn)了錯誤,PAM并不立刻將錯誤消息返回給應用程序,而是在所有此類型模塊都調(diào)用完畢后才將錯誤消息返回調(diào)用他的程序。 反正說白了,就是必須將所有的此類型模塊都執(zhí)行一次,其中任何一個模塊驗證出錯,驗證都會繼續(xù)進行,并在執(zhí)行完成之后才返回錯誤信息。這樣做的目的就是不讓用戶知道自己被哪個模塊拒絕,通過一種隱蔽的方式來保護系統(tǒng)服務。就像設(shè)置防火墻規(guī)則的時候?qū)⒕芙^類的規(guī)則都設(shè)置為drop樣,以致于用戶在訪問網(wǎng)絡不成功的時候無法準確判斷到底是被拒絕還是目標網(wǎng)絡不可達。
- requisite
與required相仿,只有帶此標記的模塊返回成功后,用戶才能通過鑒別。不同之處在于其一旦失敗就不再執(zhí)行堆中后面的其他模塊,并且鑒別過程到此結(jié)束,同時也公立即返回錯誤信息。與上面的required相比,似乎要顯得更光明正大一些。
- sufficient
表示該行以及所涉及模塊驗證成功是用戶通過鑒別的【充分條件】。也就是說只要標記為sufficient的模塊一旦驗證成功,那么PAM便立即向應用程序返回成功結(jié)果而不必嘗試任何其他模塊。即便后面的層疊模塊使用了requisite或者required控制標志也是一樣。當標記為sufficient的模塊失敗時,sufficient模塊會當做optional對待。因此擁有sufficient標志位的配置項在執(zhí)行驗證出錯的時候并不公導致整個驗證失敗,但執(zhí)行驗證成功之時則大門敞開。所以該控制位的使用務必慎重。
- optional
他表示即便該行所涉及的模塊驗證失敗用戶仍能通過認證。在PAM體系中,帶有該標記的模塊失敗后將繼續(xù)處理下一模塊。也就是說即使本行指定的模塊驗證失敗,也允許用戶享受應用程序提供的服務。使用該標志,PAM框架會忽略這個模塊產(chǎn)生的驗證錯誤,繼續(xù)順序執(zhí)行下一個層疊模塊。
6、PAM驗證流程
控制類型也稱作Control Flags,用于PAM驗證類型地返回結(jié)果
required驗證失敗時仍然繼續(xù),但返回Fail
requisite驗證失敗則立即結(jié)束整個驗證過程,返回Fail
sufficient驗證成功則立即返回,不再繼續(xù),否則忽略結(jié)果并繼續(xù)
optional不用于驗證,只顯示信息(通常用于session類型)
四、使用sudo機制提升權(quán)限
1、su命令的缺點
- 默認情況下,任何用戶都允許使用su命令,有機會反復嘗試其他用戶(如root)的登錄密碼,帶來安全風險
2、sudo命令的用途及用法
- 用途:以其他用戶身份(如root)執(zhí)行授權(quán)的命令
- 用法:sudo授權(quán)命令
3、配置sudo授權(quán)
visudo
或
vi /etc/sudoers(此文件的默認權(quán)限為440,root用戶寫完保存并退出時必須要強制保存 : wq! 命令 )
語法格式:
用戶 主機名=命令程序列表
用戶 主機名=(用戶) 命令程序列表
用戶 | 直接授權(quán)指定的用戶名,或采用“組名"的形式(權(quán)一個組的所有用戶) |
---|---|
主機名 | 使用此規(guī)則的主機名。沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機 |
(用戶) | 用戶能夠以何種身份來執(zhí)行命令。此項可省略,缺省時以root用戶的身份來運行命令 |
命令程序列表 | 允許授權(quán)的用戶通過sudo方式執(zhí)行的特權(quán)命令,需填寫命令程序的完整路徑,多個命令之間以逗號 “,” 進行分隔。ALL則代表系統(tǒng)中的所有命令 |
[root@localhost ~]# visudo
......
%wheel ALL=NOPASSWD: ALL ##表示wheel組成員無需驗證密碼即可使用sudo執(zhí)行任何命令
jerry localhost=/sbin/ifconfig
syrianer localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
##通配符"*"表示所有,取反符號"!"表示排除
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
mike localhost =PKGTOOLS
sudo授權(quán)
使用關(guān)鍵字Ueer_ Alias、 Host_ Alias、Cmnd Alias來進行設(shè)置別名( 別名必須為大寫)
-
User_ Alias USERS(大寫別名)=用戶1,用戶2,……
-
Host_ Alias HOSTS(大寫別名)=主機名1,主機名2,……
-
Cmnd_ Alias CMNDS(大寫別名)=程序1,程序2……( /sbin/i fconfig,/usr/ sbin/useradd,/usr/ sbin/userdel)
-
USERS HOSTS=CMNDS
4、啟用sudo操作日志
vim etc/sudoers
把這段命令輸入搭到sudo里面: Defaults logfile = "/var/ log/sudo"
5、查看sudo操作記錄
需啟用 Defaults logfile 配置
默認日志文件:/var/log/sudo
[root@localhost ~]# tail larl/log/sudo
.......
Aug 24 23:59:44 : jerry : TTY=pts/0 ; PWD=/home/jerry ;USER=root ; COMMAND=/sbin/ifconfig
ens33:0 192.168.1.11/24
Aug 25 00:00:46 : syrianer : TTY=pts/1 ; PWD=/home/syrianer ; USER=root ; COMMAND=list
啟用日志配置以后,sudo操作過程才會被記錄
6、查詢授權(quán)的sudo操作
sudo /sbin/ifconfig ens33:0 192. 168.1.11/24
#初次使用sudo時需驗證當前用戶的密碼,默認超時時長為5分鐘,在此期問不再重復驗證密碼。
sudo -l
#查看當前用戶獲得哪些sudo授權(quán)
五、開關(guān)機安全機制
1、調(diào)整BIOS引導設(shè)置
- 將第一引導設(shè)備設(shè)為當前系統(tǒng)所在盤
- 禁止從其他設(shè)備(光盤、U盤、網(wǎng)絡)引導系統(tǒng)
- 將安全級別設(shè)為setup,并設(shè)置管理員密碼
2、GRUB限制
- 使用 grub2-mkpasswd-pbkdf2 密鑰
- 修改 /etc/grub.d/00_header 件中,添加密碼記錄
- 生成新的 grub.cfg 配置文件
3、步驟示例
- 通常情況下在系統(tǒng)開機進入GRUB菜單時,按e鍵可以查看并修改GRUB引導參數(shù),這對服務器是一個極大的威脅。
- 可以為GRUB菜單設(shè)置一個密碼的驗證,只有提供正確的密碼才被允許修改引導參數(shù)。
grub2-mkpasswd-pbkdf2
##根據(jù)提示設(shè)置GRUB菜單的密碼
PBKDF2 hash of your password is grub. pbkd2....... # 省略部分內(nèi)容為經(jīng)過加密生成的密碼字符串
- 修改信息
- 然后reboot重啟測試一下
六、終端登錄安全控制
1、限制root只在安全終端登錄
- 安全終端配置 : /etc/securetty
[root@localhost ~]# vi /etc/ securetty
......
#tty5
#tty6
#禁止root用戶從終端tty5、tty6登錄
#在虛擬機上按 ctrl + alt +F2/F4 進入虛擬終端登陸
2、限制普通用戶登錄
-
建立個臨時 /etc/nologin 文件,系統(tǒng)就會禁止所有普通用戶登陸
-
刪除 /etc/nologin文件 或 重啟后 恢復正常可以正常登陸
[root@localhost ~]# touch /etc/nologin.
##禁止普通用戶登錄
[root@localhost ~]# rm -rf /etc/nologin
##取消上述登錄限制
七、系統(tǒng)弱口令檢測
1、 JR(Joth the Ripper)
- 一款密碼分析工具,支持字典式的暴力破解
- 通過對 shadow 文件的口令分析,可以檢測密碼強度
- 官網(wǎng)網(wǎng)站:http://www.openwall.com/john/
2、安裝JR工具
- 安裝方法:make clean 系統(tǒng)類型
- 主程序文件為 john
3、檢測弱口令賬號
- 獲得Linux/Unix服務器的shadow文件
- 執(zhí)行john程序,將shadow文件作為參數(shù)
4、密碼文件的暴力破解
- 準備好密碼字典文件,默認為password.lst
- 執(zhí)行john程序,結(jié)合–wordlist=字典文件
5、步驟示例
- 詳細操作指示
- 下面具體操作:
-
要切換到 /opt / john-1.8.0 / src 中進行make clean linux-x86-64 安裝
最后沒有破譯除密碼的原因是:文章來源:http://www.zghlxwxcb.cn/news/detail-817050.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-817050.html
-
重新操作就破譯出來了?。?!
八、網(wǎng)絡掃描(NMAP)
1、NMAP
- NMAP是一個強大的端口掃描類安全評測工具,支持ping掃描、多端口檢測等多種技術(shù)
安裝NMAP:
[root@localhost ~]# rpm -qa | grep nmap
[root@localhost ~]# yum install -y nmap
2、NMAP常用的選項和掃描類型
選項 | 說明 |
---|---|
-p | 指定掃描端口 |
-n | 禁用反向DNS解析(以加快掃描速度) |
-sS | TCP的SYN掃描(半開掃描),只向目標發(fā)出SYN數(shù)據(jù)包,如果收到SYN/ACK響應就認為目標端口正在監(jiān)聽,并立即斷開連接;否則認為目標端口并未開放 |
-sT | TCP連接掃描,這是完整的TCP掃描方式(默認掃描類型),用來建立一個TCP連接,如果成功則認為目標端口正在監(jiān)聽服務;否則認為目標端口并未開放 |
-sF | TCP的FIN掃描,開放的端口會忽略這種數(shù)據(jù)包,關(guān)閉的端口會回應RST數(shù)據(jù)包。許多防火墻只對SYN數(shù)據(jù)包進行簡單過濾,而忽略了其他形式的TCP攻擊包。這種類型的掃描可間接檢測防火墻的健壯性 |
-sU | UDP掃描,探測目標主機提供哪些UDP服務, UDP掃描的速度會比較慢 |
-sP | ICMP掃描,類似于ping檢測,快速判斷目標主機是否存活,不做其他掃描 |
-P0 | 跳過ping檢測,這種方式認為所有的目標主機是存活的,當對方不響應ICMP請求時,使用這種方式可以避免因無法ping通而放棄掃描 |
3、步驟示例
查看本機開放的TCP端口、UDP端口
[root@localhost ~]# nmap -sT 192. 168. 184. 10
[root@localhost ~]# nmap -sU 192. 168. 184. 10
檢測192.168.10.0/24網(wǎng)段有哪些主機提供http服務
[root@localhost ~]# nmap -p 80 192.168.10.0/24
檢測192.168.10.0/24網(wǎng)段有哪些存活主機
[root@localhost ~]# nmap -n -sP 192.168.10/24
九、控制臺命令(netstat)
[root@localhost ~]# netstat- natp
##查看正在運行的使用TCP協(xié)議的網(wǎng)絡狀態(tài)信息
[root@localhost ~]# netstat- naup
##查看正在運行的使用UDP協(xié)議的網(wǎng)絡狀態(tài)信息
netstat常用選項 | 說明 |
---|---|
-a | 顯示主機中所有活動的網(wǎng)絡連接信息(包括監(jiān)聽、非監(jiān)聽狀態(tài)的服務端口) |
-n | 以數(shù)字的形式顯示相關(guān)的主機地址、端口等信息 |
-t | 查看TCP協(xié)議相關(guān)的信息 |
-u | 顯示UDP協(xié)議相關(guān)的信息 |
-p | 顯示與網(wǎng)絡連接相關(guān)聯(lián)的進程號、進程名稱信息(該選項需要root權(quán)限) |
-r | 顯示路由表信息 |
-l | 顯示處于監(jiān)聽狀態(tài)的網(wǎng)絡連接及端口信息 |
到了這里,關(guān)于Linux——系統(tǒng)安全及應用(賬號安全、su命令、PAM認證、sudo命令、開關(guān)機安全機制、系統(tǒng)弱口令檢測、NMAP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!