亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux服務器安全策略配置-SSH與動態MOTD(一)

發布時間:2020-06-07 13:14:34 來源:網絡 閱讀:12179 作者:HMLinux 欄目:建站服務器

Linux登錄提示(靜態/動態MOTD)

在用戶輸入口令或使用密鑰成功登錄后,讓服務器自動為我們執行幾個簡單的操作,如打印提示信息,打印異常信息,執行一個腳本,或者發送郵件等。能夠預先提示信息給登錄者,讓我們在登錄機器采取任何操作之前,可以快速的了解這臺機器的重要信息。看起來是不是很有意思呢? 也許我們會想,這對于服務器的安全加固并沒有直接的影響,而且每次剛剛登錄就執行一系列命令、腳本(如收集服務器資源使用情況的信息),似乎也有點多余。因此,如果是在生產環境的Linux服務器并且需要配置登錄提示,諸如登錄執行命令、腳本等這些操作,我們不必為此寫一個復雜的、龐大的腳本,腳本的執行時間很關鍵,如果你不想在正確輸入登錄密碼后仍需等待幾秒或更長的時間,那么,盡可能地把腳本的執行耗時優化到幾毫秒,甚至更低。(登錄后的提示或操作盡可能簡單的、有利的是最好的。如果你想這么做)


    在大多數Linux分發版中,可以直接修改/etc/motd文件來定制任何想要的提示信息,修改方法是將需要打印的提示消息文件粘貼到該文件中即可(一些可執行命令或腳本在文件中僅僅被當作是普通字符/文本)/etc/motd內的文本消息是固定不變,除非我們手動修改它。因此,在/etc/motd中定制的消息是靜態MOTD


    如果你使用過Debian/Ubuntu分發版,你可能已經發現,Ubuntu默認就已經有一個動態的MOTD信息提示(通過SSH或本地登錄時顯示系統當前的一些信息)。在RHEL/CentOS中不可能實現像在Debian/Ubuntu中這樣的功能,因為RHEL/CentOS并沒有提供與之相關的任何腳本。我們可以通過環境變量文件,如/etc/profile/etc/bashrc等,將需要執行的命令或腳本添加到這些文件末尾,這樣當每次用戶登陸時,系統就會讀取這些文件,執行文件里定義好的腳本。除此之外,也可以結合使用crontab計劃任務,將預先準備好的腳本,如系統監控,異常信息收集通過crontab在后臺定期執行,并把收集到的信息重定向寫到/etc/motd文件中。在用戶登錄系統時,就可以顯示這些系統監控、異常處理信息了。


    在Ubuntu中,提供了一組腳本在目錄/etc/update-motd.d/中,在用戶登錄時,按照腳本名字前綴的數字(00-99)順序執行,并將這些腳本的輸出保存到文件/run/motd.dynamic中,最終用戶成功登錄后,在登錄的屏幕界面中打印出來。輸出結果如下圖所示

Linux服務器安全策略配置-SSH與動態MOTD(一)

/etc/update-motd.d/腳本列表:

00-header  

10-help-text  

50-landscape-sysinfo  

90-updates-available  

91-release-upgrade  

98-fsck-at-reboot  

98-reboot-required

以上是在Ubuntu 14.04 LTS中默認的提供動態MOTD消息的腳本,這些腳本可以修改,也可以增加自己的腳本。比如替換為自己的定制好的腳本。


下面我給出在RHEL/CentOS中定制MOTD的幾個簡單操作示例:

打印提示信息,執行一個腳本,或者發送郵件

任何用戶遠程或本地登錄后打印提示信息(如提示登錄者這是一臺重要的服務器,要求登錄者謹慎操作)


>> 開啟SSH服務打印MOTD消息,配置文件/etc/ssh/sshd_config,確認是否如下配置(默認為yes)

PrintMotd yes


>> 修改/etc/motd文件,將提示消息粘貼到該文件中

[root@localhost ~]# cat /etc/motd 
***************************************************
* 注意: 這是一臺重要的生產服務器,請謹慎操作!!  *
*       如需要重啟/關閉服務器,請先將NFS卸載      *
***************************************************

>> 保存之后,使用SSH登錄該服務器,輸入正確的賬號密碼之后,提示如下

Linux服務器安全策略配置-SSH與動態MOTD(一)

當然,僅僅像這樣簡單的提示遠遠不夠,我們可以根據這臺服務器的特征、運行的服務、文件系統信息以及重要的細節信息等打印出來,讓其他的IT人員登錄該服務器時,在采取任何操作之前,可以快速的掌握這臺服務器的重要信息。也可以起到一個警惕的作用。你可以根據自己的情況定制。


RHEL/CentOS中打印動態MOTD提示

>> 任何用戶通過SSH遠程登錄打印提示如下

Linux服務器安全策略配置-SSH與動態MOTD(一)


>> 創建系統信息收集腳本

[root@HMing ~]# vim /usr/src/scripts/system_info.sh 
#!/bin/bash
 
date=`date "+%F %T"`
head="System information as of: $date"
 
kernel=`uname -r`
hostname=`echo $HOSTNAME`
 
#Cpu load
load1=`cat /proc/loadavg | awk '{print $1}'`
load5=`cat /proc/loadavg | awk '{print $2}'`
load15=`cat /proc/loadavg | awk '{print $3}'`
 
#System uptime
uptime=`cat /proc/uptime | cut -f1 -d.`
upDays=$((uptime/60/60/24))
upHours=$((uptime/60/60%24))
upMins=$((uptime/60%60))
upSecs=$((uptime%60))
up_lastime=`date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"`
 
