引言:
简单来说,SSH是一种网络协议,主要用于客户端和远程主机的安全连接和交互;在生产环境中尤为重要,为了远程操控的安全性,设置公钥和私钥,不仅防止某些暴力破解,也大大增强远程主机被操控的安全问题,防止不知名用户登陆操作
一、SSH远程管理
1.SSH是什么:
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程、复制等功能,SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议
2.SSH客户端与OpenSSH服务端
SSH客户端:Putty、Xshell、CRT、MobaXterm、FinaShell
SSH服务端:OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统
CentOS7 系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动
执行“systemctl start sshd”的命令即可启动sshd服务。sshd服务的默认使用的是TCP的22端口
3.SSH服务配置文件
sshd服务的默认配置文件是/etc/ssh/sshd_config
ssh_config和sshd_config都是ssh服务器的配置文件
二者区别在于前者是针对客户端的配置文件
后者则是针对服务器的配置文件
4.SSHD服务端的功能
SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件,相比较之前用Telent方式来传输文件要安全很多,因为Telent使用明文传输。SSH是加密传输
服务名称:sshd;
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
二、SSH服务
1、ssh远程登录方式
ssh [目标服务器用户名] @ [目标服务器IP地址] -p port(-p可以指定端口号)
要使用当前用户登录目标服务器时 可以直接使用 ssh 目标IP地址
2、scp远程复制
下行复制,将远程主机中的文件复制到本机
上行复制,将本机的文件复制到远程主机中
在上行复制时远程主机中有同名文件时会直接强制覆盖源文件
切换到目标主机看一下opt目录
3、sftp安全FTP
由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样。
sftp zhangsan@192.168.60.12
使用zhangsan用户连接192,168.60.12主机
可以sftp -P 来指定端口号
4、sshd配置文件
vim /etc/ssh/sshd_config
##服务器配置文件的常用选项设置
sshd服务支持两种验证方式
1、密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2、密钥对验证
要求提供相匹配的密钥信息才能通过验证,通常现在客户端中创建一对密钥文件(公钥,私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥,私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
不能根据一个密钥来推算出另一个密钥。
公钥对外公开,私钥只有私钥的持有人才知道。
当密码验证、密钥对验证都启用时、服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
vim /etc/ssh/sshd_config
PubkeyAuthentication yes #启用密钥对验证
PasswordAuthentication yes #启用密码验证
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件
5、ssh密钥对配置
客户端 ssh的发起端 :
ssh-keygen -t rsa 或 ecdsa
##输入密码。创建密钥对,生成在自己的家目录中的 .ssh 目录中生成公钥(.pub结尾)和私钥
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名
##将公钥文件直接复制到目标主机对应的用户家目录的 .ssh 中
5.1 ssh密钥对免交互登录
1)使用没有密码的密钥对
ssh-keygen -t rsa 或 ecdsa 一路回车,不设置密码
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP或主机名
2)创建ssh会话代理(只能在当前会话有效重启失效)
ssh-agent bash
ssh-add
三、TCP wrappers 访问控制
1、TCP wrappers (TCP封套)
将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全监测,获得许可后才能访问真正的服务程序。
大多数Linux发行版,TCP wrappers 是默认提供的功能。
rpm -q tcp_wrappers 可以查看到已经安装的软件包
2、TCP wrappers 保护机制的两种实现方式
1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
2.由其他网络服务程序调用libwrap.so.*链接库,不需要进行tcpd程序,此方式的应用更加广泛,也更有效率。
可以使用 ldd 命令来查看程序的libwrap.so.*链接库
找到了这个链接库就说明sshd服务是支持 TCP wrappers 服务的
这里顺便说一下,下面两种符号的用法
双 ` 的效果
$( )的效果
3、TCP wrappers 的访问策略
TCP wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
对应的两个策略文件为 /etc/hosts.allow 和 /etc/hosts.deny , 分别用来设置允许和拒绝的策略。
4、TCP wrappers 的配置格式
在配置文件中输入
<服务程序列表>:<客户端地址列表>
##两个配置文件格式一样
1)服务程序列表
ALL :表示所有的服务
单个服务程序:如“vsftpd”
多个程序组成的列表:如“vsftpd,sshd,dhcp”(多个程序中间用逗号分隔)
2)客户端地址列表
ALL :表示任何客户端地址
LOCAL:表示本机地址
多个地址以逗号分隔
允许使用通配符“ * ” 和 “ ? ” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如“192.168.60.” 或 192.168.60.0/255.255.255.0
区域地址,如“.benet.com”匹配 benet.com 域中的所有主机
5、TCP wrappers 机制的基本原则
首先检查 /etc/hosts.allow 文件,如果找到相匹配的策略,则运行访问;
否则继续检查 /etc/hosts.deny 文件,如果找到相匹配的策略,则拒绝访问;
如果检查上述两个文件都找不到相匹配的策略,则允许访问。
允许所有,拒绝个别。
只需在 /etc/hosts.deny 文件中添加相应的拒绝策略。
允许个别,拒绝所有。
除了在 /etc/hosts.allow 文件中添加允许策略之外,还需要在 /etc/hosts.deny 文件中设置 “ALL:ALL”,拒绝所有的策略。
6、应用实例+测试
例:只希望从IP地址为192.168.60.12 的主机访问sshd服务,其他地址被拒绝
根据TCP wrappers 机制的基本原则先设置白名单
vim /etc/hosts.allwo
sshd:192.168.60.12
在配置黑名单
vim /etc/hosts.deny
验证一下
关闭服务器的防火墙和核心防护
文章来源:https://www.toymoban.com/news/detail-424866.html
文章来源地址https://www.toymoban.com/news/detail-424866.html
到了这里,关于远程访问及控制(SSH)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!