我刚刚第一次使用 openssh 设置远程 ssh。
我能够使用以下三个设置通过 putty 通过 ssh 进入我的服务器:
/etc/init.d/ssh 重启
# What ports, IPs and protocols we listen for Port 1234
dd-wrt 网络控制面板(浏览器的 URL 中输入 192.168.1.1)
应用程序----端口来自----协议----IP 地址----端口到----启用
myssh----------1234----------TCP---------192.168.1.x---1234-------是
油灰
主机名(或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 决定在哪些“非常规”端口上运行所有内容,这真的很烦人)。