Linux伺服器通用安全加固指南
內容一:
基本系統安全
1、保護引導過程
在/etc/inittab中新增sp:S:respawn:/sbin/sulogin,以確保當切換到單使用者模式時執行級的配置要求輸入root密碼:vim /etc/inittab
防止使用者使用Ctrl-Alt-Del進行重新引導:
在RHEL6.X和CentOS6.X下,該熱鍵的行為由'/etc/init/control-alt-delete.conf'控制。
註釋掉原來的改成:exec/usr/bin/logger-pauthpriv.notice-tinit"Ctrl-Alt-Delwaspressedandignored",這個配置會在每次按下Ctrl-Alt-Del時輸出日誌。
提示:在終端登入的情況下,看不到效果,只有在機器面前,按下鍵盤上的Ctrl+Alt+del鍵,才會在/var/log/message裡面看到輸出日誌
2、
關閉不使用的服務
首先檢視哪些服務是開啟的,使用命令:chkconfig --list |grep '3:on'
關閉郵件服務,使用公司郵件伺服器:
#service postfix stop
#chkconfig postfix --level 2345 off
關閉nfs服務及客戶端:
service netfs stop
chkconfig netfs --level 2345 off
service nfslock stop
chkconfig nfslock --level 2345 off
3、給下面的檔案加上不可更改屬性,從而防止非授權使用者獲得許可權。
chattr +i/etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i/etc/services #給系統服務埠列表檔案加鎖,防止未經許可的刪除或新增服務
chattr +i /etc/pam.d/su
chattr +i/etc/ssh/sshd config
注意:執行以上 chattr 許可權修改之後,就無法新增刪除使用者了。在後面的實驗過程中,如果修改不了上面設定過的檔案,記得取消只讀許可權chattr -i。
如果再要新增刪除使用者,需要先取消上面的設定,等使用者新增刪除完成之後,再執行上面的操作,例如取消只讀許可權chattr -i /etc/passwd。(記得重新設定只讀)
4、強制實行配額和限制:
Linux PAM(插入式認證模組,Pluggable Authentication Modules)可以強制實行一些實用的限制,在 /etc/security/limits.conf 檔案中對此進行配置。
謹記,這些限制適用於單個對話。您可以使用 maxlogins 來控制總額限制。limits.conf 中的條目有如下結構: username|@groupname type resource limit。
為了與 username 區別,groupname 之前必須加 @。型別必須是 soft 或者 hard。軟限制(soft-limit)可以 被超出,通常只是警戒線,而硬限制(hard-limit)不能被超出。resource 可以 是下面的關鍵字之一:
core - 限制核心檔案的大小(KB)
data - 最大資料大小(KB)
fsize - 最大檔案大小(KB)
memlock - 最大鎖定記憶體地址空間(KB)
nofile - 開啟檔案的最大數目
rss - 最大持久設定大小(KB)
stack - 最大棧大小(KB)
cpu - 以分鐘為單位的最多 CPU 時間
nproc - 程序的最大數目
as - 地址空間限制
maxlogins - 此使用者允許登入的最大數目
下面的程式碼示例中,所有使用者每個會話都限制在 10 MB,並允許同時有四個登入。第三行禁用了每個人的核心轉儲。第四行除去了使用者 bin 的所有限制。ftp 允許有 10 個併發會話(對匿名 ftp 帳號尤其實用);managers 組的成員的程序數目限制 為 40 個。developers 有 64 MB 的 memlock 限制,wwwusers 的成員不能建立大於 50 MB 的檔案。
* hard rss 10000
* hard maxlogins 4
* hard core 0
bin -
ftp hard maxlogins 10
@managers hard nproc 40
@developers hard memlock 64000
@wwwusers hard fsize 50000
要啟用這些限制,需要在/etc/pam.d/login底部新增下面一行:sessionrequired/lib/security/pam_limits.so。
要為檔案系統啟用配額,必須在/etc/fstab中為相應的那行新增一個選項。使用usrquota和grpquota來啟用使用者配額和組配額,像下面這樣:
/dev/hda1/ext3defaults11
/dev/hda2/homeext3defaults,usrquota11
/dev/hda3/tmpext3defaults,usrquota,grpquota111
/dev/hda4/sharedext3defaults,grpquota11
/dev/hdc1/mnt/cdromiso9660nosuid,user12
然後,使用mount-a-oremount重新掛載相應的檔案系統,來啟用剛才新增的選項;然後使用quotacheck-cugvm建立一個二進位制配額檔案,其中包含了機器可讀格式的配額配置。這是配額子系統要操作的檔案。然後使用edquota-uusername為具體的使用者配額。
二、使用者安全
1、禁用不使用的使用者
注意:不建議直接刪除,當你需要某個使用者時,自己重新新增會很麻煩。也可以usermod-L或passwd-luser鎖定。
cp/etc/passwd{..bak}修改之前先備份
vi/etc/passwd編輯使用者,在前面加上#註釋掉此行
示例:
註釋的使用者名稱:
#cat/etc/passwd|grep^#
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:Ip:/var/spool/lpd:/sbinynologin
#shutdown:x:6:0O:shutdown:/sbin:/sbin/shutdown
#halt:x:7:O:halt/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbinVnologin
#operatorx:11:O:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:5O:FTPUser:/var/ftp:/sbin/nologin
#nfsnobodyxc:65534:65534:AnonymousNFSUser:/var/lib/nfs:/sbin/nologin#postfix:x:89:89:/var/spool/postfix:/sbin/nologin
註釋的組:
#cat/etc/grouplgrep^#
#adm:x:4:adm,daemon#lp;x:7:daemon
#uucp:x:14:
#games:x:20:
#gopher:x:30:t
#video:x:39:
#dip:x:40:
#ftp:x:50:
#audio:x:63:
#floppy:x:19:
2、ssh登陸安全
(1)修改ssh的預設埠22,改成如20002這樣的較大埠會大幅提高安全係數,降低ssh破解登入的可能性。
(注意:本實驗環境不允許修改ssh埠,否則會造成服務斷開)
找到SSh服務配置檔案路徑一般都是在/etc/ssh這個目錄下面sshd_config這個檔案,在“#Port22”這一行下面新增一行,內容為port埠號。
然後重啟ssh服務即可。
(2)只允許wheel使用者組的使用者su切換
#usermod-Gwheelsysmgr
#vi/etc/pam.d/su
#Uncommentthefollowinglinetorequireausertobeinthe"wheel"group.auth
requiredpam_wheel.souse_uid
其他使用者切換root,即使輸對密碼也會提示su:incorrectpassword
(3)登入超時
使用者線上5分鐘無操作則超時斷開連線,在/etc/profile中新增:
exportTMOUT=300
readonlyTMOUT
(4) 禁止root直接遠端登入
#vi/etc/ssh/sshd_config
PermitRootLoginno
(5)限制登入失敗次數並鎖定
在/etc/pam.d/login後新增:authrequiredpam_tally2.sodeny=6unlock_time=180even_deny_rootroot_unlock_time=188
登入失敗5次鎖定180秒,根據需要設定是否包括root。
3、減少history命令記錄
執行過的歷史命令記錄越多,從一定程度上講會給維護帶來簡便,但同樣會伴隨安全問題。
vi/etc/profile
找到HISTSIZE=1000改為HISTSIZE=50。
執行 source /etc/profile生效或每次退出時清理history命令:history–c。
三、網路安全
1、禁用ipv6
IPv6是為了解決IPv4地址耗盡的問題,但我們的伺服器一般用不到它,反而禁用IPv6不僅僅會加快網路,還會有助於減少管理開銷和提高安全級別。以下幾步在CentOS上完全禁ipv6。
禁止載入IPv6模組:讓系統不載入ipv6相關模組,這需要修改modprobe相關設定檔案,為了管理方便,我們新建設定檔案/etc/modprobe.d/ipv6off.conf,內容如下:
aliasnet-pf-10off
optionsipv6disable=1
禁用基於IPv6網路,使之不會被觸發啟動:
#viletc/sysconfig/network
NETwORKING_IPV6=no
禁用網絡卡IPv6設定,使之僅在IPv4模式下執行:
vi/etc/sysconfig/network-scripts/ifcfg-etho
IPV6INIT=no
IPV6_AUTOCONF=no
關閉ip6tables:
chkconfigip6tablesoff
重啟系統,驗證是否生效:
1smodlgrepipv6ifconfig
grep-iinet6
如果沒有任何輸出就說明IPv6模組已被禁用,否則被啟用。
2、防止一般網路攻擊
網路攻擊不是幾行設定就能避免的,以下都只是些簡單的將可能性降到最低,增大攻擊的難度但並不能完全阻止。
(1)禁ping
阻止ping如果沒人能ping通您的系統,安全性自然增加了,可以有效的防止ping洪水。為此,可以在/etc/rc.d/rc.local檔案中增加如下一行:echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
或使用iptable禁ping,當然前提是你啟用了iptables防火牆。
iptables-AINPUT-picmp--icmp-type0-se/0-jDROP不允許ping其他主機:
iptables-AOUTPUT-picmp--icmp-type8-jDROP
(2)防止IP欺騙
編輯/etc/host.conf檔案並增加如下幾行來防止IP欺騙攻擊:
orderhosts,bind#名稱解釋順序
multion#允許主機擁有多個IP地址
nospoofon#禁止IP地址欺騙
(3)防止DoS攻擊
對系統所有的使用者設定資源限制可以防止DoS型別攻擊,如最大程序數和記憶體使用數量等。
可以在/etc/security/limits.conf中新增如下幾行:
*softcore0
*softnproc2048
*hardnproc16384
*softnofile1024
*hardnofile65536
core0表示禁止建立core檔案;nproc128把最多的程序數限制到20;nofile64表示把一個使用者同時開啟的最大檔案數限制為64;*表示登入到系統的所有使用者,不包括root。
然後必須編輯/etc/pam.d/login檔案檢查下面一行是否存在:
sessionrequiredpam_limits.so
limits.conf引數的值需要根據具體情況調整。
3、定期做日誌檢查
將日誌移動到專用的日誌伺服器裡,這可避免入侵者輕易的改動本地日誌。下面是常見linux的預設日誌檔案及其用處
/var/log/message-記錄系統日誌或當前活動日誌。
/var/log/auth.log-身份認證日誌。
/var/log/cron-Crond日誌(cron任務).
/var/log/maillog-郵件伺服器日誌。
/var/log/secure-認證日誌。
/var/log/wtmp歷史登入、登出、啟動、停機日誌和,lastb命令可以檢視登入失敗的使用者
/var/run/utmp當前登入的使用者資訊日誌,w、who命令的資訊便來源與此
/var/log/yum.logYum日誌。