远程访问及控制一切随心而控
Posted 阳光小王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程访问及控制一切随心而控相关的知识,希望对你有一定的参考价值。
远程访问及控制一切随心而控
SSH远程管理
- SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能
- 对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令,因此SSH协议具有很好的安全性
配置OpenSSH服务端
- sshd服务默认使用的是TCP的22端口
- 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反向解析,以提高服务器的响应速度
- 只允许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 访问控制
- TCP Wrappers 像一个防护罩一样,保护着TCP服务程序,它代为监听TCP服务程序的端口,为其增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序
- 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能
- 使用“rpm -q tcp_wrappers”安装
TCP Wrappers 保护机制的实现方式
-
直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd程序
-
由其他网络服务程序调用 libwrap.so.*链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率
-
使用 ldd 命令可以查看程序的 libwrap.so.*链接库
ldd $(which ssh)
TCP Wrappers 的访问策略
- TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制
- 对应的两个策略文件为/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目录要先创建
以上是关于远程访问及控制一切随心而控的主要内容,如果未能解决你的问题,请参考以下文章