ssh远程协议

37.day05--ssh远程协议
1.SSH基本概述
SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。
1.提供远程连接服务器的服务、2.对传输的数据进行加密

远程连接:  ssh  telnet RDP(Windows)     MAc--RDP-->Windows

ssh 主要是提供给服务器使用(Linux)          安全    数据包都是加密的  22/tcp
telnet 主要是提供给路由器\交换机\防火墙        明文  数据包不进行加密    23/tcp
必须要记下来的............

面试题: 请说说如下服务都是那些端口运行的?
    ftp         20/tcp 21/tcp
    http        80/tcp
    https       443/tcp
    ssh         22/tcp
    telnet      23/tcp
    dns .........   53/tcp 53/udp
    
面试题: 请说说如下端口都代表那些服务?
    80 443 22  3306  9000 10050  10051  

    验证 ssh 与 telnet 的区别?
    
    
    
    1.安装telnet服务
    [root@nfs ~]# yum install telnet-server -y

    2.启动telnet服务
    [root@nfs ~]# systemctl start telnet.socket
    
    3.准备普通用户进行远程链接测试   (开启抓包工具)
    [root@nfs ~]# useradd oldboy
    [root@nfs ~]# echo "1" | passwd --stdin oldboy

    
    telnet验证结果:
        1.不支持root直接登录
        2.所有的传递的数据都是明文
        
    ssh验证结果:    
        1.支持root直接登录
        2.所有传递的数据都是密文

2.SSH相关命令 scp

ssh客户端命令: 远程连接
[root@nfs ~]# ssh 172.16.1.41 #当前客户端是root,则登录的服务端也使用root
[oldboy@nfs ~]$ ssh root@172.16.1.41 #链接对端服务器,并写上链接服务器的用户身份
[root@nfs ~]# ssh -p22 root@172.16.1.41 #链接服务器,指定用户,并指定端口
[root@nfs ~]# ssh -p2222 root@172.16.1.41
ssh: connect to host 172.16.1.41 port 2222: Connection refused

sftp客户端命令: 文件传输
命令:
图形界面: xftp FileZilla
xftp:
1.能上传文件夹
2.能支持断点续传
3.能支持上传大于4个G的文件

rz:
    1.只能上传小于4G的文件
    2.不支持断点续传
    3.不能传文件夹

scp客户端命令: 远程拷贝
scp--->rsync 都是用来远程拷贝
scp是全量
rsync是增量


scp 支持数据的推送和拉取 windows也有scp工具 winscp

推送文件
[root@nfs ~]# scp 12312321 root@172.16.1.41:/root
root@172.16.1.41's password:
12312321 100% 49 44.2KB/s 00:00

拉取文件
[root@nfs ~]# scp root@172.16.1.41:/root/2 ./
root@172.16.1.41's password:
2 100% 4 0.5KB/s 00:00

推送目录
[root@nfs ~]# scp -rp /etc root@172.16.1.41:/root
大量的小文件传输
real 0m59.852s
user 0m9.821s
sys 0m21.730s

打包之后的效果对比
    real    0m7.654s
    user    0m0.040s
    sys     0m0.065s

限速 -l 单位是kb-->KB-->
[root@nfs ~]# dd if=/dev/zero of=/root/file bs=1M count=500

传输的速度 74MB/s 占用实际带宽 1000兆带宽
[root@nfs ~]# scp file 172.16.1.41:/root
root@172.16.1.41's password:
file 100% 500MB 74.0MB/s 00:06

80960kb/8KB/1024=10MB/s 占用实际带宽 100兆 带宽
[root@nfs ~]# scp -l 80960 file 172.16.1.41:/root
root@172.16.1.41's password:
file 100% 500MB 10.0MB/s 00:50

占用10兆带宽-->实际的传输速度1MB-->scp具体换算的单位 8000
[root@nfs ~]# scp -l 8000 file 172.16.1.41:/root
root@172.16.1.41's password:
file 10% 52MB 1.0MB/s 07:22 ETA

安全: 效率就低
性能: 安全就差

3.SSH验证方式

方法一: 用户和密码
知道服务器的IP端口,账号密码,即可通过ssh客户端命令登陆远程主机。
ssh -p22 root@10.0.0.61
root用户
root密码

