SSH远程访问管理及TCP控制

一、OpenSSH服务器

1.SSH协议

SSH(Secure  Shell)协议
  1.是一种安全通道协议
  2.对通信数据进行了加密处理,用于远程管理

2.OpenSSH服务

OpenSSH
    服务名称:sshd
    服务端主程序:/usr/sbin/sshd
    服务端配置文件:/etc/ssh/sshd_config

3.服务监听选项

 服务监听选项
       端口号、协议版本、监听IP地址
       禁用反向解析

示例:

  vi  /etc/ssh/sshd_config
                    
    Port  22               #默认端口号是22,可改,最大的端口号可以改为65535
    ListenAddress   172.16.16.22(目标地址就是自已的地址)      #监听地址
    
    注: 监听地址默认指的是0.0.0.0 是监听所有,如目标地址设置的为自已的ip地址,然后pkill  sshd清完进程,
    那个ip地址的XShell就连接不上,如不清进程,下一次,登录也连接不上 
    
    Protocol  2          #协议号
    UseDNS   no      #重定向禁用                           
    重定向:客户机去访问一个服务器1,但这个服务器是不可达的,这个服务器1会把这个不可达的内容
    指向另一台服务器(服务器2),这个过程称为重定向   

4.用户登录控制

用户登录控制
     禁用root用户、空密码用户
     限制登录验证时间、重试次数
     AllowUsers 、DenyUsers

示例:

 vi  /etc/ssh/sshd_config                   #进入编辑

     LoginGraceTime  2m           #限定密码登录的访问时间
                                               如别人用SSH远程访问,2分钟没有输入密码就 
                                              会显示超时
     PermitRootLogin  no           #不允许root账号登录,Yes是允许,默认是Yes
     MaxAuthTries     6               #最大尝试密码的次数是6,超过6次服务器会断开
     PermitEmptyPasswords   no   #不允许空密码登录
     ........
     AllowUsers   jerry  admin@61.23.24.25       #白名单
     jerry、admin:只允许这2个用户访问
     61.23.24.25:客户机的IP
  注:AllowUsers   白名单、DenyUsers  黑名单,两个不能同时使用

1.操作试验
1.1 白名单试验

1.vi /etc/ssh/sshd_config #先进入ssh

1.vi  /etc/ssh/sshd_config            #先进入ssh

按大G到文件的最后一行,小o从光标处所在行之下插入一个新行内容 
输入AllowUsers    lisi   zhangsan@20.0.0.15客户机的IP(指定被远程的客户机IP地址)    
wq保存退出

在这里插入图片描述
2.systemctl restart sshd #重启sshd服务

2.systemctl  restart   sshd          #重启sshd服务
创建白名单允许的访问的用户
useradd  lisi 
passwd   lisi
123123

useradd zhangsan
passwd zhangsan
123123

在这里插入图片描述
3.然后去白名单指定的客户机ip地址的机器上测试是否可以用SSH远程到本机的账户

ssh   lisi@20.0.0.14   -p   22     #使用ssh登录要登录的客户机ip地址
whoami           #表示我是谁
exit             #登出

在这里插入图片描述
1.2 黑名单试验

同上
1.vi  /etc/ssh/sshd_config
          改为
  DenyUsers   lisi@20.0.0.15            #把lisi放入黑名单,20.0.0.15这个客户机是ssh远程不上本机(20.0.0.14)的lisi账户的

在这里插入图片描述

2.测试     
上面已经把lisi账户放入黑名单,用20.0.0.14的ip的客户机用ssh远程本机(20.0.0.15)的lisi账户是远程不上的,连续输入3次密码不管是否正确,最后都会返回为客户机的初始账户。

在这里插入图片描述

客户机远程本机登录账户,除本机黑名单意外的账户,其他账户都可以远程通过
ssh    zhangsan@20.0.0.14                 #登录20.0.0.14机器的zhangsan账户
exit                                      #退出 

在这里插入图片描述
注释:ssh:做完一个实验最好还原一下,以免影响到下面的实验

5.登录验证方式

登录验证方式:
    密码验证:核对用户明、密码是否匹配
    密钥对验证:核对客户的私钥、服务端公钥是否匹配

密钥分为:公钥与私钥
    公钥:大家都可以有这个钥匙,解的是私钥锁
    私钥:私钥解的是公钥的锁

