我注意到很多pipe理员都改变了默认的ssh端口。
有没有理由这么做?
它不像有些人声称的那样有用,但至less会减less对日志文件的影响,因为许多暴力login尝试只使用默认端口,而不是扫描来查看SSH是否正在其他地方侦听。 虽然有些攻击会在其他地方扫描SSH,所以它不是银弹。
如果您的服务器将成为某种共享主机,而不仅仅是满足您的项目需求,那么使用非默认端口会非常痛苦,因为您必须一遍又一遍地向用户解释它,当他们忘记和他们的客户端程序无法连接到端口22!
在非标准端口上使用SSH的另一个可能的问题是,如果遇到具有限制性出站筛选器集的客户端,由于其筛选器仅允许端口22,53,80 443成为新的外出连接的目的地。 这是不常见的,但肯定不是闻所未闻的。 在类似的情况下,一些ISP可能会在一般端口以外的端口(端口443或HTTPS,SSH端口22等)看到encryption的stream量,试图隐藏P2P连接并阻塞(或阻塞)连接不方便。
为了方便起见,我亲自将SSH保留在标准端口上。 只要采取通常的预防措施(强密码/密钥策略,限制rootlogin,…),不必担心和受到暴力攻击时的日志文件增长问题可以使用工具等缓解作为fial2ban来临时阻止在给定时间内给出太多不好的authentication证书集的主机。
无论你select了哪个端口,如果你离开了22,确保它是在1024以下。在默认configuration下,大多数Unix-a-like设置中,只有root用户(或根用户组)可以监听1024以下的端口,但任何用户都可以在较高的端口上收听。 在更高端口上运行SSH会增加stream氓(或黑客)用户pipe理崩溃SSH守护进程并将其replace为自己的或代理的可能性。
这是一个简单的(但令人惊讶的是有效的) 通过默默无闻的安全forms。
如果您的SSH服务器不在端口22上,那么扫描整个互联网的人就不太可能在默认帐户中寻找弱密码。 如果您正在扫描整个networking,则无法检查所有64k可能的端口以查找SSH服务器。
但是,如果有人专门针对你,那么它没有任何好处,因为简单的一次性nmap
扫描就会揭示它实际运行的端口。
要真正避免暴力攻击,遵循以下步骤总是很重要的:
是的它是有用的,因为它只是有助于避免所有的暴力攻击,并帮助保持日志清晰:)
至于你的端口号,我看到公司经常使用1291。 我使用更高的东西,只是为了避免一些脚本。
不允许根sshlogin和更改端口号,也许像fail2ban,你应该是金。 添加iptables的好措施,让你的东西更新,你不应该有任何问题。
使用非标准的ssh端口需要更多的解释和文档,并回答“我无法login”电子邮件。
我认为在非标准端口上运行sshd比在其中创build的问题更重要的以下好处 :
而且,如果你想要真正讨厌的话,你可以在标准端口22上运行一个伪造的sshd(使用DenyUsers * ),而你的普通sshd运行在54321端口上。这将保证所有的僵尸程序和入侵者永远都会永远尝试login到拒绝所有login的服务,因为没有人会想到试图find你真正的 sshd服务。
我的2美分。
这样做是出于任何“安全”的原因是假的。 这是安全的最好的例子是不安全的。
如果你想保持你的日志更轻,更清洁,那么是有用的,因为你不会得到尽可能多的端口敲击/脚本kiddy bruteforce企图。
我会在标准端口上运行ssh,并使用fail2ban或denyhosts等来限制字典攻击的次数。
另一个选项是禁用login与密码altogheter和只允许用ssh键login。
因为有很多坏人在那里扫描所有的服务器的IP地址,以便开放端口。 我曾经在我的SSH端口上一整天都受到锤子攻击,直到我把它移到另一个端口,并且没有链接到我的任何一个网站的IP。
我总是把SSHd改成使用2222端口,每个需要进入我的服务器的人都知道这一点,这不是什么秘密。 这样做绝对没有什么安全上的收获(除非那个可能的黑客是绝对的白痴)。
我从中得到的唯一好处是authentication日志没有一百万次失败的login尝试,包括“root”,“alice”,“bob”,“sally”,“admin”等。
这是有用的,试图暴力猜测密码的脚本机器人通常集中在端口22,所以改变端口通常会抛出它们。 你需要平衡减轻风险的价值和configurationssh客户端连接到非标准端口的痛苦(如果你没有很多用户连接,那么不会有太大的痛苦)。
或者,您也可以通过closures密码authentication来减轻暴力风险,而不是使用RSA密钥authentication。
我通常不会更改SSHD上的端口,所以我不能build议另一个号码,而是检查常用的端口列表来查找另一个号码(即没有被别的东西使用的号码,因此可能会被扫描) 。
我想说的是,当你改变SSH端口的时候,你自己保护自己的东西是自动扫描,如果你的密码政策很紧,你就可以尝试使用标准的用户名/密码进行访问,你不必担心他们。
如果您禁用密码login到您的服务器(强烈推荐),那么更改SSH端口是完全没用的。 通过禁用密码login(并要求基于密钥的身份validation),您可以删除暴力密码尝试的可能性,所以您没有通过端口号来获取任何东西。
如果您继续允许使用基于密码的身份validation,那么您可以放下自己的努力尝试成功,或者根据我的经验,更常见的是您的密码会因为您在使用系统运行时input密码而受到威胁键盘logging器。
通过默默无闻的安全已被certificate是没有用的,通常我configurationssh访问与标准端口的所有上述原因(客户端在重新configuration,防火墙和代理问题等问题等)。
除此之外,我总是禁用rootlogin和密码身份validation,最后一步我使用fail2ban来摆脱系统日志中令人讨厌的消息。 在Debian / Ubuntu中,就像inputaptitude install fail2ban
一样简单。 默认configuration工作得很好,但是我通常调整一些参数,限制更长的禁止时间(至less一天),并且只有两次失败的身份validation尝试作为禁止触发器。
尽pipe看起来像一个典型的“默默无闻的安全”,我估计它是有道理的,因为扫描所有可能的端口(〜64k)是比其中一个更昂贵的方式。
但是我可以补充说“敲门”要好得多。
不是一个答案,但太长的评论,所以我会做这个CW。
我一直在思考这个问题,并得出结论,Juliano在评论Alnitak的回答时说了很多的道理。 不过,我发现通过在22端口上运行SSH,就可以很容易地发起任何types的攻击。
为了解决这个问题,我在端口22上运行我的内部SSH服务器,并使用防火墙将高端口转发到目标机器上的22端口。 正如朱利亚诺所指出的那样,在保留低端港口的安全的同时,通过默默无闻的方式提供了一些安全保障。
通过默默无闻的安全并不是我通常认同的原则,经常指出一个简单的端口扫描会揭示目标端口,使得默默无闻。 为了解决这个问题,我的防火墙(Smoothwall Express)在工作和家中均使用一个名为Guardian Active Response的脚本,该脚本由Snort警报触发。 从观察我可以告诉你,当你从同一个来源超过3个不同的端口,你的数据包被丢弃,直到预设的复位时间。 这使得运行端口扫描变得非常困难而且非常耗时,这使得模糊不清实际上是值得的。 事实上,这使我在过去被拒绝了很多次,我已经为我的源(家庭或办公室)IP地址设置了排除。 当然,攻击者可能会在第一时间绊倒正确的端口,但可能性不大。
你所遇到的问题是,防火墙的设置只允许某些IP连接,老板厌倦了在外面打开特定的IP。 如果你在防火墙上locking某些IP,这可能是一个痛苦的屁股。
我想到了两件事。 更改端口可防止自动攻击。 这是关于它,但它是平均攻击stream量的很大一部分…自动脚本扫描networking。 如果你改变了默认的端口,那么这些攻击就应该放弃。 所以在这方面确实有道理。 但是它并没有针对定向攻击,因为攻击者可以从Nessus或NMAP扫描来确定你正在使用哪个端口,如果你有一个特别的小朋友恨你。
其次,如果您使用的是类似UNIX的服务器,则可以安装诸如Denyhosts之类的实用程序来阻止攻击。 如果你安装了denyhosts,它会监视不正确的login尝试,并且在(无论你确定的数字)失败的尝试之后,它会在你指定的一段时间内禁止IP。 Denyhosts还可以与其他拒绝主机通信,并传递禁止列表,所以如果攻击者在Montana的Fred的Linux系统中被locking,那么你的系统也将获得该IP用于禁止。 只要你的用户记住他们的密码就非常有用。
这一切都取决于您的使用情况。 你有多less程序是改变SSH / SCP的连接端口的“痛苦”(如果他们不允许或者让它变得很痛苦,你真的需要考虑更换供应商)。 如果这只是一个潜在的恐惧,我会说这是一个没有问题。 这是你的老板,因为很多系统pipe理员把SSH端口翻过来,所以要求一些不是太古怪的事情(有些人甚至憎恨那些甚至隐约可疑的安全气味的人,但真的会减less来自自动扫描的背景噪音。)
水煮 – 改变港口自动化脚本和大多数不良交通。 不会阻止定向攻击者。 考虑安装一个自动化的禁用工具。 如果安装正确,并且在多数情况下改变端口的帮助比它伤害更多,层的安全不会伤害您。
我已经在1024以上的端口上运行SSH 5年多了。 从那以后,我没有看到任何端口可以在我的日志文件中尝试(除了我自己的)。 有我的服务器,我pipe理使用端口> 1024运行。
许多运行于1024以上端口的SSH服务器,都有自己的网站,相当受欢迎。
如果SSH服务器运行在我自己的公司,也许我已经在这里公布了该服务器的IP地址,这样你们可以尝试入侵服务器。 不幸的是,SSH服务器不是我自己的。 😉
但还有其他的事情,你必须设置,以确保安全。 SSH> 1024单独是不够的。 端口号不能在/ etc / services中,必须使用端口转发(例如端口1124-> 22),直接访问Root必须禁用等等。
所以,如果你想争论,最好在端口> 1024上运行SSH几年。
p / s:1124不是我的SSH端口号。 哈哈。
我猜如果你还没有发现端口敲它的方便,否则,不。
把SSH移动到不同的端口是有道理的,它有助于安全,但不是很大。 当然,为了做到这一点,你必须控制你的防火墙,但这不是你的问题。 我认为,撤销港口的好处是开放了可以接受的范围 – 事实上,我认为这不仅仅是对利益的剥夺,而且会让你更加暴露于今天。 我相信你可以说服他既要移动港口,又要通过整理一个可能的入口点清单而不是把它们全部打开,从而大大减less进入的范围。
改变你的SSH端口是一个毫无意义的练习,只会给你购买有限的安全性。 你最好简单地禁用密码authentication,这消除了暴力密码尝试的风险,并完全依靠基于ssh密钥的authentication。 如果您的环境需要密码authentication,则采用一些双因素机制,如SecurID或Wikid。
这两个给你一个真正的安全增加,而改变SSH端口只给你安全的幻想。
这是实用的POV:我使用公开的可见的私人ssh服务器超过四年与更改的SSH端口,我没有一次尝试密码扫描。 为了这个QA的缘故,我刚刚在其中一个22上启用了一天。 因此,我大约每10分钟扫描一次,密码尝试频率大约是每秒5次。 此外,“扫描小子”也在寻找具有某些OpenSSH漏洞的服务器。
当然,这是安全的 ,如果你有敌人,这是无助的。
无论“安全通过默默无闻”的人群抱怨,它的工作效果很好。
愚蠢的兔子,所有的安全都是通过默默无闻的安全。 仅仅因为你相信隐秘的encryption协议Z [需要DNA样本的组合,共享密钥和不可能实际上通过人类密码input]实际上是安全的并不是如此。 事实是,任何和所有的安全措施都依赖于用户的概率和假设。 如果我知道如何利用这个假设,那对你来说太糟糕了,但是在那里。
无论如何,
我们已经做了这么多年,连同a)限制连接尝试率(但是,我不知道如何设置,在sshconfiguration中的东西),和b)禁止任何主机运行字典攻击的脚本超过在Y分钟X错误的猜测。 我们禁止连接一段时间的主机,这样更容易适应不断变化的networking拓扑。
如果你的密码足够复杂,而且只能在15分钟内完成3次尝试,那就没有什么可怕的了。 要注意分布式攻击并不难 – 我们通常通过子网和ip来整理这种事情。
最后,你需要的只是一些秘密松鼠的方法,通过修改f / w规则来允许你的端口连接。 它可以是任何… smtp,networking,魔术DNS查询。 像SecurID或Wikid之类的东西只是向第三方提供更多的信息。 不要让我通过第三方开始安全证书。