远程访问及控制一切随心而控

SSH远程管理

  • SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能
  • 对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令,因此SSH协议具有很好的安全性

在这里插入图片描述

配置OpenSSH服务端

  1. sshd服务默认使用的是TCP的22端口
  2. sshd服务的默认配置文件为/etc/ssh/sshd_config
vim /etc/ssh/sshd_config 			//配置ssh服务端
Port 22				                //默认监听端口号为22
AddressFamily any	
//监听地址为任意网卡,也可以指定Openssh服务器的具体ip
LoginGraceTime 2m					//登录验证时间为2分钟
PermitRootLogin yes				    //禁止root用户登录
MaxAuthTries 6						//最大重试次数为 6
PermitEmptyPasswords no			    //禁止空密码用户登录
UseDNS no				
//禁用DNS反向解析,以提高服务器的响应速度

  1. 只允许zhangsang、lisi、wangwu用户登录,且其中lisi用户仅能够从IP地址为192.168.80.80的主机远程登录
vim /etc/ssh/sshd_config 			//修改服务端配置文件

AllowUsers zhangsan lisi@192.168.146.20  wangwu			
//允许zhangsan,lisi,wang登录,并且lisi只能以146.20登录

systemctl restart sshd			   //重启sshd服务

sshd服务支持验证方式

  • 密码验证:
    对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
  • 密钥对验证:
    要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥公钥,私钥,将公钥文件放到服务器中指定的位置,远程登录时系统将使用公钥,私钥进行加密/解密关联验证。
    可以增加安全性,且可以免交互登录。

公钥和密钥的关系

  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密
  • 不能根据一个密码来推算出另一个密钥
  • 公钥对外公开,私钥只有私钥的持有人才知道
  • 当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式
vim /etc/ssh/sshd_config                   //编辑服务端主配置文件
PasswordAuthentication yes 				   //启用密码验证
PubkeyAuthentication yes 				   //启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys    //指定公钥库文件

SSH客户端程序的应用

ssh远程登录

ssh 【选项】 root@192.168.146.20   //使用root远程登录
  • 当用户第一次登录ssh服务器时,须接收服务器发来的密钥验证,只有输入yes后才能继续验证,接收的密钥信息将保存到~/.ssh/known_host文件中。密码验证成功后,显示远程登录成功。
ssh 【选项】 root@192.168.146.20 -p 25  //指定端口登录
  • -p:指定非默认的端口号,如果缺省则默认使用端口号为22

在这里插入图片描述

vim /etc/ssh/sshd_config
systemctl 

scp远程复制

1. 下行复制

scp root@192.168.146.20:~/文件名/opt/文件名...
//复制20主机的文件到自己的opt目录下
  • 复制远程主机中的文件要使用绝对路径,:不能少
  • 验证:
    在这里插入图片描述

2. 上行复制

scp -r root@192.168.146.20:/var/log /opt/
//复制20主机var目录下的内容到本机opt目录下
  • -r可以复制一整个目录到本主机的目录下
  • 验证:
    在这里插入图片描述

sftp安全FTP

1.sftp下载

使用sfpt从20主机下载文件

sftp root@192.168.146.20
sftp >get abc.txt.zip
  • get 为下载
  • 验证:在这里插入图片描述

2.sftp上传

使用sfpt从10主机上传文件到20主机

sftp root@192.168.146.20
sftp >put 123.txt

  • put 为上传
  • 验证:
  • quit为退出sftp模式

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

配置密钥对验证

1.在客户端创建密钥对

可以先创建一个用户
useradd lisi
echo "000000" | passwd --stdin lisi
su lisi

实验我们直接使用的root用户,所以上面步骤省略

ssh-keygen -t rsa  //使用rsa算法生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
//指定私钥位置
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: //输入私钥密码

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
//私钥公钥存放位置

  • 在客户端生成密钥

在这里插入图片描述

2.将公钥文件上传至服务器

方法一:
直接在服务器的.ssh目录中导入公钥文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub root@192.168.146.20

方法二:
先将客户端的公钥文件复制到服务端的opt目录下 
scp id_rsa.pub root@192.168.146.20:/opt
在服务端创建.ssh目录,从镜像导入文件
mkdir .ssh
cat /opt/id_rsa.pub > ~/.ssh/authorized_keys
//将公钥文件导入到authorized_keys中

  • 如果服务端没有.ssh目录,要先创建
  • id_rsa为私钥文件,id_rsa.pub为公钥文件提供给服务器

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

3.在客户端验证

在客户端使用ssh远程登录验证

ssh root@192.168.146.20
Enter passphrase for key '/root/.ssh/id_rsa':  //输入私钥密码

在这里插入图片描述

4.在客户端设置免密登录

在客户端设置免密登录

ssh-agent bash
ssh-add
Enter passphrase for /root/.ssh/id_rsa:  //输入私钥密码
ssh root@192.168.146.20                  //远程登录
  

在这里插入图片描述

TCP Wrappers 访问控制

  1. TCP Wrappers 像一个防护罩一样,保护着TCP服务程序,它代为监听TCP服务程序的端口,为其增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序
  2. 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能
  3. 使用“rpm -q tcp_wrappers”安装

TCP Wrappers 保护机制的实现方式

  1. 直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd程序

  2. 由其他网络服务程序调用 libwrap.so.*链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率

  3. 使用 ldd 命令可以查看程序的 libwrap.so.*链接库

ldd $(which ssh)

TCP Wrappers 的访问策略

  1. TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制
  2. 对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允许和拒绝的策略

2.1服务程序列表

  • ALL:代表所有的服务
  • 单个服务程序:如“vsftpd”
  • 多个服务程序组成的列表:如“vsftpd,sshd”

2.2客户端地址列表

  • ALL:代表任何客户端地址
  • LOCAL:代表本机地址
  • 多个地址以逗号分隔,允许使用通配符 “?” 和 “ * ”
  • “ * ” 代表任意长度字符 / “?” 仅代表一个字符
  • 网段地址:如 192.168.163. 或者 192.168.163.0/255.255.255.0
    区域地址:如 “.benet.com”匹配 bdqn.com 域中的所有主机

TCP Wrappers 机制的基本原则

  • 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问
  • 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问
  • 如果检查上述两个文件都找不到相匹配的策略,则允许访问
允许所有,拒绝个别
只需在/etc/hosts.deny文件中添加相应的拒绝策略

允许个别,拒绝所有
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略
  • 验证
    从IP地址为12.0.0.1的主机或者位于192.168.146.0/24网段的主机访问sshd服务,其他地址被拒绝
vi /etc/hosts.allow
sshd:12.0.0.1,192.146.100.*

vi /etc/hosts.deny
sshd:ALL

总结

  • 远程登录默认端口为22,若要指定端口用-p+端口号
  • scp +远程登录的主机名为上行复制 scp -r +远程登录主机名为下行复制
  • sftp上传为put,下载为get
  • 密钥验证要注意如果服务端没有.ssh目录要先创建
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值