AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 811431
Accepted
raffe
raffe
Asked: 2016-10-27 06:22:55 +0800 CST2016-10-27 06:22:55 +0800 CST 2016-10-27 06:22:55 +0800 CST

我的带有 TLS 的 FTPS 的 iptables 可以吗?

  • 772

我试图用谷歌搜索我的 FTPS 的 iptable,使用 TLS (proftpd) 与我现在正在工作的 iptables killswitch 一起工作(参见https://www.reddit.com/r/linuxquestions/comments/57mga5/is_my_iptables_killswitch_working_have_some_p/) .

我将端口 10210 用于 FTPS,将 60100-60119 用于被动端口,此流量不会通过 VPN。我想出了这个(它们在最后一行的上方):

# Allow traffic via TLS FTPS
iptables -A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# It seems to be working without the line under
#iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 10210:60119 --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# It seems to be working without the line under
#iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 10210:60119 --dport 10210:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

它似乎有效,但由于我是一个 iptables 菜鸟,我想知道我做错了什么(我可能有;),不确定端口范围,也许它要打开?)

编辑 我的连接有问题,所以我改变了这个更好的工作

-A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 60100:60119 -j ACCEPT

我稍后会在阅读http://ipset.netfilter.org/iptables-extensions.man.html之后,尝试这个而不是上面的端口范围

iptables -A INPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED-j ACCEPT

并删除-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT,我想知道我是否也应该删除-m conntrack --ctstate NEW,ESTABLISHED10210,因为它是 FTPS 的传入端口?

linux iptables linux-networking
  • 1 1 个回答
  • 2211 Views

1 个回答

  • Voted
  1. Best Answer
    GioMac
    2016-11-02T04:52:25+08:002016-11-02T04:52:25+08:00

    OUTPUT部分仅用于连接,它是从服务器发起的,它根本不影响从客户端发起的连接。通常OUTPUT不是FILTERED,除非你有特殊要求来阻止传出的东西。

    INPUT是您应该过滤的部分。

    ESTABLISHED和RELATED部分用于连接,它已经启动并且应该继续工作(例如握手后的 TCP),并且通常比其他规则具有更高的匹配度。

    我们可以将FTP连接分为三种类型:

    1. 主动 FTP(普通)
    2. 被动 FTP(普通)
    3. 带有 SSL 的 FTP(任何加密)

    在活动 FTP 的情况下,您需要在客户端打开传入 TCP 21 和出站与源 TCP 20 端口和随机目标,这种类型的连接很少使用,即从客户端启动一个连接,从服务器启动一个连接. 因为最后一个 - 它实际上永远不会起作用。

    在被动 FTP 情况更糟的情况下,被动 FTP 使用 TCP 21 端口进行命令,使用 RANDOM TCP 端口进行任何连接的数据传输,服务器的 FTP 响应中将指定哪个端口,因此,防火墙必须“监听” FTP 流量,需要对数据包进行更深入的检查,然后动态打开端口 - 这是正常情况。在这种情况下,使用 FTP 连接跟踪帮助程序/内核模块并解决问题 - 您只需打开 TCP 端口 21。

    在 SSL 的情况下 - 它甚至更疯狂,因为有关 RANDOM 端口的数据也被加密并且防火墙无法猜测要打开哪个端口,在这种情况下,有些人在 FTP 服务器配置中指定随机端口的数量并打开所有这些端口防火墙。

    通常过滤表的规则顺序通常如下所示:

    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,80,443 -j ACCEPT
    -A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,53,80,1234 -j ACCEPT
    -A INPUT -i eth1 -p udp -m conntrack --ctstate NEW -m udp -m multiport --dports 53,67,123 -j ACCEPT
    COMMIT
    

    对于 SSL,您可以在某处添加以下规则

    -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 21,15000:15050 -j ACCEPT
    
    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve