零基础掌握SSH安全登录:从入门到实战全攻略发起收藏! ...

打印 上一主题 下一主题

主题 877|帖子 877|积分 2631

什么是SSH

SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。
SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它利用加密技能来确保进出远程服务器的全部通讯都以加密方式进行。
SSH是一种网络协议

简朴说,SSH是一种网络协议,用于盘算机之间的加密登录。
如果一个用户从本地盘算机,利用SSH协议登录另一台远程盘算机,我们就可以认为,这种登录是安全的,纵然被中途截获,暗码也不会泄露。
为什么需要SSH

利用SSH协议登录另一台远程盘算机,这种登录是安全的,纵然被中途截获,暗码也不会泄露。
以前利用FTP或telnet登录服务器,都是以明文的形式在网络中发送账号暗码,很容易被黑客截取到数据,篡改后威胁服务器数据安全。
端口号设定

阐明:端口号只有整数,范围是从0 到65535
1~255:一般是知名端口号,如:ftp 21号、web 80、ssh 22、telnet 23号等
256~1023:通常都是由Unix系统占用来提供特定的服务
1024~5000:客户端的临时端口,随机产生
大于5000:为互联网上的其他服务预留,工作里一般发起直接用大于5000的端口,并且要利用netstat下令查抄下。
今日阅读福利:《网络安全词汇术语汇编》
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包罗各种常用工具和黑客技能电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~


SSH暗码登录原理

1、加密算法(了解)
①对称加密算法(DES) 加密解密共用同一把钥匙
  1. 优点、该算法加密强度大,几乎无法破解  
  2. 缺点,密钥不能丢失,拿到加密方式,自然源数据就被破解,暴露给别人了  
复制代码

②非对称加密算法(RSA)
  1. 非对称加密分为:公钥(Public Key)与私钥(Private Key)  
  2.   
  3. 使用公钥加密后的密文,只能使用对应的私钥才能解开,破解的可能性很低。  
复制代码

   总结:
1.发送方(于超)利用吸收方(杰西卡)发来的公钥将明文数据加密为密文,然后再发出;
2.吸收方(杰西卡)收到密文消息后,用自己本地保存的私钥解密这个密文,最终得到明文数据;
  对称、非对称加密算法区别是?
对称加密
利用同一个密钥进行加密和解密,密钥容易泄露
加密速度快,效率高
数据传输,速度快
安全性较低;
非对称加密
利用差别的密钥(公钥和私钥)进行加密和解密
加密速度远远慢于对称加密
数据传输速度慢
安全性较高
SSH认证方式

我们登录linux服务器,利用ssh登录的话有两种认证方式
账户暗码
  1. root  
  2. yuchao666  
复制代码
密钥认证
  1. [root@web-7 ~]#ls /root/.ssh/id_rsa  
  2. id_rsa      id_rsa.pub  
复制代码
(重点)SSH基于用户名暗码认证原理

  1. 密码登录,使用的是目标机器的,公私钥  
  2. [root@rsync-41 ~]#ls /etc/ssh/ssh_host_ecdsa_key*  
  3. /etc/ssh/ssh_host_ecdsa_key  /etc/ssh/ssh_host_ecdsa_key.pub  
复制代码

1.SSH客户端向SSH服务端发起登录哀求
2.SSH服务端将自己的公钥发给SSH客户端
注意,如果是首次创建毗连,会有如下指纹信息确认,让用户确认自己毗连的机器信息精确。
  1. [root@web-7 ~]#ssh root@10.0.0.41  
  2. The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.  
  3. ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.  
  4. ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.  
  5. Are you sure you want to continue connecting (yes/no)?  
复制代码
3.在首次登录时,只要你输入了yes,就表示你信任了该机器的公钥,该机器的公钥信息会写入到客户端的~/.ssh/known_hosts
  1. 你可以在客户端检查该文件  
  2. [root@web-7 ~]#cat ~/.ssh/known_hosts   
  3. 10.0.0.41 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=  
  4.   
  5. 如果你删除了该公钥,下次ssh连接,会再次让你确认机器的指纹信息  
复制代码
4.下一步就是等待你输入暗码,只要你输入了暗码,SSH客户端就会利用服务端发来的公钥,将输入的暗码加密为密文后,再发给SSH服务端;
  1. [root@web-7 ~]#ssh root@10.0.0.41  
  2. The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.  
  3. ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.  
  4. ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.  
  5. Are you sure you want to continue connecting (yes/no)? yes  
  6. Warning: Permanently added '10.0.0.41' (ECDSA) to the list of known hosts.  
  7. root@10.0.0.41's password:  
复制代码
5.SSH服务端收到密文暗码后,再用自己本地的私钥解密,看到输入的暗码;
  1. root@10.0.0.41's password:   **********  
  2. 你输入的密码,会被公钥加密,发送到目标机器上验证,ssh真是太靠谱了  
