Linux伺服器在啟動時需要啟動很多系統服務,它們向本地和網絡使用者提供了Linux的系統功能接口,直接面向應用程式和使用者。提供這些服務的程式是由運作在背景的守護程序(daemons)來執行的。守
護程序是生存期長的一種程序。它們獨立于控制終端并且周期性的執行某種任務或等待處理某些發生的事件。他們常常在系統引導裝入時啟動,在系統關閉時終止。linux系統有很多守護程序,大多數伺服器都是用守護程序實作的。同時,守護程序完成許多系統任務,比如,作業規劃程序crond、列印程序lqd等。有些書籍和資料也把守護程序稱作:“服務”。選擇運作哪些守護程序,要根據具體需求決定。檢視系統可以提供的守護程序對應的服務,使用下面方法,以root權限運作:
#ntsysv
圖1 可以選擇的系統服務
界面如圖1所示的視窗,下面詳細介紹一下各項系統服務的功能。以英文字母為序:
一、Linux守護程序簡介
1.alsasound :Alsa聲霸卡驅動守護程式。Alsa聲霸卡驅動程式本來是為了 一種聲霸卡Gravis UltraSound(GUS)而寫的,該程式被證 明很優秀,于是作者就開始為一般的聲霸卡寫 驅動程式。 Alsa和OSS/Free 及OSS/Linux相容,但是有自己的接 口,甚至比OSS優秀。
2.acpid:acpid(Advanced Configuration and Power Interface)是為替代傳統的APM電源管理标準而推出的新型電源管理标準。通常筆記本電腦需要啟動電源進行管理。
3.atalk:AppleTalk網絡守護程序。注意不要在背景運作該程式,該程式的資料結構必須在運作其他程序前先花一定時間初始化。
4.amd: 自動安裝NFS守護程序。
5.anacron:一個自動化運作任務守護程序。Red Hat Linux 随帶四個自動化任務的工具:cron、 anacron、at、和 batc。當你的Linux伺服器并不是全天運作,這個anacron就可以幫你執行在"crontab"設定的時間内沒有執行的工作。
6.apmd:apmd(Advanced Power Management)是進階電源管理。傳統的電源管理标準,對于筆記本電腦比較有用,可以了解系統的電池電量資訊。并将相關資訊通過syslogd 寫入日志。也可以用來在電源不足時關機。
7.arptables_jf :為arptables網絡的使用者控制過濾的守護程序。
8.arpwatch: 記錄日志并建構一個在LAN接口上看到的以太網位址和IP位址對資料庫 。
atd:at和batch指令守護程序,使用者用at指令排程的任務。Batch用于在系統負荷比較低時 運作批處理任務。
9.autofs:自動安裝管理程序automount,與NFS相關,依賴于NIS伺服器。
10.bootparamd:引導參數伺服器,為LAN上的無盤工作站提供引導所需的相關資訊。
11.bluetooch:藍牙伺服器守護程序。
12.crond :cron是Unix下的一個傳統程式,該程式周期地運作使用者 排程的任務。比起傳統的Unix版本,Linux版本添加了不少屬性,而且更安全,配置更簡單。類似計劃任務。
13.chargen:使用tcp協定的chargen server,chargen(Character Generator Protocol)是一種網絡服務,主要功能是提供類似遠端打字的功能。
14.chargen-udp:使用UDP協定的chargen server。
15.cpuspeed:監測系統空閑百分比,降低或加快CPU時脈速度和電壓進而在系統空閑時将能源消耗降為最小,而在系統繁忙時最大化加快系統執行速度。
16.dhcpd:動态主機控制協定(Dynamic Host Control Protocol)的服務守護程序。
17.cups: cups(Common UNIX Printing System)是通用UNIX列印守護程序,為Linux提供第三代列印功能。
18.cups-config-daemons:cups列印系統切換守護程序。
19.cups-lpd:cups行列印守護程序。
20.daytime:使用TCP 協定的Daytime守護程序,該協定為客戶機實作從遠端伺服器擷取日期 和時間的功能。預設端口:13。
21.daytime-udp:使用UDP 協定的Daytime守護程序。
22.dc_server:使用SSL安全套接字的代理伺服器守護程序。
23.dc_client:使用SSL安全套接字的用戶端守護程序。
24.diskdump:伺服器磁盤備份守護程序。
25.echo:伺服器回顯客戶資料服務守護程序。
26.echo-udp:使用UDP協定的伺服器回顯客戶資料服務守護程序。
27.eklogin:接受rlogin會話鑒證和用kerberos5加密的一種服務的守護程序。
28.gated :網關路由守護程序。它支援各種路由協定,包括RIP版本1和2、DCN HELLO協定、 OSPF版本2以及EGP版本2到4。
29.gpm:gpm(General Purpose Mouse Daemon )守護程序為文本模式下的Linux程式如mc(Midnight Commander)提供了滑鼠的支援。它也支援控制台下滑鼠 的拷貝,粘貼操作以及彈出式菜單。
30.gssftp: 使用kerberos 5認證的ftp守護程序
31.httpd:Web伺服器Apache守護程序,可用來提供HTML檔案以 及CGI動态内容服務。
32.inetd :網際網路操作守護程式。監控網絡對各種它管理的服務的需求,并在必要的時候啟動相應的服務程式。在Redhat 和Mandrake linux中被xinetd代替。Debian, Slackware, SuSE仍然使用。
33.innd:Usenet新聞伺服器守護程序。
34.iiim:中文輸入法伺服器守護程序。
35.iptables:iptables防火牆守護程序。
36.irda:紅外端口守護程序。
37.isdn:isdn啟動和中止服務守護程序。
38.krb5-telnet:使用kerberos 5認證的telnet守護程序。
39.klogin:遠端登陸守護程序。
40.keytable: 該程序的功能是轉載在/etc/sysconfig/keyboards裡定義的鍵盤映射表,該表可以通過kbdconfig工具進行選擇。您應該使該程式處于激活狀态。
41.irqbalance:對多個系統處理器環境下的系統中斷請求進行負載平衡的守護程式。如果你隻安裝了一個CPU,就不需要加載這個守護程式。
42.kshell :kshell守護程序。
43.kudzu:硬體自動檢測程式,會自動檢測硬體是否發生變動,并相應進行硬體的添加、删除工作。當系統啟動時,kudzu會對目前的硬體進行檢測,并且和存儲在 /etc/sysconfig/hwconf中的硬體資訊進行對照,如果某個硬體從系統中被添加或者删除時,那麼kudzu就會察覺到,并且通知使用者是否進行相關配置,然後修改etc/sysconfig/hwconf,使硬體資料與系統保持同步。如果/etc/sysconfig/hwconf這個檔案不存在,那麼kudzu将會從/etc/modprobe.conf,/etc/sysconfig/network-scripts/和 etc/X11/XF86Config中探測已經存在的硬體。如果你不打算增加新硬體,那麼就可以關閉這個啟動服務,以加快系統啟動時間。
44.ldap:ldap(Lightweight Directory Access Protocol)目錄通路協定伺服器守護程序。
45.lm_seroems:檢測主機闆工作情況守護程序。
46.lpd :lpd是老式列印守護程式,負責将lpr等程式送出給列印 作業。
47.mdmonitor:RAID相關裝置的守護程式。
48.messagebus:D- BUS是一個庫,為兩個或兩個以上的應用程式提供一對一的通訊。 dbus-daemon-1是一個應用程式,它使用這個庫來實作messagebus守護程式。多個應用程式通過連接配接messagebus守護程式可以實作與其他程式交換資訊。
49.microcode_ctl:可編碼以及發送新的微代碼到核心以更新<b>Intel</b> IA32系列處理器守護程序。
50.mysqld: 一個快速高效可靠的輕型SQL資料庫引擎守護程序。
51.named:DNS(BIND)伺服器守護程序。
52.netplugd:netplugd(network <b>ca</b>ble hotplug management daemon)守護程式,用于監控一個或多個網絡接口的狀态,當某些事件觸發時運作一個外部腳本程式。
53.netdump:遠端網絡備份伺服器守護程序。
54.netfs:Network Filesystem Mounter,該程序安裝和解除安裝NFS、SAMBA和NCP網絡檔案系統。
55.nfs:網絡檔案系統守護程序。
56.nfslock:NFS是一個流行的通過TCP/IP網絡共享檔案的協定,此守護程序提供了NFS檔案鎖定功能。
57.ntpd:Network time Protocol daemon(網絡時間校正協定)。ntpd是用來使系統和一個精确的時間源保持時間同步的協定守護程序。
58.network:激活/關閉啟動時的各個網絡接口守護程序。
59.psacct:該守護程序包括幾個工具用來監控程序活動的工具,包括ac,lastcomm, accton 和sa。
60.pcmcia:主要用于支援筆記本電腦接口守護程序。
61.portmap:該守護程序用來支援RPC連接配接,RPC被用于NFS以及NIS 等服務。
62.postgresql: PostgreSQL 關系資料庫引擎。
63.proftpd: proftpd 是Unix下的一個配置靈活的ftp伺服器的守護程式。
64.pppoe:ADSL連接配接守護程序。
65.random :儲存和恢複系統的高品質随機數生成器,這些随機數是系 統一些随機行為提供的。
66.rawdevices:在使用叢集檔案系統時用于加載raw裝置的守護程序。
67.readahead、 readahead_early:readahead和readahead_early是在Fedora core 2中最新推出的兩個背景運作的守護程式。其作用是在啟動系統期間,将啟動系統所要用到的檔案首先讀取到記憶體中,然後在記憶體中進行執行,以加快系統的啟動速度。
68.rhnsd:Red Hat 網絡服務守護程序。通知官方的安全資訊以及為系統打更新檔。
69.routed :該守護程式支援RIP協定的自動IP路由表維護。RIP主要 使用在小型網絡上,大一點的網絡就需要複雜一點的協定。
70.rsync:remote sync遠端資料備份守護程序。
71.rsh :遠端主機上啟動一個shell,并執行使用者指令。
72.rwhod: 允許遠端使用者獲得運作rwho守護程式的機器上所有已登入使用者的清單。
73.rstatd:一個為LAN上的其它機器收集和提供系統資訊的守候程序。
74.ruserd:遠端使用者定位服務,這是一個基于RPC的服務,它提供關于目前記錄到LAN上一個機器日志中的使用者資訊
75.rwalld:激活rpc.rwall服務程序,這是一項基于RPC的服務,允許使用者給每個注冊到LAN機器上的其他終端寫消息 。
76.rwhod:激活rwhod服務程序,它支援LAN的rwho和ruptime服務。
77.saslauthd: 使用SASL的認證守護程序。
78.sendmail:郵件伺服器sendmail守護程序。
79.smb:Samba檔案共享/列印服務守護程序。
80.snmpd:本地簡單網絡管理守護程序。
81.squid:代理伺服器squid守護程序。
82.sshd:OpenSSH伺服器守護程序。Secure Shell Protocol可以實作安全地遠端管理主機。
83.smartd:Self Monitor Analysis and Reporting Technology System,監控你的硬碟是否出現故障。
84.syslog:一個讓系統引導時起動syslog和klogd系統日志守候程序的腳本。
85.time :該守護程序從遠端主機擷取時間和日期,采用TCP協定。
86.time-udp: 該守護程序從遠端主機擷取時間和日期,采用UDP協定。
87.tux:在Linux核心中運作apache伺服器的守護程序。
88.vsftpd:vsftpd伺服器的守護程序。
89.vncserver: VNC (Virtual Network Computing,虛拟網絡計算),它提供了一種在本地系統上顯示遠端計算機整個"桌面"的輕量型協定。
90.xfs:X Window字型伺服器守護程序,為本地和遠端X伺服器提供字型集。
91.xinetd:支援多種網絡服務的核心守護程序。
92.ypbind:為NIS(網絡資訊系統)客戶機激活ypbind服務程序 。
93.yppasswdd:NIS密碼伺服器守護程序。
94.ypserv:NIS主伺服器守護程序。
95.yum:RPM作業系統自動更新和軟體包管理守護程序。
二、守護程序工作原理和方式
在Client/Server模式下。伺服器監聽(Listen)在一個特定的端口上等待客戶連接配接。連接配接成功後伺服器和用戶端通過端口進行資料通信。守護程序
的工作就是打開一個端口,并且等待(Listen)進入連接配接。如果用戶端産生一個連接配接請求,守護程序就建立(Fork)一個子伺服器響應這個連接配接,而主伺服器繼續監聽其他的服務請求。
2.守護程序工作方式:
(1)運作獨立的守護程序
獨立運作的守護程序由init腳本負責管理,所有獨立運作的守護程序的腳本在/etc/rc.d/init.d/目錄下。系統服務都是獨立運作的守護程序包括:syslogd和cron等。運作獨立的守護程序工作方式稱作:stand-alone。它Unix傳統的C/S模式的通路模式。伺服器監聽(Listen)在一個特點的端口上等待用戶端的聯機。如果用戶端産生一個連接配接請求,守護程序就建立(Fork)一個子伺服器響應這個連接配接,而主伺服器繼續監聽。以保持多個子伺服器池等待下一個用戶端請求。stand-alone模式工作原理見圖1。
圖1 stand-alone工作模式
工作在stand-alone模式下的網絡服務有route、gated。另外是大家最熟悉是Web伺服器:Apache和郵件伺服器Sendmail、域名伺服器Bind。因為這些負載很大伺服器上,預先創子伺服器,可以通過客戶的服務速度。在Linux系統中通過stand-alone工作模式啟動的服務由/etc/rc.d/下面對應的運作級别當中的符号連結啟動。
(2)xinetd模式
從守護程序的概念可以看出,對于系統所要通過的每一種服務,都必須運作一個監聽某個端口連接配接所發生的守護程序,這通常意味着資源浪費。為了解決這個問題,Linux引進了“網絡守護程序服務程式”的概念。Redhat Linux 9.0使用的網絡守護程序是xinted(eXtended InterNET daemon)。和stand-alone模式相比xinted模式也稱 Internet Super-Server(超級伺服器)。xinetd能夠同時監聽多個指定的端口,在接受使用者請求時,他能夠根據使用者請求的端口不同,啟動不同的網絡服務程序來處理這些使用者請求。可以把xinetd看做一個管理啟動服務的管理伺服器,它決定把一個客戶請求交給那個程式處理,然後啟動相應的守護程序。 xinetd模式工作原理見圖3。
圖3 xinetd工作模式
和 stand-alone工作模式相比,系統不想要每一個網絡服務程序都監聽其服務端口。運作單個xinetd就可以同時監聽所有服務端口,這樣就降低了系統開銷,保護系統資源。但是對于通路量大、經常出現并發通路時,xinetd想要頻繁啟動對應的網絡服務程序,反而會導緻系統性能下降。察看系統為 Linux服務提供那種模式方法在Linux指令行可以使用pstree指令可以看到兩種不同方式啟動的網絡服務。一般來說系統一些負載高的服務:sendmail、Apache服務是單獨啟動的。而其他服務類型都可以使用xinetd超級伺服器管理。檢視目前運作的守護程序可以使用指令:“pstree”
三、守護程序管理工具
Linux提供了三種不同的守護程序管理工具:redhat-config-services、ntsysv、chkconfig,可以根據具體需要靈活運用。
(1) redhat-config-services
redhat-config-services 是一個一個圖形化應用程式,它顯示了每項服務的描述,以及每項服務是否在引導時啟動(運作級别3、4、5),并允許你啟動、停止、或重新啟動/etc /rc.d/init.d 中的哪些 SysV 服務,哪些 xinetd 服務。要從桌面啟動服務配置工具,點選面闆上的「主菜單」 => 「系統設定」 => 「伺服器設定」 => 「服務」,或在 shell 提示下,鍵入指令:“redhat-config-services” (見圖4)。
圖4 redhat-config-services配置工具
redhat- config-services列出了 /etc/rc.d/init.d 中的服務和由 xinetd 控制的服務。點選左側清單中的服務名來顯示該服務的簡短描述以及它的服務狀态。如果這個服務不是 xinetd 服務,狀态視窗會顯示該服務目前是否在運作。如果該服務被 xinetd 所控制,狀态視窗會顯示「xinetd 服務」這個短語。要立即啟動、停止、或重新啟動某項服務,從清單中選擇該項服務,然後點選工具欄上的相應按鈕(或從「行動」拉下菜單中選擇行動)。如果該服務是一個 xinetd 服務,行動按鈕會被禁用,因為它們不能被單個地啟動或停止。 如果你通過選擇或取消選擇服務名旁的複選箱來啟用或禁用了 xinetd 服務,你必須從拉下菜單中選擇「檔案」 => 「儲存改變」來重新啟動 xinetd,并立即啟用或禁用你所改變的 xinetd 服務。xinetd 還被配置成自動記憶設定。你可以同時啟用或禁用多個 xinetd 服務,在結束後再儲存改變。
(2)ntsysv
ntsysv 工具為激活或停運服務提供了簡單的界面。你可以使用 ntsysv 來啟動或關閉由 xinetd 管理的服務。你還可以使用 ntsysv 來配置運作級别。按照預設設定,隻有目前運作級别會被配置。要配置不同的運作級别,使用 --level 選項來指定一個或多個運作級别。譬如,指令 ntsysv --level 345 配置運作級别3、4、和5。 ntsysv 的工作界面見圖1。使用上下箭頭來上下檢視清單。使用空格鍵來選擇或取消選擇服務,或用來“按”「确定」和「取消」按鈕。要在服務清單和「确定」、「取消」按鈕中切換,使用 [Tab]鍵。* 标明某服務被設為啟動。[F1] 鍵會彈出每項服務的簡短描述。
(3)chkconfig
chkconfig 指令也可以用來激活和解除服務。chkconfig --list 指令顯示系統服務清單,以及這些服務在運作級别0到6中已被啟動(on)還是停止(off)。chkconfig 還能用來設定某一服務在某一指定的運作級别内被啟動還是被停運。譬如,要在運作級别3、4、5中停運 nfs 服務,使用下面的指令:
chkconfig --level 345 nfs off
四、合理選擇守護程序規避安全隐患
運作不必要或有漏洞的守護程序會給作業系統帶來安全和性能上的影響。對于系統安全來說,如果作業系統中的任何一個漏洞,都可能使整個系統受到攻擊。是以,增加系統安全的最佳辦法就是盡量監視系統的功能。文章開始介紹了重要的守護程序,其中“crond、syslog、keytable、xinetd、 kudzu、iptables”等是需要運作的,echo、echo-udp、daytime、daytime-udp、chargen、 chargen-udp主要是做調試用,普通使用者基本用不到,可以關閉。
r字開頭的守護程序:rsh、rstatd、rsync、 rusersd、rwalld這些指令都是Berkley遠端指令,因為都以字母r開頭,故稱r*指令。主要使用來使一台計算機上的某個使用者以相同的帳戶遠端執行另一台計算機的一個程式。但是,r指令已經被證明存在安全風險。對于确實需要的守護程序,應該盡量選用最新的版本程式,并增加其安全防範。
另外我們還要合理選擇守護程序例如innd是運作新聞討論區服務的程序,如果使用者不做Usenet伺服器,應該關掉。