为什么我应该使用知名端口号?(例如 22、80 等...)

为什么我应该使用知名端口号?(例如 22、80 等...)

我刚刚第一次使用 openssh 设置远程 ssh。

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

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

    # What ports, IPs and protocols we listen for
    Port 1234
    
  2. dd-wrt ​​网络控制面板(浏览器的 URL 中输入 192.168.1.1)

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

    myssh----------1234----------TCP---------192.168.1.x---1234-------是

  3. 油灰

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

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

我应该使用端口 22 而不是 1234 吗?

答案1

首先,知名端口号是“众所周知的”。它们可以消除一些关于给定服务正在侦听哪个端口的猜测。

其次,端口 1024 及以下只能由 开放root。这为这些服务提供了额外的“信任”级别。即,我在端口 22 上连接的服务必须以 root 身份运行(或已启动)。如果服务在 1234 上运行,则任何有权访问该框的用户都可以打开并启动“行为类似于 SSHD 但拦截密码的程序”程序。(这假设没有 NAT 或其他重定向 - 请参阅 mmi 的答案。)

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

有些人会建议不要使用知名端口来“隐藏”可能用于漏洞攻击的常用服务,但我认为这只是“通过隐蔽性来实现安全” - 并且建议不要这样做。

答案2

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

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

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

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

等等...

答案3

您可以使用任何您喜欢的端口。通常使用端口 22 ssh,您会发现许多防火墙、ssh 客户端和守护程序都默认使用此端口以方便使用。

更好的问题应该是“为什么我不应该使用端口 22?”。这样做有一些值得商榷的安全优势,但我个人从未被它们说服。

答案4

我应该使用端口 22 而不是 1234 吗?

因为这是其他 99% 的 SSH 服务监听的地方,人们也期望如此。惯例并不是硬性规定,但您会发现大多数管理员都希望在端口 22 上看到 SSH,在端口 80 上看到 HTTP,等等。除非您有非常偏离既定惯例的充分理由——我建议你不要这样做。

十有八九,有些比你(或我)聪明得多的人会出于好的理由选择默认设置,除非你有更好的设置,否则为什么要更改它呢?

(上班第一天就必须对所有内容进行 nmap 操作,试图找出前任管理员/顾问/BOFH 决定在哪些“非常规”端口上运行所有内容,这真的很烦人)。

相关内容