歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

一個安全Web服務器的安裝(二)

想定 Inte .net 需要配置一台自己的WEB 服務器 ,由於沒有自己的 安全 基礎設施,應該在WEB服務器前面放一台配置了相應過濾規則的路由器。這台WEB服務器僅僅提供WWW和HTTPS服務,但是,它當然也需要具有遠程控制特性。另外,這台WEB服務器最好還能夠發送郵件

想定

  Inte.net需要配置一台自己的WEB服務器,由於沒有自己的安全基礎設施,應該在WEB服務器前面放一台配置了相應過濾規則的路由器。這台WEB服務器僅僅提供WWW和HTTPS服務,但是,它當然也需要具有遠程控制特性。另外,這台WEB服務器最好還能夠發送郵件。由於Linux服務器和網頁是由三個不同的管理員維護的,所有的管理操作都應該保證在以後進行日志分析是更容易理解。

  實現

  前面段落中說明的安全WEB服務器的需求如何實現呢?下面的例子說明了一種在SuSE Linux 6.4發布的服務器上的實現方法。為了實現上述想定,我們決定選擇SSH管理和Apache WEB服務器。

  第一步:配置路由器

  每一個流行的路由器都提供配置過濾列表的功能。您必需配置下面的簡單規則:


  +------------------------------------------------------------------------------+
  |------------------------------過濾規則--------------------------------------|
  +-------------------------+-------------------------+-------------------------+
  |----------來源----------|-----------目標----------|---------服務-----------|
  +-------------------------+-------------------------+-------------------------+
  |任何位置--------------|web服務器------------|WWW,HTTPS,UDP highport,|
  |--------------------------|---------------------------|ICMP types 0 + 3-----|
  +-------------------------+-------------------------+--------------------------+
  |管理員-----------------|web服務器------------|SSH---------------------|
  +-------------------------+-------------------------+-------------------------+
  |web服務器-----------|任何位置---------------|DNS, SMTP-----------|
  +-------------------------+-------------------------+-------------------------+
  |web服務器-----------|路由器------------------|SSH或telnet----------|
  +-------------------------+-------------------------+-------------------------+
  路由器的操作手冊會提供如何進行上述配置的詳細信息。這裡我建議使用Cisco路由器,因為對於這種情況它非常容易配置,並且還在IOS的第12版以後提供了SSH的加密服務。

  第二步:安裝Linux服務器

  執行SuSE 6.4的標准安裝。處於安全考慮,至少應為/、/var、/tmp、/home和/usr/local安裝5個分區。後面會定義一些mount這些分區的特殊選項,這些選項可以保證系統具有更高的本地安全性能

  現在是選擇需要安裝哪些程序包的時候了。選擇最小系統安裝,然後手工加入下面一些必要的程序包:

  在Basis (a)中選擇compat
  在Applications (ap)中選擇sudo
  在Network (n)中選擇apache, bindutil;去掉postfix和sendmail
  在Security (sec)中選擇firewals, hardensuse, mod_ssl, scanlogd, seclearcase/" target="_blank" >ccheck, secumod, tripwire.

  其它一些您認為需要的程序包,如數據庫和為Apache設計的一些模塊。然後完成安裝。

  第三步:更新

  在配置之前,檢查一下是否可以獲得這些安裝包的更新版本,如果有,需要的話最好進行更新。
  您可以在這裡找到SuSE 6.4的更新信息。

  第四步:Linux的本地配置

  在開始真正工作之前,必需首先執行所有的諸如輸入服務器名、配置網絡接口和設置用戶等標准Linux配置。在初始情況下,所有不需要的服務都是非活動狀態的。特權程序的授權回收工作並不是必需的,您可以通過harden_suse工具簡單地實現這個任務:
  erde#harden_suse yes
  這個命令在很多地方更改了系統的配置,這些更改都記在/etc/harden_suse.log日志文件中,這些操作可以過/etc/undo_harden_suse腳本予以恢復。使用其它Linux發布的用戶可應使用Bastille腳本或者其它類似的程序。

  隨後,所有網絡訪問服務(除了SSH)都被禁止,僅僅保留了下面的授予特權的suid和sgid程序:
