Linux伺服器安裝完成以後,應該馬上採取哪些措施來增強伺服器的安全性。對於其他的Linux發布或者版本,這些方法也是適用的。
◆一、關閉不必要的服務
Linux的服務分為兩種,一種是由inetd超級伺服器來啟動的,如:ftp、telnet等;對於這些服務來說,系統並不總是運行telnetd、 ftpd等服務進程,而是由inetd進程監聽這些服務的服務連接埠,一旦有服務要求到達就啟動對應的服務進程(如:telnetd等)來提供服務。另外一種是獨立的伺服器,系統一直運行有對應的服務進程。
關閉這兩種服務的方法是不同的,對於inetd啟動的進程:
inetd超級伺服器的設定檔為/etc/inetd.conf,該檔案指示了inetd應該監聽哪些服務要求,並在請求時啟動對應的服務。因此只要通過編輯/etc/inetd.conf檔案就可以實現關閉不需要的服務,例如希望關閉pop3服務,則在編輯/etc/inetd.conf檔案以前檔案中有如下的內容:
| pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d |
要關閉pop3服務則在該行前添加註釋符即可:
| #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d |
通過編輯該檔案,實現關閉不需要的服務(例如我的系統我僅僅開放了telnet和ftp服務)以後,則需要重新啟動inetd超級伺服器。首先找到inetd的進程號:
[root@aid /etc]# ps ax|grep inetd 358 ? S 0:00 inetd |
然後重新啟動inetd伺服器:
| [root@aid /etc]# kill -HUP 358 |
最後因為inetd.conf應該不允許普通使用者讀寫,因此設定其存取權限為600:
| chmod 600 /etc/inetd.conf |
而且該檔案應該不被任何使用者修改,包括root使用者。因此為了防止使用者錯誤的修改該檔案,為該檔案添加不可修改位:
| chattr +i /etc/inetd.conf |
對於獨立伺服器,則需要通過/usr/sbin/ntsysv命令來修改:
只需要服務前面通過空格鍵來選擇是否在系統啟動時啟動該服務就可以實現關閉某個伺服器,如:希望系統關閉dhcpd服務,則通過上下鍵選中該伺服器,然後通過空格鍵去掉該服務前[ ]內的星號即表示系統啟動時不開放該服務。若希望瞭解某個服務的具體含義,可以選擇該服務以後按F1鍵來查看該服務的含義。
設定完畢以後,只有希望開啟的服務前的[ ]內才會有星號。然後通過Tab鍵選擇OK,按空格鍵。重新啟動機器。
重新啟動機器以後,可以通過下面的命令來察看系統開啟了哪些服務,來決定是否已經關閉了不需要的服務,例如我僅僅希望提供telnet服務則:
[ideal@aid ideal]$ netstat -ln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN raw 0 0 0.0.0.0:1 0.0.0.0:* 7 raw 0 0 0.0.0.0:6 0.0.0.0:* 7 Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path |
從上面的命令輸出可以看到系統僅僅開放了23號連接埠,也就是telnet服務。