Linux 伺服器有必要開啟 iptables 防火牆么?

也就apache服務運行在80埠,ssh服務運行在22埠,有必要開啟iptables防火牆么?

netstat -lnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -

tcp6 0 0 :::22 :::* LISTEN -

Active UNIX domain sockets (only servers)

Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 2 [ ACC ] STREAM LISTENING 5749599 - /var/run/mysqld/mysqld.sock

我不開防火牆,伺服器上開放的也就是這兩個埠,我開了防火牆,這兩個埠還是要放行,那開啟防火牆的意義到底是什麼


明顯混淆了防火牆概念嘛。

iptables雖然真的很強大,雖然經常被叫做「防火牆」,但這個取決於iptables的核心作用,一般都僅用於埠流量的常規匹配,簡單的字元串模式匹配,然後配合一些動作:屏蔽,轉發等。

你說你的伺服器僅開放了80與22,那你倒是可以用iptables來明確禁用其他埠的任何流量,只允許80與22的進出流量。這樣可以防止其他人不小心開放了其他埠,比如調試目的,比如不小心來了個後門病毒。

但是高級的後門肯定是復用你開放的80與22。比如,你用Apache的話,有專門的Apache mod病毒,利用80埠開個反彈式後門,非常隱蔽。

這個時候你用iptables所謂的防火牆就顯得雞肋了,配置很麻煩,而且很可能滯後。腫么辦?

一般會在這台伺服器之前架一台專業的防火牆,這種才是真正意義上的防火牆,可以對80,22等各類埠的異常流量進行監測,發現異常要麼告警,要麼屏蔽。

當然你不架個這樣的防火牆也行,你這台伺服器配置個類似OSSEC這樣的入侵檢測,也是可以做到事後應急的,可惜只是事後應急(比如調查異常源頭,然後禁止)。

為了防止一些暴力破解,比如針對你的80,22上的服務。可以安裝個fail2ban,配合iptables是很不錯的。

結論是:當然建議開啟iptables,配個低成本的規則。但僅依賴於iptables是不足的,且大多數人並沒能真的發揮好iptables的強大能力。


不開也可以,如果有硬防就可以不開。

像你這樣的情況我們一般習慣是把filter規則的INPUT鏈策略設置為DROP,然後添加2條規則只允許這2個埠放行。

其實Netfilter/iptables的高級功能還是比較實用的。


1、開吧,你開了IPTABLE,相當於給所有的埠配了一把鎖,任何程序要開埠監聽或對外連接,都要你能過IPTABLE的規則去允許他,才開得了。可以防止掉大部分的小黑客了。

2、至於大牛想要黑你的機器的話,除非有專業團隊幫你防護,不然,你自己去買什麼防火牆,IPS之類的是沒有用的,你配不好的。

3、我們只防小黑,不防大牛。大牛也不會看上你的伺服器的,你可以放心的。


你要裸跑沒人攔你 後果自負


如果通俗點說iptables是防火牆,那就先這麼理解吧。開起來還是肯定建議開起來的,不過不能理解的是為何22埠也要對全網開放?iptables開起來,並且合理的設定規則,我覺得應該是一台linux伺服器的基礎。

題主的情況這就好比你造了一道帶有無數道高級鎖的門,但是你卻一把都不用,真的家裡被盜了,你總不能怪門沒有用對吧?


推薦閱讀:

為什麼把部分蘋果設備的系統時間調整為1970.1.1,重啟後就會變磚?
QT5 中的.pro 文件中為何要加入QT += widgets,而不能在包頭文件的時候就包一個widgets/QApplication呢?
linux下如何刪除文件夾而不刪除文件夾里的內容?
fork如何實現執行一次返回兩個值的?

TAG:Linux | Linux系統管理 | 伺服器 | 防火牆 | iptables |