Pyl*_*lsa 21
最大的问题是人们通过 SSH 以计算机管理员身份登录。如果您有一个容易猜到的密码,这可以通过蛮力来完成。
您可以采取多种安全措施,以下是我在设置 SSH 服务器时经常采取的一些措施以及一些额外措施。
使用强密码,至少包含(例如)10 个大小写字母、数字和其他字符。
将用户监禁到他们的主目录。被监禁的用户将无法访问/编辑其主目录之外的文件。因此您的用户将无法访问/编辑关键系统文件。可以在网上找到很多关于如何监禁用户的教程。他们中的大多数人使用JailKit。可以在此处找到此类教程的示例。或者,您也可以使用 OpenSSH-server 的本机ChrootDirectory指令。可以在此处找到有关此教程的示例。
安装Fail2Ban。Fail2Ban 是一个程序,用于检查身份验证日志中是否存在错误条目。当达到某个限制时,它会在预设的时间内为该特定 IP 添加防火墙阻止。在网上也有几个关于如何使用 SSH 设置 Fail2Ban 的在线教程,一个例子就是这个。Fail2Ban 主页也有一些不错的完整的 HOWTO。
通过 SSH 禁用 root 登录。这是可以访问系统上几乎所有文件的用户,因此建议禁用其 shell 登录。在最新版本的 Ubuntu 中,root 用户被自动禁用,但无论如何禁用其 SSH 访问也无妨。这是通过编辑文件来完成的/etc/ssh/sshd_config。✝查找以下行并确保其前面没有#。
#PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)使用非标准端口(例如不是 22) 这可以通过路由器中的端口转发(例如 16121 -> 22 而不是 22 -> 22)或通过使 SSH 守护程序侦听不同的端口来完成。这将使您的 SSH 服务不易被恶意用户检测到。这是通过编辑文件来完成的/etc/ssh/sshd_config。✝查找以下行并将 22 更改为您想要的任何端口。之后不要忘记在路由器中转发正确的端口。
Port 22
Run Code Online (Sandbox Code Playgroud)不要使用密码登录。除了密码之外,SSH 还允许使用私钥登录。这意味着密钥存储在您的计算机上,您可以在该计算机上访问 SSH 机器的 SSH。尝试连接时,SSH 客户端使用密钥登录服务器,而不是通过密码身份验证。身份验证密钥在加密方面比密码强得多,因此不容易破解。在网上还可以找到几个关于如何使用 SSH 设置基于密钥的身份验证的在线教程,一个例子就是这个。(如果您使用 PuTTY 从 Windows SSH,请查看此链接以获取 PuTTY 操作方法。)设置基于密钥的身份验证后,您可以通过编辑文件来禁用密码身份验证/etc/ssh/sshd_config。✝ 查找以下行并确保其前面没有 #。
#PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)或者,正如@Linker3000 在他的评论中提到的那样,您可以设置一个VPN 隧道到要通过 SSH 访问的 PC,然后禁止在 SSH 服务器上进行非本地网络访问。这样,没有 VPN 连接的外部设备将无法访问您的 SSH 服务器。这可以通过拒绝所有主机然后只允许本地网络 IP 登录来完成。这是通过编辑/etc/hosts.deny并添加以下内容来完成的:
sshd: ALL
Run Code Online (Sandbox Code Playgroud)
并/etc/hosts.allow添加以下内容:
sshd: 192.168.1.*
Run Code Online (Sandbox Code Playgroud)
IP与您的本地网络之一匹配的地方。*是通配符,因此所有以 开头的 IP 地址192.168.1.都将被接受。如果这不起作用,你的发行版可能使用ssh的替代sshd。在这种情况下,你应该尝试ssh: 192.168.1.*和ssh: ALL来代替。
您只能允许特定主机,对/etc/hosts.allow和执行相同的操作,/etc/hosts.deny如 6 中所述,但/etc/hosts.allow添加以下行并允许每个主机以空格分隔:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
Run Code Online (Sandbox Code Playgroud)只允许特定用户访问您的 SSH 服务器。这是通过编辑文件来完成的/etc/ssh/sshd_config。✝查找以下行并确保其前面没有#。如果它不存在,请创建它。例如,如果您只想允许 john、tom 和 mary,请添加/编辑以下行:
AllowUsers john tom mary
Run Code Online (Sandbox Code Playgroud)
您还可以拒绝特定用户,例如,如果您想拒绝对 john、tom 和 mary 的访问,请添加/编辑以下行:
DenyUsers john tom mary
Run Code Online (Sandbox Code Playgroud)只允许传入连接使用协议 SSH2。SSH 协议有两个版本。SSH1 存在安全问题,因此建议使用 SSH 2。这可以通过编辑文件来强制执行/etc/ssh/sshd_config。✝查找以下行并确保其前面没有#。如果它不存在,请创建它。
Protocol 2,1
Run Code Online (Sandbox Code Playgroud)
删除 ,1 所以该行将是
Protocol 2
Run Code Online (Sandbox Code Playgroud)不要让没有设置密码的用户登录。这可以通过编辑文件来强制执行/etc/ssh/sshd_config。✝查找以下行并确保其前面没有#。如果它不存在,请创建它。
PermitEmptyPasswords no
Run Code Online (Sandbox Code Playgroud)虽然很简单,也许不用说,但在多种情况下证明是至关重要的,但请让您的软件保持最新状态。定期更新您安装的软件包/软件。
✝ = 在编辑 SSH 配置文件后,不要忘记重新启动守护程序以应用更改。通过执行以下命令重新启动守护程序:
sudo /etc/init.d/ssh restart
Run Code Online (Sandbox Code Playgroud)
或者
sudo /etc/init.d/sshd restart
Run Code Online (Sandbox Code Playgroud)
取决于您使用的 Linux 发行版。
Bri*_*an 7
一些提示:
| 归档时间: |
|
| 查看次数: |
6756 次 |
| 最近记录: |