1、OpenSSH(一):概念及常用选项

一、telnet

telnet只与应用层协议有关,与系统架构平台无关(如windows,linux),只要是C/S架构即可。

使用telnet登录是不安全的,是使用明文的用户密码登录。

telnet只允许普通用户登录,不允许管理员用户登录。

使用telnet登录示例:

 

 

二、openssl

1、ssh认证方式和过程:

sshv2协议:双方主机协议选择安全的MAC方式。基于DH算法做密钥交换,基本RSA或DSA算法实现身份认证。

SSH两种方式的用户登录认证:

  • 基于用户名和密码的登录认证
  • 基于key的登录认证

方式一登录过程:

  • 1.客户端向服务器发起连接请求,tcp三次握手成功之后
  • 2.服务器端发送自己的公钥给客户端;公钥、私钥由服务器生成。
  • 3.客户端使用服务器的公钥加密数据,将加密后的数据发送给服务器
  • 4.服务器使用私钥解密客户端的数据
  • 5.输入帐号密码登录

方式二登录过程:

  • 事先在服务器上自己的家目录,存放客户端的公钥;在客户端存放私钥;公钥、私钥由客户端生成。
  • 客户端向服务器发起连接请求,tcp三次握手成功之后
  • 服务器使用客户端提供的公钥验证,验证通过即实现了免密码、使用密钥对登录

方式二,使用密钥对登录示例:

# 第一步:在客户端上,生成密钥对
ssh-keygen -t rsa
# 生成的密钥对,默认保存在家目录下的.ssh目录,id_rsa为私钥,id_rsa.pub为公钥
# 第二步:把公钥传递到服务器上
ssh-copy-id [-i 公钥文件的路径 ] [用户名@]x.x.x.x
# 默认存放在服务器上的家目录下的.ssh目录下,文件名自动改为authorized_keys
cd ~
ssh-keygen -t rsa
cd ~/.ssh ssh-copy-id -i ./id_rsa.pub username@192.168.10.253

 

OpenSSH:必须是C/S架构的平台

2.OpenSSH的工具

工具:

  • windows客户端:xshell(商业版)、securecrt(商业版)、putty(免费版、仅英文版)、sshsecureshellclient(简版免费)
  • linux客户端:ssh,dbclient
  • 服务器端:sshd

组件:

  • 客户端组件:ssh
  • 客户端配置文件: /etc/ssh/ssh_config
  • 客户端命令:ssh [用户名@]host [COMMAND]
    • 参数-p port:远程服务器监听的端口  
    • 命令COMMON:在服务器上执行某些简单的命令,如: ssh root@x.x.x.x 'ls ~'
  • 服务器端组件:sshd
  • 服务器端配置文件:/etc/ssh/sshd_config

 

3.基本SSH的一些客户端命令

scp、sftp两个命令都是基于SSH工作的。

scp 命令的两种模式:

pull拉取: scp [options] [用户名@]远程目标主机名:远程文件路径 本地目录

push推送: scp [options] 本地文件路径  [用户名@]远程目标主机名:远程目录

可以简单的认为,从前一个路径复制文件到后一个路径

scp命令options常用选项:

-r 递归复制

-p 保持原文件的属性信息

-q 静默模式

-P 远程主机的端口

-X 支持启用远程主机的图形程序(在客户端显示)

-Y 支持受信任的启用远程主机的图形程序(在客户端显示)

 

sftp命令:

登录远程sftp服务器:sftp [usr@]远程主机

 

4.ssh服务器端的配置

查看服务器上是否安装了ssh:

# centos服务器的命令
rpm -q openssh

配置文件:/etc/ssh/sshd_config

初始情况下:启用的选项,通常是必须的启用的,有些可以修改选项的值,有些不可以修改;禁用的选项,根据情况而定。

 

常用选项:

通常需要修改的选项:

 

#Port 22:默认注释掉,则默认ssh登录的端口为22。如Port 22022

#ListenAddress 0.0.0.0:默认注释掉。需启用,0.0.0.0允许所有ip地址可以登录。如果只允许内网登录,则修改成内网地址。

#StrictModes yes:是否使用严格检查模式。

#MaxAuthTries 3:最大认证次数,允许的最大登录密码错误次数。

#MaxSessions 10:最大会话数。

AllowUser 用户名:用户白名单。多个用户,以空格分隔。

AllowGroup 用户名:用户组白名单

Protocol 2,1        # 选择的 SSH 协议版本,最好只有2;1是不安全的
              # 如果要同时支持两者,就必须要使用 2,1 这个分隔了! 

 

一般情况,不需要修改的选项;当然某些选项,也应根据实际情况而定:

 

#AddressFamily any:默认注释掉,则允许ipv4,ipv6的地址可访问。

HostKey ......:此服务器支持的认证协议,centos7默认启用四种认证协议。

#KeyRegenerationInterval 1h:默认注释掉。如启用,则多长时间内(如1小时)必须更新密钥对。没必要启用。

#ServerKeyBits 1024:密钥对为多少位。

SyslogFacility AUTHPRIV:使用AUTHPRIV记录日志,默认启用。启用即可。日志记录在/var/log/secure文件。

#LoginGraceTime 2m:等待登录输入帐号和密码的超时时间。

#PermiRootLogin yes :是否允许管理员root登录。

AuthorizedKeysFile .ssh/authorized_keys:密钥(客户端的公钥)存放的位置。默认开启。

PasswordAuthentication yes:是否允许密码登录。默认开启。

ChallengeResponseAuthentication no:默认开启,默认不允许这种不安全的方式。

#Kerberos options:默认禁用,默认不使用统一认证。当集群服务器需要统一认证管理时,才配置此选项。

GSSAPIAuthentication yes:默认开启,默认支持GSSAPI认证方式。

GSSAPIGeanupCredentials no:默认开启,默认不允许。

X11Forwarding yes :是否允许服务器上的图形窗口。默认允许。如果要在客户端运行服务器上的图形界面,需要启用此项,同时客户端在SSH登录时,带上-X或-Y选项。

#UseDNS yes:是否反向解析客户端的DNS。通常情况下,不要反向解析。启用,并设置为no

Subsystem sftp /usr/libexec/openssh/sftp-server:默认开启,默认启用sftp远程传输协议。

 

 

如果修改了port,重启配置文件没有用。通常情况下,修改了端口,都需要重启与之相关的服务才可以。

# centos7
systemctl restart sshd.service

 

三、ssh服务器配置的最佳实践:

  1. 不要使用默认端口
  2. 禁用使用protocol version 1
  3. 限制可登录用户
  4. 设定空闲会话超时时长
  5. 限制ssh的访问频度和并发在线数
  6. 利用防火墙设置sshd的访问策略
  7. 仅监听特定的IP地址,通常为内网地址
  8. 基于口令认证时,使用强密码策略。用户密码设置为复杂密码
  9. 尽可能使用基于密钥的认证
  10. 禁用root用户直接登录。通常使用sudo用户登录,或者使用普通用户登录后再su到管理员用户。
  11. 经常日志分析,日志默认位置:/var/log/secure文件

posted on 2019-02-25 18:44  myworldworld  阅读(337)  评论(0)    收藏  举报

导航