SSH远程连接及Tcp wrappers访问控制
一.SSH远程管理
1.概述
SSH (Secure Shel1) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
SSH客户端<-------------------------------网络------------------>SSH服务端
数据传输是加密的,可以防止信息泄漏数据传输是压缩的,可以提高传输速度
SSH客户端:Putty、 Xshell、 CRT
SSH服务端: OpenSSH
OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Lnux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。执行“svstemctl start sshd”命令即可启动 sshd 服务
sshd 服务默认使用的是TCP的 22端口
sshd 服务的默认配置文件是/etc/ssh/sshd config
ssh_config:是针对客户端的配置文件
sshd_config:是针对服务端的配置文件
2.配置文件介绍
①服务端配置文件常用选项
/etc/ssh/sshd_config
Port 22 #监听端口号22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定openSSH服务器的具体IP
LoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin no #禁止 root 用户登录
MaxAuthTries 6 #一次登录最大尝试次数为6次
PermitEmptyPasswords no #禁止空密码用户登录
UseDNS no #禁止DNS反向解析
AllowUsers zhangsan lisi wangwu@61.23.24.25 #允许用户zhangsan lisi远程连接,同时wangwu只能从61.23.24.25IP登录,多个用户用空格隔开
DenyUsers #禁止用户登录
②实验
3.SSH服务验证
①密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
②密钥验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对案钥文件(公钥、私销),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
不能根据一个密钥来推算出另一个密钥。
公钥对外公开,私钥只有私钥的持有人才知道。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
vim /etc/ssh/sshd_config
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启动密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #指定指定公钥库文件
③ssh密钥对配置
客户端 ssh发起端
客户端配置密钥对
ssh-keygen -t rsa/ecdsa 创建密钥对,在自己家目录的.ssh目录中生成 私钥和公钥文件 (xxx.pub)
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名
服务端 被ssh连接端 在指定用户家目录的.ssh目录(权限(700))中生成公钥认证文件 authorized keys(权限600)
客户端使用 ssh [-p 端口] 用户@IP使用密钥对的密码验证
④使用ssh登录程序
ssh [选项] 用户名@IP地址
远程连接时同时可以执行命令
ssh -p 端口号 用户名@IP 命令 选项 文件/目录
4.scp远程复制
下行复制(从远程主机下载文件到本机)
scp -p(大写) 端口 用户名@IP:文件/目录的绝对路径 本机文件/目录 #将远程主机中的/etc/passwa文件复制到本机
上行复制(从本机上传文件到远程主机)
scp -p(大写) 端口 -r 文件/目录(绝对路径) 用户名@IP:远程主机的目录 #将本机的/etc/ssh 目录复制到远程主机(-r复制目录时必须添加)
scp传输文件时遇到同名文件时会直接覆盖不会提示。
`(which 程序名)` #双撇号会把括号内的命令的执行结果显示处理
$(which 程序名) #双撇号会把括号内的命令的执行结果显示处理
5.sftp远程传输文件
sftP 用户名@IP地址
sftp>ls
sftp>put 上传文件到ftp目录
sftp>get 下载文件到ftp目录
sftp>quit 退出
二.TCP Wrappers(访问控制)
1.保护原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vo27sSDZ-1682060140609)(C:\Users\v\Desktop\云计算学习资料\liunx\4.20 SSH远程连接及TCPwrappers访问控制\csdn截图\保护原理.png)]
2.访问策略
TCP wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允许和拒绝的策略
3.格式
<服务程序列表>:<客户端地址列表>
(1) 服务程序列表ALL: 代表所有的服务。单个服条程序:如“vsftpd”。多个服条程序组成的列表: 如“vsftpd,sshd”。
(2) 客户端地址列表
ALL: 代表任何客户端地址。
LOCAL: 代表本机地址。
多个地址以逗号分隔
允许使用通配符“*”和“?”,前者代表任意长度字符,后者仅代表一个字符网段地址,如“192.168.80, 或者 192.168.80.0/255.255.255.0区域地址,如“.benet.com"匹配 benet.com 域中的所有主机
4.基本原则
TCP wrappers 机制的基本原则:
首先检查/etc/hosts.allow文件,
如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,
如果找到相匹配的策略,则拒绝访问:如果检查上述两个文件都找不到相匹配的策略,则允许访问。
"允许所有,拒绝个别"只需在/etc/hosts.deny文件中添加相应的拒绝策略
"允许个别,拒绝所有”除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALI"的拒绝策略
5.总结
TCP Wrappers判断是否支持ldd $(which 程序名)sshd vsftpd telnetipop3 imap
程序文件路径-> libwrap.so.*
访问策略:先看 /etc/hosts.allow ,有则放通有则拒绝如果都没有则放通所有-> 再看 /etc/hosts.deny ,
格式:程序列表:客户端列表
sshd,vsftpd:IP1,IP2,IP3,...