鳥哥私房菜 習題答案(服務篇)2

PART II、簡易防火措施篇

7章、限制Linux對外聯機的端口

1. 如何觀察你Linux主機上已經打開了多少端口?

如果僅想單純瞭解正在監聽中的端口,可以使用netstat -tul,如果還想知道已經建立了多少聯機,可以使用netstat -an

2. 如何觀察程序?

利用ps -auxtop查看均可。

3. 請問監聽的端口與daemon的關係爲何?

正在監聽中的端口均是由某些服務(daemons)所啓動,所以要啓動端口就得啓用某個服務,要了解某個端口是由哪個daemon啓動的,利用netstat -tulp來查閱。

4. 請解釋三次握手的原理與包傳輸的方向。

三次握手爲較可靠的包傳輸的一種確認方式,因此只有TCP包才能具有三次握手。它利用(1ClientServer主動聯機時帶有的SYN標誌;(2Server迴應時的SYN/ACK;(3)最終Client確認的ACK標誌來確認包的可靠性。更詳細的說明請參考第2章。

5. 請問stand alonesuper daemon各是什麼?

Linux系統的服務有獨立啓動(stand alone)及超級服務(super daemon)兩種方式。掛在super daemon下的服務可以經由super daemon控管,以加強安全功能,不過由於還要經過super daemon的管理,所以服務的連接速度上會比stand alone慢一點。詳細的說明請參考《鳥哥的Linux私房菜——基礎學習篇》一書第21章。

6. 請問你的Linux主機(不論是哪個版本)有關daemon 啓動與關閉的腳本與文件放置在哪個目錄下?

各個daemons的啓動與關閉的腳本放置在/etc/rc.d/init.d裏,至於super daemon的控管參數文件則在/etc/xinetd.d裏!

7. 請將你的Linux主機對外的聯機端口全部關閉。

請參考本章的做法,利用ntsysvchkconfig等功能加reboot,或netstat配合kill的方式!

8章、Linux網絡套件升級

1. 請依照你的Linux系統進行適合的網絡套件升級程序(一步一步寫下來),並說明爲何選擇這樣的網絡升級程序?

本題請參考本章內容,選擇APT或其他Linux版本網站提供的在線升級方式進行你的套件升級。

9章、多IP與路由器的架設

1. 請問如何將你的eth0接口改爲192.168.100.2在網域192.168.100.0/25之內的網絡參數內容?

因爲192.168.100.0/25netmask255.255.255.128,所以可以這樣做:ifconfig eth0 192.168.100.2 netmask 255.255.255.128 up。如果尚需其他參數,則需要以文件形式來輸入,如vi /etc/sysconfig/network-scripts/ifcfg-eth0,並修改爲:
DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.100.2

NETMASK=255.255.255.128

NETWORK=192.168.100.0

BROADCAST=192.168.100.127

2. 請手動設定eth0:1這個虛擬接口,使其爲網絡參數:192.168.200.2,網域在192.168.200.0/24

ifconfig eth0:1 192.168.200.2 up

3. 如何觀察路由表?

使用route -n即可查閱。要注意0.0.0.0那個目標(默認網關)。

4. 如何啓動LinuxIP Forward功能?

直接以echo "1" > /proc/sys/net/ipv4/ip_forward即可。

5. 假設你是一個學校的信息管理員,學校內有200計算機,奉上面的旨意,必須將200計算機分爲4個子網,請問應該如何佈線(請畫出示意圖)?而這4個子網的網絡參數如何選擇(請自行選擇)?是否需要路由器?如果需要,假設每個路由器僅能有兩個網絡實體接口,那麼該如何佈線?(注:不要使用虛擬接口。)

我的佈線如下圖所示:

每個路由器都有兩個接口,且4個路由器的右接口都在同一個網段內!那麼Router 1怎麼跟Router 2的內部網域進行溝通?利用route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2即可。

6. 萬一你的網絡有點停頓,發現可能是網絡上某個節點出了問題,你應該如何確認是哪一臺路由器出了問題?

使用第5章中提到的traceroute指令來查詢。

10章、認識網絡安全

1. 我老是發現我的系統怪怪的,似乎有點停頓,懷疑可能是CPU 負荷太大,所以要檢查一下系統相關的信息。請問,我該以什麼指令檢查我的系統相關信息?

可以使用topsarfreeps -auxuptimelast等指令查詢系統相關信息。

2. 我懷疑我的系統上有過多的具有SUID的文件存在,導致一般用戶可以隨意取得root權限,請問,我要如何找出這些具有SUID權限的文件?

因爲SUID4000這個權限,所以可以這樣做:
find / -perm +4000

3. 我由國內一些ftp網站下載了Red Hat公司發佈的套件,我想安裝它,但又不知道該套件文件是否被修改過!請問我該如何確定這個套件的可用性?

利用最簡易的MD5 編碼來測試,例如md5sum套件名稱,再比對與原始套件發佈的MD5 數據是否相同。

4. 良好的密碼規劃是防備主機的第一要務,請問Linux系統中,密碼相關的文件與規則設定在哪些文件裏?

密碼的設定規則在/etc/login.defs裏!密碼文件在/etc/shadow內!

5. 簡易說明當一臺主機被***後,應該如何處理?

找出問題、重新安裝、漏洞修補、數據還原!請參考本章最後的修補工作內容。

11章、簡易防火牆架設

1.爲什麼我架設了防火牆,我的主機還是可能中毒?

防火牆不是萬靈丹,它還是可能被病毒或***程序所***!此外,如果你的主機本身已經提供了多個網絡服務,則當該網絡服務的套件有漏洞時,防火牆仍然無法克服該服務的漏洞。因此仍然需要持續進行主機的監視工作!

2. 請說明爲何架設了防火牆,我的主機還是可能被***?***的依據可能是什麼?

因爲防火牆僅抵擋某些不受歡迎的包,如果你開放WWW服務,則要求主機端口80的包可直接進入你的主機,萬一WWW套件有漏洞,那麼就可能被***了!所以套件的更新很重要。

3. 我們知道核心爲2.4Linux使用的防火牆機制爲iptables,請問,如何知道我的Linux核心版本?

利用uname -r 可以查到!

4. 請列出iptables 默認的兩個table,以及各個table裏的鏈與各個鏈所代表的意義;

filter爲默認的Table,裏面默認的鏈有:
         INPUT:來自外部,想要進入主機的包;
         OUTPUT:來自主機,想要離開主機的包;
         FORWARD:主機內部網域與外部網域的包(不論進出),但該包不會進入主機。
還有nat這個table
         PREROUTING:進行路由之前的包傳送過程;
         OUTPUT:離開主機的包傳送過程;
         POSTROUTING:經過路由之後才進行的過濾規則。

5. 什麼是iptables的默認政策(Policy)?

當包的所有屬性都不在防火牆規則中時,這個包能否順利通過防火牆,則以Policy 作爲這個包的最終動作!

6. 假設今天我的Linux僅作爲Client之用,並沒有對Internet 提供任何服務,那麼你的防火牆規劃應該如何設定?

既然沒有對Internet提供任何服務,那麼(1)請將所有的對外端口先關閉(2)防火牆規則中,最重要的是INPUTPolicy 一定要DROP,然後將iptables -A INPUT -m state --state RELATED -j ACCEPT即可。

7. 我要將來自192.168.1.50這個IP來源,只要向我的21~23端口發出請求的包,都將它抵擋,應該如何輸入iptables指令?

iptables -A INPUT -p tcp -s 192.168.1.50 --dport 21:23 -j DROP

8. 我要將我自己主機ping的響應功能取消,應該如何輸入iptables指令?

因爲ping能否響應用的是icmptype 8(請參考第2章內的ICMP相關內容),所以我可以這樣做:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP

9. 請說明爲何這個指令是錯誤的iptables -A INPUT -p udp --syn -s 192.168.0.20 -j DROP

只有TCP包纔會具有SYN標誌,UDP並沒有SYN標誌,所以上面的指令是錯誤的!

10. DNS的要求是必需的,那麼我該如何設定我的主機可以接受請求DNS的響應呢?

因爲DNS的來源是端口53,因此要接受來自端口53的包:
iptables -A INPUT -p udp --sport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 53 -j ACCEPT

11. 如何取消我的系統上的iptables

先要清除規則,才能將iptables 移除!不過,我們主要將規則清除即可。
iptables -F; iptables -X; iptables -Z

iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z

12. 如何保存當前的防火牆機制,以及如何將上次保存的機制回覆到當前系統中?

請利用iptables-saveiptables-restore這兩個指令,配合命令重導向即可。

12章、申請合法的主機名稱

1. 請簡易說明 /etc/hosts的用途。

這個文件早期用於進行主機名稱與IP的解析,目前常用在內部網域的名稱解析上,可以加快內部網域的反查!

2. 請說明合法授權的主機名稱需要做什麼?

如果想要合法授權,就需要向上層DNS主機註冊,而且還要上層DNS主機管理員願意將域名的解析權限授權給你。

3. 什麼是動態DNS系統?(僅說明Client端)

因爲我們的Client撥號時,得到的IP不是固定的,所以無法以DNS系統進行固定IP對應主機名稱的工作,此時就需要動態DNS系統。以DNS主機提供的動態更新主機名稱對應IP的機制,可以讓我們的不同IP對應到同一個主機名稱!

4. 如果你使用adsl撥號上網設定服務器,那麼該申請哪類主機名稱?爲什麼?

因爲我是以ADSL撥號上網,所以IP是不固定的,此時需要申請動態DNS主機的主機名稱,例如adsldns.org以及no-ip.org等!

PART III、服務器架設篇

13章、簡易TelnetSSH主機設定

1. TelnetSSH都是遠程聯機服務器,爲何我們都推薦使用SSH而避免使用Telnet?原因何在?

因爲Telnet除了使用明碼傳送數據外,本身telnet 就是很容易被***的一個服務器,所以當然比較危險。至於SSH,其實也不是很安全!由中國臺灣計算機危機處理小組的文件可以明顯發現,openssl + openSSH也是常有漏洞發佈!不過,比起telnet來說,確實會安全一些!

2. 請嘗試說明SSHServerClient端聯機時的包加密機制。

利用key pair實現加密機制:Server提供Public KeyClient端計算Private key,以提供包傳送時的加密、解密!

3. 請問SSH的配置文件是哪個?如果我要修改讓root無法使用SSH聯機進入我的SSH主機,應該如何設定?另外,如果要讓badbird這個用戶無法登入SSH主機,該如何設定?

SSH配置文件名爲sshd_config,通常放置在/etc/ssh/sshd_config內;如果不想讓root 登入,可以修改sshd_config內的參數成爲PermitRootLogin no,並重新啓動SSH來設定!如果要讓badbird用戶無法登入,同樣在sshd_config裏面設定爲:「DenyUsers badbird」即可!

4. Linux上,默認的TelnetSSH服務器使用的埠口(端口 number)各爲多少?

telnetSSH的埠口分別是:2322!請參考/etc/services喔!

5. 如果發現我無法在Client端使用SSH程序登入我的Linux主機,但是Linux主機卻一切正常,可能的原因爲何?(防火牆、known_hosts……)

無法登入的原因可能有很多,最好先查詢 /var/log/messages裏的錯誤信息來判斷,當然,還有其他可能原因爲:
1.   被防火牆擋住了,請以iptables -L -n來查看,當然也要查看/etc/hosts.deny
2.   可能由於主機重新開機過,public key改變了,請修改你的~/ssh/known_ hosts裏面的主機IP
3.   可能由於/etc/ssh/sshd_config裏面的設定問題,導致你這個用戶無法使用;
4.   /etc/passwd裏,你的user不具有可以登入的shell
5.   其他因素(如賬號密碼過期等等)

6. 既然ssh是比較安全的數據包傳送方式,那麼就可以在Internet上開放我的Linux主機的SSH服務了嗎?請說明你選擇的答案的原因。

最好不要對Internet開放你的SSH服務,因爲SSH的加密函數庫使用的是openssl,一般Linux版本使用的SSHopenssh,這兩個套件事實上仍被髮布過不少漏洞,因此,最好不要對Internet開放,畢竟SSH對於主機的使用權限是很高的!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章