day33 SSH远程服务

SSH远程服务

1.什么是SSH?

SSh是一个应用层安全协议

2.SSH主要的功能是?

实现远程登录, 数据传输过程中进行加密. 钉钉(澡堂模式)

远程登录: SSh Telent

3.SSH与Telnet之间有什么区别?

SSH 加密 22 root直接登录

Telnet 明文 23 不支持root直接登录

4.抓包分析SSH与Telnet的区别?

Wireshark
[root@backup ~]# yum install telnet-server -y
[root@backup ~]# systemctl start telnet.socket

[oldboy@backup ~]$ echo oollddbbooyy  |sed -r 's#(.)(.)#\1#g'
image.png

PS: 服务器都是使用的SSH协议实现的远程登录

​ 对于路由器 交换机 都是走的telnet协议 (WEB界面调试)

5.SSH相关客户端指令ssh、scp、sftp?

1.ssh ( Windows Xshell Crt ) ( Mac ssh命令 Crt )

[root@web01 ~]# ssh [email protected]
[email protected]'s password: 
Last login: Thu Sep 12 08:15:08 2019 from 10.0.0.1
[root@backup ~]# 

2.scp: rsync增量 scp 全量(每次都是覆盖) ssh协议

拷贝目录需要加 -r参数

推送

[root@web01 ~]# scp ./kaoshi.zip [email protected]:/tmp
[email protected]'s password: 
kaoshi.zip                  100%   26KB   9.0MB/s   00:00  

获取

[root@web01 ~]# scp [email protected]:/tmp ./
[email protected]'s password: 
scp: /tmp: not a regular file
[root@web01 ~]# ls
  kaoshi.zip

限速 ( kb 1024 * 8 = 实际的传输速率 )

[root@web01 ~]# scp -l 8192 ./oldboy-65-10.0.0.200.ova 172.16.1.61:/tmp
[email protected]'s password: 
oldboy-65-10.0.0.200.ova                  8%   72MB   1.0MB/s   12:11 ETA=

3.sftp 文件传输协议?

为什么不适用命名的方式? 为什么使用xftp?

1.简单,带图形,支持断点续传,支持暂停

6.SSH远程登录方式、用户密码、秘钥方式?

1.基于用户和密码的方式

1.密码太复杂容易忘 lastpass
2.密码太简单不安全

2.基于密钥的方式实现 (指纹)

1.降低密码泄露风险
2.提升用户的便捷性

3.实现免密码登录方式

1.创建一对密钥 公钥+私钥 ==配套

[root@manager ~]# ssh-keygen -C [email protected]
.....一路回车.....

2.将管理机的公钥推送至web服务器上 ( 需要输入对端服务器的密码 )

[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

3.使用 ssh 命令 连接 对应的服务器 ( 检查是否免密码 )

[root@manager ~]# ssh '[email protected]'

4.有问题查看日志

tail -f /var/log/secure
https://www.jianshu.com/p/fb0df700305d

7.SSH场景实践,借助SSH免秘实现跳板机功能?

8.SSH远程连接功能安全优化? fail2ban又是啥?(研究)

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认证,减少连接时产生的延迟

9.fail2ban又是啥?(研究)

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

1.开启Firewalld防火墙

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

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

放行SSHD服务端口

[root@web01 ~]# firewall-cmd --permanent --add-service=ssh --add-service=http 

重载配置

[root@web01 ~]# firewall-cmd --reload

查看已放行端口

[root@web01 ~]# firewall-cmd  --list-service

3.安装fail2ban,需要有epel

[root@web01 ~]# 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@web01 ~]# systemctl start fail2ban.service
[root@web01 ~]# fail2ban-client status sshd

6.清除被封掉的IP地址

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

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

基于密码 + 动态口令 支持
基于密钥 + 动态口令 不支持

https://www.xuliangwei.com/bgx/1345.html

总结:

​ 1.ssh几个客户端命令 scp ssh
​ 2.ssh连接方式 用户名和密码 密钥 ( 最多 ) <---ansible
​ ssh-keygen #命令
​ ssh-copy-id #脚本
​ 3.ssh连接,访问控制
​ 1.不要有公网IP
​ 2.能够使用防火墙限制来源IP ( 你的很多服务器 都有公网 )
​ 3.修改端口 6666
​ 4.禁止root登录
​ 5.禁止使用密码

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