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

Linux網絡服務器配置入門(二)

* /etc/inetd.conf 文件 眾所周知,作為 服務器 來說,服務端口開放越多,系統 安全 穩定性越難以保證。所以提供特定服務的服務器應該盡可能開放提供服務必不可少的端口,而將與服務器服務無關的服務關閉,比如:一台作為www和ftp服務器的機器,應該只開放80
* /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.

#

#shell stream tcp nowait root /usr/sbin/tcpd in.rshd

#login stream tcp nowait root /usr/sbin/tcpd in.rlogind

#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd

#comsat dgram udp wait root /usr/sbin/tcpd in.comsat

#talk dgram udp wait root /usr/sbin/tcpd in.talkd

#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd

#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd

#

# Pop and imap mail services et al

#

#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d

#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

#imap stream tcp nowait root /usr/sbin/tcpd imapd

#

# The Internet UUCP service.

#

#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l

#

# Tftp service is provided primarily for booting. Most sites

# run this only on machines acting as "boot servers." Do not uncomment

# this unless you *need* it.

#

#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd

#bootps dgram udp wait root /usr/sbin/tcpd bootpd

#

# Finger, systat and netstat give out user information which may be

# valuable to potential "system crackers." Many sites choose to disable

# some or all of these services to improve security.

#

#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd

#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd

#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx

#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet

#

# Authentication

#

#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o

#
# End of inetd.conf

注意:改變了“inetd.conf”文件之後,別忘了給inetd進程發一個SIGHUP信號(killall –HUP inetd)。

[root@deep /root]# killall -HUP inetd

第四步:

為了保證“inetd.conf”文件的安全,可以用chattr命令把它設成不可改變。把文件設成不可改變的只要用下面的命令:

[root@deep]# chattr +i /etc/inetd.conf

這樣可以避免“inetd.conf”文件的任何改變(意外或是別的原因)。一個有“i”屬性的文件是不能被改動的:不能刪除或重命名,不能創建這個文件的鏈接,不能往這個文件裡寫數據。只有系統管理員才能設置和清除這個屬性。如果要改變inetd.conf文件,你必須先清除這個不允許改變的標志:

[root@deep]# chattr -i /etc/inetd.conf

但是對於諸如sendmail,named,www等服務,由於它們不象finger,telnet等服務,在請求到來時由inet守護進程啟動相應的進程提供服務,而是在系統啟動時,作為守護進程運行的。而對於redhat linux,提供了一個linuxconfig命令,可以通過它在圖形界面下交互式地設置是否在啟動時運行相關服務。也可以通過命令來設置是否啟動時啟動某個服務,如:[root@deep]# chkconfig –level 35 named off

具體命令可以參考man chkconfig的說明。
* /etc/hosts.allow 文件
但是對於telnet、ftp等服務,如果將其一同關閉,那麼對於管理員需要遠程管理時,將非常不方便。Linux提供另外一種更為靈活和有效的方法來實現對服務請求用戶的限制,從而可以在保證安全性的基礎上,使可信任用戶使用各種服務。Linux提供了一個叫TCP wrapper的程序。在大多數發布版本中該程序往往是缺省地被安裝。利用TCP wrapper你可以限制訪問前面提到的某些服務。而且TCP wrapper的記錄文件記錄了所有的企圖訪問你的系統的行為。通過last命令查看該程序的log,管理員可以獲知誰曾經或者企圖連接你的系統。

在/etc目錄下,有兩個文件:hosts.deny hosts.allow 通過配置這兩個文件,你可以指定哪些機器可以使用這些服務,哪些不可以使用這些服務。

當服務請求到達服務器時,TCP wrapper就按照下列順序查詢這兩個文件,直到遇到一個匹配為止:

1.當在/etc/hosts.allow裡面有一項與請求服務的主機地址項匹配,那麼就允許該主機獲取該服務

2.否則,如果在/etc/hosts.deny裡面有一項與請求服務的主機地址項匹配,就禁止該主機使用該項服務。

3.如果相應的配置文件不存在,訪問控制軟件就認為是一個空文件,所以可以通過刪除或者移走配置文件實現對清除所有設置。在文件中,空白行或者以#開頭的行被忽略,你可以通過在行前加 # 實現注釋功能。

配置這兩個文件是通過一種簡單的訪問控制語言來實現的,訪問控制語句的基本格式為:

程序名列表:主機名/IP地址列表。

程序名列表指定一個或者多個提供相應服務的程序的名字,名字之間用逗號或者空格分割,可以在inetd.conf文件裡查看提供相應服務的程序名:如上面的文件示例中,telent所在行的最後一項就是所需的程序名:in.telnetd。

主機名/IP地址列表指定允許或者禁止使用該服務的一個或者多個主機的標識,主機名之間用逗號或空格分簟3絛蛎?橢骰?刂范伎梢允褂猛ㄅ浞??迪址獎愕鬧付ǘ嘞罘?窈投喔鲋骰??

Linux提供了下面靈活的方式指定進程或者主機列表:

1.一個以"."起始的域名串,如 .amms.ac.cn 那麼www.amms.ac.cn就和這一項匹配

2.以"."結尾的IP串如 202.37.152. 那麼IP地址包括202.37.152. 的主機都與這一項匹配。

3.格式為n.n.n.n/m.m.m.m表示網絡/掩碼,如果請求服務的主機的IP地址與掩碼的位與的結果等於n.n.n.n 那麼該主機與該項匹配。

4.ALL表示匹配所有可能性

5.EXPECT表示除去後面所定義的主機。如:list_1 EXCEPT list_2 表示list_1主機列表中除去List_2所列出的主機

6.LOCAL表示匹配所有主機名中不包含"."的主機

上面的幾種方式只是Linux提供的方式中的幾種,但是對於我們的一般應用來說是足夠了。我們通過舉幾個例子來說明這個問題:

例一:我們只希望允許同一個局域網的機器使用服務器的ftp功能,而禁止廣域網上面的ftp服務請求,本地局域網由 202.39.154.、202.39.153.和202.39.152. 三個網段組成。

在hosts.deny文件中,我們定義禁止所有機器請求所有服務:

ALL:ALL

在hosts.allow文件中,我們定義只允許局域網訪問ftp功能:

in.ftpd -l –a: 202.39.154 202.39.153. 202.39.152.

這樣,當非局域網的機器請求ftp服務時,就會被拒絕。而局域網的機器可以使用ftp服務。此外,應該定期檢查/var/log目錄下的紀錄文件,發現對系統安全有威脅的登錄事件。last命令可以有效的查看系統登錄事件,發現問題所在。

最後tcpdchk是檢查TCP_WAPPERS配置的程序。它檢查TCP_WAPPERS的配置,並報告它可以發現的問題或潛在的問題。在所有的配置都完成了之後,請運行tcpdchk程序:

[root@deep]# tcpdchk

Copyright © Linux教程網 All Rights Reserved