LINUX安全加固规范
1概述
近幾年來Internet變得更加不安全了。網絡的通信量日益加大,越來越多的重要交易正在通過網絡完成,與此同時數據被損壞、截取和修改的風險也在增加。
只要有值得偷竊的東西就會有想辦法竊取它的人。Internet的今天比過去任何時候都更真實地體現出這一點,基于Linux的系統也不能擺脫這個“普遍規律”而獨善其身。因此,優秀的系統應當擁有完善的安全措施,應當足夠堅固、能夠抵抗來自Internet的侵襲,這正是Linux之所以流行并且成為Internet骨干力量的主要原因。但是,如果你不適當地運用Linux的安全工具,它們反而會埋下隱患。配置拙劣的安全系統會產生許多問題,本文將為你解釋必須掌握的Linux安全知識。 本文講述了如何通過基本的安全措施,使Linux系統變得可靠。
2 安裝
使系統處于單獨(或隔離)的網絡中。以防止未受保護的系統連接到其它網絡或互聯網中受到可能的攻擊
安裝完成后將下面軟件卸載
用下面的命令卸載這些軟件:
[root@deep]#rpm –e softwarename卸載它們之前最好停掉三個進程:
[root@deep]# /etc/rc.d/init.d/apmd stop [root@deep]# /etc/rc.d/init.d/sendmail stop [root@deep]# /etc/rc.d/init.d/kudzu stop3 用戶帳號安全Password and account security
3.1 密碼安全策略
- 口令至少為6位,并且包括特殊字符
- 口令不要太簡單,不要以你或者有關人的相關信息構成的密碼,比如生日、電話、姓名的拼音或者縮寫、單位的拼音或者英文簡稱等等。
- 口令必須有有效期
- 發現有人長時間猜測口令,需要更換口令
3.2 檢查密碼是否安全
可以使用以下幾種工具檢查自己的密碼是否安全:
- JOHN,crack等暴力猜測密碼工具
- 在線窮舉工具,包括Emailcrk、流光等
3.3 Password Shadowing
- 使用shadow來隱藏密文(現在已經是默認配置)
- 定期檢查shadow文件,如口令長度是否為空。
#awk -F: length($2)==0 {print $1} /etc/shadow - 設置文件屬性和屬主
3.4 管理密碼
- 設置口令有效最長時限 (編輯/etc/login.defs文件)
- 口令最短字符 (如linux默認為5,可以通過編輯/etc/login.defs修改)
- 只允許特定用戶使用su命令成為root。
編輯/etc/pam.d/su文件,在文件頭部加上:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
Red hat 7.0中su文件已做了修改,直接去掉頭兩行的注釋符就可以了
[root@deep]# usermod -G10 admin 來將用戶加入wheel組
3.5 其它
- 清除不必要的系統帳戶
- 盡量不要在passwd文件中包含個人信息,防止被finger之類程序泄露。
- 修改shadow,passwd,gshadow文件不可改變位
- 不要使用.netrc文件,可以預先生成$HOME/.netrc。設置為0000。
touch /.rhosts ;chmod 0 /.rhosts - 使用ssh來代替telnetd,ftpd.pop等通用服務。傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據。
4 網絡服務安全(Network Service Security)
Linux系統對外提供強大、多樣的服務,由于服務的多樣性及其復雜性,在配置和管理這些服務時特別容易犯錯誤,另外,提供這些服務的軟件本身也存在各種漏洞,所以,在決定系統對外開放服務時,必須牢記兩個基本原則:
- 只對外開放所需要的服務,關閉所有不需要的服務。對外提供的服務越少,所面臨的外部威脅越小。
- 將所需的不同服務分布在不同的主機上,這樣不僅提高系統的性能,同時便于配置和管理,減小系統的安全風險。
在上述兩個基本原則下,還要進一步檢查系統服務的功能和安全漏洞。
這里針對主機所提供的服務進行相應基本安全配置,某些常用服務的安全配置請參考相關文檔。
4.1服務過濾Filtering
- 在SERVER上禁止這些服務
- 如果一定要開放這些服務,通過防火墻、路由指定信任IP訪問。
- 要確保只有真正需要的服務才被允許外部訪問,并合法地通過用戶的路由器過濾檢查。尤其在下面的服務不是用戶真正需要時候,要從路由器上將其過濾掉
注意:有些UDP服務可以導致DOS攻擊和遠程溢出,如
rpc.ypupdated rpcbind rpc.cmsd 100068 rpc.statd 100024 rpc.ttdbserver 100083 sadmind 100232/10- 配置完成以后,利用網絡掃描器模擬入侵者從外部進行掃描測試。如利用nmap
4.2 /etc/inetd.conf
- 確保文件權限設置為600
- 確保文件屬主設置為root
- 注釋掉所有不需要的服務,需要重新啟動inetd進程
- 使用netstat –an命令,查看本機所提供的服務。確保已經停掉不需要的服務
4.3 R 服務
不必使用R服務
- 關閉R服務,Red hat 6.2在/etc/inetd.conf文件中注釋以下服務,并且重新啟動inetd服務。Red hat 7.0在/etc/xinetd.d目錄中刪除
exec 512 TCP
Rlogin 513 TCP
Rshell 514 TCP - 預先生成$HOME/.rhosts,/etc/hosts.equiv文件,并且設置為0000,防止被寫入”+ +”。(攻擊者經常使用類似符號鏈接或者利用ROOTSHELL寫入,并且遠程打開受保護主機的R服務)
必須使用R服務
使用更安全版本的r服務。如Wietse Venema的logdaemon程序等。
- 在路由或者防火墻上禁止外部網絡訪問受保護主機的512,513 and 514 (TCP)端口。
- 使用TCP WRAPPERS設置可訪問受保護主機R服務的信任機器。
4.4 Tcp_wrapper
該軟件的作用是在Unix平臺上過濾TCP/UDP服務,它目前已被廣泛用于監視并過濾發生在主機上的ftp、telnet、rsh、rlogin、tftp、finger等標準TCP/UDP服務。
當系統安裝TCP_wrapper之后,in.conf文件中 /usr/sbin/in.telnetd的in.telnetd會被TCP_wrapper附帶的tcpd程序取代。該程序截獲來自客戶端的服務請求、記錄請求發生的時間和IP地址,并按訪問控制進行檢查。當本次連接的用戶、請求源的IP等信息符合管理員的預設值時,才將該次請求傳遞給系統in.telnetd,由系統in.telnetd完成后續工作;若連接不符合要求,該連接請求將被拒絕。同樣,ftp、 rsh等TCP/UDP服務均可被tcpd取代,由tcpd充當二傳手。
- 使用PARANOID 模式,用此參數后需要在/etc/hosts文件中加上允許使用telnet或ftp服務的客戶端的名字和IP地址
- 在/etc/hosts.deny中設置為all:all,默認所有不允許
Access is denied by default.
Deny access to everyone.
ALL: ALL@ALL, PARANOID #Matches any host whose name does not match its address, see
bellow. - 在/etc/hosts.allow中設置允許的服務和地址
如:sshd: 208.164.186.1 gate.openarch.com - 使用tcpdchk檢查
- UDP服務使用tcpwrapper時要使用/etc/inetd.conf中的nowait選項。
4.5 /etc/hosts.equiv 文件
不必使用/etc/hosts.equiv文件
- 從系統中刪除此文件
- 預先生成/etc/hosts.equiv文件,并且設置為0000,防止被寫入”+ +”。(攻擊者經常使用類似符號鏈接或者利用ROOTSHELL寫入,并且遠程打開受保護主機的R服務)
必須使用/etc/hosts.equiv文件
- 確保此文件中可信賴主機為必須的。
- 預先生成/etc/hosts.equiv文件,并且設置為0000,防止被寫入”+ +”。(攻擊者經常使用類似符號鏈接或者利用ROOTSHELL寫入,并且遠程打開受保護主機的R服務)
- 如果使用NIS或者NIS+的話,此文件中的組應該是容易管理的。
- 信賴主機必須確保可靠
- 信賴主機使用全名,如例如 hostname.domainname.cn
- 任何時候都不應該出現”+”字符,因為這樣會使任何一臺主機上的任何用戶都可以不加口令地訪問系統
- 文件中不要使用’!’ 和’#'符號,因為在該文件中那并不表示注釋信息
- 文件開始字符不應該為’-’.,請查閱C8
- 確保該文件的訪問權限被設置成600
- 文件屬主確保為ROOT
- 在每次安裝補丁程序或操作系統之后,都應該重新檢查該文件夾的設置情況
4.6 /etc/services
- 確保文件權限設置為600
- 確保文件屬主設置為root
- 如果需要提供一些常見服務,如telnetd等,可以在此修改端口
此文件為端口號和服務的對應關系,給此文件加上保護,避免沒有授權的修改和刪除
[root@deep]# chattr +i /etc/services
4.7 /etc/aliases
- 修改/etc/aliases文件,注釋掉"decode" "games,ingress,system,toor,manager,….”.等
- 使用/usr/bin/newaliases命令激活新配置
- 確保文件權限設置為755
- 確保文件屬主設置為root
4.8 NFS
NFS文件系統應注意以下幾方面的安全
- 在外部路由上過濾端口111、2049 (TCP/UDP),不允許外部訪問。
- 檢查PATCH更新情況。
- 檢查 /etc/exports 輸出路徑的權限,確定只有root能修改, all user只能read
- 用exportfs 去增加或刪除directories
exportfs -o access=engineering,ro=dancer /usr
exportfs -u /usr - 假如你的機器沒有NIS(YP server)的服務,當更改資料時記得修改
/etc/passwd
/etc/group
/etc/hosts
/etc/ethers - 不允許export出去包含本地入口的目錄
- 確定對方機器是完全可信賴的。使用全名
- 確保輸出列表沒有超過256個字符。
- 使用showmount –e命令查看自己的export設置
- 將/etc/exports權限設置為644,屬主為root
- 使用noexec,nodev.nosuid等選項控制mount的文件系統,在/etc/fstab中設置。
4.9 Trivial ftp (tftp)
無論何種情況下都不應該啟動這個服務進程。
4.10 Sendmail
sendmail提供了許多在編譯期間選擇的功能特性。通常情況下,按照其缺省配置,即可滿足一般用戶的需要。但是,了解研究其提供的特性,可以實現對sendmail許多功能的更為準確的配置使用。從網絡安全的角度考慮,通過合理地配置有關特性,可以在提供服務和保證安全之間找到更為準確的平衡點(配置特性的方法是將需要的特性加入到相應系統的.mc文件中,然后利用工具m4生成最終的sendmail.cf文件。目前最新版本是sendmail8.11.1.(www.sendmail.org)
- 最新的發行包
- promiscuous_relay:該特性打開任意轉發功能,也即關閉8.9帶來的郵件轉發方面的安全增強控制。此特性的使用會對電子郵件服務的濫用留下許多隱患,建議除非特別情況,不要使用此特性
- accept_unqualified_senders:缺省情況下,該特性被關閉,即當MAIL FROM:參數中的地址表明屬于網絡連接,但是卻不包含合法的主機地址時,sendmail將拒絕繼續通信。打開此特性則不再根據MAIL FROM:參數拒絕接收郵件。建議不可輕易使用該特性
- loose_relay_check :通常情況下,當郵件使用了源路由功能,例如user%site@othersite,如果othersite屬于轉發郵件的范圍,則sendmail將分離othersite,繼續檢查site是否屬于轉發范圍.使用該特性將改變上述缺省操作.建議不要輕易使用該特性
- accept_unresolvable_domains :通常情況下,當MAIL FROM:參數中的主機地址部分無法解析,即無法判定為合法主機地址時,sendmail將拒絕連接.使用該特性將改變上述操作. 在某些情況下,例如,郵件服務器位于防火墻后面,無法正常解析外部主機地址,但是仍然希望能夠正常接收郵件時,可能需要利用該特性.
- blacklist_recipients :打開接收黑名單功能。接收黑名單可以包括用戶名、主機名、或其它地址
- relay_entire_domain :缺省配置下,sendmail只為在轉發控制數據庫(access db)中定義為RELAY的主機提供轉發郵件服務. 該特性的使用,將使sendmail為本地域內(由$=m類定義)的所有主機上面的用戶提供轉發功能
- sendmail的受限shell程序smrsh可以防止內部用戶惡意操作
- 防止系統信息泄漏,如修改banner,禁止expn,vrfy命令
- 建議配置為需要smtp認證功能
- 其他相關的mailserver
qmail: www.qmail.org
postfix: www.postfix.org
qpop: http://www.qpopper.org/
Imail:http://www.imailbox.com/
4.11 finger
- 不應該啟動這個服務進程
- 如果一定要使用,請使用最新的版本
4.12 UUCP
- 建議不要使用
- 刪除所有的rhosts文件(UUCP目錄下的)
- 確保.cmds 文件屬主為root
- 對UUCP登陸進行限制
- 確保UUCP文件沒有被設置為所有人可寫
4.13 World Wide Web (WWW) – httpd
- 使用你選擇的WEBSERVER的最新版本
- 不要使用ROOT用戶運行httpd
- 在chroot環境中運行httpd
- 盡量不要使用CGI腳本
- 對CGI腳本進行安全審計
- 鏈接使用靜態庫
- 過濾危險字符,如\n \r (.,/;~!)>|^&$`< 等
- 使用https進行關鍵業務傳送。
比較流行的webserver是
apache http://www.apache.org
netscpe的web server 和browser http://home.netscape.com/enterprise/v3.6/index.html
IETF的Web事務安全工作組維持著一個特別針對WWW安全問題的郵寄列表.
要訂閱,可發e-mail到www-security-request@nsmx.rutger.edu.在信息的
正文里寫上
SUBSCRIBE www-security 你的email地址
主要的WWW FAQ也包含關于Web安全的問與答,如記錄文件管理和服務軟件來源等.這個FAQ的最新版在: http://www.boutell.com/faq/
4.14 FTP安全問題
主要的ftp server
- wuftp 最新版本是26.1
下載地址是ftp://ftp.wu-ftpd.org/pub/wu-ftpd-attic/wu-ftpd-2.6.1.tar.gz - proftp 最新版本是1.2.0rc2
下載地址是ftp://ftp.proftpd.net/pub/proftpd - ncftp 最新版本是2.6.3
下載地址是http://www.ncftp.com/ncftpd/
配置Configuration
- 檢查所有的默認配置選項
- 確定沒有SITE EXEC問題
- 設置/etc/ftpusers確定禁止使用ftp的用戶
- 使用chroot環境運行ftpd
- 使用自己的ls等命令
- 加入對quota,pam等支持
- 配置/etc/ftpaccess文件,禁止系統信息泄露和設置最大連接數
- 配置/etc/ftphosts,設置允許使用FTP的HOST和USER
- 針對不同用戶設置不同權限
- 經常查看LOG記錄 /var/log/xferlog
- 配置文件屬性改為600
Anonymous ftp
- 編譯時打開允許匿名選項
- 如果使用分布式passwords (e.g., NIS, NIS+),需要設置好密碼文件。
- 匿名用戶只給讀權限(在/etc/ftpaccess中設置)
5 系統設置安全(System Setting Security)
禁止使用控制臺程序:刪除/etc/security/console.apps中的服務
禁止控制臺的訪問:在/etc/pam.d中的所有文件中,給包含pam_console.so的行加上注釋
5.2系統關閉Ping
關閉ping,使系統對ping不做反應,對網絡安全大有好處。
可以使用如下命令:
可以將這一行加到/etc/rc.d/rc.local文件中去,這樣系統重啟動后會自動執行
恢復系統的Ping響應:
5.3關閉或更改系統信息
關閉telnet系統信息
Red Hat 6.2中,編輯/etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd –h
加上參數-h可以關閉telnet信息
Red Hat 7.0中,編輯/etc/xinetd.d/telnet
加上server_args = -h,可以關閉telnet信息
/etc/rc.d/rc.local中關閉或修改系統信息
/etc/issue和/etc/issue.net中包含本地登錄和網絡登錄時提示的系統信息,對它們進行更改可以改變系統信息,或直接刪除,并在/etc/rc.d/rc.local文件中注釋相關行:
5.4 /etc/securetty文件
/etc/securetty文件規定root從哪個TTY設備登錄,列出的是允許的tty設備,將不允許的tty設備行注釋掉.
5.5 /etc/host.conf文件
/etc/host.conf定義主機名怎樣解析,使用什么服務,什么順序解析
order指定選擇服務的順序
multi指定主機能不能有多個IP地址,ON代表允許
nospoof指定不允許IP偽裝,此參數必須設置為ON
5.6禁止IP源路徑路由
允許IP源路徑路由(IP source routing)會使得黑客能夠欺騙你的計算機,截取信息包.強烈建議禁止,使用如下命令:
將accept_source_route設置為0,并將上述命令加到/etc/rc.d/rc.local中去,每次重啟動將自動執行
5.7資源限制
為了避免拒絕服務攻擊,需要對系統資源的使用做一些限制。
首先,編輯/etc/security/limits.conf,加入或改變如下
編輯/etc/pam.d/login,在文件末尾加上:
session required /lib/security/pam_limits.so對TCP SYN Cookie的保護:(防止SYN Flood攻擊)
[root@deep]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies5.8 LILO安全
在“/etc/lilo.conf”文件中添加3個參數:time-out、restricted 和 password。這些選項會在啟動時間(如“linux single”)轉到啟動轉載程序過程中,要求提供密碼。
步驟1
編輯lilo.conf文件(/etc/lilo.conf),添加和更改這三個選項:
步驟2
由于其中的密碼未加密,“/etc/lilo.conf”文件只對根用戶為可讀。
步驟3
作了上述修改后,更新配置文件“/etc/lilo.conf”。
步驟4
還有一個方法使“/etc/lilo.conf”更安全,那就是用chattr命令將其設為不可:
它將阻止任何對“lilo.conf”文件的更改,無論是否故意。
5.9 Control-Alt-Delete 鍵盤關機命令
編輯“/etc/inittab”文件,只要在下面行前面加“#”,改為注釋行。
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改為:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
然后,為使更改生效,在提示符下輸入:
[root@kapil /]# /sbin/init q
5.10日志系統安全
為了保證日志系統的完整性,防止黑客刪除日志,需要對日志系統進行安全配置。本專題將有專門文檔來講述日志系統的安全。
5.11修正腳本文件在“/etc/rc.d/init.d”目錄下的權限
對腳本文件的權限進行修正,腳本文件用以決定啟動時需要運行的所有正常過程的開啟和停止。
添加:[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
這句指的是,只有根用戶允許在該目錄下使用 Read、Write,和 Execute 腳本文件。
6 文件系統安全(File System Security)
6.1文件權限
- 去掉不必要的suid程序,可以通過腳本查看
通過下面的命令來去掉不需要的程序的‘s’位
[root@deep]# chmod a-s /usr/bin/commandname- 重要的配置文件如/etc/passwd,/etc/shadow,/etc/inetd.conf等設置為0755,并設置為不可更改
- /etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin, /tmp and/var/tmp的屬主是root,并且設置粘滯
- /dev目錄下沒有特殊文件
- 查找任何人可寫的文件和目錄
- 查找異常文件,如…文件,…文件等
- 檢查沒有屬主的文件。
- 檢查在/dev目錄以外還有沒有特殊的塊文件
- 使用checksum md5 或者PGP來效驗文件
6.2控制mount上的文件系統
可以使用noexec, nodev, nosuid來控制mount上的文件系統.在/etc/fstab中設置,比如:
將/dev/sda11 /tmp ext2 defaults 1 2
/dev/sda6 /home ext2 defaults 1 2
改為:/dev/sda11 /tmp ext2 nosuid,nodev,noexec 1 2
/dev/sda6 /home ext2 nosuid,nodev 1 2
noexec表示不允許可執行,nodev表示不允許塊設備,nosuid表示不允許suid位
6.3備份與恢復
定期對文件系統進行備份,可以將損失減小到最小程度。
Linux下有多種方法進行備份,如:dd, cpio, tar, dump等
7 其它
7.1使用防火墻
防火墻是網絡安全的重要方面,我們將另有專題來詳細闡述防火墻,包括防火墻的原理,linux 2.2內核下IPChains實現,linux 2.4內核下netfilter實現,商業防火墻產品應用等。
7.2使用第三方安全工具
Linux下有很多很好的安全工具,比如:Tripwire, SSH, Sudo, Tcpdump, nmap, nessus, snort, sniffit… …我們將安排專題來具體講述這些非常實用的安全工具。
總結
以上是生活随笔為你收集整理的LINUX安全加固规范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加固工程验收规范50550_GB5055
- 下一篇: Tomcat安全加固规范