歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 研究Linux下Firewall防火牆的配置

研究Linux下Firewall防火牆的配置

日期:2017/3/2 16:32:24   编辑:Linux服務器

最近在研究Linux下Firewall的配置,發現配置好防火牆以後ftp就有問題了,一直都不能夠用Filezilla 和 CuteFTP登錄,在列出目錄的時候一直會失敗。但是在命令行下面如果先執行passive off,一切正常。

  答案在CU上找到的,主要是要使用 ip_conntrack_ftp

  原文:

  使用 -P INPUT DROP 引起的網路存取正常,但是 ftp 連入卻失敗?

  依據前面介紹方式,只有開放 ftp port 21 服務,其他都禁止的話,一般會配置使用:

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  這樣的配置,確認 ftp 用戶端是可以連到 ftp 主機並且看到歡迎登入畫面,不過後續要浏覽檔案目錄清單與檔案抓取時卻會發生錯誤...

  ftp 協定本身於 data channnel 還可以區分使用 active mode 與 passive mode 這兩種傳輸模式,而就以 passive mode 來說,最後是協議讓 ftp client 連結到 ftp server 本身指定於大於 1024 port 的連接埠傳輸資料。

  這樣配置在 ftp 傳輸使用 active 可能正常,但是使用 passive mode 卻發生錯誤,其中原因就是因為該主機firewall 規則配置不允許讓 ftp client 連結到 ftp server 指定的連結埠才引發這個問題。

  要解決該問題方式,於 iptables 內個名稱為 ip_conntrack_ftp 的 helper,可以針對連入與連外目的 port 為 21 的 ftp 協定命令溝通進行攔截,提供給 iptables 設定 firwewall 規則的配置使用。開放做法為:

  modprobe ip_conntrack_ftp

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  modprobe ip_conntrack_ftp

  iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  其中 -m state 部分另外多了 RELATED 的項目,該項目也就是狀態為主動建立的封包,不過是因為與現有 ftp 這類連線架構會引發另外才產生的主動建立的項目。

  不過若是主機 ftp 服務不在 port 21 的話,請使用下列方式進行調整:

  CODE:

  modprobe ip_conntrack_ftp ports=21,30000

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  iptables -A INPUT -p tcp --dport 30000 -j ACCEPT

  modprobe ip_conntrack_ftp ports=21,30000

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -p tcp --dport 21 -j ACCEPT

  iptables -A INPUT -p tcp --dport 30000 -j ACCEPT

  也就是主機本身提供 ftp 服務分別在 port 21 與 30000 上,讓 ip_conntrack_ftp 這個 ftp helper 能夠正常提供 ftp 用戶端使用 passive mode 存取而不會產生問題

Copyright © Linux教程網 All Rights Reserved