示例:

[root@server1 ~]# vi /etc/ssh/sshd_config

PasswordAuthentication yes        #密码验证
PubkeyAuthentication yes          #公钥验证       下面两个同时开启  
AuthorizedKeysFile      .ssh/authorized_keys   #密钥对存放位置    默认开启的
                           隐藏文件

生成密钥对的过程

ssh-keygen  -t  rsa             #生成密钥的方式
ls   -lh           #只能查看到没有加密、没有隐藏的文件是可以看到的
ls   -lah         #可以查看到加密、隐藏的文件
cd  .ssh/       #进入.ssh目录
ls  -lah            #查看.ssh目录中的文件
会生成两条文件,第一条是私钥,第二条是公钥       

在这里插入图片描述

5.1 数据加密

    1.发送方使用接收方的公钥加密数据
    2.接收方使用自已的私钥解密数据
    3.数据加密能保证所发送数据的机密性

在这里插入图片描述

5.2 数字签名

    1.对原始数据执行HASH算法得到摘要值
    2.发送方用自已私钥加密摘要值
    3.将加密的摘要值与原始数据发送给接收方
    
 注:数字签名保证数据完整性、身份验证和不可否认

在这里插入图片描述

二、使用SSH客户端程序

1.ssh命令

   ssh命令
      用途:远程安全登录、端口选项:-p  22
      格式:ssh  user@host

示例:
要求:客户端(20.0.0.14)登录服务器(20.0.0.15)的root账户

ssh  root@20.0.0.15
yes
20.0.0.15的root密码:123456
whoami        #查看本身是谁
ifconfig      #查看本身是哪个IP地址

在这里插入图片描述

2.scp命令

 scp命令
    用途:远程安全复制
    格式:
      格式1:scp  user@host:file1  file2
      格式2:scp  file1  user@host:file2

在这里插入图片描述

示例
要求:客户端(20.0.0.14)创建文件复制到服务器(20.0.0.15)的root下的opt目录下

//格式1
echo   "abc123" >a.txt          #本地生成一个a.txt文件
scp  /root/a.txt  root@20.0.0.15:/opt         #把本地的root目录下的a.txt文件拷贝到用户名为root的
                                              20.0.0.15ip地址的opt目录下    

在这里插入图片描述
在这里插入图片描述
在20.0.0.15的opt目录下创建文件信息,然后在去20.0.0.14上下载20.0.0.15的文件

// 格式2
scp   root@20.0.0.15:/opt/1  /root     #拷贝20.0.0.15上的root账户下opt目录下的1文件,拷贝到本机的root目录下

在这里插入图片描述
在这里插入图片描述

3.sftp命令

sftp命令
    用途:安全FTP上下载
    格式:sftp  user@host
    注:sftp访问的都是文件的家目录  

示例:
要求:服务器创建文件,客户机通过FTP查看文件的上下载

  sftp   root@20.0.0.15   #登录上20.0.0.15这个用户的家目录  

在这里插入图片描述

在服务器上创建文件

cd  /home/fa         #进入家目录
touch   ky07         #创建一个ky07文件

在这里插入图片描述
在客户机上测试

sftp   fa@20.0.0.15     #sftp访问20.0.0.15的fa目录,访问进去直接进的是fa的家目录

在这里插入图片描述

三、构建密钥对验证的SSH体系

1.实现过程图

在这里插入图片描述

2.四步操作

2.1 在客户机中创建密钥对

1.在客户机中创建密钥对
        ·ssh-keygen命令
        ·可用的加密算法:RSAECDSADSA

示例:

[zhangsan@server2 ~]$ ssh-keygen -t ecdsa

Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/.ssh/id_ecdsa):    #默认存储位置
Created directory '/home/zhangsan/.ssh'.                
Enter passphrase (empty for no passphrase):                #对密钥进行设置密码加密
Enter same passphrase again:                               #设置密钥短语,再次输入密码,建议设置的时候谨慎
Your identification has been saved in /home/zhangsan/.ssh/id_ecdsa.      #私钥文件位置
Your public key has been saved in /home/zhangsan/.ssh/id_ecdsa.pub.      #公钥文件位置

注:设置密钥短语密码的时候要谨慎设置                 

2.2 将公钥文件上传至服务器

