1.什么是ssh
ssh是一个应用层安全协议
2.ssh主要的功能
实现远程登录,数据传输过程中进行加密
3.ssh与telnet之间的区别
ssh:加密 -----> 22 ------>root直接登录
Telnet:明文-----> 23------->不支持root 直接登录
4.抓包分析ssh与telnet的区别
[root@backup ~]#yum install telnet-server -y(安 装Telnet服务)
[root@backup ~]#systemctl start telnet.socket(开启Telnet服务)
[root@backup ~]#echo oollddbbooyy |sed -r's#(.)(.)#\1#g' oldboy
ps:服务器都是使用的ssh协议实现的远程登录
对于路由器交换机都是使用的Telnet协议(web界面调试)
5.ssh相关客户端指令ssh,scp,sftpp?
(1)ssh(windows Xshhell crt)(Mac ssh命令crt)
ssh root@172.16.1.41
[root@web01 ~]# root@172.16.1.41's password:
(2)scp:rsync增量 scp全量(每次都是覆盖)ssh协议
参数:-r(拷贝目录)
推送:[root@web01 ~]# scp./web-file root@172.16.1.41:/tmp
获取:[root@web01 ~]# scp root@172.16.1.41:/tmp/web-file ./test
限速:[root@web01 ~]# scp -l 8192 ./1.txt 172.16.1.41:/tmp
(3)sftp 文件传输协议
简单,带图形,支持断点续传,支持暂停
6.ssh远程登录方式,用户密码,密匙方式
(1)基于用户和密码的方式------>容易忘,不安全
(2)基于密钥的方式实现-----降低泄密风险,提升用户的便捷性
(3)实现免密登录方式
①创建密钥----->公匙+私匙
ssh-keygen -C manager@qq.com----一路回车
②将管理机的公匙推送至web服务器上(需要输入对端服务器的密码)
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
③使用ssh命令链接对应的服务器(检查是否免密码)
[root@manager ~]# ssh 'root@172.16.1.7'
④有问题查看
tail -f /var/log/secure
https://www.jianshu.com/p/fb0df700305d
7.ssh场景实践,借助ssh免密实现跳板机功能

https://www.jianshu.com/p/5fe9152fe78d
8.SSH远程连接功能安全优化?
①更改远程连接登陆的端口 port 6666
修改防火墙端口拦截,同意新的端口:6666
*:打开防火墙配置文件:vim /etc/sysconfig/iptables
*:同意6666端口:-A INPUT -p tcp -m state --state NEW -m tcp --dport 6666 -j ACCEPT
*:ESC,:wq 命令退出编辑
*:重启防火墙:service iptables restart;
:修改SSH默认端口号,修改为:6666
1:vi /etc/ssh/sshd_config 17行prot 22改为port 6666
2:ESC,:wq 保存退出
3:重启SSHD服务:service httpd restart;
:如果是第三方云服务,请检查他们是否对端口号6666拦截
②禁止ROOT管理员直接登录 PermitRootLogin no
直接 xshell -->root --> server (禁止用户名密码 禁止密钥)
间接 xshell -->oldxu --> server ---> su - root
新建一个用户,用来登录
useradd a
设置密码
passwd 123
修改SSHD配置,禁用root登录
vi /etc/ssh/sshd_config
找到“#PermitRootLogin yes”把注释去掉,把后面的yes改成no。
重启SSHD服务
service sshd restart
下次登陆的时候先用a用户登录,然后再使用su root命令,切换到root下即可!
③密码认证方式改为密钥认证 PasswordAuthentication no
④重要服务不使用公网IP地址 !!!!!!!!!!!!!!!!!
⑤使用防火墙限制来源IP地址 软件防火墙 | 硬件防火墙
⑥.修改后的配置 [测试完后记得还原]
[root@manager ~]# vim /etc/ssh/sshd_config
Port 6666 # 变更SSH服务远程连接端口
PermitRootLogin no # 禁止root用户直接远程登录
PasswordAuthentication no # 禁止使用密码直接远程登录
UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟
⑦Xshell生成密钥方式认证连接linux服务器
https://blog.51cto.com/7424593/1719853
9.fail2ban又是啥?(研究)
fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。
①开启Firewalld防火墙
[root@bgx ~]# systemctl start firewalld
[root@bgx ~]# systemctl enable firewalld
[root@bgx ~]# firewall-cmd --state
running
②修改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
③安装fail2ban,需要有epel
[root@bgx ~]# yum install fail2ban fail2ban-firewalld mailx -y
④配置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
⑤启动服务,并检查状态
[root@bgx ~]# systemctl start fail2ban.service
[root@bgx ~]# fail2ban-client status sshd
⑥清除被封掉的IP地址
[root@bgx ~]# fail2ban-client set sshd unbanip 10.0.0.1
10.SSH如何结合Google Authenticator 实现双向验证? (适合自己用)
基于密码 + 动态口令 支持
基于密钥 + 动态口令 不支持
https://www.xuliangwei.com/bgx/1345.html
网友评论