ssh服務(公私鑰匙,ssh優化)

2020-10-21 15:00:40

🎶一.ssh和telnet區別小實驗!

1.ssh

ssh為secure shell的縮寫,ssh為建立在應用層基礎上的安全協定。在進行資料傳輸時,會對封包進行加密處理,加密後在進行資料傳輸。確保了資料傳輸安全.

圖片

主要功能是:

1.提供遠端連線功能

2.提供安全加密服務

2.telnet

圖片

3.兩者之間的遠端連線小測試

telnet:

1.安裝包

yum -y install telnet-server
systemctl start telnet.socket

圖片

2. 監聽

yum -y install net-tool
net-stat -lntp

圖片

3.xshell,設定telnet連線

圖片

4.登陸

圖片

5.抓包

①開啟wireshark。

圖片

②選擇監聽,獲取那個網路卡

圖片

③ 我們xshell telnet連線

圖片

④在wireshark中會顯示出tcp telnet一下過程。

我們找到telnet記錄,並追蹤它的TCP。可以檢視到裡面的報文資訊是明文的。

圖片

圖片

shell

①我們在用wireshake觀察ssh連線

圖片

圖片

4.總結

1.抓包分析SSH與Telnet的區別?

名稱檔案資訊型別埠號特徵
ssh密文22/tcproot登入
telnet明文23/tcp不支援直接root登入

2.ssh和telnet應用場景?

名稱應用場景
sshlinux mac ubuntu
telnet企業級(路由器 交換機 防火牆)

3.安全性對比原理圖

圖片

🎶二.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.祕鑰方式:

鎖(公鑰) 鑰匙(私鑰)

圖片

💗3.本地虛擬機器器免密碼登入

我們現在完成不需要輸入密碼登入。

實驗環境:準備兩臺虛擬機器器一臺管理(manager)m10.0.0.61和backup10.0.0.41伺服器

我們沒有設定前ssh是需要輸入密碼登入的。ssh root@172.16.1.41

圖片

1) 生成祕鑰對 172.16.1.61

[root@manager ~]# ssh -keygen 【 -C(指定郵箱) 552408925@qq.com】

圖片

檢視生產的祕鑰對檔案

圖片

2) 將A伺服器公鑰推播到B伺服器 172.16.1.61 —> 172.16.1.41

[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 ~]#

圖片

💗4. 本地虛擬機器器免密碼登入阿里雲伺服器成功

塞key 。老師 公鑰 -----> 學生 公司的伺服器上

你想登入哪臺伺服器:

1.要知道那臺伺服器的密碼

2.將你的公鑰放置對應伺服器的對應目錄下即可

實驗環境:

1)我們先準備一個有外網的伺服器(阿里雲ecs)

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

2)我們把ecs01當作學生的伺服器,我們把m當作老師

a.m剛才上面已經建立好了祕鑰對 ,我們把公鑰複製到ecs01伺服器上面。

[root@m01 ~]# cat ~/.ssh/id_rsa.pub 檢視老師m的公鑰

圖片

b.複製m的公鑰貼上到ecs01學生機伺服器放置金鑰的組態檔中 ~/.ssh/authorized_keys

[root@iZ8vbeeelmyzkhyl14sb80Z ~]# vim ~/.ssh/authorized_keys

圖片

圖片

c.測試老師m去免密碼遠端連線到阿里雲伺服器ecs01上。

圖片

🎶四.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將其遮蔽,尤其是針對一些爆破/掃描(nmap)等非常有效。

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