SSH實現免密登錄並設置黑白名單


簡介

FTP、Telnet 在網絡上通過明文傳輸口令和數據,這是非常不安全的,很容易受到其他別有用心的人的利用,比如截獲你的口令,然后冒充你的數據。ssh通過對傳輸數據加密實現安全登錄,而且ssh對傳輸數據進行加密,減小了傳輸時延。雖然ssh有一定的安全措施保護數據傳輸過程免受干擾,但如果登錄的機器本身處於危險的環境中,也不免要受收到一些干擾,因此要對處於危險環境的IP做一些限制,也就是黑名單和白名單

環境:兩台centos7服務器。192.168.92.133和192.168.92.137

目的:實現SSH登錄

查看SSH服務

centos7默認安裝了SSH,查看是否有SSH服務

rpm -qa|grep ssh

如果沒有安裝則安裝一下

yum -y install openssh*

注意:如果操作過程中出現了問題,可以直接卸載,然后重新安裝

yum remover -y openssh*

要確保登錄與被登陸的兩台機器都開啟了SSH服務

首先查看SSH狀態

systemctl status sshd.service

如果沒有啟動則啟動SSH服務

systemctl start sshd.service

設置開機自啟

systemctl enable sshd.service

一、ssh登錄方式

1.不指定用戶,使用默認的root賬戶登錄

ssh 192.168.92.137

2.登錄時指定用戶

ssh –l root 192.168.92.137
或者
ssh root@192.168.92.137

3.SSH默認使用22端口登錄,如果被登陸機器更改了端口號,則需要使用指定的端口登錄

ssh –p 12580 192.168.92.137
ssh –l root –p 12580 192.168.92.137
ssh –p 12580 root@192.168.92.137

第一次登陸時會出現如下情況,會問你是否繼續此連接,輸入yes,然后提示你輸入對方機器對應賬號的密碼,通過查看ip,發現已經登錄上去了

需要退出登錄的話,輸入exit,可以查看IP地址驗證是否退出

二、ssh實現免密登錄

每次登錄都需要輸入密碼挺麻煩的,如果有一種既安全又不用輸密碼的方式就方便許多了。這里就需要使用到公鑰和私鑰的知識了。

簡單介紹一下。說到公鑰和私鑰,就要想到鎖和鑰匙的關系,公鑰相當於鎖,鎖在大門上,任何人都可以看見。私鑰相當於鑰匙,只有有鑰匙的人才能打開鎖。鎖和鑰匙相當於驗證身份的信物,只有用鑰匙打開鎖,我會認為是自己人,讓你進來喝口茶,坐一坐。是不是整得還挺浪漫。

假如鎖鎖住的是寶物,並且還有人守護寶物,等待有緣人的到來。當然,守護者會去驗證你的身份,驗證身份的唯一標准就是是否能打開鎖。當年藏寶的人把鎖留下,肯定還有鑰匙去開鎖。本來只有一把鑰匙,但為了怕丟了又配了一把,所以他本人有鑰匙可以隨時來看看,而另一把鑰匙在他流浪江湖的時候給了一位有緣人,因此這位有緣人也可以通過驗證打開鎖,進而驗證身份得到寶物。

說明

兩台服務器:192.168.92.133和192.168.92.137

系統:centos7

目的:133服務器免密登錄到137服務器root用戶

在133服務器上,生成公鑰和秘鑰

ssh-keygen

首先提示你生成秘鑰的路徑,如果不輸入路徑則默認生成在當前用戶家目錄下的.ssh目錄中,當前賬戶為root,所以生成的秘鑰默認放在/root/.ssh/id_rsa

如果之前對應文件已經存在同名秘鑰文件,則會提示你是否覆蓋,如果該秘鑰已用於連接其他服務器,則不要覆蓋。以下為不存在同名文件,繼續提示你為該秘鑰設置密碼,隨后確認密碼。設置密碼后,每次使用秘鑰都要輸入密碼。

這里我們沒有輸入密碼,直接兩個回車

 生成之后查看.ssh隱藏文件,id_rsa為私鑰文件,id_rsa.pub為公鑰文件

 因為我們要連接137服務器,因此要把公鑰交給137服務器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.92.137

其中會提示你輸入137服務器的密碼,往后不會再讓你輸入

 現在,就可以通過SSH免密登錄到137服務器了

ssh root@192.168.92.137

 我們可以通過查看.ssh目錄下的known_hosts文件查看已知的主機

cat /root/.ssh/know_hosts

三、禁止root登錄

由於root用戶具有超級權限,隨意的使用root權限可能會帶來一些隱患,因此我們需要禁止root用戶登錄,只開放普通用戶登錄,當需要root權限時,再切換到root用戶

在137服務器中修改sshd_config文件

vim /etc/ssh/sshd_config

找到PermitRootlogin yes,去掉#,把yes改為no

 重啟SSH服務

systemctl restart sshd.service

從133服務器登錄到137服務器的root賬戶,可以看到已被拒絕登錄

 登錄普通用戶tc,能夠正常登錄

四、更改默認端口號

為了安全考慮,我們還可以修改默認的端口號,減小被黑客攻擊成功的風險

找到#Port 22,去掉注釋,修改成一個五位的端口:Port 12333

 重啟SSH服務

systemctl restart sshd.service

防火牆放行12233端口

firewall-cmd --permanent --add-port=12233/tcp

重啟防火牆

firewall-cmd --reload

查看端口放行情況

firewall-cmd -–list-port

 可以看到已經能夠通過修改后的端口登錄了

五、設置SSH黑白名單

 SSH通過設置黑名單或白名單做某些限制,比如禁止通過某賬號登錄,或者禁止從某ip登錄

1.限制或允許通過某賬號登錄

在137服務器/etc/ssh/sshd_config里添加

DenyUsers tc

 可以看到現在無法通過tc用戶登錄到137服務器,而root用戶可以正常登錄

 如果為AllowUsers tc,則為允許tc用戶登錄

AllowUsers tc

每次登錄還需要輸入用戶名和ip,感覺比較麻煩,可以通過配置SSH快捷登錄直接登錄到linux服務器。

編輯當前用戶家目錄下的.ssh/config文件,如果沒有則創建一個

touch config
vim config

添加如下信息

Host   alias  #自定義別名
HostName  hostname  #替換為你的ssh服務器ip
Port   port   #ssh服務器端口,默認22
User  user   #ssh服務器用戶名
IdentityFile   ~/.ssh/id_rsa  #生成的公鑰文件對應的私鑰文件

 保存並退出

 可以看到直接通過ssh aliyun登錄到135服務器了

2.允許通過某個ip登錄

vim /etc/hosts.allow

可以編輯如下信息

sshd:192.168.92.133:allow  #允許 192.168.0.1 這個 IP 地址 ssh 登錄
sshd:192.168.92.0/24:allow #允許 192.168.92.0/24 這段 IP 地址的用戶登錄
sshd:ALL # 允許全部的 ip通過ssh 登錄 

也可以限制從某ip登錄

vim /etc/hosts.deny

可以編輯如下信息

sshd:192.168.92.135:deny #拒絕135這個IP地址通過ssh登錄
sshd:all:deny    #拒絕所欲sshd遠程連接

這里我們對host.deny設置,禁止通過135服務器登錄到本機

重啟服務

systemctl restart sshd

發現已經不能通過135服務器登錄到本機

那么,如果hosts.allow設置為允許133服務器登錄,同時,hosts.deny為拒絕133服務器登錄的時候,由於hosts.allow文件的優先級高,因此此時可以通過135服務器登錄到本機。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM