作者:里 | 来源:互联网 | 2023-10-11 01:10
本文主要介绍关于linux,运维,云计算的知识点,对【SSH服务详解】和【SSH服务】有兴趣的朋友可以看下由【Sq夏颜】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。SSH服
本文主要介绍关于linux,运维,云计算的知识点,对【SSH服务详解】和【SSH服务】有兴趣的朋友可以看下由【Sq夏颜】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。
SSH服务
文章目录 一.SSH概述二.SSHD服务2.1远程登录2.2文件传输 三.SSH服务配置3.1SSH服务安全调优3.2SSH服务验证 四.密钥对构建4.1密钥对原理4.2远程拷贝--scp4.3密钥对配置 五.访问控制--TCP Wrappers六.总结
一.SSH概述
SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。
SSH服务的安全性:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH服务采用C/S架构,我们常见的SSH客户端有:Putty、 Xshell、 CRT、 MobaXterm、 FinalShell
SSH服务端为:OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。Centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动。
Openssh服务包
OpenSSH软件包,提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务Telnet 或Ftp。
OpenSSH服务需要4个软件包:
openssh-5.3p1- 114.e16_ _7.x86_ 64
openssh-clients-5.3p1-114.el6_ 7.x86_ 64
openssh-server-5.3p1-114.e16_ 7.x86_ 64
openssh-askpass-5.3p1-114.e16_ _7.x86_ 64
sshd服务默认使用的是TCP的22端口
sshd服务的默认配置文件在: /etc/ssh/下
ssh_ config:客户端的配置文件
sshd_ config :服务器配置文件
二.SSHD服务
ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
作用: SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet 使用明文传输,SSH 是加密传输。
2.1远程登录
-l:指定登录名称。
-P:指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)
登录方法一:
ssh 远程服务器用户名@远程服务器主机名或IP地址 -p 端口
登录方法二:
ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口
因方法二繁琐,我们正常使用方法一进行远程登录
2.2文件传输
sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法。
sftp与ftp有着几乎一样的语法和功能。SFTP 为SSH的其中一部分,其实在SSH软件包中,已经包含了一个叫作SFTP全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP
sftp root@192.168.48.6
get
get -r
put
help
pwd
lpwd
三.SSH服务配置
sshd服务器配置文件为:/etc/ssh/sshd_config
3.1SSH服务安全调优
Port 22
ListenAddress 0.0.0.0
UseDNS yes
SyslogFacility AUTHPRIV
AllowUsers xiayan
DenyUsers csdn
LoginGraceTime 2m
PermitRootLogin yes
PasswordAuthentication yes
PermitEmptyPasswords no
PrintLastLog yes
MaxAuthTries 6
3.2SSH服务验证
sshd服务支持两种验证方式
1.密码验证:
对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便。
但从客户端角度来看,正在连接的服务器有可能被假冒;
从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。
同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高位端口1922)
2.密钥对验证:
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。
四.密钥对构建
在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解。
vim/etc/ssh/sshd_config
PubkeyAuthentication yes
Authori zedKeysFile .ssh/authorized_ keys
4.1密钥对原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SsH服务器上连接
的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密"质询" ( challenge)并把它发送给SSH客户端。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
通俗点讲,就是客户端生成一对密钥,私钥自己保存,公钥发给服务器,当进行连接时,系统验证公钥私钥是否匹配,匹配则验证通过,否则拒绝登入。
4.2远程拷贝–scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。
1.本地文件复制到服务器
scp sheng root@192.168.48.6:/opt
2.复制服务器的文件到本地
scp root@192. 168.48.6: /opt/test/ ./
3.本地目录复制到服务器
scp -r 1234/ root@192.168.48.6:/opt
4.3密钥对配置
1.在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等( ssh- keygen命令的“-t”选项用于指定算法类型)。
密钥对默认存储位置位:“~/.ssh/”下
id_rsa是私钥文件,权限默认为600;
id_ rsa.pub是 公钥文件,用来提供给ssH服务器
2.将公钥文件上传至服务器
方法一:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.48.6
此方法可直接在“~/.ssh/”目录下生成authorized_ keys文件
方法二:使用scp命令
scp ~/.ssh/id_rsa.pub root@192.168.48.6:~/.ssh/authorized_keys
五.访问控制–TCP Wrappers
在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSsh 等TCP Wrappers 将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一“个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序
[root@xiayan ~]
tcp_wrappers-7.6-77.el7.x86_64
tcp_wrappers 保护机制的两种实现方式:
1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
2.由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
使用ldd命令可以查看程序的链接库
语法格式: <服务程序列表>: <客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd" .
多个服务程序组成的列表:如“vsftpd,sshd"。 .
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。多个地址以逗号分隔
允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符
网段地址,如"192.168.48." 或者192.168.48.0/255.255.255.0
区域地址,如”xiayan.com"匹配xiayan.com域中的所有主机。
访问控制的基本原则:
首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有
除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
比如:只允许192.168.48网段的主机访问sshd服务,需要同时改两个文件
vim /etc/hosts.allow
vim /etc/host.deny
六.总结
1.sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
2.ssh服务有远程链接和sftp服务
3.ssh服务中的sftp传输数据比ftp更加安全可靠
4.密钥对为客户机生成并发送给服务器
5.tcp_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
6.scp可以在两天linux主机间远程传输文件
7.密钥对比密码验证更加安全可靠
本文《SSH服务详解》版权归Sq夏颜所有,引用SSH服务详解需遵循CC 4.0 BY-SA版权协议。