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.deny

    4.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远程访问实验)的主要内容,如果未能解决你的问题,请参考以下文章

Linux远程访问及控制

Linux网络服务10——远程访问及控制

linux----SSH远程访问及控制!

Linux中远程访问及控制

Linux中远程访问SSH及TCP Wrappers控制

linux ssh远程访问及控制