<i id='gh5nk'></i>

  1. <dl id='gh5nk'></dl>

  2. <ins id='gh5nk'></ins><acronym id='gh5nk'><em id='gh5nk'></em><td id='gh5nk'><div id='gh5nk'></div></td></acronym><address id='gh5nk'><big id='gh5nk'><big id='gh5nk'></big><legend id='gh5nk'></legend></big></address>
    <i id='gh5nk'><div id='gh5nk'><ins id='gh5nk'></ins></div></i>

  3. <tr id='gh5nk'><strong id='gh5nk'></strong><small id='gh5nk'></small><button id='gh5nk'></button><li id='gh5nk'><noscript id='gh5nk'><big id='gh5nk'></big><dt id='gh5nk'></dt></noscript></li></tr><ol id='gh5nk'><table id='gh5nk'><blockquote id='gh5nk'><tbody id='gh5nk'></tbody></blockquote></table></ol><u id='gh5nk'></u><kbd id='gh5nk'><kbd id='gh5nk'></kbd></kbd>
      <fieldset id='gh5nk'></fieldset>

          <code id='gh5nk'><strong id='gh5nk'></strong></code>

          <span id='gh5nk'></span>

          linux下高级SSH安全技巧

          • 时间:
          • 浏览:3
          • 来源:124软件资讯网

              SSH服务器设置文件是/etc/ssh/sshd_conf 。在你对它举行每一次改动后都需要重新启动SSH服务  ,以便让改动生效  。

              1、修改SSH监听端口

              默认情形下  ,SSH监听毗连端口22  ,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务 ,将SSH端口修改为大于1024的端口是一个明智的选择  ,由于大多数端口扫描软件(包罗nmap)默认情形都不扫描高位端口 。

              打开/etc/ssh/sshd_config文件并查找下面这样的行:

              Port 22

              修改端口号并重新启动SSH服务:

              /etc/init.d/ssh restart

              2、仅允许SSH协议版本2

              有两个SSH协议版本  ,仅使用SSH协议版本2会更宁静  ,SSH协议版本1有宁静问题 ,包罗中心人攻击(man-in-the-middle)和注入(insertion)攻击  。编辑/etc/ssh/sshd_config文件并查找下面这样的行:

              Protocol 2,1

              修改为

              Protocol 2

              3、仅允许特定的用户通过SSH上岸

              你纷歧个允许root用户通过SSH上岸  ,由于这是一个庞大的不须要的宁静风险  ,若是一个攻击者获得root权限上岸到你的系统  ,相对他获得一个通俗用户权限能造成更大的破损  ,设置SSH服务器不允许root用户通过SSH上岸  ,查找下面这样的行:

              PermitRootLogin yes

              将yes修改为no  ,然后重新启动服务  。现在  ,若是你想使用特权用户 ,你可以先以其他用户上岸 ,然后再转换到root  。

              建立一个没有现实权限的虚拟用户是一个明智的选择 ,用这个用户上岸SSH  ,纵然这个用户遭到破解也不会引起什么破损 ,当建立这个用户时  ,确保它属于wheel组 ,由于那样你才气切换到特权用户 。

              若是你想让一列用户都能通过SSH上岸 ,你可以在sshd_config文件中指定它们  ,例如:我想让用户anze、dasa、kimy能通过SSH上岸  ,在sshd_config文件的末尾我添加下面这样一行:

              AllowUsers anze dasa kimy

              4、建立一个自界说SSH banner

              若是你想让任何毗连到你SSH服务的用户看到一条特殊的新闻  ,你可以建立一个自界说SSH banner  ,只需要建立一个文本文件(我的是/etc/ssh-banner.txt) ,然后输入你想的任何文本新闻  ,如:

              *This is a private SSH service. You are not supposed to be here.*

              *Please leave immediately. *

              编辑好后  ,生存这个文件  ,在sshd_config中查找下面这样一行:

              #Banner /etc/issue.net

              作废掉注释【将#去掉】  ,然后将路径修改为你自界说的SSH banner文本文件  。

              5、使用DSA公钥认证

              取代使用用户名和密码对SSH举行认证  ,你可以使用DSA公钥举行认证 ,注重你既可以使用上岸名 ,也可以使用DSA公钥举行认证  ,使用DSA公钥认证可以预防你的系统遭受字典攻击  ,由于你不需要用上岸名和密码上岸SSH服务  ,而是需要一对DSA密钥  ,一个公钥和一个私钥  ,在你当地机械上生存私钥  ,将公钥放在服务器上 。当你提倡一个SSH上岸会话时  ,服务器检查密钥 ,若是它们匹配的话 ,你就可以直接进入shell  ,若是它们不匹配  ,你的毗连将被自动断开  。

              在本例中的私人盘算机叫‘事情站1’  ,服务器叫‘服务器1’ 。在两个机械上我有相同的home目录  ,若是服务器和客户端上的home目录差别将不能事情  ,实现  ,你需要在你的私人盘算机上建立一对密钥  ,下令:~$ ssh-keygen -t dsa  ,它将要求你为私钥输入一个私语  ,可是你可以保留为空  ,由于这不是一个推荐的做法  。密钥对建立好了:你的私钥在~/.ssh/id_dsa  ,你的公钥在.ssh/id_dsa.pub  。

              接下来  ,拷贝~/.ssh/id_dsa.pub中的内容到‘服务器1’的~/.ssh/authorized_keys文件中  ,~/.ssh/id_dsa.pub的内容看起来象下面这样:

              ~$ cat .ssh/id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwMWc JYDusNGAIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604ZTdr LZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7n M7aKxIBPDrQwKNyPQAAAIEAq+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5pu Fe7eplmr6t7Ljl7JdkfEA5De0k3WDs 9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0AMRC7ngIe6bta NIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rb WOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP 34fST1amc0YNeBp28EQi0xPEFUD0IXzZtXtHVLziA1/NuzY= anze@station1.example.com

              若是文件~/.ssh/authorized_keys已经存在  ,请将上面的内容附加在该文件的后面  。剩下的只是给该文件设置准确的权限了:

              ~$ chmod 600 ~/.ssh/authorized_keys

              现在 ,设置sshd_config文件使用DSA密钥认证  ,确保你将下面三行前的注释去掉了:

              RSAAuthentication yes

              PubkeyAuthentication yes

              AuthorizedKeysFile %h/.ssh/authorized_keys

              重新启动服务  ,若是你的设置没有错误  ,现在你就可以SSH到你的服务器  ,而且无需任何交互行动(如输入用户名和密码)就直接进入你的home目录了  。

              若是你只想使用DSA认证上岸  ,确保你在sshd_config中作废掉注释并修改PasswordAuthentication这一行  ,将yes改为no:

              PasswordAuthentication no

              任何在服务器上没有公钥的人试图毗连到你的SSH服务  ,它就被拒绝 ,给它显示如下一个拒绝提醒信息:

              Permission denied (publickey).

              6、使用TCP wrappers仅允许指定的主机毗连

              若是你想在你的网络上只允许特定的主机才气毗连到你的SSH服务  ,但又不想使用或弄乱你的iptables设置  ,那这个要领很是有用 ,你可以使用TCP wrappers 。在这个例子中对sshd举行TCP包裹  ,我将建立一条规则允许当地子网192.168.1.0/24和远程193.180.177.13的自己毗连到我的SSH服务 。

              默认情形下  ,TCP wrappers首先在/etc/hosts.deny中查找看主机是否允许会见该服务 ,接下来  ,TCP wrappers查找/etc/hosts.allow看是否有规则允许该主机服务指定的服务  ,我将在/etc/hosts.deny中建立一个规则 ,如下:

              sshd: ALL

              这意味着默认情形下所有主机被拒绝会见SSH服务  ,这是应该的  ,否则所有主机都能会见SSH服务 ,由于TCP wrappers首先在hosts.deny中查找  ,若是这里没有关于阻止SSH服务的规则  ,任何主机都可以毗连  。

              接下来 ,在/etc/hosts.allow中建立一个规则允许指定的主机使用SSH服务:

              sshd: 192.168.1 193.180.177.13

              现在  ,只有来自192.168.1.0/24和193.180.177.13的主性能够会见SSH服务了  ,其他主机在毗连时还没有到上岸提醒符时就被断开了  ,并收到错误提醒  ,如下:

              ssh_exchange_identification: Connection closed by remote host

              7、使用iptables允许特定的主机毗连

              作为TCP wrappers的一个取代品  ,你可以使用iptables来限制SSH会见(但可以同时使用这个两个的)  ,这里有一个简朴的例子  ,指出了怎样允许一个特定的主机毗连到你的SSH服务:

              ~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT

              并确保没有其他的主机可以会见SSH服务:

              ~# iptables -A INPUT -p tcp --dport 22 -j DROP

              生存你的新规则  ,你的使命就完成了  ,规则是立刻生效的

              8、SSH时间锁定技巧

              你可以使用差别的iptables参数来限制到SSH服务的毗连  ,让其在一个特定的时间规模内可以毗连  ,其他时间不能毗连  。你可以在下面的任何例子中使用/second、/minute、/hour或/day开关  。

              第一个例子 ,若是一个用户输入了错误的密码  ,锁定一分钟内不允许在会见SSH服务  ,这样每个用户在一分钟内只能实验一次上岸:

              ~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT

              ~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP

              第二个例子  ,设置iptables只允许主机193.180.177.13毗连到SSH服务 ,在实验三次失败上岸后 ,iptables允许该主机每分钟实验一次上岸:

              ~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT

              ~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

              9、结论

              这些技巧都不是很难掌握 ,可是它们对于掩护你的SSH服务却是很强劲的手段  ,花一点价格换来的是睡一个好觉 。