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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
访问控制,不限时长
简介: 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. 实际工作中一般通过防火墙的方式来实现同样功能。
相关文章
|
2月前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
69 4
|
8天前
|
运维 监控 网络协议
|
2月前
|
安全 Linux 网络安全
Linux端的ssh如何升级?
Linux端的ssh如何升级?
245 59
|
12天前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
|
24天前
|
网络协议 安全 Ubuntu
Linux中网络连接问题
【10月更文挑战第3天】
27 1
|
29天前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
51 0
|
29天前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
36 0
|
2月前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
29 1
|
3月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
2月前
|
网络协议 Linux
Linux 网络配置
了解基本命令与权限后,如何让Linux系统联网?可通过编辑`/etc/sysconfig/network-scripts/`下的`ifcfg-ethX`文件配置网卡,其中`ethX`代表第X块网卡。对于DHCP自动获取或静态IP,需设置`BOOTPROTO`参数,并指定IP、子网掩码和网关等。配置完成后,运行`/etc/init.d/network restart`重启网络。DNS可在`/etc/resolv.conf`中设置,添加`nameserver`行即可,无需重启网卡。配置好后,可用`ifconfig`查看IP信息,并通过远程工具如SecureCRT连接服务器。
67 0