SSH简介

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。(摘自百度百科)

安全设置

  1. 禁用root用户

root用户是Linux系统默认的最高权限用户。允许root用户登录,当他人爆破或者其他手段知道密码,则可以完全控制电脑。可以创建一个具有root权限的新用户,来达到root用户登录相同的效果且可以有效防御入侵。

useradd -m newroot    #创建newroot用户
passwd newroot         #设置newroot用户密码
usermod -aG root newroot   #将newroot加入root权限组

用户创建好之后,需要修改ssh相关配置:

配置文件位置:/etc/ssh/sshd_config
修改内容:
# Authentication: 
#LoginGraceTime 2m 
PermitRootLogin no 
AllowUsers newroot
之后重启ssh服务:
sudo systemctl restart ssh
  1. 修改默认端口

ssh的默认端口是22,虽然修改后攻击者依旧可以通过工具找到ssh端口,但是增加了难度,提高了防御力。

配置文件地址:
/etc/ssh/sshd_config
修改内容:
Include /etc/ssh/sshd_config.d/*.confPort 2222
之后重启ssh服务:
sudo systemctl restart ssh
  1. 限制尝试连接次数

限制连接尝试次数,可有有效防止攻击者爆破ssh密码。

配置文件同上
修改内容:
MaxAuthTries 3    #限制为3次
  1. 关闭TCP端口转发和X11转发

攻击者可以尝试通过 SSH 连接的端口转发来访问您的其他系统。

X11Forwarding no 
AllowTcpForwarding no
  1. 使用 SSH 密钥连接

使用 SSH 密钥时,无需密码即可访问服务器。另外,您可以通过更改sshd_config文件中与密码相关的参数来完全关闭对服务器的密码访问。
创建密钥命令: ssh-keygen

  1. 限制连接IP

只允许特定的IP块访问,是最有效的保护措施之一。
配置文件地址: /etc/hosts.allow
屏幕截图 2022-09-21 142606.png
只需在末尾插入以下配置即可,例如192.168.0.1/24:
sshd : 192.168.0.1/24 : ALLOW