SSH基本介绍
什么是SSH?
SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全
SSH主要的功能是?
SSH与Telnet之间有什么关系?
抓包分析SSH与Telnet的区别?
明文 telnet 23/tcp 不支持直接root登录
密文 ssh 22/tcp root登录
ssh
linux mac ubuntu <---
telnet
路由器 交换机 防火墙 <---企业
SSH相关客户端指令ssh、scp、sftp?
ssh 连接服务器
ssh root@10.0.0.1 -->连接10.0.0.1服务器,使用root用户
ssh 10.0.0.1 -->连接10.0.0.1服务器,使用的用户取决于当前登录系统的用户
-p
ssh root@10.0.0.1 -p 22 指定连接对端服务器的端口
scp 远程拷贝
推送push
1.将本地oldxu.com文件, 推送到31服务器的/root目录下,使用的是31服务器的root系统用户身份
[root@backup ~]# scp oldxu.com root@172.16.1.31:/root/
拉取pull
2.获取31服务器的/root/oldxu.com文件,至本地/tmp目录,使用的是31的root系统用户身份
[root@backup ~]# scp root@172.16.1.31:/root/oldxu.com /tmp/
3.拷贝目录
-r 参数
-P 端口
-l 限速 #限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
[root@backup ~]# scp -r -P2222 etc.tar.gz root@172.16.1.31:/tmp/
4.scp建议:
1.通常用来拷贝配置文件
2.大文件方式
1.先打包,在推送
2.rsync方式
限速非常的重要
SSH远程登录方式、用户密码、秘钥方式?
1.用户密码: lastpass | 1password
.....
1.密码复杂容易忘
2.密码简单不安全
2.秘钥方式:
锁(公钥) 钥匙(私钥)
1) 生成秘钥对 172.16.1.61
[root@manager ~]# ssh-keygen -C 552408925@qq.com
2) 将A服务器公钥推送到B服务器 172.16.1.61 ---> 172.16.1.31
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
#将61服务器的root用户的公钥推送给31服务器的root用户
3) 测试A服务器是否能免密码登录B服务器
[root@manager ~]# ssh 'root@172.16.1.41'
Last login: Mon Dec 2 11:03:45 2019 from m01
[root@backup ~]#
塞key
老师 公钥 -----> 学生 公司的服务器上
你想登录哪台服务器
1.要知道那台服务器的密码
2.将你的公钥放置对应服务器的对应目录下即可
SSH场景实践,借助SSH免秘实现跳板机功能?
SSH远程连接功能安全优化?
SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
1.不使用公网IP地址
2.禁止ROOT管理员直接登录 -->
3.更改远程连接登陆的端口 --> 6666 3344 44555 52179
4.密码认证方式改为密钥认证 -->
5.使用防火墙限制来源IP地址
SSH服务登录防护需进行如下配置调整,先对如下参数进行了解
vim /etc/ssh/sshd_config
Port 6666 # 变更SSH服务远程连接端口
PermitRootLogin no # 禁止root用户直接远程登录
PasswordAuthentication no # 禁止使用密码直接远程登录
UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟
将如下具体配置添加至/etc/ssh/sshd_config文件中,参数需根据实际情况进行调整
###SSH###
#Port 6666
#PasswordAuthentication no
#PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
###END###
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
SSH如何结合Google Authenticator 实现双向验证? (只支持你使用密码的方式)
1.先输入手机上的验证码
2.输入密码
https://www.xuliangwei.com/bgx/1345.html