您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux服務器如何實現安全初始化Shell腳本”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux服務器如何實現安全初始化Shell腳本”這篇文章吧。
使用方法:將其復制,保存為一個shell文件,比如security.sh。將其上傳到linux服務器上,執行sh security.sh,就可以使用該腳本了。建議大家在系統初始化后立即執行,然后創建了用戶帳號和密碼后就不要再改動了,以免影響重要文件的初始md5值。
腳本內容(源腳本來自曉輝的博客。以下內容為了方便閱讀,對注釋進行了翻譯):
#!/bin/sh # desc: setup linux system security # author:coralzd # powered by www.freebsdsystem.org # version 0.1.2 written by 2011.05.03 #設置賬號 passwd -l xfs passwd -l news passwd -l nscd passwd -l dbus passwd -l vcsa passwd -l games passwd -l nobody passwd -l avahi passwd -l haldaemon passwd -l gopher passwd -l ftp passwd -l mailnull passwd -l pcap passwd -l mail passwd -l shutdown passwd -l halt passwd -l uucp passwd -l operator passwd -l sync passwd -l adm passwd -l lp # 用chattr給用戶路徑更改屬性。chattr命令用法參考文末說明[1] chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow # 設置密碼連續輸錯3次后鎖定5分鐘 sed -i 's#auth required pam_env.so#auth required pam_env.so\nauth required pam_tally.so onerr=fail deny=3 unlock_time=300\nauth required /lib/security/$ISA/pam_tally.so onerr=fail deny=3 unlock_time=300#' /etc/pam.d/system-auth # 5分鐘后自動登出,原因參考文末說明[2] echo "TMOUT=300" >>/etc/profile # 歷史命令記錄數設定為10條 sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile # 讓以上針對 /etc/profile 的改動立即生效 source /etc/profile # 在 /etc/sysctl.conf 中啟用 syncookie echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf sysctl -p # exec sysctl.conf enable # 優化 sshd_config sed -i "s/#MaxAuthTries 6/MaxAuthTries 6/" /etc/ssh/sshd_config sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config # 限制重要命令的權限 chmod 700 /bin/ping chmod 700 /usr/bin/finger chmod 700 /usr/bin/who chmod 700 /usr/bin/w chmod 700 /usr/bin/locate chmod 700 /usr/bin/whereis chmod 700 /sbin/ifconfig chmod 700 /usr/bin/pico chmod 700 /bin/vi chmod 700 /usr/bin/which chmod 700 /usr/bin/gcc chmod 700 /usr/bin/make chmod 700 /bin/rpm # 歷史安全 chattr +a /root/.bash_history chattr +i /root/.bash_history # 給重要命令寫 md5 cat > list << "EOF" && /bin/ping /usr/bin/finger /usr/bin/who /usr/bin/w /usr/bin/locate /usr/bin/whereis /sbin/ifconfig /bin/vi /usr/bin/vim /usr/bin/which /usr/bin/gcc /usr/bin/make /bin/rpm EOF for i in `cat list` do if [ ! -x $i ];then echo "$i not found,no md5sum!" else md5sum $i >> /var/log/`hostname`.log fi done rm -f list
知識點[1]:有關chattr命令
chattr命令可以修改文件屬性,達到保護文件和目錄的作用。相比改變文件讀寫、執行權限的chmod命令,chattr命令可以控制更底層的文件屬性。該命令十分強大,其中一些功能是由Linux內核版本來支持的,如果Linux內核版本低于2.2,那么許多功能不能實現。同樣-D檢查壓縮文件中的錯誤的功能,需要2.5.19以上內核才能支持。另外,通過chattr命令修改屬性能夠提高系統的安全性,但是它并不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。
此類屬性的查看可以通過lsattr命令完成。
chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files...
最關鍵的是在[mode]部分,,即文件屬性部分。[mode]部分是由+-=和[ASacDdIijsTtu]這些字符組合的。
+ :在原有參數設定基礎上,追加參數。
- :在原有參數設定基礎上,移除參數。
= :更新為指定參數設定。
A:文件或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁盤I/O錯誤的發生。
S:硬盤I/O同步選項,功能類似sync。
a:即append,設定該參數后,只能向文件中添加數據,而不能刪除,多用于服務器日志文 件安全,只有root才能設定這個屬性。
c:即compresse,設定文件是否經壓縮后再存儲。讀取時需要經過自動解壓操作。
d:即no dump,設定文件不能成為dump程序的備份目標。
i:設定文件不能被刪除、改名、設定鏈接關系,同時不能寫入或新增內容。i參數對于文件 系統的安全設置有很大幫助。
j:即journal,設定此參數使得當通過mount參數:data=ordered 或者 data=writeback 掛 載的文件系統,文件在寫入時會先被記錄(在journal中)。如果filesystem被設定參數為 data=journal,則該參數自動失效。
s:保密性地刪除文件或目錄,即硬盤空間被全部收回。
u:與s相反,當設定為u時,數據內容其實還存在磁盤中,可以用于undeletion.
各參數選項中常用到的是a和i。a選項強制只可添加不可刪除,多用于日志系統的安全設定。而i是更為嚴格的安全設定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標識)的進程能夠施加該選項。
應用實例:
1、用chattr命令防止系統中某個關鍵文件被修改
# chattr +i /etc/fstab
然后試一下rm mv rename等命令操作于該文件,都是得到Operation not permitted 的結果
2、讓某個文件只能往里面追加內容,不能刪除,一些日志文件適用于這種操作
# chattr +a /data1/user_act.log
以上是“Linux服務器如何實現安全初始化Shell腳本”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。