1. 程式人生 > 其它 >Linux伺服器通用安全加固指南

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日誌。