Linux SSH远程服务 day36

什么是SSH
SSH的功能
SSH与Telnet的区别
SSH相关客户端指令ssh、scp、sftp
SSH远程登录方式、用户密码、秘钥方式


一、什么是SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。(简单来说,ssh就是一个应用层安全协议,主要进行远程登录)https://blog.csdn.net/u013452337/article/details/80847113

二、SSH主要的功能是

  • 提供远程连接服务器的服务
  • 对传输的数据进行加密

三、SSH与Telnet的区别

服务连接方式 服务数据传输 服务监听端口 服务登录用户
ssh 加密 22/tcp 默认支持root用户登录
telnet 明文 23/tcp 不支持root用户登录

举例:利用wireshark验证telnet明文传输与ssh加密传输
Linux SSH远程服务 day36_第1张图片
ssh加密

telnet明文传输

四、ssh相关客户端指令

  • ssh(Windows xshell crt)
[root@manager~]# ssh [email protected]
[email protected]'s password:
  • scp
    • rsync是增量备份
    • scp是全量备份(每次都是覆盖)

PS:拷贝目录时,需要使用参数-r

推送:
[root@web~]#  scp ./anaconda-ks.cfg  [email protected]:/tmp
[email protected]'s password: 

获取
[root@web~]#  scp [email protected]:/anaconda-ks.cfg ./test
[email protected]'s password: 

限速 ( kb  1024 * 8 = 实际的传输速率 )
[root@web01 ~]# scp -l 8192 ./1.txt 172.16.1.41:/tmp
[email protected]'s password: 
1.txt     14%   74MB   1.0MB/s   07:09
  • sftp 文件传输协议
    • 简单,带图形,支持断点续传,支持暂停

五、SSH远程登录方式、用户密码、秘钥方式

  • 基于用户和密码的方式

    • ① 密码太复杂容易忘记
    • ② 密码太简单不安全
  • 基于秘钥的方式

    • ① 降低密码的泄露风险
    • ② 提升用户的便捷性
  • 实现免密码登录方式

    • ① 创建一对秘钥
    • ② 讲管理机的公钥推送至web服务器上(输入对端服务器的密码)
    • ③ 使用ssh命令连接对应的服务器
      https://www.jianshu.com/p/fb0df700305d
生成公钥
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

推送公钥至web服务器上
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

使用ssh连接
[root@manager~]# ssh '[email protected]'
Last login: Thu Sep 12 15:37:56 2019 from 10.0.0.1
[root@web~]# 

PS:有问题查看
tail -f /var/log/secure

六、SSH远程连接功能安全优化

1.更改远程连接登陆的端口 port 6666
2.禁止ROOT管理员直接登录 PermitRootLogin no
直接 xshell -->root --> server (禁止用户名密码 禁止密钥)
间接 xshell -->oldxu --> server ---> su - root
3.密码认证方式改为密钥认证 PasswordAuthentication no
4.重要服务不使用公网IP地址 !!!!!!!!!!!!!!!!!
5.使用防火墙限制来源IP地址 软件防火墙 | 硬件防火墙

10.0.0.1(其他人)    --->  10.0.0.61        异常
10.0.0.100(公司)    --->  10.0.0.61       正常

6.修改后的配置 [测试完后记得还原]

[root@manager ~]# vim /etc/ssh/sshd_config
Port 6666                       # 变更SSH服务远程连接端口
PermitRootLogin         no      # 禁止root用户直接远程登录
PasswordAuthentication  no      # 禁止使用密码直接远程登录
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟

七、fail2ban

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。
1.开启Firewalld防火墙

[root@bgx ~]# systemctl start firewalld
[root@bgx ~]# systemctl enable firewalld
[root@bgx ~]# firewall-cmd --state
running

2.修改firewalld规则,启用Firewalld后会禁止一些服务的传输,但默认会放行常用的22端口, 如果想添加更多,以下是放行SSH端口(22)示例,供参考:

#放行SSHD服务端口
[root@bgx ~]# firewall-cmd --permanent --add-service=ssh --add-service=http 
#重载配置
[root@bgx ~]# firewall-cmd --reload
#查看已放行端口
[root@bgx ~]# firewall-cmd  --list-service

3.安装fail2ban,需要有epel

[root@bgx ~]# yum install fail2ban fail2ban-firewalld mailx -y

4.配置fail2ban规则.local会覆盖.conf文件

[root@bgx fail2ban]# cat /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

5.启动服务,并检查状态

[root@bgx ~]# systemctl start fail2ban.service
[root@bgx ~]# fail2ban-client status sshd

6.清除被封掉的IP地址

[root@bgx ~]# fail2ban-client set sshd unbanip 10.0.0.1

PS:SSH如何结合Google Authenticator 实现双向验证? (适合自己用)

基于密码 + 动态口令 支持
基于密钥 + 动态口令 不支持
https://www.xuliangwei.com/bgx/1345.html

你可能感兴趣的:(Linux SSH远程服务 day36)