Linux--网络服务--SSH远程管理(配置Open SSH,使用SSH客户端程序,构建密钥对验证的SSH体系)和TCP Wrappers访问控制(概述,访问策略)

前言

  • 大多数企业服务器是通过远程登录的方式来进行管理的
  • 当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势

一:SSH远程管理

1.1:配置Open SSH服务端

1.1.1:SSH(Secure Shell)协议
  • 是一种安全通道协议
  • 对通信数据进行了加密处理,为客户机提供了安全的shell环境,用于远程管理
  • 默认端口:TCP 22
1.1.2:OpenSSH服务
  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
1.1.2.1:OpenSSH服务(4-1)

ssh_config:针对客户端

sshd_config:针对服务端

访问形式 端口号
SSH:密文访问默认端口 TCP:22,一般广域网
Telnet:明文形式的访问 TCP 23,一般局域网
远程桌面 3389,图形化界面
名称 作用
mstsc(cmd命令提示符输入mstsc,根据提示操作) 微软中远程桌面的形式,只可一个用户一个终端登录,可复制文件,微软对微软
VNC 跨终端远程软件
teanviewer 远程访问软件
1.1.2.2:OpenSSH服务(4-2)
  • 服务器监听选项

端口号、协议版本、监听IP地址

  • 禁用反向解析
[root@localhost ~]# vim /etc/ssh/sshd_config
...
Port 22		                               端口号可以修改
#AddressFamily any
#ListenAddress 0.0.0.0	                   监听地址可修改
#ListenAddress ::
Protocol 2                                 版本2
1.1.2.3:OpenSSH服务(4-3)
  • 用户登录控制

禁止root用户,空密码用户

限制登录验证时间,重试次数

AllowUsers(白名单,仅允许,只有这些可以登录)

DenyUsers(黑名单,仅拒绝,只有这些不行)

AllowUsers不可与DenyUsers同时使用

[root@localhost ~]# vim /etc/ssh/sshd_config
LoginGraceTime 2m           会话时间
PermitRootLogin no          禁用root用户
StrictModes yes       
MaxAuthTries 6               最大盐城重试次数,默认是3
PermitEmptyPasswords no      禁用空密码用户                    
...
AllowUsers lisi [email protected]	     仅允许zhangsan用户在终端192.168.100.88登录,允许lisi用户可以在不同终端登陆
1.1.2.4:OpenSSH服务(4-4)
  • 登录验证对象

    服务器中的本地用户账号

  • 登录验证方式

    密码验证:核对用户名,密码是否匹配

    密钥对验证:核对客户的私钥,服务端公钥是否匹配

  • 密钥对:包含公钥,私钥

    公钥:服务器使用

    私钥:客户保留

    非对称秘钥:RSA

    对称秘钥:3DES,AES

[root@localhost ~]# vim /etc/ssh/sshd_config
PasswordAuthentication yes		  是否使用密码
PermitEmptyPasswords no	          禁止空密码
PasswordAuthentication yes	      是否需要密码验证
    
PubkeyAuthentication yes	      开启公钥验证

AuthorizedKeysFile      .ssh/authorized_keys        指定公钥库位置

1.2:使用SSH客户端程序

1.2.1:SSH客户端程序命令
  • ssh命令–远程安全登录

命令基本格式
ssh user@host

例如
[root@55~]# ssh [email protected]		             以root用户登录对方主机
The authenticity of host '20.0.0.47 (20.0.0.47)' can't be established.
ECDSA key fingerprint is SHA256:Eer6tAEbaZylH0v8F1nr+ShthK1rjZl3eRi7UTw4RX4.
ECDSA key fingerprint is MD5:de:d7:cf:23:bd:8d:a1:02:ff:23:a2:4b:94:fe:e7:02.
Are you sure you want to continue connecting (yes/no)? yes	        输入yes
Warning: Permanently added '20.0.0.47' (ECDSA) to the list of known hosts.
[email protected]'s password: 	                                    输入对方密码
Last login: Thu Nov 21 17:37:59 2019 from 20.0.0.2
[root@66~]# 
    还有会开启 /etc/pam.d/su服务模块的情况,需要注意权限

如果sshd服务器使用了非默认的端口号(如123),则在登陆时必须通过“-p”选项指定端口号。

例如,执行以下操作江枫问主机20.0.0.47123端口,以对方的zhangsan用户验证登录。
[root@55~]# ssh -p 123 zhangsan@20.0.0.47
zhangsan@20.0.0.47's password:                                  /输入密码
  • scp命令–远程安全复制
命令基本格式
格式一:scp user@host:file 1 file 2
格式二:scp file 1 user@host:file 2