简单: 简单容易被破解
复杂: 复杂又记不住
密码不要设定为一样:
密码三个月更换一次:  lastpass 1passwd keepass

    人   ---> 道德层面---->

方式二: 秘钥 ( 锁 钥匙 )
降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。

1.在 管理机 生成一对秘钥 ssh-keygen
[root@m01 ~]# ssh-keygen -C xuliangwei@qq.com
[root@m01 ~]# ll ~/.ssh/
总用量 12
-rw-------. 1 root root 1679 5月 24 19:16 id_rsa #私钥 生活中,钥匙
-rw-r--r--. 1 root root 399 5月 24 19:16 id_rsa.pub #公钥 生活中,锁

2.在 管理机 上下发公钥给 nfs服务端 (锁 公钥)
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
root@172.16.1.31's password: #输入需要连接的主机密码

Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@172.16.1.31'"

  1. 管理机 通过ssh命令连接nfs服务器,如果能实现免密码登陆则ok (钥匙 私钥)
    [root@m01 ~]# ssh 'root@172.16.1.31'
    Last login: Fri May 24 19:24:58 2019 from 172.16.1.61
    [root@nfs ~]#

4.将ssh登陆主机的信息放入一个文件,当我执行文件时就自动的链接到该主机了.....

5.将从WIndows下复制好的公钥粘贴至跳板机~/.ssh/authorized_keys中,然后测试
[root@m01 ~]# cd ; umask 077; mkdir -p .ssh ; cd .ssh
[root@m01 .ssh]# vim authorized_keys #添加windows公钥

塞key
我: 公钥信息........
你: 公网IP Port root

扩展:
1.测试链接无需密码
[root@m01 ~]# ssh root@172.16.1.31
[root@nfs ~]#

2.可以不登录对端主机,执行命令
[root@m01 ~]# ssh root@172.16.1.31 "ifconfig eth1"
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.31  netmask 255.255.255.0  broadcast 172.16.1.255

3.使用scp也无需密码
[root@m01 ~]# scp oldboy  root@172.16.1.31:/tmp
oldboy                                           100%   26     1.9KB/s   00:00  

4.ssh密码+ Google Authenticator 实现双向认证
简单来说,就是当用户通过ssh登陆系统时,先输入google的随机验证码,然后在输入服务器的ssh密码

[root@m01 ~]# yum -y install wget gcc make pam-devel libpng-devel pam-devel autoconf automake libtool

[root@m01 ~]# cat ~/.google_authenticator
SKVOCWN23G7AAPSVEDOMWX4H74
" RATE_LIMIT 3 30 1558709812
" WINDOW_SIZE 17
" HOTP_COUNTER 4
47386284
70612256
80548411
83234725
68105428

5.SSH安全优化

SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。

1.更改远程连接登陆的端口
2.禁止ROOT管理员直接登录 --普通用户--sudo提权 || 普通用户 --- su - root
3.密码认证方式改为密钥认证
4.重要服务不使用公网IP地址 ( 跳板机 | [ 防火墙 | 负载均衡 ] )

SSH服务登录防护需进行如下配置调整,先对如下参数进行了解
Port 6666 # 修改sshd服务监听的端口
PermitRootLogin no # no代表禁止root用户直接远程连接
PasswordAuthentication no # 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###


Port 6666 #减少被扫描到的几率
PermitRootLogin no #禁止root直接通过远程连接
PasswordAuthentication no #禁止所有用户使用密码远程连接

变更端口为6666,防止别人轻易的被扫描.
root用户无法通过密码登录,也无法通过秘钥登录,总之就是不行.
普通用户仅能通过秘钥登录,无法通过密码登录.


ssh-keygen生成秘钥非交互,注意,如果存在则会提示是否覆盖.
ssh-keygen -P "" -f ~/.ssh/id_rsa

6.SSH安全防护
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

7.如果有ssh秘钥无法正常连接的情况,可以尝试使用如下的调试模式.开启ssh debug调试模式。
(1)31服务器上开启临时ssh服务 /usr/sbin/sshd -p 10001 -d
(2)61服务器上访问 ssh -vvv -p 10001 root@10.0.0.31
(3)31服务器上查看debug日志,发现身份验证被拒绝,目录的所有权错误。
Authentication refused: bad ownership or modes for directory /root

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容