分类: LINUX
2012-06-08 20:01:25
最近更新日期:2007/09/22
1. 防火牆基礎
防火牆基礎2. knockd 的使用 2.1 knockd 的功能與特色 2.2 knockd 的安裝 2.3 knockd 的設定與啟動--以 SSH 為例 3. knock 用戶端處理方式 3.1 用戶端為 Linux 系統 3.2 用戶端為 Windows 系統 4. 一部伺服器的維護與管理當中,最重要的是更新所提供的服務之軟體程式, 以避免可能會遭人入侵的漏洞問題。舉例來說,如果開放 WWW 就得要隨時更新 Apache 這支程式才好。 再來則是訂定一系列的災難復原標準操作行為,接下來才是防火牆的設定。所以說,防火牆的重要性還比不上軟體更新喔! 但是防火牆還是有他存在的必要啦,底下來簡單的說一說原因吧。
knockd 的使用一般來說,在 Linux 伺服器上頭的封包過濾式防火牆主要有兩種,(1)是 Linux 核心支援的 iptables , (2)則是利用 TCP Wrappers (或 xinetd 這個 super daemon) ,亦即是利用 /etc/hosts.allow, /etc/hosts.deny 這兩個檔案來管理的方式。利用 iptables 可以即時更新防火牆機制,而且效能也是很不錯的。 至於使用 TCP Wrappers 的話,那就得要針對 /etc/hosts.{allow,deny} 修修改改的囉。 基本上,只要妳想要架設防火牆的話,就得要針對特定或不特定的 IP 來源進行開放或拒絕的動作。 所謂的『特定』指的是例如 192.168.0.0/24 或者是某個特定的 IP 或主機名稱,或者是某個特定的協定 (如 port 80) 等。 而不特定在這裡的意思表示針對整個 Internet 開放的意思。如果妳對於防火牆還有其他的問題, 可以先參考一下鳥哥之前寫的一篇 再說。 在這一章當中,鳥哥假設您已經學會 iptables 的相關語法與觀察的指令了。 雖然很多人都覺得防火牆是一部主機管理上最重要的地方,但其實鳥哥之前就曾談過, 防火牆基本上是沒有什麼用途的! ^_^!因為無論如何,妳都得要開放某些服務給用戶端登入對吧! 如此一來,防火牆當然無法抵擋對你所開放的服務之連線啦! 但防火牆也不是一無用處,至少他可以將伺服器所提供的網路服務『侷限』在某些特定的範圍內。 怎麼說呢?底下我們來舉個例子好了。 鳥哥有些 Linux 主機放置到內, 而且鳥哥常常需要在沒有固定 IP 的地方連線到這部主機上面進行操作,以秀給大家看一下主機的設定或者是一些 Linux 相關議題。 因為鳥哥所在的用戶端沒有固定 IP ,所以是否就得要針對整個 Internet 來開放那個可怕的 sshd 的服務嗎? 要注意, sshd 可是個很危險的服務喔,因為只要使用者登入主機,那麼他能夠作的事情實在太多了! 所以不要將 sshd 對整個 Internet 開放才好。您說是吧? 既然 sshd 不對整個 Internet 開放,然而鳥哥所在的位置又是非固定 IP 的來源,那我這部 Linux server 的防火牆要如何針對 sshd 進行設定啊?難道無解嗎?呵呵!沒問題,我們可以利用 knockd 這個 daemon 來負責的啦! 底下我們就來談一談 knockd 這個咚咚吧! 為了解決非固定 IP 來源用戶端的連線問題,我們可能得要手動的加入用戶端的防火牆設定於防火牆規則當中。 這很麻煩啦!那有沒有自動的方式可以讓防火牆規則自動的修改的?是有的~那就是利用 knockd 這個服務。 底下讓我們來談談這個玩意兒的特色與使用方式吧! knockd 的功能與特色 knockd 主要的目的是希望可以動態的修改防火牆規則,他的運作流程是這樣的:
knockd 的安裝
圖一-a、用戶端必須要『依序』對某些埠口進行連線的動作 圖一-b、若通過 knockd 對埠口的設定,則 knockd 會動態的增加防火牆規則,且用戶端可以連線了 圖一-c、若用戶端離線,或者是 knockd 等待逾時,則 knockd 可主動的刪除剛剛建立的規則 您可以看到,防火牆的規則本來是關閉的,然後在用戶端依序碰觸某些埠口後, knockd 就能夠『僅針對此一 IP』啟動某些特定的埠口,此時用戶端就能夠透過這個特殊的埠口進行主機的連線。 並且可以在用戶端斷線後,將該防火牆規則拿掉!呵呵!如此一來,我們不論是在何處, 就可以使用這個功能來開啟某些比較危險的服務啦,例如 sshd 這個 port 22 囉! knockd 的安裝非常簡單,因為他除了提供 Tarball 之外,還提供 SRPM 哩!所以安裝方面非常容易! 鳥哥是將 knockd 安裝在 CentOS 5.x 上面的,所以使用 RPM 來測試給大家看看。 如果妳想要安裝
既然 knockd 需要接觸伺服器的數個埠口,那麼用戶端該如何接觸呢?很簡單啊~ 妳可以使用 telnet 發送封包,也可以使用 knock 這個用戶端指令來處理。 knock 很不錯的地方,在於他同時提供 Linux/Windows 那個用戶端程式! 鳥哥也建議使用 knock 即可,因為使用 telnet 常常無法成功,真煩人~ 底下讓我們來實際測試看看囉:
用戶端為 Linux 系統 如果用戶端是 Linux 系統時,請前往前面安裝的地方,妳只要安裝 knock 即可,不需要安裝 knock-server 的啦! 那這個程式如何使用呢?非常簡單,只要這樣做即可:
|