ssh协议端口是非常重要的端口,必须做好它的安全工作。我们能不能像mysql一样对ssh协议限制root登录与限制ip登录?答案是可以的。
1)限制root用户远程登录
每一台Linux服务器都有一个root超级管理员账号,root权限太大了,如果不对它做下限制,猜对了它的密码就完全攻破了服务器。对于root用户,我们必须禁用它的ssh远程登录。
①保留可供远程登录的其他账户:
禁用root ssh远程登录前,确保Linux服务器还有其他的可供ssh远程登录的账号,没有就新建一个。为了能正常使用ssh协议我们必须得保留一个可供登录的账号。
②修改它的配置文件:
/etc/ssh/sshd_config
找到PermitRootLogin参数把值yes改成no,然后保存退出。
重启ssh服务
service ssh restart
这样就可以了,root账户不可以登录了。
同样,如果让root用户可以登录,把PermitRootLogin参数改回yes,重启ssh服务就可以了。有些童鞋的Linux服务器不能使用root账户登录,可以看下PermitRootLogin参数的值是不是no。
把root账户远程登录禁用了,那root账户是否还可以使用?
是可以的。
先用普通账户远程登录服务器,然后su root 进行提权,让普通用户变身ROOT用户。
除了可以禁止root账户,其他普通账户都可以在这个配置文件中配置。
1.只允许指定用户进行登录(白名单):
AllowUsers nanshen test@192.168.1.1 # 允许 nanshen 和 从192.168.1.1登录的test帐户 通过SSH登录系统。
2.只拒绝指定用户进行登录(黑名单):
DenyUsers nanshen ubuntu #Linux系统账户 # 拒绝 nanshen、ubuntu 帐户通过 SSH 登录系统
2)限制ip登录
第一种方法:
除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,设置的方法依靠 /etc/hosts.allow 和 /etc/hosts.deny这两个配置文件。
hosts.allow文件,顾名思义添加允许的ip列表
hosts.deny文件,添加禁止的ip列表
限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,具体如下:
vi /etc/hosts.allow sshd:192.168.0.1:allow #允许 192.168.0.1 这个 IP 地址 ssh 登录 sshd:192.168.0.1/24:allow #允许 192.168.0.1/24 这段 IP 地址的用户登录
vi /etc/hosts.allow sshd:ALL # 允许全部的 ssh 登录
hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,按照此方法设置后服务器只允许 192.168.0.1 这个 IP 地址的 ssh 登录,其它的 IP 都会拒绝。不用重启ssh服务!
第二种方法:
【这种方法实现的前提必须是服务器网卡必须配置外网IP,而不是有外网IP NAT转换成 内网IP,不然是不起作用的。关于这块的知识,楠神在《第十七章:第38节》中有做拓展介绍。】
如果只允许处于同一内网的主机ssh连接,那sshd服务可以把监听ip地址改成自己的内网ip,这样任何外网IP都不可以连接。
linux系统中,可以使用ssh命令连接其他服务器
ssh -p 端口 user@host
其实当我们有多台Linux服务器,只保留一台服务器(例如A)ssh端口对外网开放,其他服务器不对外网开放,只对内网开放。操作任意一台服务器可以先登录A服务器,使用ssh命令连接目标服务器。这样做便于管理,还安全。
一个重要的问题:
如果对ssh登录做了一个ip限制,假如本地电脑的ip地址变了,那服务器管理员还怎么远程登录服务器?
楠神就以腾讯云的Linux服务器为例说起:
上图截自腾讯云的帮助文档,当我们本地电脑的ip被限住了,可以使用“WebShell登录”和“VNC登录”。
这两种登录方式都需要到腾讯云的控制台操作:
①WebShell登录
webshell登录官方说明:
Webshell 登录采用代理方式连接,若要使用 Webshell 方式登录,请确认放通来源为 Webshell 代理 IP 地址的远程登录端口 22。 Webshell 代理 IP 地址共有 6 个,具体如下: 115.159.198.247 115.159.211.178 119.28.7.195 119.28.22.215 119.29.96.147 211.159.185.38
意思是我们只要把这6个ip地址添加到hosts.allow文件中,就可以使用WebShell登录了
②VNC登录
这种登录方式,就算服务器没有公网ip,也可以使用它登录。说明它走的不是ssh协议,压根不是通过网卡登录的服务器。感觉类似,一台没有联网的电脑,直接在电脑前输入密码打开的那种。
推荐使用这种方式登录服务器,登录后去修改hosts.allow文件的ip,这样就又可以使用ssh远程登录了。
阿里云的远程连接也是VNC登录方式。