linux 安全初始化

下面的這段Linux系統安全Shell腳本用於Linux系統的安全初始化腳本,能夠在服務器系統安裝完畢以後當即執行以快速創建起服務器的安全防禦。最初的腳本由曉輝撰寫,在數次修改以後已經大量應用在某大型媒體網站體系中。修改了一些bug,已經在CentOS 5.5 x86_64下經過,目前在一些沒有硬件防火牆的服務器上使用。
使用方法:將其複製,保存爲一個shell文件,好比security.sh。將其上傳到linux服務器上,執行sh security.sh,就可使用該腳本了。建議你們在系統初始化後當即執行,而後建立了用戶賬號和密碼後就不要再改動了,以避免影響重要文件的初始md5值。
腳本內容(如下內容爲了方便閱讀,對註釋進行了翻譯):
#!/bin/sh
# desc: setup linux system security
# author:coralzd
# powered by www.baidu.org.tw
# 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分鐘  【 Linux公社 www.Linuxidc.com 】
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處理能力(標識)的進程可以施加該選項。
應用實例:
一、用chattr命令防止系統中某個關鍵文件被修改
# chattr +i /etc/fstab
而後試一下rm mv rename等命令操做於該文件,都是獲得Operation not permitted 的結果
二、讓某個文件只能往裏面追加內容,不能刪除,一些日誌文件適用於這種操做
# chattr +a /data1/user_act.log
知識點[2]:爲什麼要設置5分鐘後自動登出
因爲客戶的維護人員經常登錄上去後經過直接關閉TERM端口非法退出telnet,形成系統的pts進程愈來愈多,一個月下來居然近百,當進程過多的時候系統就會產生報警。規範操做應該是用exit或者ctrl+D,可是其餘人並不這樣操做,因此咱們定義了echo 「TMOUT=300″ >>/etc/profile這一項內容,是讓服務器自動剔除300秒沒有任何動做的客戶端。固然了這一項你們能夠根據實際需求而決定是否添加。
 linux

相關文章
相關標籤/搜索