<i id='mee8d'></i>

      <dl id='mee8d'></dl>

      1. <tr id='mee8d'><strong id='mee8d'></strong><small id='mee8d'></small><button id='mee8d'></button><li id='mee8d'><noscript id='mee8d'><big id='mee8d'></big><dt id='mee8d'></dt></noscript></li></tr><ol id='mee8d'><table id='mee8d'><blockquote id='mee8d'><tbody id='mee8d'></tbody></blockquote></table></ol><u id='mee8d'></u><kbd id='mee8d'><kbd id='mee8d'></kbd></kbd>
      2. <acronym id='mee8d'><em id='mee8d'></em><td id='mee8d'><div id='mee8d'></div></td></acronym><address id='mee8d'><big id='mee8d'><big id='mee8d'></big><legend id='mee8d'></legend></big></address>

          <code id='mee8d'><strong id='mee8d'></strong></code>
          <ins id='mee8d'></ins><span id='mee8d'></span>
          <fieldset id='mee8d'></fieldset>
        1. <i id='mee8d'><div id='mee8d'><ins id='mee8d'></ins></div></i>

          linux下高级SSH安全技巧

          • 时间:
          • 浏览:10
          • 来源: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服务却是很强劲的手段 ,花一点价格换来的是睡一个好觉  。