erde# find / -perm -04000 -type f -exec ls -ld {} ;
-rwsr-x--- 1 root trusted 23840 Mar 11 11:26 /bin/ping
-rwsr-x--- 1 root trusted 30750 Mar 11 11:37 /bin/su
-rwsr-x--- 1 root trusted 21268 Mar 11 11:10 /usr/bin/crontab
-rwsr-xr-x 1 man root 85460 Mar 11 11:24 /usr/bin/man
-rwsr-xr-x 1 root root 15308 Mar 11 11:26 /usr/bin/rcp
-rwsr-xr-x 1 root root 11052 Mar 11 11:26 /usr/bin/rlogin
-rwsr-xr-x 1 root root 8104 Mar 11 11:26 /usr/bin/rsh
-rwsr-x--- 1 root shadow 38340 Mar 11 11:50 /usr/bin/gpasswd
-rwsr-x--- 1 root trusted 22184 Mar 11 11:50 /usr/bin/newgrp
-rwsr-xr-x 1 root shadow 27920 Mar 11 11:50 /usr/bin/passwd
-rwsr-x--- 1 root trusted 56600 Mar 11 18:41 /usr/bin/sudo
-rwsr-xr-x 1 root root 20300 Mar 11 11:26 /usr/sbin/traceroute
-rwsr-xr-x 1 root root 6132 Mar 11 09:36 /usr/lib/pt_chown
erde# find / -perm -02000 -type f -exec ls -ld ;
-rwxr-sr-x 1 root tty 9452 Mar 11 11:26 /usr/bin/write
-rwxr-sr-x 1 root tty 9796 Mar 11 11:49 /usr/bin/wall

  下一階段工作是編輯全局配置文件/etc/rc.config,將下面腳本行中的“no”改成“yes”:

START_HTTPD=“yes”
START_FW=“yes”
START_SCANLOGD=“yes”

這樣就會保證Apache、Scanlogd和SuSE防火牆在計算機啟動時自動執行。現在我們繼續配置本地防火牆,將/etc/rc.config.d/firewall.rc.config(個別變量的細節描述在這個文件中可以找到)文件中的對應行改成下面的形式:

FW_DEV_WORLD=“eth0” # query no. 2
FW_SERVICES_EXTERNAL_TCP=“www https” # query no. 9
FW_SERVICES_TRUSTED_NETS=“1.1.1.0/24” # query no. 10 - 1.1.1.0 is the netswheresthe administrators connect from.
FW_TRUSTED_SERVICES_TCP=“ssh” # query no. 10

  /sbin/SuSEfirewall命令可以更新防火牆規則。這些規則會在每個系統啟動周期中載入。

  現在我們以下面的形式集成SuSE專用的安全模塊:
