为什么要使用众所周知的端口号?(例如 22、80 等...)

use*_*637 7 networking ssh putty

我只是第一次使用 openssh 设置了远程 ssh。

我能够使用以下三个设置使用 putty ssh 进入我的服务器:

  1. /etc/init.d/ssh 重启

    # What ports, IPs and protocols we listen for
    Port 1234
    
    Run Code Online (Sandbox Code Playgroud)
  2. dd-wrt网络控制面板(192.168.1.1进入浏览器的url)

    应用----端口来自----协议----IP地址----端口到----启用

    myssh----------1234---------TCP---------192.168.1.x---1234-------yes

  3. 油灰

    主机名(或IP地址)----端口

    wxyz-----------------------------1234

有什么理由我应该使用端口 22 而不是 1234 吗?

zie*_*mer 8

首先,众所周知的端口号是“众所周知的”。它们消除了对给定服务正在侦听哪个端口的一些猜测工作。

其次,1024 及以下端口只能由root. 这为这些服务提供了额外的“信任”级别。IE,我在端口 22 上连接的服务必须以 root 身份运行(或已启动)。如果服务在 1234 上运行,则它可以是任何有权访问打开并启动“program-that-acts-like-SSHD-but-intercepts-passwords”程序的框的用户。(这假设没有 NAT 或其他重定向 - 请参阅 mmi 的答案。)

也同意 mmi 提出的一点 - 我不会为了获得所需的端口号而不必要地以 root 身份运行程序。如果以 root 身份运行的程序受到损害,整个系统就会受到损害。但是,如果某个程序已经以 root 身份运行以用于其他需要,不妨使用正确的端口号。

有些人会建议不要使用众所周知的端口来“隐藏”可能用于漏洞利用尝试的公共服务,但我认为这只是“默默无闻的安全” - 并建议不要这样做。

  • @LedZeppelin - 您可能会与其他期望这些端口号可用的服务发生冲突。IE,端口 37 是为“时间”保留的。您可以在 http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml 或 http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 查看完整列表. 如果您不打算使用已经符合您目的的端口号,您实际上应该只使用未分配的端口号。 (2认同)

Mas*_*imo 6

这基本上取决于您想要隐藏该服务的程度。

人们(以及扫描安全漏洞的机器人)会假设 SSH 在端口 22 上运行,HTTP 在端口 80 上运行,等等。如果服务在非标准端口上运行,则检测起来会更难,但合法用户将更难使用。

  • 在端口 80 上运行的 HTTP:
    • 您可以使用 http://servername
    • 任何人将网络浏览器指向它都可以轻松访问它
  • 在端口 8042 上运行的 HTTP:
    • 您需要输入http://servername:8042才能到达它
    • 它不会被轻易检测为网络服务器

  • 在端口 22 上运行的 SSH:
    • 您可以通过告诉 Putty(或任何类似程序)连接到您服务器的主机名或 IP 地址来访问它
    • 任何将 SSH 客户端指向它的人都可以轻松访问它
  • 在端口 2242 上运行的 SSH:
    • 您需要告诉您的 SSH 客户端使用该自定义端口
    • 它不会被轻易检测为 SSH 服务器

等等...