LINUX——远程访问控制ssh

一、什么是SSH?
◆ SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程
复制等功能。
◆ SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的
用户口令。
◆ 与早期的 Telent(远程登录)、RSH(Remote Shell,远程执行命令)、RCP(Remote
File Copy,远程文件复制)等应用相比,SSH 协议提供了更好的安全性。
◆ OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。

二、SSH远程管理----服务端
2.1.SSH协议
◆ 为客户机提供安全的shell环境,用于远程管理
◆ 默认端口:TCP:22,一般广域网
TELNET:明文形式的访问 TCP:23,一般局域网
远程桌面 3389,图形化界面
2.2服务监听选项
◆ sshd 服务使用的默认的端口号为22,但是这个不是固定的,我们可以使用 -p 修改端口号。

◆ 在现实工作中,建议修改端口号,并指定监听服务的具体IP地址,以提高在网络中的隐蔽性。禁用 DNS 反向解析可以提高服务器的响应速度。
ssh

1.[root@wang22~]# vim /etc/ssh/sshd_config
2…
3.#Port 22 #监听端口为 22, 端口号可以修改
4.#AddressFamily any
5.#ListenAddress 172.16.16.22 #监听地址可修改
6.#ListenAddress ::
7.Protocol 2 #使用 SSH V2 协议
8…
9.UseDNS no #禁用 DNS 反向解析
10…
例如,我们想登录主机ip地址为192.168.220.129,也是用root用户验证,执行以下操作即可
LINUX——远程访问控制ssh
2.3用户登录控制
◆ 禁止root用户,空密码用户

◆ 登录时间,重试次数

◆ AllowUsers(白名单,仅允许,只有这些可以登录)

◆ DenyUsers(黑名单,仅拒绝,只有这些不行)

◆ AllowUsers不可与DenyUsers同时使用
1、通常禁止root 用户或者密码为空的用户登录,另外还可以限制登录的验证时间(默认为2分钟),及最大重试次数,超出后未登录成功会断开连接。

Authentication:

#LoginGraceTime 2m #登录验证时间2分钟
#PermitROOTLogin yes #yes代表允许root用户登录,no代表root用户登录
#StrictModes yes
#MAxAuthTries 6 #最大重试次数
#MaxSessions 10

注意:默认尝试最大的登录次数是3次,如果我们去掉MaxAuthTries 前面的#符号,就代表开启,但是远程登录还是不能尝试6次,只能登3次。

#LoginGraceTime 2m
#PermitROOTLogin yes
#StrictModes yes
MAxAuthTries 6 #去掉行头“#”
#MaxSessions 10

LINUX——远程访问控制ssh
但是我们输入以下命令可以改变登录次数:
ssh -o NumberOfPasswordPrompts=n(n代表次数,只要比文件中的最大尝试次数大就可以了) 用户名@IP地址
LINUX——远程访问控制ssh
2、如果只允许或禁止特定用户登录时,可以使用 AllowUsers (仅允许,“白名单”)或 DenyUsers(仅禁止,“黑名单”) 配置,两者 用法类似,但是二者不可同时使用。

◆ 例如,现有一台服务器,只允许zhangsan 和 lisi 用户登录,且 lisi用户只能从IP地址为192.168.220.131的主机远程登录, 则 可 以 在 /etc/ssh/sshd_config文件中添加配置即可,保存退出后。
◆ 记得要重启一下sshd服务。
LINUX——远程访问控制ssh
2.4登录验证方式
◆ 登录验证对象

服务器中的本地用户账号

◆ 登录验证方式
密码验证:
就是我们平常使用最多的一种,使用用户名和密码登录,但是这种方式可能会遭遇暴力破解,防御能力较弱。
密钥对验证:
要求提供相匹配的密钥LINUX——远程访问控制ssh
3 .1.2保护机制的实现方式
◆ 方式一

通过tcpd主程序对其他服务程序进行包装

◆ 方式二

由其他服务程序调用libwrap.so.*链接库

3.1.3访问控制策略的配置文件
◆ /etc/hosts.allow

◆ /etc/hosts.deny
1.ldd which sshd 查看模块
3.2TCP Wrappers访问策略
3.2.1设置访问控制策略
◆ 策略格式

服务列表:客户机地址列表

◆ 服务列表

多个服务以逗号分隔,ALL表示所有服务

◆ 客户机地址列表
多个地址以逗号分隔,ALL表示所有服务

允许使用通配符*和?

网段地址,如192.168.1 或者 192.168.1.0/255.255.255.0

区域地址,如.benet.com

3.2.2策略的应用程序
◆ 先检查hosts.allow,找到匹配则允许访问
◆ 否则再检查hosts.deny,找到则拒绝访问
◆ 若两个文件中均无匹配策略,则默认允许访问

3.2.3策略应用实例
◆ 仅允许从以下地址访问sshd服务
主机192.168.100.100

网段192.168.200.0/24

◆ 禁止其他所有地址访问受保护的服务
1.[root@wang22 ~]# vim /etc/hosts.allow
2.sshd:192.168.100.100,192.168.200.*
3.[root@wang22 ~]# vim /etc/hosts.deny
4.sshd:ALL
优先读取allow,然后再读取deny
◆ 如果做黑名单,name白名单就不用写

