建立一個安全Linux伺服器

火星人 @ 2014-03-03 , reply:0


建立一個安全Linux伺服器

要建立一個安全Linux伺服器就首先要了解Linux環境下和網路服務相關的配置文件的含義及如何進行安全的配置。在Linux系統中,TCP/IP網路是通過若干個文本文件進行配置的,也許你需要編輯這些文件來完成聯網工作,但是這些配置文件大都可以通過配置命令linuxconf (其中網路部分的配置可以通過netconf命令來實現)。下面介紹基本的 TCP/IP網路配置文件。
* /etc/conf.modules文件
該配置文件定義了各種需要在激活時載入的模塊的參數信息。這裡主要著重討論關於網卡的配置。在使用Linux做網關的情況下,Linux伺服器至少需要配置兩塊網卡。為了減少激活時可能出現的問題,Linux內核不會自動檢測多個網卡。對於沒有將網卡的驅動編譯到內核而是作為模塊動態載入的系統若需要安裝多塊網卡,應該在「conf.modules」文件中進行相應的配置。
若設備驅動被編譯為模塊(內核的模塊):對於PCI設備,模塊將自動檢測到所有已經安裝到系統上的設備;對於ISA卡,則需要向模塊提供IO地址,以使模塊知道在何處尋找該卡,這些信息在「/etc/conf.modules」中提供。
例如,我們有兩塊ISA匯流排的3c509卡,一個IO地址是0x300,另一個是0x320。編輯「conf.modules」文件如下:
alias eth0 3c509alias eth1 3c509options 3c509 io=0x300,0x320
這是說明3c509的驅動程序應當分別以eth0或eth1的名稱被載入(alias eth0,eth1),並且它們應該以參數io=0x300,0x320被裝載,來通知驅動程序到哪裡去尋找網卡,其中0x是不可缺少的。
對於PCI卡,僅僅需要alias命令來使ethN和適當的驅動模塊名關聯,PCI卡的IO地址將會被自動的檢測到。對於PCI卡,編輯「conf.modules」文件如下:
alias eth0 3c905alias eth1 3c905
若驅動已經被編譯進了內核:系統激活時的PCI檢測程序將會自動找到所有相關的網卡。ISA卡一般也能夠被自動檢測到,但是在某些情況下,ISA卡仍然需要做下面的配置工作:
在「/etc/lilo.conf」中增加配置信息,其方法是通過LILO程序將激活參數信息傳遞給內核。對於ISA卡,編輯「lilo.conf」文件,增加如下內容:
append=" ether="0,0,eth0 ether="0,0,eth1"
註:先不要在「lilo.conf」中加入激活參數,測試一下你的ISA卡,若失敗再使用激活參數。
如果用傳遞激活參數的方法,eth0和eth1將按照激活時被發現的順序來設置。
* /etc/HOSTNAME文件:
該文件包含了系統的主機名稱,包括完全的域名,如:
deep.openarch.com
*/etc/sysconfig/network-scripts/ifcfg-ethN文件:
在RedHat中,系統網路設備的配置文件保存在「/etc/sysconfig/network-scripts」目錄下,ifcfg-eth0包含第一塊網卡的配置信息,ifcfg-eth1包含第二塊網卡的配置信息。
下面是「/etc/sysconfig/network-scripts/ifcfg-eth0」文件的示例:
DEVICE=eth0IPADDR=208.164.186.1NETMASK=255.255.255.0NETWORK=208.164.186.0BROADCAST=208.164.186.255ONBOOT=yesBOOTPROTO=noneUSERCTL=no

