Linux网络服务之SSH远程控制与TCP Wrappers访问控制

目录

SSH远程管理

SSH服务器

SSH优点

常见的SSH协议

ssh原理

公钥传输原理

登录

sshd服务支持登录验证方式

TCP Wrappers 访问控制

保护机制的两种实现方式

查看程序的 libwrap.so.* 链接库——ldd命令

TCP Wrappers 的访问策略

TCP Wrappers 机制的基本原则


SSH远程管理

SSH服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;

SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;

SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

SSH客户端<--------------网络---------------->SSH服务端

SSH优点

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

常见的SSH协议

客户端: Linux Client: ssh, scp, sftp,slogin Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"systemctl start sshd"命令即可启动sshd 服务

sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)

sshd服务的默认配置文件是/etc/ssh/sshd_config ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。

  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd  
  • 服务端配置文件:/etc/ssh/sshd_config 
  • 客户端配置文件:/etc/ssh/ssh_configan>

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服务端

配置文件常用设置选项

 

 AllowUsers和DenyUsers

验证 

sshd服务支持登录验证方式

密码验证: 以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。

密钥对验证: 要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。

  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
  • 不能根据一个密码来推算出另一个密钥;
  • 公钥对外公开,私钥只有私钥的持有人才知道。

基于密钥常用配置项

#生成密钥文件
[root@localhost ~]# ssh-keygen -t ecdsa
(如果设置免密登录,则重新设置,不设置密码,一路回车)
#将公钥文件导入对方用户的 注意路径
[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.59.117
#登录客户机

生成密钥文件

将公钥文件导入对方用户的 注意路径

TCP Wrappers 访问控制

TCP Wrappers原理

  • TCP Wrappers 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
  •  大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。

保护机制的两种实现方式

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

 由其他网络服务程序调用 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,分别用来设置允许和拒绝的策略。

格式:

[服务程序列表] :[客户端地址列表]

服务程序列表ALL代表所有的服务
单个服务程序如“vsftpd”
多个服务程序组成的列表如“vsftpd,sshd”
客户端地址列表ALL代表任何客户端地址
LOCAL代表本机地址
多个地址以逗号分隔
允许使用通配符*代表任意长度字符
仅代表一个字符

TCP Wrappers 机制的基本原则

 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;

 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;

 如果检查上述两个文件都找不到相匹配的策略,则允许访问。

允许所有,拒绝个别
只需在/etc/hosts.deny文件中添加相应的拒绝策略

允许个别,拒绝所有
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值