四、使用SSH远程访问(模拟实验)
4.1ssh远程登录
◆ 通过 ssh命令可以远程登录sshd服务,为用户提供一个安全的shell环境,以便对服务器进行管理和维护,使用时应制定登录用户、目标主机ip地址作为参数。
◆ 命令基本格式
ssh user@host
◆ 例如:登录主机192.168.220.129 ,以对方的zhangsan用户进行验证。
LINUX——远程访问控制ssh
◆ 如果 sshd服务器使用了非默认的端口号(22端口),那么登录时需要加 “-p” 指定端口号。
◆ 例如主机192.168.220.129的端口号为123,则是-p 123
1.[root@localhost~]# ssh -p zhangsan@192.168.220.129
4.2scp命令——远程安全复制
◆ 通过scp命令可以利用 SSH安全连接与远程主机相互复制文件。使用scp命令时,除了必须指定复制源、目标之外,还应指定目标主机地址、登录用户,执行后根据提示输入密码即可。
◆ 注意:如果是远程复制一个单独的文件的话直接用scp 就可以了,但是复制文件夹或目录的话,需要加 “-r” 选项。
命令基本格式
1.格式一:scp user@host:file 1 file 2
2.格式二:scp file 1 user@host:file 2
1、将本地文件复制到其他服务器

◆ 格式1:scp 本地文件路径 对方登录用户@ip地址:对方文件存放路径
◆ 例如:我们将本地 /opt下的 test01.txt这个文件复制到 远程服务器(ip地址是192.168.220.131)中的/opt目录下。
LINUX——远程访问控制ssh
LINUX——远程访问控制ssh
2、将远程服务器的文件复制到本地
◆ 格式2: scp 用户名@IP地址:远程服务器文件存放路径 本地存放路径
◆ 例如:将远程服务器(IP地址:192.168.220.129)/opt 目录下的文件test02.txt 复制到本地的/opt 目录下。
LINUX——远程访问控制ssh
LINUX——远程访问控制ssh
4.3sftp——安全FTP
◆ 通过sftp命令可以利用SSH安全连接与远程主机上传、下载文件,采用了与FTP类似的登录过程和交互式环境,便于目录资源的管理。
◆ 命令基本格式
sftp user@host
get:下载
put:上传
1、下载文件:get
例如:我们使用sftp命令远程连接一台ip地址为192.168.220.129的主机,将其/opt 目录下的test01.txt,这个文件下载到本地:
LINUX——远程访问控制ssh
2、上传文件:put
例如:还是上面的环境,我们登陆成功后,将本地的/opt 目录下的文件game01.txt 文件上传到远程连接的主机:

LINUX——远程访问控制ssh
五、构建密钥对验证
5.1密钥对整体实现过程
在linux客户机中, 通过ssh_Keygen工具为当前用户创建密钥对文件,可用的加密算法为RSA或DSA,(ssh-keygen -t 选项用于指定算法类型)
具体过程分四步
第一步:
创建密钥对:
1.私钥文件:id_rsa
2.公钥文件:id_rsa.pub
第二步:
上传公钥文件:id_rsa.pub
第三步:
导入公钥信息,公钥库文件:~/.ssh/authorized_keys
第四步
使用密钥对验证方式

5.2密钥对验证实验
5.2.1实验环境
◆ 一台远程服务器(ip地址:192.168.220.129)
◆ 一台终端(用户名:caiwu;IP地址:192.168.220.131)

5.2.2实验步骤
第一步:在客户端创建密钥对
1、先在服务器开启公钥。文件位置:/etc/ssh/sshd_config
LINUX——远程访问控制ssh
2、客户端用户caiwu 在本地创建公钥:

◆ 在客户机中创建密钥对
ssh-keygen -t 命令
◆ 可用的加密算法:RSA或DSA
LINUX——远程访问控制ssh
第二步:将公钥文件上传到服务器
将生成下来的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中。
◆ 公钥文件 id_ecdsa.pub
◆ 私钥文件 id_ecdsa
LINUX——远程访问控制ssh
◆ 输入以下命令:
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.220.129
将本地公钥文件 id_ecdsa.pub 上传至服务器用户名为zhangsan的目录下。
LINUX——远程访问控制ssh
第三步:来到服务器中,查看 zhangsan用户目录下是否有公钥文件
LINUX——远程访问控制ssh
5.2.3验证实验
公钥导入服务器成功后,我们来到终端来验证一下
LINUX——远程访问控制ssh
结果证明,登录时需要验证公钥的密码,我们输入密码后,即可连接成功。
注意:如果我们经常在一个终端登录服务器,且能确保这台终端是常用安全的,可以使用代理功能,只要第一次输入公钥密码,之后登录无法再输入密码。

◆ ssh-agent 实现代理权
◆ ssh-add 添加交互密钥
LINUX——远程访问控制ssh

版权声明:玥玥 发表于 2021-06-05 17:00:00。
转载请注明:LINUX——远程访问控制ssh | 女黑客导航