ufw 防火牆規則的順序問題

今天晚上感覺機器突然變慢了,查了一下 access.log 發現有個從大陸四川來的 ip ( 狂戳我的機器存取一個八百年前就刪掉的檔案。

所以我下了 ufw reject from ,然後重新載入 ufw ,不過 HTTP 的 request 還是一直灌進來…

我只好再下 ufw status 把規則都打開來檢查我剛剛下的 rule 有沒有新增進去,結果發現

Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere
Anywhere                   REJECT

原來是允許 TCP 80 的那條 rule 優先於阻擋的惡意 ip 的 rule ,所以手動調整一下順序,把阻擋惡意 ip 的 rule 放到第一位:

sudo ufw insert 1 reject from


備註:有兩種阻擋方式,分別是 reject 和 deny ,reject 就是直接忽略所有封包,至於 deny 則是會通知送出封包的人:「他的封包被拒絕了」,基本上直接 reject 就好了。

update: Sometimes it is desirable to let the sender know when traffic is being denied, rather than simply ignoring it. In these cases, use reject instead of deny. from ufw man page

這邊我之前寫錯了,剛剛重新翻一下文件,應該是 reject 會讓發送者知道被拒絕,而 deny 則是直接 drop 封包。在行為上: reject 會讓 client 直接得到 “Connection refused” ,而 deny 則是會讓程式一直等到 timeout 。

感謝大神開示 (詳見本文 comment #1)

3 thoughts on “ufw 防火牆規則的順序問題”

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.