2.将公钥文件上传至服务器
       ·任何方式均可(FTP、Email、SCPHTTP ........

示例:

 [zhangsan@localhost ~]$ scp ~/.ssh/id_ ecdsa.pub root@172.16.16.22:/tmp
                         拷贝   公钥文件位置      到root用户ip地址的tmp目录下

2.3 在服务器中导入公钥文本

3. 在服务器中导入公钥文本
         ·将公钥文本添加至目标用户的公钥库
         ·默认公钥库位置:~/.ssh/authorized_keys

示例:

   mkdir  /home/lisi/.ssh/                                       #以mkdir的形式创建lisi,lisi是本身存在的
   cat  /tmp/id_ecdsa.put  >> /home/lisi/.ssh/authorized_keys    #把公钥文件的内容追加到lisi的.ssh目录的authorized_keys文件下
   tail  -1  /home/lisi/.ssh/authorized_keys                     #查看文件内容最后一行

2.4 客户端使用密钥对验证登录

4.客户端使用密钥对验证登录
           ·验证用户:服务端的用户lisi
           ·验证密码:客户端的用户zhangsan的私钥短语

示例:

[zhangsan@localhost ~]$ ssh lisi@172.16.16.22 #登录到lisi的家目录下
[lisi@localhost ~]$ whoami
lisi

3.项目操作

1.在客户机上创建用户

   useradd  wangwu     #创建用户
   passwd   wangwu     #设置密码

在这里插入图片描述
2.生成密钥

[root@server1 ~]# su zhangwe       #切换到wangwu用户
[zhangwe@server1 root]$ ssh-keygen -t rsa    #生成密钥的过程
[zhangwe@server1 root]$ ls -lah    #查看,权限不够
[zhangwe@server1 root]$ exit       #退出

在这里插入图片描述
因为wangwu是普通用户没有权限
3.添加到组内,提升权限

sudo  /usr/bin/ls  -lah         #授权
cd  /home/wangwu
ls    -lah                      #查看所有文件包括有密码的,隐藏的文件

在这里插入图片描述
4.查看生成的密钥文件
在这里插入图片描述

5.将公钥文件上传至服务器
在客户机上

 scp  id_rsa.pub  root@20.0.0.15:/tmp     #拷贝公钥到root用户的客户机ip地址是20.0.0.15的tmp目录下

在这里插入图片描述

6.在服务器(20.0.0.15)上去查看
在这里插入图片描述
7.把文件拷贝到用户lisi上
先创建用户lisi,目录
在服务器上

[root@server3 tmp]# useradd lisi                  #创建用户
[root@server3 tmp]# mkdir /home/lisi/.ssh         #创建目录
[root@server3 tmp]# cat id_rsa.pub >> /home/lisi/.ssh/authorized_keys   #追加文件内容
[root@server3 tmp]# cat /home/lisi/.ssh/authorized_keys    #查看文件是否存在

在这里插入图片描述
测试:
客户机(20.0.0.14)远程登录服务器(20.0.0.15)
客户端使用密钥对验证登录

ssh   lisi@20.0.0.15             #用ssh远程登录服务器

在这里插入图片描述

3.1 第2和第3步可以采用另外一种方法

ssh-copy-id -i  公钥文件   user@host       #自已生成的密钥文件拷贝到指定目标主机上的目标用户下的密钥库文件中
       
ssh-copy-i   -i   ~/.ssh/id_rsa.pub   lisi@172.16.16.22        # 验证密码后,会将公钥自动添加到目标主机user宿主目录下   
                                                                 的.ssh/authorized_keys文件结尾

示例:

接着以上实验继续进行
服务器(20.0.0.15)还原初始状态
在服务器上
在这里插入图片描述
在客户机(20.0.0.14)上配置

ssh-copy-id  -i  /home/wangwu/.ssh/id_rsa.pub  lisi@20.0.0.15   
#验证密码后,会将公钥自动添加到目标home下wangwu/.ssh/id_rsa.pub 

  显示已进将密钥添加进lisi的公钥库中
(Now try logging into the machine, with:   "ssh 'lisi@20.0.0.15'"
and check to make sure that only the key(s) you wanted were added.

在这里插入图片描述

进行验证登录服务器(20.0.0.15)的lisi账户
ssh  lisi@20.0.0.15     #通过ssh远程目标20.0.0.15的lisi账户
whoami            
ifconfig   

在这里插入图片描述
登录上来说明验证成功

4.免密登录

ssh-keygen  -t  rsa        #生成密钥
ssh-copy-id   20.0.0.14    #输入20.0.0.14管理员的密码
ssh  root@20.0.0.14        #代理成功直接无密码登陆20.0.0.14的root账户

在这里插入图片描述

四、TCP Wrappers概述

1.TCP保护原理

在这里插入图片描述

1.1 保护机制的实现方式
        方式1:通过tcpd程序对其他服务程序进行包装
        方式2:由其他服务程序调用libwrap.so.*链接库

1.2 访问控制策略的配置文件
        ·/etc/hosts.allow              白名单     
        ·/etc/hosts.deny               黑名单

2.策略应用

2.1 设置访问控制策略

1.设置访问控制策略
       1.1 策略格式:服务程序列表:客户端地址列表
       1.2 服务程序列表
              多个服务以逗号分隔,ALL表示所有服务
       1.3 客户端地址列表
               多个地址以逗号分隔,ALL表示所有地址
               允许使用通配符?和*      
               # "?"表示1位未知、" * "表示这位数字可用为0,没有或者任意数字                                                                                       
               网段地址,如192.168.4.   或者  192.168.4.0/255.255.255.0
               区域地址,如.benet.com

2.2 策略应用顺序

 1.检查hosts.allow,找到匹配则允许访问(白名单)
 2.在检查hosts.deny,找到则拒接访问(黑名单)
 3.若两个文件中均误匹配策略,则默认允许访问

2.3 策略应用示例

 1.仅允许从以下地址访问sshd服务
        主机61.63.65.67
        网段192.168.2.0/24
 2.禁止其他所有地址访问受保护的服务

示例:

     vi   /etc/hosts.allow

       sshd:61.63.65.67,192.168.2. *任意字符     192.168.2.0/255.255.255.255   #只允许这一个网段和这个ip访问我

     vi    /etc/hosts.deny

       vsftpd:ALL             #ftp不允许任何用户访问
       sshd:ALL               #禁用所有

实例:
1.在服务器(20.0.0.14)上

sshd:20.0.0.15         #允许20.0.0.15访问我

在这里插入图片描述
2.在服务器(20.0.0.14)上

vsftpd:ALL           #ftp不允许任何用户访问
sshd:ALL             #拒绝所有

在这里插入图片描述
3.在客户机(20.0.0.15)上,连接服务器是可以正常登录的,因为上面服务器允许20.0.0.15的ip地址访问他,登录成功!

ssh   root@20.0.0.14            #用ssh远程连接20.0.0.14ip上的机器的root账户

在这里插入图片描述

4.在没有被允许登录的客户机(20.0.0.13)上去用ssh远程连接服务器(20.0.0.14)
登录失败!
在这里插入图片描述
匿名访问
1.服务器上安装ftp

     yum   -y   install   vsftpd    #服务器上安装ftp

在这里插入图片描述
2.编辑配置文件

vi   /etc/vsftpd/vsftpd.conf           #进入vsftpd.conf文件进行编辑
    
添加:
     anon_umask=022                          #设置匿名账户权限为755
     anon_other_write_enable=YES             #允许匿名账户其它写的权限

修改:
    anon_upload_enable=YES                  #允许匿名账户登录
    anon_mkdir_write_enable=YES             #允许匿名账户新键文件或目录

在这里插入图片描述
3.在服务器(20.0.0.14)上配置

[root@server2 ~]# cd /var/ftp/pub 
[root@server2 pub]# echo "abc123" > a.txt             #创建文件a.txt,内容是abc123
[root@server2 pub]# cd 
[root@server2 ~]# chmod -R 755 /var/ftp/pub/          #设置文件权限
[root@server2 ~]# chown -R ftp.ftp /var/ftp/pub/      #设置文件归属
[root@server2 ~]# systemctl start vsftpd              #服务开启
[root@server2 ~]# netstat -anpt | grep vsftpd         #查看服务

在这里插入图片描述
测试:
4.在客户机(20.0.0.15)上先安装ftp,然后进行匿名访问

yum   -y  install   ftp     #安装ftp

在这里插入图片描述

 ftp    20.0.0.14               #用ftp连接20.0.0.14这ip的地址的机器
 421  Service  not available    #显示服务不可用

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值