8.openssh服务

什么是SSH

SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议。SSH是较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。利用用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
OpenSSH 服务是 SSH 协议的免费开源实现,可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rdp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
通过使用SSH,你可以把所有传输的数据进行加密,这样可以较好地抑制"中间人"这种攻击,也可能够防御DNS欺骗和IP欺骗。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。(有争议,压缩和解压缩的时间也不见得比传输原数据快)

scp 命令:
将本机文件复制到远程服务器上(上传)
命令格式:scp 【本地文件路径】 [username]@[主机IP]:[拷贝的目录]
将远程服务器上的文件复制到本机(下载)
命令格式:scp [username]@[主机地址]:[服务器上文件路径] [本地文件路径]

注意两点:
1.如果远程服务器openssh有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
scp -P 2222 [username]@[主机地址]:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限.

安装openssh

openssh默认已经安装于centos中,无须额外的安装。相关的软件包可以通过以下命令进行查询。

dnf list |grep openssh
openssh-clients.x86_64      #客户端
openssh-server.x86_64       #服务端
openssh-askpass.x86_64      #交互式访问

服务的状态/停止/启动

systemctl status sshd.service    #查看ssh状态 不加.service也行
systemctl start sshd.service     #启动ssh服务
systemctl stop sshd.service      #停止ssh服务  谨慎停止,一般不要执行,否则会断开连接
systemctl reload sshd  #重新加载配置文件

配置免密码(公私钥认证)登录

ssh 服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。
公私钥登录也没有那么安全:
1.私钥泄露则就可以完成登录
2.公私钥登录不用密码,那么别人在我的电脑上可以随便连接到别的服务器,进行破坏
3.中了病毒成了肉鸡,则别人能利用我电脑连上服务器

公私钥的概念:

密码体系从加密和解密方面来分类的话,可以分为对称加密和非对称加密。

  • 对称加密:加密和解密使用的密钥是同一个。
  • 非对称加密:加密和解密使用的密钥是不同的,采用两个密钥。
  • 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
  • 对称加密的安全性相对较低,非对称加密的安全性较高。

公私钥体系既是常见的非对称加密,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。其特性为:

  • 一个公钥对应一个私钥。
  • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
  • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

ssh服务通过密码进行登录,主要流程为:

1.客户端连接上服务器之后,服务器把自己的公钥传给客户端
2.客户端输入服务器密码通过公钥加密之后传给服务器
3.服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

ssh服务公钥登录,主要流程为:

1.客户端生成RSA公钥和私钥
2.客户端将自己的公钥存放到服务器
3.客户端请求连接服务器,服务器将一个随机字符串发送给客户端
4.客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
5.服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

配置公私钥登录

linux下可以用用ssh-keygen命令生成公钥/私钥对。

1.若有机器A,B。现想A(客户机)通过ssh免密码登录到B(服务器)。 在A机(客户机)下使用ssh-keygen命令生成公钥/私钥对。在执行此命令后将在~/.ssh目录下将生成id_rsaid_rsa.pub文件。
2.在B机器(服务器)开启证书的验证,默认是开启的。 若没有开启可修改ssh配置文件,vi /etc/ssh/sshd_config,将文本中有关PubkeyAuthenticationAuthorizedKeysFile的条目修改为如下内容:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

3.随后重启服务 systemctl restart sshd.service
A机器(客户机)使用ssh-copy-id [user]@[host]命令拷贝密钥文件到B机器(服务器)。
4.随后客户机访问服务器,我们会发现直接无密码登录。

小结:客户机有私钥,被登录的服务器要有登录客户机的公钥。这个公钥/私钥对一般在私钥宿主机(客户机)产生。上面是用rsa算法的公钥/私钥对,也可以用dsa算法(对应的文件是id_dsa,id_dsa.pub)。

openssh配置文件与加固

OpenSSH常用配置文件有两个/etc/ssh/ssh_config /etc/ssh/sshd_config
ssh_config为客户端配置文件。
sshd_config为服务端配置文件。

