ssh為secure shell的縮寫,ssh為建立在應用層基礎上的安全協定。在進行資料傳輸時,會對封包進行加密處理,加密後在進行資料傳輸。確保了資料傳輸安全.
主要功能是:
1.提供遠端連線功能
2.提供安全加密服務
yum -y install telnet-server
systemctl start telnet.socket
yum -y install net-tool
net-stat -lntp
名稱 | 檔案資訊型別 | 埠號 | 特徵 |
---|---|---|---|
ssh | 密文 | 22/tcp | root登入 |
telnet | 明文 | 23/tcp | 不支援直接root登入 |
名稱 | 應用場景 | |
---|---|---|
ssh | linux mac ubuntu | |
telnet | 企業級(路由器 交換機 防火牆) |
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 指定連線對端伺服器的埠
[root@backup ~]# scp oldxu.com root@172.16.1.31:/root/
[root@backup ~]# scp root@172.16.1.31:/root/oldxu.com /tmp/
-r 引數
-P 埠
-l 限速 #限速為8096kb,換算為MB,要除以 8096/8=1024KB=1MB
[root@backup ~]# scp -r -P2222 etc.tar.gz root@172.16.1.31:/tmp/
1.通常用來拷貝組態檔
2.大檔案方式
1.先打包,在推播
2.rsync方式
限速非常的重要
1.密碼複雜容易忘
2.密碼簡單不安全
鎖(公鑰) 鑰匙(私鑰)
我們現在完成不需要輸入密碼登入。
實驗環境:準備兩臺虛擬機器器一臺管理(manager)m10.0.0.61和backup10.0.0.41伺服器
我們沒有設定前ssh是需要輸入密碼登入的。ssh root@172.16.1.41
[root@manager ~]# ssh -keygen 【 -C(指定郵箱) 552408925@qq.com】
檢視生產的祕鑰對檔案
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
#將61伺服器的root使用者的公鑰推播給31伺服器的root使用者
[root@manager ~]# ssh ‘root@172.16.1.41’
Last login: Mon Dec 2 11:03:45 2019 from m01
[root@backup ~]#
塞key 。老師 公鑰 -----> 學生 公司的伺服器上
你想登入哪臺伺服器:
1.要知道那臺伺服器的密碼
2.將你的公鑰放置對應伺服器的對應目錄下即可
實驗環境:
[root@m01 ~]# cat ~/.ssh/id_rsa.pub 檢視老師m的公鑰
[root@iZ8vbeeelmyzkhyl14sb80Z ~]# vim ~/.ssh/authorized_keys
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可以監控系統紀錄檔,並且根據一定規則匹配異常IP後使用Firewalld將其遮蔽,尤其是針對一些爆破/掃描(nmap)等非常有效。
[root@bgx ~]# systemctl start firewalld
[root@bgx ~]# systemctl enable firewalld
[root@bgx ~]# firewall-cmd --state
running
#放行SSHD伺服器埠
[root@bgx ~]# firewall-cmd --permanent --add-service=ssh --add-service=http
#過載設定
[root@bgx ~]# firewall-cmd --reload
#檢視已放行埠
[root@bgx ~]# firewall-cmd --list-service
[root@bgx ~]# yum install fail2ban fail2ban-firewalld mailx -y
[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
[root@bgx ~]# fail2ban-client set sshd unbanip 10.0.0.1