一、SSH远程访问
SSH (Secure Shell)协议
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理
OpenSSH
- 服务名称: sshd
- 服务端主程序: /usr/sbin/sshd
- 服务端配置文件: /etc/ssh/sshd_ config
SSH远程管理
SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
网络
SSH客户端<------------->SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH客户端: Putty、 Xshell、 CRT
SSH服务端: OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
CentOS 7系统默认已安装openssh相关软件包,并已将sshd 服务添加为开机自启动。
执行“systemctl start sshd" 命令即可启动sshd 服务
sshd服务使用的默认端口号为22
sshd服务的默认配置文件是/etc/ssh/sshd_ config
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
SSH原理
公钥传输原理
- 客户端发起链接请求
- 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对 - 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
- 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯会被加密
- 登录
==登录 方法一:==
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是root的话,当连接另一台主机时也是用root用户登录时,可以直接使用ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
==登录 方法二:==
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
配置OpenSSH服务端
::: hljs-center
配置文件常用设置选项
:::
sshd服务支持登录验证方式
-
password验证: 以服务器中本地系统用户的登录名称、password进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇password暴力解析问题时防御能力比较弱。
-
密钥对验证: 要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
不能根据一个password来推算出另一个密钥;
公钥对外公开,私钥只有私钥的持有人才知道。
基于密钥常用配置项
基于密钥常用配置项
#生成密钥文件
[root@localhost ~]# ssh-keygen -t ecdsa
(如果设置免密登录,则重新设置,不设置password,一路回车)
#将公钥文件导入对方用户的注意路径
[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.59.117
#登录客户机
二、TCP Wrappers 访问控制
::: hljs-center
TCP Wrappers工作原理
:::
- TCP Wrappers 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
- 大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。
保护机制的两种实现方式
- 由其他网络服务程序调用 libwrap.so.* 链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率
*查看程序的 libwrap.so. 链接库——ldd命令**
ldd [参数] [文件名]
常用参数 | 说明 |
---|---|
-v | 详细信息模式,打印所有相关信息 |
-u | 打印未使用的直接依赖 |
-d | 执行重定位和报告任何丢失的对象 |
-r | 执行数据对象和函数的重定位,并且报告任何丢失的对象和函数 |
--help | 显示帮助信息 |
==注==:文件需要写上绝对路径,可以使用which命令查询文件的绝对路径
,也可以两条命令一起使用:ldd $(which sshd)。
TCP Wrappers 的访问策略
==TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。==
对应的两个策略文件为 /etc/hosts.allow 和 /etc/hosts.deny,分别用来设置允许和拒绝的策略。
格式:
[服务程序列表] :[客户端地址列表]1、服务程序列表 ALL:代表所有的服务; 单个服务程序:如“vsftpd”; 多个服务程序组成的列表:如“vsftpd,sshd”; 2、客户端地址列表 ALL:代表任何客户端地址; LOCAL:代表本机地址; 多个地址以逗号分隔; 3、允许使用通配符 *:代表任意长度字符; ?:仅代表一个字符。
TCP Wrappers 机制的基本原则
*1、首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
2、否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
3、如果检查上述两个文件都找不到相匹配的策略,则允许访问。
#允许所有,拒绝少数
只需在/etc/hosts.deny文件中添加相应的拒绝策略
#允许少数,拒绝所有
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略。