若希望手工修改網路地址或在新的介面上增加新的網路界面,可以通過修改對應的文件(ifcfg-ethN)或創建新的文件來實現。
DEVICE=name name表示物理設備的名字
IPADDR=addr addr表示賦給該卡的IP地址
NETMASK=mask mask表示網路掩碼
NETWORK=addr addr表示網路地址
BROADCAST=addr addr表示廣播地址
ONBOOT=yes/no 激活時是否激活該卡
none:無須激活協議
bootp:使用bootp協議
dhcp:使用dhcp協議
USERCTL=yes/no 是否允許非root用戶控制該設備
*/etc/resolv.conf文件:
該文件是由域名解析器(resolver,一個根據主機名解析IP地址的庫)使用的配置文件,示例如下:
search openarch.comnameserver 208.164.186.1nameserver 208.164.186.2
「search domainname.com」表示當提供了一個不包括完全域名的主機名時,在該主機名后添加domainname.com的後綴;「nameserver」表示解析域名時使用該地址指定的主機為域名伺服器。其中域名伺服器是按照文件中出現的順序來查詢的。
*/etc/host.conf文件:
該文件指定如何解析主機名。Linux通過解析器庫來獲得主機名對應的IP地址。下面是一個「/etc/host.conf」的示例:
order bind,hosts
multi on
ospoof on
「order bind,hosts」指定主機名查詢順序,這裡規定先使用DNS來解析域名,然後再查詢「/etc/hosts」文件(也可以相反)。
「multi on」指定是否「/etc/hosts」文件中指定的主機可以有多個地址,擁有多個IP地址的主機一般稱為多穴主機。
「nospoof on」指不允許對該伺服器進行IP地址欺騙。IP欺騙是一種攻擊系統安全的手段,通過把IP地址偽裝成別的計算器,來取得其它計算器的信任。
*/etc/sysconfig/network文件
該文件用來指定伺服器上的網路配置信息,下面是一個示例:
NETWORK=yesRORWARD_IPV4=yesHOSTNAME=deep.openarch.comGAREWAY=0.0.0.0GATEWAYDEV=NETWORK=yes/no 網路是否被配置;FORWARD_IPV4=yes/no 是否開啟IP轉發功能HOSTNAME=hostname hostname表示伺服器的主機名GAREWAY=gw-ip gw-ip表示網路網關的IP地址GAREWAYDEV=gw-dev gw-dw表示網關的設備名,如:etho等
注意:為了和老的軟體相兼容,「/etc/HOSTNAME」文件應該用和HOSTNAME=hostname相同的主機名。
*/etc/hosts文件
當機器激活時,在可以查詢DNS以前,機器需要查詢一些主機名到IP地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名伺服器情況下,系統上的所有網路程序都通過查詢該文件來解析對應於某個主機名的IP地址。
下面是一個「/etc/hosts」文件的示例:
IP Address Hostname Alias127.0.0.1 Localhost Gate.openarch.com208.164.186.1 gate.openarch.com Gate

最左邊一列是主機IP信息,中間一列是主機名。任何後面的列都是該主機的別名。一旦配置完機器的網路配置文件,應該重新激活網路以使修改生效。使用下面的命令來重新激活網路:/etc/rc.d/init.d/network restart
* /etc/inetd.conf文件
眾所周知,作為伺服器來說,服務埠開放越多,系統安全穩定性越難以保證。所以提供特定服務的伺服器應該儘可能開放提供服務必不可少的埠,而將與伺服器服務無關的服務關閉,比如:一台作為www和ftp伺服器的機器,應該只開放80 和25埠,而將其它無關的服務如:finger auth等服務關掉,以減少系統漏洞。
而inetd,也叫作「超級伺服器」,就是監視一些網路請求的守護進程,其根據網路請求來調用相應的服務進程來處理連接請求。inetd.conf則是inetd的配置文件。inetd.conf文件告訴inetd監聽哪些網路埠,為每個埠激活哪個服務。在任何的網路環境中使用Linux系統,第一件要做的事就是了解一下伺服器到底要提供哪些服務。不需要的那些服務應該被禁止掉,最好卸載掉,這樣黑客就少了一些攻擊系統的機會。查看「/etc/inetd.conf」文件,了解一下inetd提供哪些服務。用加上註釋的方法(在一行的開頭加上#號),禁止任何不需要的服務,再給inetd進程發一個SIGHUP信號。
第一步:把文件的許可權限改成600。
# chmod 600 /etc/inetd.conf
第二步:確信文件的所有者是root。
# stat /etc/inetd.conf
第三步:編輯「inetd.conf」文件(vi /etc/inetd.conf),禁止所有不需要的服務,如:ftp、 telnet、 shell、 login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。如果你覺得某些服務有用,可以不禁止這些服務。但是,把這些服務禁止掉,系統受攻擊的可能性就會小很多。改變后的「inetd.conf」文件的內容如下面所示:
# To re-read this file after changes, just do a 'killall -HUP inetd'##echo stream tcp nowait root internal#echo dgram udp wait root internal#discard stream tcp nowait root internal#discard dgram udp wait root internal#daytime stream tcp nowait root internal#daytime dgram udp wait root internal#chargen stream tcp nowait root internal#chargen dgram udp wait root internal#time stream tcp nowait root internal#time dgram udp wait root internal## These are standard services.##ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd## Shell, login, exec, comsat and talk are BSD protocols.#





[火星人 via ] 建立一個安全Linux伺服器已經有156次圍觀

http://www.coctec.com/docs/service/show-post-2654.html