修改 SSH 默认端口

修改端口还是会被nmap扫出来,只能防小白

vi /etc/ssh/sshd_config

Port 2222

systemctl restart sshd.service

ssh [user]@[IP] -p 2222

配置ssh日志

ssh日志的地址是:/var/log/secure

vi /etc/ssh/sshd_config

#SyslogFacility AUTH

SyslogFacility   AUTHPRIV #平常使用AUTH即可

LogLevel DEBUG  #平常使用INFO即可

systemctl restart sshd.service

tail -f /var/log/secure

禁止root登录

可能会配置无效,是因为不在这个文件配置,是在另外的文件

vi /etc/ssh/sshd_config

PermitRootLogin no

systemctl restart sshd.service

配置长时间无人操作自动断开ssh连接

vi /etc/ssh/sshd_config

LoginGraceTime 2m  #指定时间内没有成功登录,将会断开连接,若无单位则默认时间为秒。默认2分钟

PermitEmptyPasswords no #不允许空密码登录

systemctl restart sshd.service

vi /etc/profile

export TMOUT=10 #单位是秒,当命令终端超过10秒无人操作,ssh连接断开

source /etc/profile

开启空口令登录(慎用)

配置文件/etc/ssh/sshd_config64行的PermitEmptyPasswords no,默认设置禁止空口令登录,将其取消掉#注释并将no改为yes,更改完后记得重启sshd服务使配置文件生效

systemctl restart sshd

注:使用空口令登录须开启密码认证

访问速度调优

一般 SSH 依次进行的认证方法的是 publickey, gssapi-keyex, gssapi-with-mic, password。 一般用户只使用 password 认证方式,但前面 3 个认证过程系统还是会尝试,这就浪费时间了,也就造成 SSH 登录慢。GSSAPI 主要是基于 Kerberos 的,因此要解决这个问题也就变成要系统配置有 Kerberos, 一般用户是没有配置 Kerberos的。

vi /etc/ssh/sshd_config

GSSAPIAuthentication no  #关闭GSSAPI认证
UseDNS no  #关闭DNS解析

systemctl restart sshd.service

启用Linux密码策略

密码策略这里修改后,只对新建用户生效。
启用密码策略有两个配置文件:
第一个是/etc/login.defs 修改文件里的策略:vi /etc/login.defs

PASS_MAX_DAYS 99      #密码99天过期
PASS_MIN_DAYS  1      #修改密码最小间隔为1天
PASS_MIN_LEN   8      #密码最短长度为8
PASS_WARN_AGE  1      #密码过期前1天内通知用户

第二个配置文件为:/etc/security/pwquality.conf 修改文件里的策略:vi /etc/security/pwquality.conf

# "N" 处应填写数字
minlen=N              #定义用户密码的最小长度; 
minclass=N            #定义密码必须满足同时有几种字符;
maxrepeat=N           #定义密码中允许几个连续相同的字符;    
maxclassrepeat=N      #定义用户密码连续字符的最大数目;
lcredit=N             #定义用户密码中必须包含多少个小写字母;
ucredit=N             #定义用户密码中必须包含多少个大写字母;1
dcredit=N             #定义用户密码中必须包含多少个数字;1
ocredit=N             #定义用户密码中必须包含多少个特殊字符(除数字、字母之外);其中 = 1表示,至少有一个

ssh日志

ssh服务的日志存储于/var/log/securetail -f /var/log/secure 查看日志,例如模拟登录失败,登录成功等不同方式,以观察日志的不同变化。 状态:
Failed password 为密码错误
Accept password 为登录成功
disconnected by user 为断开链接

ssh加固的思考

1.利用防火墙进行访问限制。
2.利用单点登录系统进行登录管理。
3.利用堡垒机进行管控。
4.对ssh服务日志进行监控、分析和审计。
5.等等。

有人在爆破ssh该怎么办

1.判定是谁在爆破
2.判定是否爆破成功
3.做出对应的动作
根据/var/log/secure日志进行分析

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值