我花了很长时间来为 FTP 创建 pf 规则集。
我想要做的是:
仅允许 $WHITELIST 连接到 FTP 端口 21
打开端口 49152 - 65535 作为被动端口范围
谁能帮我这个?
我努力了 :
FTPWHITELIST="本地主机,XX.XX.XX.XX"
通过 $EXT_IF proto tcp 从 { $FTPWHITELIST } 快速传递到 XX.XX.XX.XX 端口 21 保持状态
通过 $EXT_IF proto tcp 从 { $FTPWHITELIST } 快速传递到 XX.XX.XX.XX 端口 49512 >< 65535 保持状态
答案1
您是否尝试过常见问题解答中提到的方法:
http://www.openbsd.org/faq/pf/ftp.html
FTP 是一种相当复杂的算法,经过几十年的演变(它创建于 1971 年),而且防火墙(甚至 TCP/IP)尚未发明,因此让它工作起来可能很麻烦。
尝试确保在你的客户端上使用“被动”模式。
如果可能,请尝试使用 HTTP/S 或 SFTP(SSH FTP)。它们都是更简洁、更现代的设计。
答案2
要仅允许 $FTPWHITELIST,您需要在以下之前阻止所有其他流量:
# WARNING! DO NOT use this snippet on production until you completely understand it
block in on $EXT_IF
pass in quick on $EXT_IF proto tcp from { $FTPWHITELIST } to XXX port 21 keep state
...