[root@55 ~]# scp /etc/hosts [email protected]:/etc/hosts	将本机文件/etc/hosts以root权限复制到20.0.0.47中
[email protected]'s password: 
hosts    
或者
[root@55 ~]# scp [email protected]:/etc/hosts /etc/hosts1
[email protected]'s password: 
hosts  
  • sftp命令–安全FTP上下载
命令基本格式
sftp user@host
    get:下载
    put:上传

例如
[root@55 ~]# sftp [email protected]
[email protected]'s password: 
Connected to 20.0.0.47.
sftp> ls

1.3:构建密钥对验证的SSH体系

1.3.1:构建密钥对验证的SSH体系
  • 整体实现过程
    在这里插入图片描述
1.3.1.1:创建密钥对(由客户端的用户zhangsan在本地创建密钥对)
  • 在客户机中创建密钥对
ssh-keygen命令
可用的加密算法:RSA、ECDSA或DSA
[zhangsan@localhost ~]$ ssh-keygen -t ecdsa          生成公共/私有ecdsa密钥对
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/.ssh/id_ ecdsa):     输入保存秘钥的文件
Created directory '/home/zhangsan/ .ssh'. 
Enter passphrase (empty for no passphrase):                输入密码
Enter same passphrase again:               (设置密钥短语)
Your identification has been saved in /home/zhangsan/.ssh/id_ ecdsa.   (私钥文件位置)
Your public key has been saved in /home/zhangsan/.ssh/id_ _ecdsa.pub.  (公钥文件位置)
1.3.1.2:上传公钥文件 id_rsa.pub

任何方式均可(共享,FTP,Email,SCP…)

例如
[root@55 ~]# scp ~/.ssh/id_ecdsa.pub [email protected]:/tmp
1.3.1.3:导入公钥信息(导入到服务端用户66的公钥数据库)
  • 在服务器中导入公钥文本

将公钥文本添加至目标用户的公钥库

默认公钥库位置:~/.ssh/authorized_keys

[root@localhost ~]# mkdir /home/lisil.ssh/
[root@localhost ~]# cat /tmp/id_ ecdsa.pub >> /home/lisi/.ssh/authorized_ keys
[root@localhost ~]# tail -1 /home/lisi/.ssh/authorized_ keys
ecdsa-sha2-nistp256
AAAAE2VjZHNhL XNoYTItbmlzdHAyNTYAAAAlbmlzdHAyNTYAAABBBL JSnBhscY
BfnnHxSYAJEBD4sNkTLMF7itcFGM33RdeXU89QNQkMnCrCJHzAIZURrzpXG6M 
p62mz9gRXUnARk8s=zhangsan@localhost
1.3.1.4:使用密钥对验证方式(以服务端用户66的身份进行登录)
  • 客户端使用秘钥对验证登陆

验证用户:服务端的用户lisi

验证密码:客户端的用户zhangsan的私钥短语

[zhangsan@localhost ~]$ ssh [email protected]
[isi@localhost ~]$ whoami
lisi
1.3.1.5:第二步和第三步可以采用另外一种方法
ssh-copy-id -i 公钥文件 user@host

验证密码后,会将公钥自动添加到目标主机user宿主目录下的.ssh/quthorized_keys文件结尾

[root@55 ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

二:TCP Wrappers控制

2.1:TCP Wrappers概述

2.1.1:保护原理

在这里插入图片描述

2.1.2:保护机制的实现方式
  • 方式一

    通过tcpd主程序对其他服务程序进行包装

  • 方式二

    由凄然服务程序调用libwrap.so.*链接库

2.1.3:访问控制策略的配置文件
ldd `which sshd` 查看模块
  • /etc/hosts.allow
  • /etc/hosts.deny

2.2:TCP Wrappers访问策略

2.2.1:设置访问控制策略
  • 策略格式

服务列表:客户机地址列表

  • 服务列表

多个服务以逗号分隔,ALL表示所有服务

  • 客户机地址列表

多个地址以逗号分隔,ALL表示所有服务

允许使用通配符*和?

网段地址,如192.168.1 或者 192.168.1.0/255.255.255.0

区域地址,如.benet.com

2.2.2:策略的应用程序
  • 先检查hosts.allow,找到匹配则允许访问
  • 否则再检查hosts.deny,找到则拒绝访问
  • 若两个文件中均无匹配策略,则默认允许访问
2.2.3:策略应用实例

仅允许从以下地址访问sshd服务

主机192.168.100.100

网段192.168.200.0/24

禁止其他所有地址访问受保护的服务

[root@55 ~]# vim /etc/hosts.allow
sshd:192.168.100.100,192.168.200.*
[root@55 ~]# vim /etc/hosts.deny
sshd:ALL
优先读取allow,然后再读取deny
如果做黑名单,name白名单就不用写

猜你喜欢

转载自blog.csdn.net/m0_47219942/article/details/107291365