一、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.png

  • 保护原理
  • 保护机制的实现方式
    方式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.png
3.png
2.查看软件包安装情况和安装路径
4.png
3.查看端口,用户和ip地址
5.png
4.test02机远程连接test01机
6.png
5.在test02新建一个文件夹,去test01查看
7.png
6.退出当前bash环境
8.png
7.进入服务端配置配置文件
9.png
10.png
11.png
8.重启服务,用test02进行ssh的root登录
12.png
9.test02机远程连接test01root
13.png
14.png
10.即使禁止了root登录,还是有风险。在test01里面创建用户wangwu,用test02远程连接服务端,再切换到root账户
15.png
16.png
11.阻止该问题的方法,使用pam认证模块进入su,改配置文件,开启wheel认证模块
17.png
18.png
12.查看id,在test02远程登陆
19.png
wangwu不可以切换有用户
20.png
zhangsan可以切换用户
21.png
注意,在vim /etc/ssh/sshd_config中开启PermitRootLogin no后,一定要开启pam验证模块。

13.其他验证模块
授权操作
22.png
23.png
在没有设置默认情况下,三次就拒绝
24.png
25.png
26.png
27.png
14.黑白名单,白名单(仅允许某些用户,拒绝所有人,安全性场合高)
黑名单(仅拒绝某些用户,允许所有人,安全性场合低)
28.png
29.png
15.创建密钥对验证
30.png
31.png
32.png
33.png
34.png
保存,并重启服务
35.png
36.png
37.png
38.png
39.png
40.png
16.scp——远程复制
41.png
42.png
43.png
44.png
17.sftp
45.png
46.png
18.TCP Wrappers黑白名单
47.png
48.png
49.png
50.png
51.png
52.png