第十七章:第48节Linux安全防护——ssh限制ip登录、限制root登录

更新于:2021-06-02 09:50:44

ssh协议端口是非常重要的端口,必须做好它的安全工作。我们能不能像mysql一样对ssh协议限制root登录与限制ip登录?答案是可以的。


1)限制root用户远程登录


每一台Linux服务器都有一个root超级管理员账号,root权限太大了,如果不对它做下限制,猜对了它的密码就完全攻破了服务器。对于root用户,我们必须禁用它的ssh远程登录。


①保留可供远程登录的其他账户:


禁用root ssh远程登录前,确保Linux服务器还有其他的可供ssh远程登录的账号,没有就新建一个。为了能正常使用ssh协议我们必须得保留一个可供登录的账号。


②修改它的配置文件:


/etc/ssh/sshd_config


1.png


找到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 地址的用户登录

14ce36d3d539b6005574d31eea50352ac75cb7e5.jpg


vi /etc/hosts.allow
sshd:ALL # 允许全部的 ssh 登录


14ce36d3d539b6005574d31eea50352ac75cb7e5.jpg


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服务器为例说起:


1.png


上图截自腾讯云的帮助文档,当我们本地电脑的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登录方式。