Linux网络服务——远程访问及控制(ssh远程访问实验)
Posted 可能再无晚安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络服务——远程访问及控制(ssh远程访问实验)相关的知识,希望对你有一定的参考价值。
一、SSH远程管理
1.1 SSH(secure Shell)协议
SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制功能。
SSH对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户password。SSH协议提供了更好的安全性。用于远程管理。
1.2 openSSH
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
1.2.1 服务监听选项
sshd服务使用的默认端口号为22,必要时建议修改此端口号,并指定监听服务的具体ip地址,以提高在网络中的隐蔽性。除此之外,SSH协议的版本选用V2比V1的安全性要更好,禁用DNS反向解析可以提高服务器的响应速度。
[root@localhost ~]# vi /etc/ssh/sshd_config
Port 22 //监听端口为22
ListenAddress 0.0.0.0 // 监听地址为0.0.0.0
Protocol 2 //使用SSH V2协议
UseDNS no // 禁用DNS反向解析
1.2.2 用户登录控制
禁用root用户、空用户
限制登录验证时间、重试次数
AllowUsers、DenyUsers
[root@localhost ~]# vi /etc/ssh/sshd_config
LoginGraceTime 2m //登录验证时间为两分钟
PermitRootLogin no //精致root用户登录
MaxAurhTries 6 //最大重试次数为6
PermitEmptyPasswords no //禁止空用户登录
AllowUsers zhangsan //允许zhangsan从任意终端登录
AllowUsers admin@192.168.100.100// 只允许admin从固定终端登录
[root@localhost ~]# ssh -o NumberOfPasswordPrompts=8 // 增大连接次数为8次
MaxSessions 10 允许10 个终端找你连接
[root@localhost ~]# service sshd reload
1.2.3 登录验证次数
验证:核对用户名、是否正确
秘钥对验证:核对客户的私钥、服务端公钥是否匹配
[root@localhost ~]# vi /etc/ssh/sshd_config
PasswordAuthentication yes //启用验证
PubkeyAuthentication yes // 启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys //指定公钥库数据文件
[root@localhost ~]# service sshd reload
二、构建密钥对验证的SSH体系
2.1 整体实现过程
第一步:由客户端的用户zhangsan在本地创建密钥对
创建密钥对
私钥文件:id_rsa
公钥文件:id_rsa.pub
第二步:上传公钥文件id_rsa.pub
第三步:导入公钥信息,导入到服务端用户lisi的公钥数据库
公钥库文件:~/.ssh/authorized_keys
第四步:使用密钥对验证方式
以服务端的用户lisi的身份进行登录
2.1.1 在客户机中创建秘钥对
ssh-keygen可用的加密算法:RSA、ECDSA或DSA
2.1.2 将公钥文件上传至服务器
任何方式均可(FTP、Email、SCP、HTTP…)
[zhangsan@localhost ~]$ scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp
2.1.3 在服务器中导入公钥文本
将公钥添加至目标用户的公钥库
默认公钥库位置:~/.ssh/authrized_keys
2.1.4 客户端使用秘钥对验证登录
验证用户:服务端的用户lisi
验证:客户端的用户zhangsan的私钥短语
[zhangsan@localhost ~]$ ssh lisi@172.16.16.22
[lisi@localhost ~]$whoami
lisi
2.1.5 第2步和第3步可以采用另外一种方法
ssh-copy-id -i 公钥文件 user@host验证
验证后,会将公钥自动添加到目标主机user宿主目录下的.ssh/aauthrized_keys文件结尾
[zhangsan@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub lisi@172.16.16.22
三、使用SSH客户端程序
ssh命令——远程安全登录
ssh user@host 端口选项:-p 22
scp命令——远程安全复制
格式1:scp user@host:file1 file2 对方赋值给本地
格式2:scp file1 user@host:file2 本地复制给对方
sftp命令——安全ftp上下载
sftp user@host
四、TCP Wrappers
4.1 TCP Wrappers概述
- 保护原理
- 保护机制的实现方式
方式1:通过tcpd程序对其他服务程序进行包装
方式2:有其他服务程序调用libwrap.so.*链接库 - 访问控制策略的配置文件
/etc/hosts.allow
/etc/hosts.deny4.2 TCP Wrappers策略应用
4.2.1 设置访问控制策略
策略格式:服务程序列表:客户机地址列表
服务程序列表
多个服务以逗号分隔,ALL表示所有服务
客户机地址列表
多个地址以逗号分隔,ALL表示所有服务
允许使用通配符*和?
网段地址,如192.168.1 或者 192.168.1.0/255.255.255.0
区域地址,如.benet.com
4.2.2 策略的应用顺序
检查hosts.allow,找到匹配则允许访问
再检查hosts.deny,找到则拒绝访问
若两个文件中均无匹配策略,则默认允许访问
4.2.3 策略应用实例
- 仅允许从以下地址访问sshd服务
主机192.168.100.100
网段192.168.200.0/24 - 禁止其他所有地址访问受保护的服务
[root@55 ~]# vim /etc/hosts.allow
sshd:192.168.100.100,192.168.200.*
[root@55 ~]# vim /etc/hosts.deny
sshd:ALL
优先读取allow,然后再读取deny
如果做黑名单,name白名单就不用写
五、实验ssh远程登陆
5.1 实验:认识使用管理远程登陆
实验环境
两台centos7.6虚拟机
实验步骤
1.开启两台虚拟机,改名test01,test02做分辨
2.查看软件包安装情况和安装路径
3.查看端口,用户和ip地址
4.test02机远程连接test01机
5.在test02新建一个文件夹,去test01查看
6.退出当前bash环境
7.进入服务端配置配置文件
8.重启服务,用test02进行ssh的root登录
9.test02机远程连接test01root
10.即使禁止了root登录,还是有风险。在test01里面创建用户wangwu,用test02远程连接服务端,再切换到root账户
11.阻止该问题的方法,使用pam认证模块进入su,改配置文件,开启wheel认证模块
12.查看id,在test02远程登陆
wangwu不可以切换有用户
zhangsan可以切换用户
注意,在vim /etc/ssh/sshd_config中开启PermitRootLogin no后,一定要开启pam验证模块。
13.其他验证模块
授权操作
在没有设置默认情况下,三次就拒绝
14.黑白名单,白名单(仅允许某些用户,拒绝所有人,安全性场合高)
黑名单(仅拒绝某些用户,允许所有人,安全性场合低)
15.创建密钥对验证
保存,并重启服务
16.scp——远程复制
17.sftp
18.TCP Wrappers黑白名单
以上是关于Linux网络服务——远程访问及控制(ssh远程访问实验)的主要内容,如果未能解决你的问题,请参考以下文章