#Memory Usage
mem_usage=`free -m | awk '/Mem:/{total=$2} /buffers\/cache/ {used=$3} END {printf("%3.2f%%",used/total*100)}'`
swap_usage=`free -m | awk '/Swap/{printf "%.2f%",$3/$2*100}'`
 
#Processes
processes=`ps aux | wc -l`
 
#User
users=`users | wc -w`
USER=`whoami`
 
#System fs usage
Filesystem=$(df -h | awk '/^\/dev/{print $6}')
 
#Interfaces
INTERFACES=$(ip -4 ad | grep 'state ' | awk -F":" '!/^[0-9]*: ?lo/ {print $2}')
 
echo
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "$head"
echo "----------------------------------------------"
printf "Kernel Version:\t%s\n" $kernel
printf "HostName:\t%s\n" $hostname
printf "System Load:\t%s %s %s\n" $load1, $load5, $load15
printf "System Uptime:\t%s "days" %s "hours" %s "min" %s "sec"\n" $upDays $upHours $upMins $upSecs
printf "Memory Usage:\t%s\t\t\tSwap Usage:\t%s\n" $mem_usage $swap_usage
printf "Login Users:\t%s\t\t\tWhoami:\t\t%s\n" $users $USER
printf "Processes:\t%s\n" $processes
printf "\n"
printf "Filesystem\tUsage\n"
for f in $Filesystem
do
    Usage=$(df -h | awk '{if($NF=="'''$f'''") print $5}')
    echo -e "$f\t\t$Usage"
done
printf "\n"
printf "Interface\tMAC Address\t\tIP Address\n"
for i in $INTERFACES
do
    MAC=$(ip ad show dev $i | grep "link/ether" | awk '{print $2}')
    IP=$(ip ad show dev $i | awk '/inet / {print $2}')
    printf $i"\t\t"$MAC"\t$IP\n"
done
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo


>> 給腳本增加執行權限

[root@HMing ~]# chmod +x /usr/src/scripts/system_info.sh


>> 將腳本的路徑名添加到/etc/profile文件末尾

[root@HMing ~]# tail -1 /etc/profile
/usr/src/scripts/system_info.sh


任何用戶遠程或本地登錄后發送郵件信息

>> 演示如下

Linux服務器安全策略配置-SSH與動態MOTD(一)


>> 發送郵件如下

Linux服務器安全策略配置-SSH與動態MOTD(一)

>> 創建一個發送郵件的腳本/usr/src/scripts/my-server-login-mail,如下

#!/bin/bash
smtp=smtp.163.com
smtp_auth_user=xxxxxx
smtp_auth_password=xxxxxxxxxx
from=xxxxxxxx@163.com
 
function HEAD {
    Kernel_version=`uname -r`
    Login_user=`last -a | grep "logged in" | wc -l`
    Up_lastime=`date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"`
    Up_runtime=`cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second
=$1 % 60;printf("%d天%d時%d分%d秒",run_days,run_hour,run_minute,run_second)}'`
    Last_user=`last | awk '(/pts/) && (/-/){print "User: "$1" - ""OlineTime: "$NF" - ""IP: "$3" - ""LoginTime: "$4" "$5" "$6" "
$7}'| head -1 | sed -e 's/(//g' -e 's/)//g'`
    echo -e ""
    echo -e "\
    郵件提示: 未知身份來源使用${USER}用戶登錄系統 
    -------------------------------------------------------------
                            System information
    主機名: $HOSTNAME
    內核版本: $Kernel_version
    系統已運行時間: $Up_runtime
    上一次重啟時間: $Up_lastime
    當前登入用戶數: $Login_user
    上一次登入用戶: $Last_user
    -------------------------------------------------------------
    "
};HEAD >/tmp/.loginmail
 
title="主機:`echo $HOSTNAME`登錄提示 (`date "+%F %T"`)"
body=`cat /tmp/.loginmail`
to=741616710@qq.com
 
sendEmail -s "$smtp" -xu "${smtp_auth_user}" -xp "${smtp_auth_password}" -f "$from" -t "$to" -u "$title" -m "$body" &>/dev/null
 && rm -rf /tmp/.loginmail

Linux發送郵件的程序有很多,在這里我用的是sendEmail,你也可以使用其他的發送郵件程序。


>> 將腳本絕對路徑名添加到/etc/profile文件末尾

[root@HMing ~]# tail -1 /etc/profile
/usr/src/scripts/my-server-login-mail


結語

   動態的MOTD在Ubuntu中是開箱即用的,因為它已經被集成為系統的一個模塊,通過pam_motd.so調用。不過,我們可以隨時修改系統上預先配置好的腳本,將腳本放到/etc/update-motd.d/目錄中,比如收集系統異常信息腳本,在用戶登錄時,將在第一時間反饋給用戶,或者是系統登錄記錄的實時監控,通過發生郵件給用戶,用戶可以快速掌握服務器是否存在被***的情況。對于RHEL/CentOS發行版,我在文中也給出了幾個簡單的演示示例,實現動態MOTD。有興趣同學的可以作為參考。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳区| 渭源县| 洞口县| 万年县| 拜泉县| 香港| 资兴市| 皮山县| 修文县| 高淳县| 临猗县| 贵港市| 博湖县| 准格尔旗| 新邵县| 开原市| 栾川县| 吉首市| 治多县| 交城县| 望奎县| 登封市| 江阴市| 鸡泽县| 崇明县| 陵川县| 平泉县| 高阳县| 鹤庆县| 东兰县| 定远县| 芮城县| 红桥区| 增城市| 天津市| 花垣县| 游戏| 衡东县| 屯门区| 温州市| 梁河县|