复制代码
6.SSH服务端将解密后的明文,和linux上的用户暗码文件做对比,/etc/shadow,精确则登录成功
7.ssh认证成功后,返回登录成功,并且返回一个随机遇话口令给客户端,这个随机口令用于后续两台机器之间的数据通讯加密。
机器指纹信息

  1. 只要是两台新机器,首次ssh毗连,就会出现如下的指纹确认  [root@web-7 ~]#  [root@web-7 ~]#ssh root@10.0.0.41  
  2. The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.  
  3. ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.  
  4. ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.  
  5. Are you sure you want to continue connecting (yes/no)?  
  6.    这一段信息意思是,无法确认10.0.0.41这台机器的真实性,但是发现了机器的指纹  SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.  你自己确认下是否是你要毗连的机器  
复制代码
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包罗各种常用工具和黑客技能电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

检察机器公钥

直接去rsync-41机器上查抄公钥信息
  1. [root@rsync-41 ~]#  
  2. [root@rsync-41 ~]#cat /etc/ssh/ssh_host_ecdsa_key.pub   
  3. ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=  
复制代码
指纹是公钥加密而来(sha256算法)
盘算rsync-41机器的指纹,再和我们第一次ssh毗连的下令比较,是否同等
对比机器指纹

ssh暗码认证小结
  1. SSH是Linux下远程管理的工具,相比Telnet安全,运维人员必备的神器!  
  2. SSH的全称Secure Shell,安全的shell,是Client/Server架构,默认端口号为22,TCP协议  
  3. 必须搞懂SSH通信加密的原理、过程  
复制代码
搭建SSH服务

(一)关闭防火墙和selinux
  1. # 关闭firewalld防火墙  
  2. # 临时关闭  
  3. systemctl stop firewalld  
  4.   
  5. # 关闭开机自启动  
  6. systemctl disable firewalld  
  7.   
  8. # 关闭selinux  
  9. # 临时关闭  
  10. setenforce 0  
  11.   
  12. # 修改配置文件  永久关闭  
  13. vim /etc/selinux/config  
  14. SELINUX=disabled  
复制代码
二)配置yum源
  1. # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  
  2. # wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo  
  3. # yum clean all  
  4. # yum makecache  
  5.   
  6. 这个yum源配置,  
复制代码
(三)软件安装
①确认是否安装openssh
由于每一台机器都是默认安装了sshd服务的,这里你可以采用期中综合架构里的任何一台机器测试。
  1. [root@web-7 ~]#rpm -qa |grep openssh  
  2. openssh-server-7.4p1-16.el7.x86_64  
  3. openssh-clients-7.4p1-16.el7.x86_64  
  4. openssh-7.4p1-16.el7.x86_64  
复制代码
②检察openssh-server软件包的文件列表
  1. [root@yuchao-linux01 ~]# rpm -ql openssh-server  
  2. # 配置文件  
  3. /etc/ssh/sshd_config  
  4. /etc/sysconfig/sshd  
  5.   
  6. # 服务管理脚本  
  7. /usr/lib/systemd/system/sshd.service        =>  systemctl start sshd  
  8.   
  9. # 文件共享服务 提供文件上传下载的服务  
  10. /usr/libexec/openssh/sftp-server  
  11.   
  12. # 二进制文件程序文件  
  13. /usr/sbin/sshd  
  14.   
  15. # 公钥生成工具  
  16. /usr/sbin/sshd-keygen  
  17.   
  18. # man手册  
  19. /usr/share/man/man5/sshd_config.5.gz  
  20. /usr/share/man/man8/sftp-server.8.gz  
  21. /usr/share/man/man8/sshd.8.gz  
复制代码
③检察openssh-clients软件包的文件列表
  1. rpm -ql openssh-clients  
  2.   
  3. # 客户端配置文件  
  4. /etc/ssh/ssh_config  
  5.   
  6. # 远程copy命令 服务器间进行文件传输  
  7. /usr/bin/scp  
  8.   
  9. # sftp客户端  上传下载文件操作  
  10. /usr/bin/sftp  
  11. /usr/bin/slogin  
  12. /usr/bin/ssh  
  13. /usr/bin/ssh-add  
  14. /usr/bin/ssh-agent  
  15. /usr/bin/ssh-copy-id  
  16. /usr/bin/ssh-keyscan  
  17.   
  18. # 客户端man手册  
  19. /usr/share/man/man1/scp.1.gz  
  20. /usr/share/man/man1/sftp.1.gz  
  21. /usr/share/man/man1/slogin.1.gz  
  22. /usr/share/man/man1/ssh-add.1.gz  
  23. /usr/share/man/man1/ssh-agent.1.gz  
  24. /usr/share/man/man1/ssh-copy-id.1.gz  
  25. /usr/share/man/man1/ssh-keyscan.1.gz  
  26. /usr/share/man/man1/ssh.1.gz  
  27. /usr/share/man/man5/ssh_config.5.gz  
  28. /usr/share/man/man8/ssh-pkcs11-helper.8.gz  
