CentOS 8 SSH服务的基本原理和配置

一、概述

SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题。

二、主要功能

  • 提供类似telnet远程联机服务器的服务,但是它比telnet安全
  • 类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务

三、SSH服务

SSH服务默认端口是22,安全协议版本sshv2,SSH服务端是一个守护讲程 (daemon),他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。SSH客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。它属于linux系统开机自启的服务之一。

四、openssh软件

openssh是实现SSH协议的开源软件项目,适用于各种unix、linux操作系统。openssh是由openssh、openssh-server以及openssh-client等软件包提供的,并已将sshd添加为标准的系统服务,默认系统已安装。

五、主要配置文件

  • /etc/ssh/sshd_config #ssh服务端配置文件
  • /etc/ssh/ssh_config #ssh客户端配置文件

六、基本配置

本节配置都在SSH服务器端的配置文件/etc/ssh/sshd_config中配置
配置文件修改完以后必须重启或重载服务,以下省略该步骤
配置参数不区分大小写!!!如LoginGraceTime=logingracetime

sshd -t
#检查配置文件语法,没错就无任何输出,有错会报错
在这里插入图片描述
在这里插入图片描述

1、改变默认端口

Port
#SSH监听端口,默认是22
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
修改过端口号之后启动服务必须把selinux关掉或者setenforce 0才行!!!
在这里插入图片描述

2、认证时限

LoginGraceTime
#登录认证时超过多长时间就禁止登录了

在这里插入图片描述
在这里插入图片描述
注意:这里如果输入密码慢了或者走开了它是不会自动断开的,这里设置5秒的意思是如果5秒之后你才输完密码,即使密码正确它也不给你登录了!

扫描二维码关注公众号,回复: 11469450 查看本文章

3、禁止root登录

为什么要禁止root登录?因为root的权限最大,如果允许的话,可以登录到对方服务器进行任意操作,非常不安全!!!
在这里插入图片描述
在这里插入图片描述
PermitRootLogin
#允许root登录,一般设置为no
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
为了不给普通用户利用跳板随意切换成root用户,我们需要设置pam认证模块
在这里插入图片描述
这里有2个用户:gulf(普通用户)和shengjie(属于wheel组的特权用户)
在这里插入图片描述
使用gulf登录,无法切换为root
在这里插入图片描述
使用shengjie登录,可以切换为root
在这里插入图片描述
有人又说了,既然我知道shengjie可以切换为root那我先用gulf登录再切换为shengjie行不行,答案是不行。也没有实际意义,你必须知道shengjie的密码,但是既然知道密码也就不用切换直接就已shengjie登录就好了
在这里插入图片描述
注意:在wheel组的用户的权限是比普通用户要大的,它是linux默认的特权组。

4、认证尝试次数

MaxAuthTries
#最大认证尝试次数
在这里插入图片描述
在这里插入图片描述
默认连接输错密码3次就退出了,原因是因为客户端配置有一项NumberOfPasswordPrompts参数
man手册里它的定义是:Specifies the number of password prompts before giving up.
The argument to this keyword must be an integer.
The default is 3.(指定放弃密码提示的次数。此关键字的参数必须为整数。默认值是3。)
所以我们只能尝试登3次,这里是指客户端的尝试次数,服务器的是认证次数,服务器能认证几次取决于客户端能登陆几次,概念容易混淆!
man手册位置:/usr/share/man/man5/ssh_config.5(需要解压)

ssh -o NumberOfPasswordPrompts=5 [email protected]
#设置客户端登录时密码提示的次数
在这里插入图片描述

所以我们要验证服务器上MaxAuthTries参数,就必须把客户端NumberOfPasswordPrompts参数的值设为比6大的数,我们设为8,结果如下
在这里插入图片描述
第二种方法:(修改完成需要重启sshd服务)
在这里插入图片描述

5、黑、白名单

(1)设置白名单AllowUsers

AllowUsers gulf [email protected]
#允许gulf用户从任何地方登录,只允许tom从指定终端登录,2个条件之间用空格分隔
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)设置黑名单DenyUsers

DenyUsers gulf
#拒绝gulf登录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:

  • 如果黑白名单只设置其中一个,那就匹配这一个,其他不匹配,如果同时设置黑白名单,它会匹配黑名单!
  • 在实际生产环境中,建议只做白名单,考虑安全性问题,不能随意让别人远程,只放开你信任的用户即可!

猜你喜欢

转载自blog.csdn.net/shengjie87/article/details/107234147