Linux網路安全之經驗談(轉)
Linux網路安全之經驗談[@more@]
§關於分割槽: 一個潛在的駭客如果要攻擊你的Linux 伺服器,他首先就會嘗試緩衝區溢位。在過去的幾年中,以緩衝區溢位為型別的安全漏洞是最為常見的一種形式了。更為嚴重的是,緩衝區溢位漏洞佔了遠端網路攻擊的絕大多數,這種攻擊可以輕易使得一個匿名的Internet使用者有機會獲得一臺主機的部分或全部的控制權! 為了防止此類攻擊,我們從安裝系統時就應該注意。如果用root分割槽紀錄資料,如log 檔案和email ,就可能因為拒絕服務產生大量日誌或垃圾郵件,從而導致系統崩潰。所以建議為/var開闢單獨的分割槽,用來存放日誌和郵件,以避免root分割槽被溢位。最好為特殊的應用程式單獨開一個分割槽,特別是可以產生大量日誌的程式,還有建議為/home 單獨分一個區,這樣他們就不能填滿/ 分割槽了,從而就避免了部分針對Linux 分割槽溢位的惡意攻擊。 §關於BIOS: 記著要在BIOS設定中設定一個BIOS密碼,不接收軟盤啟動。這樣可以阻止不懷好意的人用專門的啟動盤啟動你的Linux 系統,並避免別人更改BIOS設定,如更改軟盤啟動設定或不彈出密碼框直接啟動伺服器等等。 §關於口令: 口令是系統中認證使用者的主要手段,系統安裝時預設的口令最小長度通常為5 ,但為保證口令不易被猜測攻擊,可增加口令的最小長度,至少等於8.為此,需修改檔案/etc/login.defs 中引數PASS_MIN_LEN(口令最小長度)。同時應限制口令使用時間,保證定期更換口令,建議修改引數PASS_MIN_DAYS (口令使用時間)。 §關於Ping: 既然沒有人能ping通你的機器並收到響應,你可以大大增強你的站點的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次啟動後自動執行,這樣就可以阻止你的系統響應任何從外部/ 內部來的ping請求。 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all §關於Telnet: 如果你希望使用者用Telnet遠端登入到你的伺服器時不要顯示作業系統和版本資訊(可以避免有針對性的漏洞攻擊),你應該改寫/etc/inetd.conf 中的一行象下面這樣: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h 加-h標誌在最後使得telnet後臺不要顯示系統資訊,而僅僅顯示login. §關於特權賬號: 禁止所有預設的被作業系統本身啟動的且不需要的帳號,當你第一次裝上系統時就應該做此檢查,Linux 提供了各種帳號,你可能不需要,如果你不需要這個帳號,就移走它,你有的帳號越多,就越容易受到攻擊。 為刪除你係統上的使用者,用下面的命令:userdel username 為刪除你係統上的組使用者帳號,用下面的命令:groupdel username 在終端上打入下面的命令刪掉下面的特權用賬號: userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel mail 如果你不用sendmail伺服器,就刪除這幾個帳號: userdel news userdel uucp userdel operator userdel games 如果你不用X windows 伺服器,就刪掉這個帳號。 userdel gopher 如果你不允許匿名FTP ,就刪掉這個使用者帳號: userdel ftp §關於su命令: 如果你不想任何人能夠su為root的話,你應該編輯/etc/pam.d/su 檔案,加下面幾行: auth sufficient /lib- /security/pam_rootok- 。so debug auth required /lib- /security/pam_wheel-。so group=isd 這意味著僅僅isd 組的使用者可以su作為root. 如果你希望使用者admin 能su作為root. 就執行下面的命令: usermod -G10 admin suid程式也是非常危險的,這些程式被普通使用者以euid=0(即root)的身份執行,只能有少量程式被設定為suid. 用這個命令列出系統的suid二進位制程式: suneagle# find / -perm -4000 -print 你可以用chmod -s去掉一些不需要程式的suid位。 §關於賬戶登出: 如果系統管理員在離開系統時忘了從root登出,系統應該能夠自動從shell 中登出。那麼,你就需要設定一個特殊的Linux 變數“tmout ”,用以設定時間。同樣,如果使用者離開機器時忘記了登出賬戶,則可能給系統安全帶來隱患。你可以修改/etc/profile檔案,保證賬戶在一段時間沒有操作後,自動從系統登出。編輯檔案/etc/profile,在“histfilesize= ”行的下一行增加如下一行: tmout=600 則所有使用者將在10分鐘無操作後自動登出。注意:修改了該引數後,必須退出並重新登入root,更改才能生效。 §關於系統檔案: 對於系統中的某些關鍵性檔案如passwd、passwd.old、passwd._、shadow、shadown._、inetd.conf、services和lilo.conf 等可修改其屬性,防止意外修改和被普通使用者檢視。如將inetd 檔案屬性改為600 : # chmod 600 /etc/inetd.conf 這樣就保證檔案的屬主為root,然後還可以將其設定為不能改變: # chattr +i /etc/inetd.conf 這樣,對該檔案的任何改變都將被禁止。你可能要問:那我自己不是也不能修改了?當然,我們可以設定成只有root重新設定復位標誌後才能進行修改: # chattr -i /etc/inetd.conf §關於使用者資源: 對你的系統上所有的使用者設定資源限制可以防止DoS 型別攻擊,如最大程式數,記憶體數量等。例如,對所有使用者的限制,編輯/etc/security/limits.con加入以下幾行: * hard core 0 * hard rss 5000 * hard nproc 20 你也必須編輯/etc/pam.d/login檔案,檢查這一行的存在: session required /lib/security/pam_limits.so 上面的命令禁止core files“core 0”,限制程式數為“nproc 50”,且限制記憶體使用為5M“rss 5000”。 §關於NFS 伺服器: 由於NFS 伺服器漏洞比較多,你一定要小心。如果要使用NFS 網路檔案系統服務,那麼確保你的/etc/exports具有最嚴格的存取許可權設定,不意味著不要使用任何萬用字元,不允許root寫許可權,mount 成只讀檔案系統。你可以編輯檔案/etc/exports並且加: /dir/to/export host1.mydomain.com (ro,root_squash ) /dir/to/export host2.mydomain.com (ro,root_squash ) 其中/dir/to/export是你想輸出的目錄,host.mydomain.com 是登入這個目錄的機器名,ro意味著mount 成只讀系統,root_squash 禁止root寫入該目錄。最後為了讓上面的改變生效,還要執行/usr/sbin/exportfs -a §關於開啟的服務: 預設的linux 就是一個強大的系統,執行了很多的服務。但有許多服務是不需要的,很容易引起安全風險。這個檔案就是/etc/inetd.conf ,它制定了/usr/sbin/inetd將要監聽的服務,你可能只需要其中的兩個:telnet和ftp ,其它的類如shell , login , exec , talk , ntalk, imap , pop-2, pop-3, finger , auth , etc.除非你真的想用它。否則統統關閉之。 你先用下面的命令顯示沒有被註釋掉的服務: grep -v "#" /etc/inetd.conf 這個命令統計面前服務的總數: ps -eaf|wc -l 需要提醒你的是以下三個服務漏洞很多,強烈建議你關閉它們:S34yppasswdd(NIS 伺服器)、S35ypserv (NIS 伺服器)和S60nfs(NFS 伺服器)。 我們可以執行#killall -HUP inetd 來關閉不需要的服務。當然,你也可以執行 #chattr +i /etc/inetd.conf 如果你想使inetd.conf檔案具有不可更改屬性,而只有root才能解開,敲以下命令 #chattr -i /etc/inetd.conf 當你關閉一些服務以後,重新執行以上命令看看少了多少服務。執行的服務越少,系統自然越安全了。我們可以用下面命令察看哪些服務在執行: netstat -na ip 如果你用的是Redhat那就方便多了。^_^ Redhat提供一個工具來幫助你關閉服務,輸入/usr/sbin/setup ,然後選擇"system services" ,就可以定製系統啟動時跑哪些服務。另外一個選擇是chkconfig 命令,很多linux 版本的系統都自帶這個工具。指令碼名字中的數字是啟動的順序,以大寫的K 開頭的是殺死程式用的。 §關於日誌: 所有的日誌都在/var/log下(僅對linux 系統而言),預設情況下linux 的日誌就已經很強大了,但除ftp 外。因此我們可以透過修改/etc/ftpaccess或者/etc/inetd.conf,來保證每一個ftp 連線日誌都能夠紀錄下來。下面是一個修改inetd.conf的例子,假如有下一行: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o 註釋:-l每一個ftp 連線都寫到syslog -L 紀錄使用者的每一個命令-i檔案received,紀錄到xferlog -o檔案transmitted ,記錄到xferlog 不過你也不要太相信日誌,因為絕大部分駭客都有“擦腳印”的“好”習慣囉!如果你不放心,最好安裝一個Sniffer 吧。 §關於TCP_WRAPPERS: 預設的,Redhat Linux允許所有的請求,這是很危險的。如果用TCP_WRAPPERS來增強我們站點的安全性簡直是舉手之勞,你可以將禁止所有的請求放入“ALL : ALL ”到/etc/hosts.deny 中,然後放那些明確允許的請求到/etc/hosts.allow中,如: sshd: 192.168.1.10/255.255.255.0 gate.openarch.com 對IP地址192.168.1.10和主機名gate.openarch.com ,允許透過ssh 連線。配置完了之後,用tcpdchk 檢查,你可以直接執行:tcpdchk.在這裡,tcpchk是TCP_Wrapper配置檢查工具,它檢查你的tcp wrapper 配置並報告所有發現的潛在/ 存在的問題。 §關於補丁: 你應該經常到你所安裝的Linux 系統發行商的主頁上去找最新的補丁。例如:對於Redhat系統而言可以在:上找到補丁。幸運的是,在Redhat6.1 以後的版本帶有一個自動升級工具up2date ,它能自動夠測定哪些rpm 包需要升級,然後自動從Redhat的站點下載並完成安裝。這對某些懶惰的管理員來說,可是個省精神的福音哦
§關於分割槽: 一個潛在的駭客如果要攻擊你的Linux 伺服器,他首先就會嘗試緩衝區溢位。在過去的幾年中,以緩衝區溢位為型別的安全漏洞是最為常見的一種形式了。更為嚴重的是,緩衝區溢位漏洞佔了遠端網路攻擊的絕大多數,這種攻擊可以輕易使得一個匿名的Internet使用者有機會獲得一臺主機的部分或全部的控制權! 為了防止此類攻擊,我們從安裝系統時就應該注意。如果用root分割槽紀錄資料,如log 檔案和email ,就可能因為拒絕服務產生大量日誌或垃圾郵件,從而導致系統崩潰。所以建議為/var開闢單獨的分割槽,用來存放日誌和郵件,以避免root分割槽被溢位。最好為特殊的應用程式單獨開一個分割槽,特別是可以產生大量日誌的程式,還有建議為/home 單獨分一個區,這樣他們就不能填滿/ 分割槽了,從而就避免了部分針對Linux 分割槽溢位的惡意攻擊。 §關於BIOS: 記著要在BIOS設定中設定一個BIOS密碼,不接收軟盤啟動。這樣可以阻止不懷好意的人用專門的啟動盤啟動你的Linux 系統,並避免別人更改BIOS設定,如更改軟盤啟動設定或不彈出密碼框直接啟動伺服器等等。 §關於口令: 口令是系統中認證使用者的主要手段,系統安裝時預設的口令最小長度通常為5 ,但為保證口令不易被猜測攻擊,可增加口令的最小長度,至少等於8.為此,需修改檔案/etc/login.defs 中引數PASS_MIN_LEN(口令最小長度)。同時應限制口令使用時間,保證定期更換口令,建議修改引數PASS_MIN_DAYS (口令使用時間)。 §關於Ping: 既然沒有人能ping通你的機器並收到響應,你可以大大增強你的站點的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次啟動後自動執行,這樣就可以阻止你的系統響應任何從外部/ 內部來的ping請求。 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all §關於Telnet: 如果你希望使用者用Telnet遠端登入到你的伺服器時不要顯示作業系統和版本資訊(可以避免有針對性的漏洞攻擊),你應該改寫/etc/inetd.conf 中的一行象下面這樣: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h 加-h標誌在最後使得telnet後臺不要顯示系統資訊,而僅僅顯示login. §關於特權賬號: 禁止所有預設的被作業系統本身啟動的且不需要的帳號,當你第一次裝上系統時就應該做此檢查,Linux 提供了各種帳號,你可能不需要,如果你不需要這個帳號,就移走它,你有的帳號越多,就越容易受到攻擊。 為刪除你係統上的使用者,用下面的命令:userdel username 為刪除你係統上的組使用者帳號,用下面的命令:groupdel username 在終端上打入下面的命令刪掉下面的特權用賬號: userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel mail 如果你不用sendmail伺服器,就刪除這幾個帳號: userdel news userdel uucp userdel operator userdel games 如果你不用X windows 伺服器,就刪掉這個帳號。 userdel gopher 如果你不允許匿名FTP ,就刪掉這個使用者帳號: userdel ftp §關於su命令: 如果你不想任何人能夠su為root的話,你應該編輯/etc/pam.d/su 檔案,加下面幾行: auth sufficient /lib- /security/pam_rootok- 。so debug auth required /lib- /security/pam_wheel-。so group=isd 這意味著僅僅isd 組的使用者可以su作為root. 如果你希望使用者admin 能su作為root. 就執行下面的命令: usermod -G10 admin suid程式也是非常危險的,這些程式被普通使用者以euid=0(即root)的身份執行,只能有少量程式被設定為suid. 用這個命令列出系統的suid二進位制程式: suneagle# find / -perm -4000 -print 你可以用chmod -s去掉一些不需要程式的suid位。 §關於賬戶登出: 如果系統管理員在離開系統時忘了從root登出,系統應該能夠自動從shell 中登出。那麼,你就需要設定一個特殊的Linux 變數“tmout ”,用以設定時間。同樣,如果使用者離開機器時忘記了登出賬戶,則可能給系統安全帶來隱患。你可以修改/etc/profile檔案,保證賬戶在一段時間沒有操作後,自動從系統登出。編輯檔案/etc/profile,在“histfilesize= ”行的下一行增加如下一行: tmout=600 則所有使用者將在10分鐘無操作後自動登出。注意:修改了該引數後,必須退出並重新登入root,更改才能生效。 §關於系統檔案: 對於系統中的某些關鍵性檔案如passwd、passwd.old、passwd._、shadow、shadown._、inetd.conf、services和lilo.conf 等可修改其屬性,防止意外修改和被普通使用者檢視。如將inetd 檔案屬性改為600 : # chmod 600 /etc/inetd.conf 這樣就保證檔案的屬主為root,然後還可以將其設定為不能改變: # chattr +i /etc/inetd.conf 這樣,對該檔案的任何改變都將被禁止。你可能要問:那我自己不是也不能修改了?當然,我們可以設定成只有root重新設定復位標誌後才能進行修改: # chattr -i /etc/inetd.conf §關於使用者資源: 對你的系統上所有的使用者設定資源限制可以防止DoS 型別攻擊,如最大程式數,記憶體數量等。例如,對所有使用者的限制,編輯/etc/security/limits.con加入以下幾行: * hard core 0 * hard rss 5000 * hard nproc 20 你也必須編輯/etc/pam.d/login檔案,檢查這一行的存在: session required /lib/security/pam_limits.so 上面的命令禁止core files“core 0”,限制程式數為“nproc 50”,且限制記憶體使用為5M“rss 5000”。 §關於NFS 伺服器: 由於NFS 伺服器漏洞比較多,你一定要小心。如果要使用NFS 網路檔案系統服務,那麼確保你的/etc/exports具有最嚴格的存取許可權設定,不意味著不要使用任何萬用字元,不允許root寫許可權,mount 成只讀檔案系統。你可以編輯檔案/etc/exports並且加: /dir/to/export host1.mydomain.com (ro,root_squash ) /dir/to/export host2.mydomain.com (ro,root_squash ) 其中/dir/to/export是你想輸出的目錄,host.mydomain.com 是登入這個目錄的機器名,ro意味著mount 成只讀系統,root_squash 禁止root寫入該目錄。最後為了讓上面的改變生效,還要執行/usr/sbin/exportfs -a §關於開啟的服務: 預設的linux 就是一個強大的系統,執行了很多的服務。但有許多服務是不需要的,很容易引起安全風險。這個檔案就是/etc/inetd.conf ,它制定了/usr/sbin/inetd將要監聽的服務,你可能只需要其中的兩個:telnet和ftp ,其它的類如shell , login , exec , talk , ntalk, imap , pop-2, pop-3, finger , auth , etc.除非你真的想用它。否則統統關閉之。 你先用下面的命令顯示沒有被註釋掉的服務: grep -v "#" /etc/inetd.conf 這個命令統計面前服務的總數: ps -eaf|wc -l 需要提醒你的是以下三個服務漏洞很多,強烈建議你關閉它們:S34yppasswdd(NIS 伺服器)、S35ypserv (NIS 伺服器)和S60nfs(NFS 伺服器)。 我們可以執行#killall -HUP inetd 來關閉不需要的服務。當然,你也可以執行 #chattr +i /etc/inetd.conf 如果你想使inetd.conf檔案具有不可更改屬性,而只有root才能解開,敲以下命令 #chattr -i /etc/inetd.conf 當你關閉一些服務以後,重新執行以上命令看看少了多少服務。執行的服務越少,系統自然越安全了。我們可以用下面命令察看哪些服務在執行: netstat -na ip 如果你用的是Redhat那就方便多了。^_^ Redhat提供一個工具來幫助你關閉服務,輸入/usr/sbin/setup ,然後選擇"system services" ,就可以定製系統啟動時跑哪些服務。另外一個選擇是chkconfig 命令,很多linux 版本的系統都自帶這個工具。指令碼名字中的數字是啟動的順序,以大寫的K 開頭的是殺死程式用的。 §關於日誌: 所有的日誌都在/var/log下(僅對linux 系統而言),預設情況下linux 的日誌就已經很強大了,但除ftp 外。因此我們可以透過修改/etc/ftpaccess或者/etc/inetd.conf,來保證每一個ftp 連線日誌都能夠紀錄下來。下面是一個修改inetd.conf的例子,假如有下一行: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o 註釋:-l每一個ftp 連線都寫到syslog -L 紀錄使用者的每一個命令-i檔案received,紀錄到xferlog -o檔案transmitted ,記錄到xferlog 不過你也不要太相信日誌,因為絕大部分駭客都有“擦腳印”的“好”習慣囉!如果你不放心,最好安裝一個Sniffer 吧。 §關於TCP_WRAPPERS: 預設的,Redhat Linux允許所有的請求,這是很危險的。如果用TCP_WRAPPERS來增強我們站點的安全性簡直是舉手之勞,你可以將禁止所有的請求放入“ALL : ALL ”到/etc/hosts.deny 中,然後放那些明確允許的請求到/etc/hosts.allow中,如: sshd: 192.168.1.10/255.255.255.0 gate.openarch.com 對IP地址192.168.1.10和主機名gate.openarch.com ,允許透過ssh 連線。配置完了之後,用tcpdchk 檢查,你可以直接執行:tcpdchk.在這裡,tcpchk是TCP_Wrapper配置檢查工具,它檢查你的tcp wrapper 配置並報告所有發現的潛在/ 存在的問題。 §關於補丁: 你應該經常到你所安裝的Linux 系統發行商的主頁上去找最新的補丁。例如:對於Redhat系統而言可以在:上找到補丁。幸運的是,在Redhat6.1 以後的版本帶有一個自動升級工具up2date ,它能自動夠測定哪些rpm 包需要升級,然後自動從Redhat的站點下載並完成安裝。這對某些懶惰的管理員來說,可是個省精神的福音哦
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10144097/viewspace-934542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux網路安全經驗之談Linux
- Linux網路安全經驗談Linux
- Linux安全經驗談Linux
- 網路管理經驗談:初級網管的網路安全
- 必看!網際網路開發模式的經驗之談模式
- 網管經驗談:Linux下巧做硬碟分割槽映象(轉)Linux硬碟
- 連續劇網路遊戲的經驗,從MAJESTIC談起(轉)遊戲
- Lotus 經驗談(轉)
- 成人網站YouPorn使用Redis之經驗談網站Redis
- Hugo 建站經驗之談Go
- ERP經驗談(轉)
- 成人網站效能提升20倍之經驗談網站
- 網路安全之iptables實驗篇一
- Linux核心程式設計實戰經驗談(轉)Linux程式設計
- 經驗分享 | 網路安全漏洞分析者之路
- puppeteer踩坑經驗之談
- TurboLinux使用經驗談(轉)Linux
- CVS使用經驗談 (轉)
- Linux系統配置與最佳化經驗談(轉)Linux
- linux之我的網際網路面試經驗Linux面試
- 程式設計師的經驗之談-生活與工作(轉)程式設計師
- 駭客經驗談系列之入侵3389起源完整編(轉)
- 碼農處事經驗之談
- 成人網站效能提升 20 倍之經驗談 [Python]網站Python
- PMP考試經驗談(五)(轉)
- PMP考試經驗談(一)(轉)
- PMP考試經驗談(二)(轉)
- UNIX 安全構架經驗(轉)
- Java面經 面試經驗 網際網路公司面試經驗 後端面試經驗Java面試後端
- 經驗談
- SQL Server資料庫安全管理經驗談SQLServer資料庫
- 網際網路測試經驗和管理雜談 (如何培養人)
- Linux 網路安全和最佳化 (轉)Linux
- 【初學者必備】網路安全學習經驗彙總!
- asp程式設計經驗談:ASP檔案中的安全問題(轉)程式設計
- Linux程式應用開發環境和工具經驗談(轉)Linux開發環境
- 針對LINUX主機談---我的防範駭客經驗(轉)Linux
- Linux網路安全技術與實現第2章之原理及實驗Linux