热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SSH服务

本文主要介绍关于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服务器及客户端需要的核心文件。
openssh-clients-5.3p1-114.el6_ 7.x86_ 64      //OpenSSH客户 端软件包。
openssh-server-5.3p1-114.e16_ 7.x86_ 64       //OpenSSH服 务器软件包。
openssh-askpass-5.3p1-114.e16_ _7.x86_ 64     //支持对话框窗口的显示,是一个基于x系统的

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 端口    //默认端口为22,可以不加-p
登录方法二:
ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口

因方法二繁琐,我们正常使用方法一进行远程登录

SSH服务

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    //默认会上传到/root
help   //查看sftp可使用的命令和用途
pwd    //显示当前服务器所在位置
lpwd   //显示当前主机位置

SSH服务

三.SSH服务配置

sshd服务器配置文件为:/etc/ssh/sshd_config

3.1SSH服务安全调优
Port 22               //监听端口,默认22,为了安全可以更改为高位端口
ListenAddress 0.0.0.0 //监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
UseDNS yes            //DNS反向解析
SyslogFacility AUTHPRIV //用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/1og/secure
AllowUsers  xiayan     //只允许xiayan用户通过ssh登入,注:root用户不在名单中,也无法登入
DenyUsers   csdn       //拒绝csdn用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用
LoginGraceTime 2m   //登录时间限制2分钟,超时拒绝登录
PermitRootLogin yes //是否允许root用户登入
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  //指定公钥库文件,默认存在“~/,ssh/”
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

SSH服务


SSH服务


SSH服务

4.3密钥对配置

1.在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等( ssh- keygen命令的“-t”选项用于指定算法类型)。

SSH服务


密钥对默认存储位置位:“~/.ssh/”下
id_rsa是私钥文件,权限默认为600;
id_ rsa.pub是 公钥文件,用来提供给ssH服务器

SSH服务

2.将公钥文件上传至服务器
方法一:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.48.6
此方法可直接在“~/.ssh/”目录下生成authorized_ keys文件

SSH服务


方法二:使用scp命令

scp ~/.ssh/id_rsa.pub root@192.168.48.6:~/.ssh/authorized_keys #将公钥复制到服务器中名改名为authorized_keys,必须改为此名

SSH服务


SSH服务

五.访问控制–TCP Wrappers

在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSsh 等TCP Wrappers 将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一“个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序

[root@xiayan ~]# rpm -q tcp_wrappers
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

SSH服务


vim /etc/host.deny

SSH服务

六.总结

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版权协议。


推荐阅读
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有