复制代码
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包罗各种常用工具和黑客技能电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

(四)ssh基本安全配置
提升服务器ssh安全,就是来修改该配置文件了,先来看简朴的配置;
往下继续看,还准备了ssh优化篇;
  1. man 5 sshd_config  
  2. [root@web-7 ~]#cat /etc/ssh/sshd_config   
  3.   
  4. 1.禁用root用户登录、降低权限  
  5. 2.修改端口  
  6.   
  7. 配置文件如下  
  8. [root@web-7 ~]#grep -E '^(Permit|Port)' /etc/ssh/sshd_config   
  9. Port 22422  
  10. PermitRootLogin no  
复制代码
4.1 pwgen随机暗码天生工具
别忘记创建一个用于登录的平凡用户,暗码随机天生
  1. 1.安装  
  2. yum install -y pwgen  
  3.   
  4. 2.命令参数,生成不同的密码规则  
  5.   
  6. pwgen支持的选项。  
  7.   -c或-大写字母  
  8.     在密码中至少包含一个大写字母  
  9.   -A或--不大写  
  10.     不在密码中包含大写字母  
  11.   -n 或 --数字  
  12.     在密码中至少包含一个数字  
  13.   -0 或 --no-numerals  
  14.     不在密码中包含数字  
  15.   -y或--符号  
  16.     在密码中至少包括一个特殊符号  
  17.   -r <chars> 或 --remove-chars=<chars>(删除字符  
  18.     从生成密码的字符集中删除字符  
  19.   -s 或 --secure  
  20.     生成完全随机的密码  
  21.   -B 或--模棱两可  
  22.     不要在密码中包含模棱两可的字符  
  23.   -h 或 --help  
  24.     打印一个帮助信息  
  25.   -H 或 --sha1=path/to/file[#seed] 。  
  26.     使用指定文件的sha1哈希值作为(不那么)随机生成器  
  27.   -C  
  28.     以列形式打印生成的密码  
  29.   -1  
  30.     不在列中打印生成的密码  
  31.   -v或--不使用元音  
  32.     不要使用任何元音,以避免意外的讨厌的字。  
  33.   
  34. 3.生成 完全随机、携带数字的密码  
  35. [root@web-7 ~]#pwgen -sn |head -1  
  36. T0AR1i2c  
  37.   
  38. 4.设置密码  
  39. [root@web-7 ~]#echo T0AR1i2c | passwd --stdin yuchao01  
复制代码
随机天生指定风格的暗码
打印,包罗大写字母、数字、不包罗特别歧义、完全随机、且一行一个暗码、暗码长度为8、天生5个暗码。
  1. [root@web-7 ~]#pwgen -cnBs1 8 5  
  2. KaKWvp9F  
  3. 4HHvsWWR  
  4. NpKWn3pN  
  5. LuqzuAh9  
  6. bR7Xg9Hs  
复制代码
改了配置文件就得重启
(五)服务管理
  1. # 重启服务  
  2. systemctl restart sshd  
  3.   
  4. # 查看状态  
  5. systemctl status sshd  
  6. # 进程查看方式  
  7. ps aux |grep sshd  
  8. # 端口查看方式  
  9. netstat -lntp|grep sshd  
  10.   
  11. # 开启自启动  
  12. systemctl enable sshd  
复制代码
(六)登录测试
  1. 无法登录  
  2. [C:\~]$ ssh root@10.0.0.7 22422  
  3.   
  4.   
  5. 可以登录  
  6. [C:\~]$   
  7. [C:\~]$ ssh yuchao01@10.0.0.7 22422  
  8.   
  9.   
  10. Connecting to 10.0.0.7:22422...  
  11. Connection established.  
  12. To escape to local shell, press 'Ctrl+Alt+]'.  
  13.   
  14. WARNING! The remote SSH server rejected X11 forwarding request.  
  15. [yuchao01@web-7 ~]$  
  16. [yuchao01@web-7 ~]$echo "Linux"Linux  
复制代码
3、 sshd服务部署小结
掌握ssh认证方式
ssh通讯加密方式原理、流程。
暗码认证模式
禁止root登录服务器,增强服务器安全性
更改ssh服务默认端口,增强服务器安全性
暗码天生工具,天生随机暗码,增强安全性。
纯熟利用ssh客户端工具,xshell、ssh下令、secureCRT等。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有打仗过网络安全的同砚,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没题目。
因篇幅有限,仅展示部分资料,朋侪们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表