erde# cat >> /sbin/init.d/boot.local
insmod secumod hardlink=1 symlink=1 pipe=1 trace=1 systable=1 logging=1
^D

  當系統引導時,這個模塊會被加載,它配置用來防止Symlink、Hardlink、Pipe和一些 UNIX特有的攻擊形式。

  第五步:配置Apache

  WEB軟件和頁面時服務器的核心。我們必需確保沒有人可以訪問未授權的數據或者改變頁面。為了這個目的,頁面必需進行特殊的防護,然後要給予Apache安全的配置。

  所有的頁面都必需由網站管理員統一管理,並且對除他以外的所有人都是本地寫保護的。WEB服務器最好以非頁面管理員身份運行,這樣即使入侵者侵入WEB服務器,他也沒有足夠的權限更改頁面。這樣,就需要設置一個用戶,還要產生一個cron工作,這個定時工作要保證所有的頁面修改權只屬於頁面管理員並且具有正確的授權。


  erde# useradd -m wwwdocs
  erde# cat > /etc/cron.daily/wwwdocs
  #!/bin/sh
  /bin/chown -R -h wwwdocs /usr/local/httpd/htdocs/*
  /bin/chmod -R go-w /usr/local/httpd/htdocs/*
  /bin/chmod -R a+r /usr/local/httpd/htdocs/*
  ^D
  erde# chmod 700 /etc/cron.daily/wwwdocs
  由於Apache可能已經預先配置好了,所以可能根本不需要進行重新配置。當然,開始的時候/etc/httpd/httpd.conf文件中的MinSpareServers、MaxSpareServers和StartServers的值應該被正確設置。

  MaxClients選項可以用來避免connect-denial-of-service攻擊。應該注意的是:如果這個選項設置的太低,一般訪問者的訪問也可能會被拒絕;如果太高,管理員在日志跟蹤和入侵事件發生時的應對就會顯得比較困難。除了自己嘗試以外,好象也沒有什麼確定合適數量的更好建議。

  應該關掉ServerSignature選項,這樣訪問一個不存在的頁面時就不會回應您所使用的軟件和版本號信息。但是這樣也解決不了多大的問題,因為HTTP頭中包含這些——甚至更多——信息。

  應該禁止/hilfe/、/doc/、/cgi-bin-sdb/、/sdb/和/manual/的別名。下面顯示了標准配置更改後的大概樣子:(“diff -u0”)

  --- httpd.conf.orig Sun Apr 9 19:37:44 2000
  +++ httpd.conf Sun Apr 9 19:42:57 2000
  @@ -141,2 +141,2 @@
  -MinSpareServers 1
  -MaxSpareServers 1
  +MinSpareServers 3
  +MaxSpareServers 10
  @@ -148 +148 @@
  -StartServers 1
  +StartServers 5
  @@ -157 +157 @@
  -MaxClients 150
  +MaxClients 100
  @@ -401 +401 @@
  -ServerAdmin root@localhost
  +ServerAdmin [email protected]
  @@ -415 +415 @@
  -#ServerName hawking.suse.de
  +ServerName www.echte-domain.de
  @@ -485 +485 @@
  -UserDir public_html
  +#UserDir public_html
  @@ -646 +646 @@
  -ServerSignature On
  +ServerSignature Off
  @@ -665,11 +664,0 @@
  -Alias /hilfe/ /usr/doc/susehilf/
  -Alias /doc/ /usr/doc/
  -Alias /cgi-bin-sdb/ /usr/local/httpd/cgi-bin/
  -Alias /sdb/ /usr/doc/sdb/
  -Alias /manual/ /usr/doc/packages/apache/manual/
  -
  -
  - Options FollowSymLinks
  - AllowOverride None
  -
  -
  @@ -697,9 +685,0 @@
  -# cgi-bin for SuSE help system
  -# using SetHandler
  -
  -
  -AllowOverride None
  -Options +ExecCGI -Includes
  -SetHandler cgi-script
  -
  -
  @@ -981,4 +961,4 @@
  -#
  -# Deny from all
  -# ErrorDocument 403
  http://phf.apache.org/phf_abuse_log.cgi
  -#
  +
  + Deny from all
  + ErrorDocument 403
  http://phf.apache.org/phf_abuse_log.cgi
  +
  SSL的激活和證書的產生在/usr/doc/packages/apache/README.SuSE文件中描述。

提示:SSL證書應該一個密碼保護起來,以減少攻擊者成功入侵後將其拷貝並濫用的可能性(很少發生!)。

  作為一個一般的規則,應該保證沒有在任何地方使用符號符號連接(Symlinks),因此要禁止FollowSymLinks選項。所有的CGI都放在cgi-bin目錄下,不允許放在其它任何地方,甚至也不允許在其它目錄下執行。為了做到這一點,請不要使用ExecCGI配置選項。

  為了禁止訪問某些文件區,應該在這些目錄下分別加入一個命名為.htaccess的文件,並在中加入下面的文本行:order deny,allow deny from all


Copyright © Linux教程網 All Rights Reserved