目錄表

伺服器安全防護

為有效管理伺服器,減少系統因軟體漏洞或遭受外部攻擊造成損失,以下介紹各種系統安全設定方式及步驟,提供伺服器管理者參考,本範例以 CentOS 5.9 (Kernel 2.6.18) 為例。其管理方式大致可分為以下三個階段:

  1. 事前防範:針對伺服器的功能及服務對象,提供基本的開放權限設定,其餘則加以限制。
  2. 及時分析:對於必要開放的服務功能,及時的分析客戶端不當的使用行為,給予適時的阻擋或限制。
  3. 事後稽查:定期的檢視系統紀錄,對於未能加以防範的部份,尋求可以改善的方式。

系統基礎設定

1. 防火牆

近來許多網路作業系統都以搭配防火牆當作基礎功能,常見如下:

作業系統 防火牆
GNU/Linux netfilter/iptables
FreeBSD IPFilterpfSenseipfirewall
Solaris IPFilter

建議系統管理者開啟防火牆功能,針對所需要提供的服務給予開放連線,其餘部份則透過防火牆的條件設定限制連線或訪問,形成伺服器的第一道防護。避免有心人士嘗試猜測系統漏洞,降低被攻擊之可能。

2. ACL 設定

TCP Wrapper 是一個 host-based 的網路存取控制,它的設定通常包含客戶端與伺服器端 (client-server) 的對應關係,客戶端資訊通常有「主機名稱 (host name)」、「主機位址 (host address)」及「使用者名稱 (user name)」;而伺服器端的資訊通常有「程序名稱 (process name)」、「伺服器名稱 (host name)」及「伺服器位址 (host address)」。
而目前多數的網路應用程式,大多支援 TCP Wrapper 功能,如:vsftpd (FTP)、OpenSSH (SSH)、xinetd 等。

# ldd /usr/sbin/vsftpd | grep -i wrap
	libwrap.so.0 => /lib/libwrap.so.0 (0x00ad5000)
# vim /etc/hosts.allow
sshd : 140.114.0.0/255.255.0.0
# vim /etc/hosts.deny
sshd : ALL

3. 即/及時防護

對於伺服器必須提供給所有使用者的服務功能,如 HTTP (port 80) 或是 FTP (port 21) 等服務,因為無法完全使用防火牆或是 TCP Wrapper 加以限制,則容易成為有心人士加以攻擊的管道或對象,此時仍可透過一些即/及時防護的軟體加以限制,如Fail2banDenyHosts。該類軟體的運作原理是透過即/及時分析 log 紀錄檔,過濾一些可疑的使用行為紀錄,再針對這些來源作一適當的處置,如「通知管理者異常行為」、「透過防火牆或 TCP Wrapper 加以阻擋」等。其特色是,可以適性的針對不當用戶或來源加以阻擋,而非阻擋整個網段或是限制全部的服務功能,提供伺服器動態的防護需求。

系統更新

套件管理

定期的更新系統與修補漏洞,是維持系統安全的最基本工作。善用套件管理系統 (Package management system) 可以協助管理者有效的更新作業系統與應用程式。在軟體的安裝使用上,常見的問題有以下:

而透過設計良好的套件管理系統則可以減少上述的問題發生,常見的套件管理系統如下:

作業系統 套件管理系統
CentOS / Fedora YUM
Debian APT
FreeBSD FreeBSD Ports
Solaris Image Packaging SystemOpenCSW

紀錄檔分析

適當的開啟系統紀錄 (Syslog),其中包含系統異動資訊、使用者登出或登入事件、各類軟體的除錯或警告資訊等,藉以紀錄重要事件的發生時間和內容,提供日後稽核使用。另外,透過定期的分析與統計系統紀錄,可以觀察伺服器的使用情形,也可以了解服務的營運狀況,除了使用既有的軟體自動分析外,也可以手動方式過濾一些錯誤訊息,以了解異常的使用行為。

# egrep -i -n '(fail|error|crit)' /var/log/secure
# grep 404 /var/log/httpd/access_log

其他的系統防護資訊