Linux系統(tǒng)安全 非活躍會話自動斷開連接機(jī)制
場景:服務(wù)器經(jīng)常被網(wǎng)絡(luò)中各系統(tǒng)的很多個用戶訪問,某些用戶使用完畢后忘記登出會話.
留下一個處于連接狀態(tài)的session是一件非常危險的事情,作為一名系統(tǒng)管理員,如果去檢查每個系統(tǒng)用戶是否有登出,這根本不現(xiàn)實,要知道網(wǎng)絡(luò)中有成百上千臺機(jī)器.
此時就需要設(shè)置用戶在本機(jī)或通過SSH登陸服務(wù)器超過一定時間不活躍便自動斷開連接的機(jī)制.
以下為實驗過程.
實驗系統(tǒng):rhel 8.4
以下介紹三種實現(xiàn)方法.
方法 1:
編輯~/.bashrc或~/.bash_profile文件:
$ vi~/.bashrc
或
$ vi~/.bash_profile
將下面行加入其中:
TMOUT=100
說明:用戶在停止動作 100 秒后自動登出.
運行下面命令讓更改生效:
$ source~/.bashrc
或
$ source~/.bash_profile
現(xiàn)在讓會話閑置100秒,會看到下面這段信息,并且用戶會自動退出會話.
[oracle@dbserver~]$ timed out waiting for input: auto-logout
[root@dbserver~]#
不過該設(shè)置可以輕易地被用戶所修改,因為~/.bashrc文件被用戶自己所擁有.
要修改或者刪除超時設(shè)置,只需要刪掉上面添加的行,然后執(zhí)行source~/.bashrc命令讓修改生效.
此外,用戶也可以運行下面命令來禁止超時:
$ exportTMOUT=0
或,
$ unsetTMOUT
若想阻止用戶修改該設(shè)置,使用方法2.
方法2:
以root用戶登錄,創(chuàng)建一個名為autologout.sh的新文件.
# vi/etc/profile.d/autologout.sh
加入下面內(nèi)容:
TMOUT=60
readonlyTMOUT
exportTMOUT
添加可執(zhí)行權(quán)限:
# chmod+x /etc/profile.d/autologout.sh
現(xiàn)在登出或重啟系統(tǒng),非活動用戶就會在60秒后自動登出.
說明:該修改對當(dāng)前已開啟的會話不會產(chǎn)生影響,只會對新開的session生效.
普通用戶即使想保留會話連接但也無法修改該配置,他們會在60秒后強(qiáng)制退出.
這兩種方法本地登錄的用戶和遠(yuǎn)程系統(tǒng)上通過SSH登錄的用戶都有效.
下面實現(xiàn)只自動登出非活動的SSH會話,而不自動登出本地服務(wù)器上的會話.
方法3:
編輯/etc/ssh/sshd_config文件
# vi/etc/ssh/sshd_config
添加/修改下面行:
ClientAliveInterval60
ClientAliveCountMax0
保存并退出該文件,重啟 sshd 服務(wù).
#systemctl restart sshd
現(xiàn)在,在遠(yuǎn)程系統(tǒng)通過ssh登錄該系統(tǒng),60秒后ssh會話就會自動關(guān)閉.
出現(xiàn)以下信息:
[oracle@dbserver~]$
Socketerror Event: 32 Error: 10053.
Connectionclosing...Socket close.
Connectionclosed by foreign host.
Disconnectedfrom remote host(192.168.133.120) at 12:32:49.
