Linux网络服务之SSH(远程访问及控制)(下)

简介: 1 SSH基础1.1 什么是SSH协议?SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。SSH使用传输层TCP协议的22号端口。SSH客户端<--------------网络---------------->SSH服务端

4 sshd客户端配置


4.1 客户端配置文件

客户端配置文件:/etc/ssh/ssh_config

客户端首次连接服务端时,系统询问是否交换公钥,进行安全确认。这是由客户端配置文件默认的,可以修改配置文件ssh_config取消询问。

网络异常,图片无法展示
|


注:

这种做法只在内网中使用,如果服务器暴露在外网中,不建议这样操作,非常危险。

4.2 sftp命令

SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

sftp命令格式:

sftp  [用户名@]IP地址
 sftp -oPort=220 [用户名@]IP地址     //修改了默认端口的情况下,需要指定端口号
 例:
 sftp 192.168.72.129
 sftp root@192.168.72.129
 #sftp连接后,进入的是当前登录用户的家目录。例如使用root登录,则sftp连接后进入的是/root/目录.
 #文件的上传和下载,不能使用绝对路径。文件必须位于当前目录下。
复制代码


sftp连接后的常用命令:

get        #下载文件
 get -r     #下载目录
 put        #上传文件
 put -r     #上传目录
 quit、exit、bye      #退出
复制代码


sftp和ftp的区别:

  • 连接方式:FTP使用TCP端口21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。
  • 安全性:SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全。
  • 效率:SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低得多。


5 免密码登录


5.1 sshd服务支持登录验证方式

  • 密码验证: 以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。
  • 密钥对验证: 要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。
  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
  • 不能根据一个密码来推算出另一个密钥;
  • 公钥对外公开,私钥只有私钥的持有人才知道。

5.2 设置免密码登录

免密码原理流程:

  1. 首先在客户端生成一对密钥(ssh-keygen)。
  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端。
  3. 当客户端再次发送一个连接请求时,包括ip、用户名。
  4. 服务端得到客户端的请求后,会到 authorized_keys 文件中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:kfc。
  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端。
  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端。
  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就进行免密码登录。

相关命令:

ssh-keygen -t ecdsa
 ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.72.129
 ssh-add 
复制代码


操作步骤:

1、客户端使用命令生成密钥文件。

家目录 ~/.ssh/ 下会生成两个密钥文件,一个公钥一个私钥,.pub结尾的是公钥。

[root@localhost ~]# ssh-keygen -t ecdsa     //生成密钥文件
 Generating public/private ecdsa key pair.
 Enter file in which to save the key (/root/.ssh/id_ecdsa): 
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /root/.ssh/id_ecdsa.
 Your public key has been saved in /root/.ssh/id_ecdsa.pub.
 The key fingerprint is:
 SHA256:7chFnJIV8f9fOJhVCk1U+F+3EtGX1NqCWaX5rZZnQEI root@localhost.localdomain
 The key's randomart image is:
 +---[ECDSA 256]---+
 |          +oE.===|
 |         + + +o=o|
 |        o + ++*+o|
 |         +  o*o+*|
 |        S o   *.B|
 |       . +   = B.|
 |        o . o B =|
 |             . +o|
 |                .|
 +----[SHA256]-----+
 [root@localhost ~]# cd ~/.ssh          //切换到sshd服务的家目录下
 [root@localhost .ssh]# ls 
 id_ecdsa  id_ecdsa.pub  known_hosts    //同时生成公钥和私钥文件
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


2、将客户端的公钥文件拷贝到服务端。注意路径不要写错。

[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.72.129
 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ecdsa.pub"
 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
 root@192.168.72.129's password: 
 Number of key(s) added: 1
 Now try logging into the machine, with:   "ssh 'root@192.168.72.129'"
 and check to make sure that only the key(s) you wanted were added.
 [root@localhost .ssh]#
复制代码


网络异常,图片无法展示
|


3、测试远程连接服务端时,是否免密码。

[root@localhost .ssh]# ssh 192.168.72.129
 Last failed login: Wed Mar 23 01:32:09 CST 2022 from 192.168.72.10 on ssh:notty
 There were 13 failed login attempts since the last successful login.
 Last login: Tue Mar 22 23:57:20 2022 from 192.168.72.10
 [root@192 ~]# 
复制代码


网络异常,图片无法展示
|


6 TCP Wrappers 访问控制


TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有 rpcbind、vsftpd、sshd、telnet。

有些进程不受tcp_wrappers管理,例如 httpd、smb、squid等。

6.1 工作原理

TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

网络异常,图片无法展示
|


保护机制实现方式:

  • 方式1:通过tcpd程序对其他服务程序进行包装
  • 方式2:由其他服务程序调用libwrap.so.*链接库

6.2 访问控制策略的配置文件

白名单:/etc/hosts.allow

黑名单:/etc/hosts.deny

示例:

1)设置白名单

