少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述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 整体实现过程
【Linux网络服务——远程访问及控制(ssh远程访问实验)】第一步:由客户端的用户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.deny 4.2 TCP Wrappers策略应用
服务程序列表
多个服务以逗号分隔,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黑白名单
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- 综合实验(DHCP+DNS正向解析+XPE自动装机+NFS共享)
- #yyds干货盘点# 保存并提交修改后的容器镜像
- 如何打造一个TB级微服务海量日志监控平台
- nginx: [emerg] getpwnam(“www”) failed 错误处理方法
- #yyds干货盘点#iptables常用命令
- [iOS研习记]——聊聊野指针与僵尸对象定位
- 如何缩减XFS分区格式的根目录
- 微软谷歌和Atlassian全都调高了漏洞报告奖励
- #yyds干货盘点#HostMonitor辅助网络管理