教你如何搭建一個安全的Linux伺服器教程

來源:互聯網
上載者:User

要建立一個安全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。

  [root@deep]# chmod 600 /etc/inetd.conf

  第二步:確信檔案的所有者是root。

  [root@deep]# 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.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.