# 7.3 限制聯機埠口 (port)
## 7.3 限制聯機埠口 (port)
為什么我們的主機會響應網絡上面的一些要求封包呢?例如我們設定了一部 WWW 主機后,當有來自 Internet 的 WWW 要求時,我們的主機就會予以回應,這是因為我們的主機有啟用了 WWW 的監聽埠口啊!所以,當我們啟用了一個 daemon 時,就可能會造成主機的端口在進行監聽的動作,此時該 daemon 就是已經對網絡上面提供服務了!萬一這個 daemon 程序有漏洞,因為他提供了 Internet 的服務,所以就容易被 Internet 上面的 cracker 所攻擊了!所以說,仔細的檢查自己系統上面的端口到底開了多少個,并且予以嚴格的管理,才能夠降低被攻擊的可能性啊!
- - - - - -
### 7.3.1 什么是 port
快講到爛掉了!當妳啟動一個網絡服務,這個服務會依據 TCP/IP 的相關通訊協議啟動一個埠口在進行監聽, 那就是 TCP/UDP 封包的 port (埠口) 了。我們從第二章也知道網絡聯機是雙向的,服務器端得要啟動一個監聽的埠口, 客戶端得要隨機啟動一個埠口來接收響應的數據才行。那么服務器端的服務是否需要啟動在固定的埠口? 客戶端的埠口是否又是固定的呢?我們將第二章中與 port 有關的資料給她匯整一下先:
- 服務器端啟動的監聽埠口所對應的服務是固定的:
例如 WWW 服務開啟在 port 80 ,FTP 服務開啟在 port 21,email 傳送開啟在 port 25 等等,都是通訊協議上面的規范!
- 客戶端啟動程序時,隨機啟動一個大于 1024以上的埠口:
客戶端啟動的 port 是隨機產生的,主要是開啟在大于 1024 以上的埠口。這個 port 也是由某些軟件所產生的, 例如瀏覽器、Filezilla 這個 FTP 客戶端程序等等。
- 一部服務器可以同時提供多種服務:
所謂的『監聽』是某個服務程序會一直常駐在內存當中,所以該程序啟動的 port 就會一直存在。 只要服務器軟件激活的埠口不同,那就不會造成沖突。當客戶端連接到此服務器時,透過不同的埠口,就可以取得不同的服務數據啰。 所以,一部主機上面當然可以同時啟動很多不同的服務啊!
- 共 65536 個 port:
由第二章的 TCP/UDP 表頭數據中,就知道 port 占用 16 個位,因此一般主機會有 65536 個 port,而這些 port 又分成兩個部分,以 port 1024 作區隔:
- 只有 root 才能啟動的保留的 port:
在小于 1024 的埠口,都是需要以 root 的身份才能啟動的,這些 port 主要是用于一些常見的通訊服務,在 Linux 系統下,常見的協議與 port 的對應是記錄在 /etc/services 里面的。
- 大于 1024 用于 client 端的 port:
在大于 1024 以上的 port 主要是作為 client 端的軟件激活的 port 。
- 是否需要三向交握:
建立可靠的聯機服務需要使用到 TCP 協議,也就需要所謂的三向交握了,如果是非面向連接的服務,例如 DNS 與視訊系統, 那只要使用 UDP 協議即可。
- 通訊協議可以啟用在非正規的 port:
我們知道瀏覽器默認會連接到 WWW 主機的 port 80,那么你的 WWW 是否可以啟動在非 80 的其他埠口? 當然可以啊!你可以透過 WWW 軟件的設定功能將該軟件使用的 port 啟動在非正規的埠口, 只是如此一來,您的客戶端要連接到你的主機時,就得要在瀏覽器的地方額外指定你所啟用的非正規的埠口才行。 這個啟動在非正規的端口功能,常常被用在一些所謂的地下網站啦!^\_^。另外, 某些軟件默認就啟動在大于 1024 以上的端口,如 MySQL 數據庫軟件就啟動在 3306。
- 所謂的 port 的安全性:
事實上,沒有所謂的 port 的安全性!因為『Port 的啟用是由服務軟件所造成的』, 也就是說,真正影響網絡安全的并不是 port ,而是啟動 port 的那個軟件 (程序)! 或許你偶而會聽到:『沒有修補過漏洞的 bind 8.x 版,很容易被黑客所入侵,請盡快升級到 bind 9.x 以后版本』,所以啰,對安全真正有危害的是『某些不安全的服務』 而不是『開了哪些 port 』才是!因此,沒有必要的服務就將他關閉吧! 尤其某些網絡服務還會啟動一些 port 哩!另外,那些已啟動的軟件也需要持續的保持更新喔!
- - \*
### 7.3.2 埠口的觀察: netstat, nmap
好了,我們現在知道這個 port 是什么鬼東西了,再來就是要來了解一下,我們的主機到底是開了多少的 port 呢?由于 port 的啟動與服務有關,那么『服務』跟『 port 』對應的檔案是哪一個?再提醒一次呦!是『 /etc/services 』啦!而常用來觀察 port 的則有底下兩個程序:
- netstat:在本機上面以自己的程序監測自己的 port;
- nmap:透過網絡的偵測軟件輔助,可偵測非本機上的其他網絡主機,但有違法之虞。
見他的大頭王!怎么使用 nmap 會違法?由于 nmap 的功能太強大了,所以很多 cracker 會直接以他來偵測別人的主機,這個時候就可能造成違法啦!只要你使用 nmap 的時候不要去偵測別人的計算機主機,那么就不會有問題啦!底下我們分別來說一說這兩個寶貝吧!
- - - - - -
- netstat
在做為服務器的 Linux 系統中,開啟的網絡服務越少越好! 因為較少的服務可以較容易除錯 (debug) 與了解安全漏洞,并可避免不必要的入侵管道! 所以,這個時候請了解一下您的系統當中有沒有哪些服務被開啟了呢? 要了解自己的系統當中的服務項目,最簡便的方法就是使用 [netstat](http://linux.vbird.org/linux_server/0140networkcommand.php#netstat) 了!這個東西不但簡單,而且功能也是很不錯的。 這個指令的使用方法在 [第五章常用網絡功能](http://linux.vbird.org/linux_server/0140networkcommand.php)指令介紹當中提過了, 底下我們僅提供如何使用這個工具的方法啰!
- 列出在監聽的網絡服務:
```
[root@www ~]# netstat -tunl
ctive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
....(底下省略)....
```
上面說明了我的主機至少有啟動 port 111, 22, 25 等,而且觀察各聯機接口,可發現 25 為 TCP 埠口,但只針對 lo 內部循環測試網絡提供服務,因特網是連不到該埠口的。至于 port 22 則有提供因特網的聯機功能。
- 列出已聯機的網絡聯機狀態:
```
[root@www ~]# netstat -tun
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 192.168.1.100:22 192.168.1.101:2162 ESTABLISHED
```
從上面的數據來看,我的本地端服務器 (Local Address, 192.168.1.100) 目前僅有一條已建立的聯機,那就是與 192.168.1.101 那部主機連接的聯機,并且聯機方線是由對方連接到我主機的 port 22 來取用我服務器的服務吶!
- 刪除已建立或在監聽當中的聯機:
如果想要將已經建立,或者是正在監聽當中的網絡服務關閉的話,最簡單的方法當然就是找出該聯機的 PID, 然后將他 kill 掉即可啊!例如下面的范例:
```
[root@www ~]# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/P name
tcp 0 52 192.168.1.100:22 192.168.1.101:2162 ESTABLISHED 1342/0
```
如上面的范例,我們可以找出來該聯機是由 sshd 這個程序來啟用的,并且他的 PID 是 1342, 希望你不要心急的用 [killall](http://linux.vbird.org/linux_basic/0440processcontrol.php#killall) 這個指令,否則容易刪錯人 (因為你的主機里面可能會有多個 sshd 存在), 應該要使用 [kill](http://linux.vbird.org/linux_basic/0440processcontrol.php#kill) 這個指令才對喔!
```
[root@www ~]# kill -9 1342
```
- - \*
- nmap
如果你要偵測的設備并沒有可讓你登入的操作系統時,那該怎么辦?舉例來說,你想要了解一下公司的網絡打印機是否有開放某些協議時, 那該如何處理啊?現在你知道 [netstat](#netstat) 可以用來查閱本機上面的許多監聽中的通訊協議, 那例如網絡打印機這樣的非本機的設備,要如何查詢啊?呵呵!用 nmap 就對了!
nmap ([注1](#ps1))的軟件說明之名稱為:『Network exploration tool and security / port scanner』,顧名思義, 這個東西是被系統管理員用來管理系統安全性查核的工具!他的具體描述當中也提到了, nmap 可以經由程序內部自行定義的幾個 port 對應的指紋數據,來查出該 port 的服務為何,所以我們也可以藉此了解我們主機的 port 到底是干嘛用的!在 CentOS 里頭是有提供 nmap 的, 如果你沒有安裝,那么就使用 yum 去安裝他吧!
```
[root@www ~]# nmap [掃瞄類型] [掃瞄參數] [hosts 地址與范圍]
選項與參數:
[掃瞄類型]:主要的掃瞄類型有底下幾種:
-sT:掃瞄 TCP 封包已建立的聯機 connect() !
-sS:掃瞄 TCP 封包帶有 SYN 卷標的數據
-sP:以 ping 的方式進行掃瞄
-sU:以 UDP 的封包格式進行掃瞄
-sO:以 IP 的協議 (protocol) 進行主機的掃瞄
[掃瞄參數]:主要的掃瞄參數有幾種:
-PT:使用 TCP 里頭的 ping 的方式來進行掃瞄,可以獲知目前有幾部計算機存活(較常用)
-PI:使用實際的 ping (帶有 ICMP 封包的) 來進行掃瞄
-p :這個是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
[Hosts 地址與范圍]:這個有趣多了,有幾種類似的類型
192.168.1.100 :直接寫入 HOST IP 而已,僅檢查一部;
192.168.1.0/24 :為 C Class 的型態,
192.168.*.* + :嘿嘿!則變為 B Class 的型態了!掃瞄的范圍變廣了!
192.168.1.0-50,60-100,103,200 :這種是變形的主機范圍啦!很好用吧!
# 范例一:使用預設參數掃瞄本機所啟用的 port (只會掃瞄 TCP)
[root@www ~]# yum install nmap
[root@www ~]# nmap localhost
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
# 在預設的情況下,nmap 僅會掃瞄 TCP 的協議喔!
```
nmap 的用法很簡單吶!就直接在指令后面接上 IP 或者是主機名即可。不過,在預設的情況下 nmap 僅會幫你分析 TCP 這個通訊協議而已,像上面這個例子的輸出結果。但優點是順道也將開啟該埠口的服務也列出來了, 真是好! ^\_^!那如果想要同時分析 TCP/UDP 這兩個常見的通訊協議呢?可以這樣做:
```
# 范例二:同時掃瞄本機的 TCP/UDP 埠口
[root@www ~]# nmap -sTU localhost
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
111/udp open rpcbind <==會多出 UDP 的通訊協議埠口!
```
嘿嘿!與前面的范例比較一下,你會發現這次多了幾個 UDP 的埠口,這樣分析好多了!然后, 如果你想要了解一下到底有幾部主機活在你的網絡當中時,則可以這樣做:
```
# 范例三:透過 ICMP 封包的檢測,分析區網內有幾部主機是啟動的
[root@www ~]# nmap -sP 192.168.1.0/24
Starting Nmap 5.21 ( http://nmap.org ) at 2011-07-20 17:05 CST
Nmap scan report for www.centos.vbird (192.168.1.100)
Host is up.
Nmap scan report for 192.168.1.101 <==這三行講的是 192.168.101 的范例!
Host is up (0.00024s latency).
MAC Address: 00:1B:FC:58:9A:BB (Asustek Computer)
Nmap scan report for 192.168.1.254
Host is up (0.00026s latency).
MAC Address: 00:0C:6E:85:D5:69 (Asustek Computer)
Nmap done: 256 IP addresses (3 hosts up) scanned in 3.81 seconds
```
看到否?鳥哥的環境當中有三部主機活著吶 (Host is up)!并且該 IP 所對應的 MAC 也會被記錄下來, 很不錯吧!如果你還想要將各個主機的啟動的 port 作一番偵測的話,那就得要使用:
```
[root@www ~]# nmap 192.168.1.0/24
```
之后你就會看到一堆 port number 被輸出到屏幕上啰~如果想要隨時記錄整個網段的主機是否不小心開放了某些服務, 嘿嘿!利用 nmap 配合數據流重導向 (>, >> 等) 來輸出成為檔案, 那隨時可以掌握住您局域網絡內每部主機的服務啟動狀況啊! ^\_^
請特別留意,這個 nmap 的功能相當的強大,也是因為如此,所以很多剛在練習的黑客會使用這個軟件來偵測別人的計算機。 這個時候請您特別留意,目前很多的人已經都有『特別的方式』來進行登錄的工作!例如以 [TCP\_Wrappers](http://linux.vbird.org/linux_server/0250simple_firewall.php#TCP_Wrappers) (/etc/hosts.allow, /etc/hosts.deny) 的功能來記錄曾經偵測過該 port 的 IP! 這個軟件用來『偵測自己機器的安全性』是很不錯的一個工具,但是如果用來偵測別人的主機, 可是會『吃上官司』的!特別留意!!
- - - - - -
### 7.3.3 埠口與服務的啟動/關閉及開機時狀態設定
從第二章的數據我們就知道,其實 port 是由執行某些軟件之后被軟件激活的。所以要關閉某些 port 時,那就直接將某個程序給他關閉就是了!關閉的方法你當然可以使用 [kill](http://linux.vbird.org/linux_basic/0440processcontrol.php#kill),不過這畢竟不是正統的解決之道,因為 kill 這個指令通常具有強制關閉某些程序的功能,但我們想要正常的關閉該程序啊! 所以,就利用系統給我們的 script 來關閉就好了啊。 在此同時,我們就得再來稍微復習一下,一般傳統的服務有哪幾種類型?
- - - - - -
- stand alone 與 super daemon
我們在[基礎學習篇](http://linux.vbird.org/linux_basic)內談到,在一般正常的 Linux 系統環境下,服務的啟動與管理主要有兩種方式:
- Stand alone
顧名思義,stand alone 就是直接執行該服務的執行檔,讓該執行文件直接加載到內存當中運作, 用這種方式來啟動可以讓該服務具有較快速響應的優點。一般來說,這種服務的啟動 script 都會放置到 /etc/init.d/ 這個目錄底下,所以你通常可以使用:『 /etc/init.d/sshd restart 』之類的方式來重新啟動這種服務;
- Super daemon
用一個超級服務作為總管,來統一管理某些特殊的服務。在 CentOS 6.x 里面使用的則是 xinetd 這個 super daemon 啊!這種方式啟動的網絡服務雖然在響應上速度會比較慢, 不過,可以透過 super daemon 額外提供一些控管,例如控制何時啟動、何時可以進行聯機、 那個 IP 可以連進來、是否允許同時聯機等等。通常個別服務的配置文件放置在 /etc/xinetd.d/ 當中,但設定完畢后需要重新以『 /etc/init.d/xinetd restart 』重新來啟動才行!
關于更詳細的服務說明,請參考基礎篇的[認識服務](http://linux.vbird.org/linux_basic/0560daemons.php)一文, 鳥哥在這里不再贅述。好,那么如果我想要將我系統上面的 port 111 關掉的話, 那應該如何關閉呢?最簡單的作法就是先找出那個 port 111 的啟動程序喔!
```
[root@www ~]# netstat -tnlp | grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 990/rpcbind
tcp 0 0 :::111 :::* LISTEN 990/rpcbind
# 原來用的是 rpcbind 這個服務程序!
[root@www ~]# which rpcbind
/sbin/rpcbind
# 找到檔案后,再以 rpm 處理處理
[root@www ~]# rpm -qf /sbin/rpcbind
rpcbind-0.2.0-8.el6.x86_64
# 找到了!就是這個軟件!所以將他關閉的方法可能就是:
[root@www ~]# rpm -qc rpcbind | grep init
/etc/rc.d/init.d/rpcbind
[root@www ~]# /etc/init.d/rpcbind stop
```
透過上面的這個分析的流程,你可以利用系統提供的很多方便的工具來達成某個服務的關閉! 為啥這么麻煩?不是利用 kill -9 990 就可以刪掉該服務了嗎? 是沒錯啦!不過,你知道該服務是做啥用的嗎?你知道將他關閉之后,你的系統會出什么問題嗎? 如果不知道的話,那么利用上面的流程不就可以找出該服務軟件,再利用 rpm 查詢功能, 不就能夠知道該服務的作用了?所以說,這個方式還是對您會有幫助的啦! 底下請您試著將您 CentOS 或者是其他版本的 Linux 的 Telnet 打開試看看。
例題:我們知道系統的 Telnet 服務通常是以 super daemon 來控管的,請您啟動您系統的 telnet 試看看。答:
1. 要啟動 telnet 首先必須要已經安裝了 telnet 的服務器才行,所以請先以 rpm 查詢看看是否有安裝 telnet-server 呢? 『rpm -qa | grep telnet-server』如果沒有安裝的話,請利用原版光盤來安裝,或者使用『yum install telnet-server』 安裝一下先;
2. 由于是 super daemon 控管,所以請編輯 /etc/xinetd.d/telnet 這個檔案,將其中的『disable = yes』改成 『disable = no』之后以『/etc/init.d/xinetd restart』重新啟動 super daemon 吧!
3. 利用 netstat -tnlp 察看是否有啟動 port 23 呢?
- - - - - -
- 預設啟動的服務
剛剛上頭的作法僅是『立即將該服務啟動或關閉』喔!并不會影響到下次開機時,這個服務是否預設啟動的情況。 如果你想要在開機的時候就啟動或不啟動某項服務時,那就得要了解一下[基礎學習篇里面談到的開機流程管理](http://linux.vbird.org/linux_basic/0510osloader.php)的內容啦!在 Unix like 的系統當中我們都是透過 run level 來設定某些執行等級需要啟動的服務,以 Red Hat 系統來說,這些 run level 啟動的數據都是放置在 /etc/rc.d/rc\[0-6\].d/ 里面的,那如何管理該目錄下的 script 呢?手動處理嗎?會瘋掉的吶!所以你必須要熟悉 [chkconfig](http://linux.vbird.org/linux_basic/0560daemons.php#chkconfig) 或 [Red Hat 系統的 ntsysv](http://linux.vbird.org/linux_basic/0560daemons.php#ntsysv) 這幾個指令才行!
**Tips:** 這幾個指令不熟嗎?這個時候鳥哥不得不說了:『有 man 堪用直需用,莫待無 man 空自猜』趕緊給他 man 下去啦!

例題:(1)如何查閱 rpcbind 這個程序一開機就執行? (2)如果開機就執行,如何將他改為開機時不要啟動? (3)如何立即關閉這個 rpcbind 服務?答:
1. 可以透過『 chkconfig --list | grep rpcbind 』與『 runlevel 』確認一下你的環境與 rpcbind 是否啟動?
2. 如果有啟動,可透過『 chkconfig --level 35 rpcbind off 』來設定開機時不要啟動;
3. 可以透過『 /etc/init.d/rpcbind stop 』來立即關閉他!
聰明的你一定會問說:『鳥哥,你的意思是只要將系統所有的服務都關閉,那系統就會安全啰?』 當然....不是!因為『很多的系統服務是必須要存在的,否則系統將會出問題』 舉例來說,那個保持系統可以具有工作排程的 [crond](http://linux.vbird.org/linux_basic/0430cron.php) 服務就一定要存在,而那個記錄系統狀況的 [rsyslogd](http://linux.vbird.org/linux_basic/0570syslog.php) 也當然要存在~否則怎知道系統出了啥問題?所以啰,除非你知道每個服務的目的是啥,否則不要隨便關閉該服務。 底下鳥哥列出幾個常見的必須要存在的系統服務給大家參考參考先!這些服務請不要關閉啊!
服務名稱 服務內容acpid 新版的電源管理模塊,通常建議開啟,不過,某些筆記本電腦可能不支持此項服務,那就得關閉atd 在管理單一預約命令執行的服務,應該要啟動的crond 在管理工作排程的重要服務,請務必要啟動啊!haldaemon 作系統硬件變更偵測的服務,與 USB 設備關系很大iptables Linux 內建的防火墻軟件,這個也可以啟動啦!network 這個重要了吧?要網絡就要有他啊!postfix 系統內部郵件傳遞服務,不要隨便關閉他!rsyslog 系統的登錄文件記錄,很重要的,務必啟動啊!sshd 這是系統默認會啟動的,可以讓你在遠程以文字型態的終端機登入喔!xinetd 就是那個 super daemon 嘛!所以也要啟動啦!上面列出的是主機需要的重點服務,請您不要關閉他!除非你知道作了之后會有什么后果。舉例來說,你如果不需要管理電源, 那么將 acpid 關閉也沒有關系啊!如果你不需要提供遠程聯機功能,那么 sshd 也可以關閉啊!那其他你不知道的服務怎辦? 沒關系,只要不是網絡服務,你都可以保留他!如果是網絡服務呢?那...鳥哥建議你不知道的服務就先關閉他! 以后我們談到每個相關的服務時,再一個一個打開即可。底下我們就來做作看關閉網絡服務這個部分!
- - - - - -
### 7.3.4 安全性考慮-關閉網絡服務端口
我們的 Linux distribution 很好心的幫使用者想到很多了,所以在一安裝完畢之后, 系統會開啟一堆有的沒有的網絡服務,例如那個 rpcbind 之類的咚咚,這些東西你或許知道或許不知道,不過他就是有開啟~ 但我們的主機明明就是用來做為服務器的,所以這些本來預計要給 client 使用的服務其實有點『多此一舉』的感覺~ 所以啦,請你將他關閉吧!底下我們舉個簡單的例子來處理,將你的網絡服務關閉就好,其他在系統內部的服務,就暫時保留吧!
例題:找出目前系統上面正在運作中的服務,并且找到相對應的啟動腳本 (在 /etc/init.d 內的檔名之意)。答:要找出服務,就利用 netstat -tunlp 即可找到!以鳥哥從第一章安裝的示范機為例,鳥哥目前啟動的網絡服務有底下這些:
```
[root@www ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Local Address State PID/Program name
tcp 0.0.0.0:22 LISTEN 1176/sshd
tcp 127.0.0.1:25 LISTEN 1252/master
tcp 0.0.0.0:37753 LISTEN 1008/rpc.statd
tcp :::22 LISTEN 1176/sshd
tcp :::23 LISTEN 1851/xinetd
tcp ::1:25 LISTEN 1252/master
tcp :::38149 LISTEN 1008/rpc.statd
tcp 0.0.0.0:111 LISTEN 1873/rpcbind
tcp 0 :::111 LISTEN 1873/rpcbind
udp 0 0.0.0.0:111 1873/rpcbind
udp 0 0.0.0.0:776 1873/rpcbind
udp 0 :::111 1873/rpcbind
udp 0 :::776 1873/rpcbind
udp 0.0.0.0:760 1008/rpc.statd
udp 0.0.0.0:52525 1008/rpc.statd
udp :::52343 1008/rpc.statd
# 上述的輸出鳥哥有稍微簡化一些喔,所以有些字段不見了。
# 這個重點只是要展現出最后一個字段而已啦!
```
看起來總共有 sshd, master, rpc.statd, xinetd, rpcbind 等這幾個服務,對照前一小節的數據內容來看, master (port 25), sshd 不能關掉,那么其他的就予以關閉啊!透過前兩個小節的介紹,使用 which 與 rpm 搜尋吧!舉例來說, rpc.statd 的啟動腳本在:『rpm -qc $(rpm -qf $(which rpc.statd) ) | grep init』這樣找,結果是在『/etc/rc.d/init.d/nfslock』這里! 因此最終的結果如下:
```
rpc.statd /etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd
xinetd /etc/rc.d/init.d/xinetd
rpcbind /etc/rc.d/init.d/rpcbind
```
接下來就是將該服務關閉,并且設定為開機不啟動吧!
```
[root@www ~]# vim bin/closedaemon.sh
for daemon in nfs nfslock rpcgssd rpcidmapd rpcsvcgssd xinetd rpcbind
do
chkconfig $daemon off
/etc/init.d/$daemon stop
done
[root@www ~]# sh bin/closedaemon.sh
```
做完上面的例子之后,你再次下達 netstat -tlunp 之后,會得到僅剩 port 25, 22 而已! 如此一來,絕大部分服務器用不到的服務就被你關閉,而且即使重新啟動也不會被啟動的啦! ^\_^
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