当前位置:   article > 正文

Linux网络服务-----SSH服务_sshd_config中ciphers and keying

sshd_config中ciphers and keying

一.SSH服务概述

  • SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
  • SSH协议对通信双方的数据传输进行了加密处理。
  • 在centos7中,openssh服务器由openssh、openssh-server等软件包提供(默认已安装),并且已将sshd添加为标准的系统服务
  • sshd服务端配置文件默认位于/etc/ssh/sshd_config,服务端的主程序/usr/sbin/sshd
  • sshd服务使用的默认端口是TCP协议的22
  • /etc/ssh/sshd_config中的参数如下
  1. [root@localhost ~]# vim /etc/ssh/sshd_config
  2. #Port 22
  3. #AddressFamily any
  4. #ListenAddress 0.0.0.0
  5. #ListenAddress ::
  6. HostKey /etc/ssh/ssh_host_rsa_key
  7. #HostKey /etc/ssh/ssh_host_dsa_key
  8. HostKey /etc/ssh/ssh_host_ecdsa_key
  9. HostKey /etc/ssh/ssh_host_ed25519_key
  10. # Ciphers and keying
  11. #RekeyLimit default none
  12. ......

注:telnet协议使用udp的23端口,明文传输数据;mstsc远程桌面功能使用3389端口(windows系统);VNC(跨系统远程连接);TeamVlewer(手机与PC端之间远程连接)

