SSH免密登陸與SSH黑白名單

簡介

FTP、Telnet 在網絡上經過明文傳輸口令和數據,這是很是不安全的,很容易受到其餘別有用心的人的利用,好比截獲你的口令,而後冒充你的數據。ssh經過對傳輸數據加密實現安全登陸,並且ssh對傳輸數據進行加密,減少了傳輸時延。雖然ssh有必定的安全措施保護數據傳輸過程免受干擾,但若是登陸的機器自己處於危險的環境中,也難免要受收到一些干擾,所以要對處於危險環境的IP作一些限制,也就是黑名單和白名單linux

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

目的:實現SSH登陸centos

查看SSH服務

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

rpm -qa|grep ssh

若是沒有安裝則安裝一下服務器

yum -y install openssh*

注意:若是操做過程當中出現了問題,能夠直接卸載,而後從新安裝網絡

yum remover -y openssh*

要確保登陸與被登錄的兩臺機器都開啓了SSH服務ssh

首先查看SSH狀態tcp

systemctl status sshd.service

若是沒有啓動則啓動SSH服務加密

systemctl start sshd.service

設置開機自啓centos7

systemctl enable sshd.service

1、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地址驗證是否退出

2、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

3、禁止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,可以正常登陸

4、更改默認端口號

爲了安全考慮,咱們還能夠修改默認的端口號,減少被黑客攻擊成功的風險

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

 重啓SSH服務

systemctl restart sshd.service

防火牆放行12233端口

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

重啓防火牆

firewall-cmd --reload

查看端口放行狀況

firewall-cmd -–list-port

 能夠看到已經可以經過修改後的端口登陸了

5、設置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服務器登陸到本機。

相關文章
相關標籤/搜索