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服务器配置的最佳实践:
- 不要使用默认端口
- 禁用使用protocol version 1
- 限制可登录用户
- 设定空闲会话超时时长
- 限制ssh的访问频度和并发在线数
- 利用防火墙设置sshd的访问策略
- 仅监听特定的IP地址,通常为内网地址
- 基于口令认证时,使用强密码策略。用户密码设置为复杂密码
- 尽可能使用基于密钥的认证
- 禁用root用户直接登录。通常使用sudo用户登录,或者使用普通用户登录后再su到管理员用户。
- 经常日志分析,日志默认位置:/var/log/secure文件
posted on 2019-02-25 18:44 myworldworld 阅读(337) 评论(0) 收藏 举报