二.ssh命令——远程安全登录

  • 用户账号的的安全控制
  • sshd服务默认允许使用root用户远程登录,当在Internet中使用时这是非常不安全的,一般是先以普通用户远程登录,进入安全的shell环境之后,使用su命令切换到root
  • 在/etc/ssh/sshd_config的参数中
  1. PermitRootLogin no //禁止root用户远程登录
  2. PermitEmptyPasswords no //禁止空密码用户远程登录
  3. MaxAuthTries 6 //最大重试次数为6
  4. AllowUsers //白名单,仅允许用户远程登录
  5. DenyUsers //黑名单,仅拒绝用户远程登录
  6. 黑名单与白名单注意不要同时使用
  7. AllowUsers zhangsan root@192.168.43.132 //仅允许该IP地址的主机zhangsan,
  8. root账户登录,多个用户之间用空格隔开
  • sshd服务支持两种验证方式——密码验证和密钥对验证,相对来说,密钥对验证的方式比较安全。
  • 密码验证的实例
  1. [root@day01 ~]# ssh root@192.168.43.132
  2. root@192.168.43.132's password:
  3. Last login: Sun Nov 24 20:57:36 2019 from 192.168.43.147
  4. [root@day02 ~]# exit
  5. 登出
  6. Connection to 192.168.43.132 closed.
  7. [root@day01 ~]#
  • 限制root用户登录
  1. 在服务端设置禁止root用户被远程登录
  2. [root@day02 ~]# vim /etc/ssh/sshd_config
  3. PermitRootLogin no
  4. [root@day02 ~]# systemctl restart sshd //重启服务,更新参数
  5. [root@day02 ~]#
  1. 在客户端尝试登录root
  2. [root@day01 ~]# ssh root@192.168.43.132
  3. root@192.168.43.132's password:
  4. Permission denied, please try again.
  5. root@192.168.43.132's password:
  6. Permission denied, please try again.
  7. root@192.168.43.132's password:
  8. [root@day01 ~]# ssh zhangsan@192.168.43.132 //登录服务端的zhangsan用户
  9. zhangsan@192.168.43.132's password:
  10. Last login: Thu Oct 31 11:10:07 2019
  11. [zhangsan@day02 ~]$ su - root //使用su命令切换
  12. 密码:
  13. [root@day02 ~]# vim /etc/pam.d/su //开启PAM认证,限制su命令的切换
  14. auth required pam_wheel.so use_uid
  • 基于ssh服务的免交互密钥对验证
  • 在客户机创建密钥对
  1. [root@day01 .ssh]# ssh-keygen -t rsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/root/.ssh/id_rsa): //密钥对的路径
  4. Enter passphrase (empty for no passphrase): //输入密钥
  5. Enter same passphrase again:
  6. Your identification has been saved in /root/.ssh/id_rsa.
  7. Your public key has been saved in /root/.ssh/id_rsa.pub.
  8. The key fingerprint is:
  9. SHA256:IkCe/o4389L3ZArgsUCdGYRlX+VBP8nocKPr6Okppas root@day01
  10. The key's randomart image is:
  11. +---[RSA 2048]----+
  12. | .+= .o+ |
  13. | o.+ = . . = . |
  14. | = + . . = = |
  15. | o . = . . |
  16. | o + . S . |
  17. | + =.. . |
  18. | ++. . o |
  19. | oB .*.+ |
  20. | EooXB.o.. |
  21. +----[SHA256]-----+
  22. [root@day01 .ssh]#
  23. //输入密钥时要有复杂度
  • 在客户机上查看密钥对
  1. [root@day01 .ssh]# cd /root/.ssh
  2. [root@day01 .ssh]# ls
  3. id_rsa id_rsa.pub //id_rsa为私钥,id_rsa.pub为公钥
  • 将公钥文件上传到服务端,且在服务端导入公钥文件
  1. [root@192 .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.43.134
  2. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
  3. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  4. /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
  5. root@192.168.43.134's password:
  6. Number of key(s) added: 1
  7. Now try logging into the machine, with: "ssh 'root@192.168.43.134'"
  8. and check to make sure that only the key(s) you wanted were added.
  9. [root@192 .ssh]#
  • 此时可以通过输入密钥验证连接服务端,也可以创建代理功能,添加私钥
  1. [root@192 .ssh]# ssh-agent bash
  2. [root@192 .ssh]# ssh-add
  3. Enter passphrase for /root/.ssh/id_rsa:
  4. Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
  5. [root@192 .ssh]#
  • 验证密钥免交互
  1. [root@192 .ssh]# ssh root@192.168.43.134
  2. Last login: Sun Nov 24 21:48:39 2019 from 192.168.43.148
  3. [root@demo ~]#

注:输入密钥是需要由复杂度,即不能单纯输入数字。但是也可以不输入密钥,这样也可以实现“免交互”

三.scp命令——远程复制

  • 通过scp命令可以利用SSH安全连接与远程主机相互复制文件
  • 覆盖目标主机的文件
  • 本地主机
  1. [root@demo mnt]# ls
  2. a.txt
  3. [root@demo mnt]# cat a.txt
  4. hello world
  5. [root@demo mnt]# scp a.txt root@192.168.43.134:/mnt/a.txt
  6. root@192.168.43.134's password:
  7. a.txt 100% 13 7.1KB/s 00:00
  8. [root@demo mnt]# ls
  9. a.txt
  10. [root@demo mnt]# cat a.txt
  11. hello world
  12. [root@demo mnt]#
  • 目标主机
  1. [root@demo mnt]# ls
  2. a.txt b.txt
  3. [root@demo mnt]# cat a.txt
  4. [root@demo mnt]# cat b.txt
  5. 123
  6. [root@demo mnt]# cat a.txt
  7. hello world
  8. [root@demo mnt]#
  • 从目标复制文件到本地
  • 本地主机
  1. [root@demo mnt]# scp root@192.168.43.134:/mnt/c.txt ./
  2. root@192.168.43.134's password:
  3. c.txt 100% 3 2.7KB/s 00:00
  4. [root@demo mnt]# ls
  5. a.txt c.txt
  6. [root@demo mnt]# cat c.txt
  7. zz
  8. [root@demo mnt]#
  • 目标主机
  1. [root@demo mnt]# vim c.txt
  2. [root@demo mnt]# ls
  3. a.txt c.txt
  4. [root@demo mnt]# cat c.txt
  5. zz
  6. [root@demo mnt]#

四.sftp命令——安全ftp

  • 通过sftp命令可以利用SSH安全连接远程主机上传(put),下载(get)文件
  • 本地主机
  1. [root@192 mnt]# ls
  2. d.txt
  3. [root@192 mnt]# sftp root@192.168.43.134
  4. sign_and_send_pubkey: signing failed: agent refused operation
  5. root@192.168.43.134's password:
  6. Connected to 192.168.43.134.
  7. sftp> ls
  8. anaconda-ks.cfg initial-setup-ks.cfg 下载 公共
  9. 图片 文档 桌面 模板
  10. 视频 音乐
  11. sftp> cd /mnt
  12. sftp> ls
  13. a.txt c.txt
  14. sftp> get a.txt /mnt
  15. Fetching /mnt/a.txt to /mnt/a.txt
  16. /mnt/a.txt 100% 13 2.2KB/s 00:00
  17. sftp> put /mnt/d.txt /mnt
  18. Uploading /mnt/d.txt to /mnt/d.txt
  19. /mnt/d.txt 100% 8 1.9KB/s 00:00
  20. sftp> exit
  21. [root@192 mnt]# ls
  22. a.txt d.txt
  23. [root@192 mnt]#
  • 目标主机
  1. [root@demo mnt]# ls
  2. a.txt c.txt
  3. [root@demo mnt]# ls
  4. a.txt c.txt d.txt
  5. [root@demo mnt]#

五.TCP Wrappers访问控制

  • TCP Wrappers(TCP 封套),以作为应用服务与网络之间的一道特殊防线,提供额外的安全保障
  • TCP Wrappers的访问控制是基于TCP协议的应用服务,其可以记录所有企图访问被保护服务的行为
  • 关于TCP Wrappers访问控制的两个配置文件/etc/hosts.allow(允许访问),/etc/hosts.deny(拒绝访问),若是在两个配置文件中都没有匹配策略,则默认允许,一般先读取/etc/hosts.allow,后读取/etc/hosts.deny
  • 如下:
  1. [root@192 ~]# vim /etc/hosts.allow
  2. #
  3. # hosts.allow This file contains access rules which are used to
  4. # allow or deny connections to network services that
  5. # either use the tcp_wrappers library or that have been
  6. # started through a tcp_wrappers-enabled xinetd.
  7. #
  8. # See 'man 5 hosts_options' and 'man 5 hosts_access'
  9. # for information on rule syntax.
  10. # See 'man tcpd' for information on tcp_wrappers
  11. #
  1. [root@192 ~]# vim /etc/hosts.deny
  2. #
  3. # hosts.deny This file contains access rules which are used to
  4. # deny connections to network services that either use
  5. # the tcp_wrappers library or that have been
  6. # started through a tcp_wrappers-enabled xinetd.
  7. #
  8. # The rules in this file can also be set up in
  9. # /etc/hosts.allow with a 'deny' option instead.
  10. #
  11. # See 'man 5 hosts_options' and 'man 5 hosts_access'
  12. # for information on rule syntax.
  13. # See 'man tcpd' for information on tcp_wrappers
  14. #

注:在这两个配置文件中可以使用通配符*和?;ALL代表所有,如sshd:ALL,即拒绝或者允许所有用户拒绝访问或者访问ssh服务;“,”代表间隔,如两个IP地址之间,两个服务之间可以用“,”隔开。

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/486775
推荐阅读
相关标签
  

闽ICP备14008679号