[root@192 ~]# vim /etc/hosts.allow
 ---------------
 sshd:192.168.72.10,192.168.72.20    //允许这两个地址使用sshd服务进行访问
 sshd:192.168.4.0/255.255.255.0      //允许该网段的所有地址使用sshd服务进行访问
复制代码


2)设置黑名单

[root@192 ~]# vim /etc/hosts.deny
 ---------------
 sshd:ALL            //禁止所有地址使用sshd服务进行访问
 sshd:192.168.0.0/255.255.255.0  EXCEPT 192.168.0.10   //禁止该网段的所有地址使用sshd服务进行访问,除了192.168.0.10 
复制代码


小贴士:

  1. 白名单的优先级高于黑名单,如果一个地址既在白名单也在黑名单中,该地址是可以访问的。
  2. 实际工作中一般通过防火墙的方式来实现同样功能。
相关文章
|
14天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
4天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【5月更文挑战第30天】在数字化转型的浪潮中,云计算已成为企业IT架构的核心。然而,随之而来的安全挑战亦日益严峻。本文将探讨在动态、多租户的云环境中,如何通过融合传统与前沿的网络安全防护措施,构建一个既灵活又坚固的信息防线。我们将重点讨论云服务模型下的安全责任共担模式,以及利用最新的加密技术、身份认证机制和智能监控策略来强化数据保护和威胁检测。
|
3天前
|
存储 网络协议 Linux
NFS(Network File System 网络文件服务)
NFS(Network File System 网络文件服务)
|
4天前
|
人工智能 安全 网络安全
云端防御策略:融合云服务与先进网络安全技术
【5月更文挑战第30天】 在数字化时代,云计算为企业提供了弹性、可伸缩的资源管理解决方案,而网络安全则成为维护数据完整性和保障业务连续性的关键。本文深入探讨了云服务模型与网络安全技术的交叉领域,分析了当前面临的主要安全挑战,并提出了一套综合的云端防御策略。通过实施这些策略,组织能够更有效地保护其云基础设施,抵御日益复杂的网络威胁。
|
5天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之道
【5月更文挑战第29天】 在数字化时代,云计算已成为企业运营的核心动力,然而伴随其发展,网络安全问题亦成为不可忽视的挑战。本文旨在探讨如何通过融合先进的云服务技术和网络安全策略,构建一个既高效又安全的信息技术环境。文章首先概述了云计算的基本概念及其带来的变革,随后深入分析了网络安全面临的威胁以及应对这些威胁的关键技术,最终提出了一种综合性的云端防御模型,以期为企业提供指导性的网络安全解决方案。
|
6天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的新纪元
【5月更文挑战第28天】 在数字化时代,云计算已成为企业运营的核心,但随之而来的是日益复杂的网络威胁。本文探讨了如何在不牺牲云服务灵活性和效率的前提下,加强网络和信息安全。我们将详细分析多层次安全框架、加密技术、身份验证机制以及智能监控,并讨论如何将这些安全措施融入日常的云服务管理中。目标是为读者提供一个清晰的指南,帮助他们在享受云计算带来的便利时,确保数据和资源的安全。
|
8天前
|
存储 Linux 网络安全
在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)
SSH远程执行命令时遇到“命令未找到”问题,原因是Linux登录方式不同导致环境变量加载差异。解决方案:将环境变量写入`/etc/profile.d/`下的文件,或手动在命令前加载环境变量,如`source /etc/profile`。
|
11天前
|
监控 网络架构 Windows
第六十八章 使用 Web 服务监控 IRIS - 监控网络客户端
第六十八章 使用 Web 服务监控 IRIS - 监控网络客户端
6 0
|
11天前
|
云安全 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【5月更文挑战第23天】随着企业纷纷拥抱云计算以提升灵活性和效率,网络安全问题也愈发凸显。本文深入探讨了在动态的云环境中维护信息安全的挑战,并提出了一个多层次、融合式的安全框架,以保障数据完整性和服务可用性。我们将从云服务的分类出发,分析各类服务模型(IaaS, PaaS, SaaS)所面临的独特安全威胁,并结合最新的加密技术、身份认证机制以及入侵检测系统来构建一个全面的安全策略。文章最终目的是为读者提供一个明确的指南,用以评估和强化其云基础设施的安全防御能力。
|
11天前
|
边缘计算 数据中心 云计算
边缘网络加速服务
边缘网络加速服务
17 0