Linux服務器安全之用戶密鑰認證登錄


轉自:http://blog.sina.com.cn/s/blog_6561ca8c0102vb0d.html

一、 密鑰簡介

在Linux下,遠程登錄系統有兩種認證方式:密碼認證和密鑰認證。密碼認證方式是一種傳統的安全策略。設置一個相對復雜的密碼,對系統安全能起到一定的防護作用,但是也面臨一些其他問題,例如密碼暴力破解、密碼泄露、密碼丟失等,同時過於復雜的密碼也會對運維工作造成一定的負擔。

密鑰認證是一種新型的認證方式,公用密鑰存儲在遠程服務器上,專用密鑰保存在本地,當需要登錄系統時,通過本地專用密鑰和遠程服務器的公用密鑰進行配對認證,如果認證成功,就可以成功登錄系統。這種認證方式避免了被暴力破解的危險,同時只要保存在本地的專用密鑰不被黑客盜用,攻擊者一般無法通過密鑰認證的方式進入系統。 

二、 服務器端密鑰的生成和配置

OpenSSH的密鑰認證體系有兩種:RSA和DSA,分別是兩種不同的加解密算法。T710服務器中管理員主要采用RSA密鑰認證。用戶在使用初始密鑰登錄后,可自行修改使用其他密鑰認證方法。

服務器端RSA密鑰的生成和配置步驟如下:

1.      在用戶目錄下新建一個.ssh目錄,並將其目錄權限改為700(僅用戶自身有讀寫操作權限):

# mkdir .ssh

# chmod 700 .ssh

2.      進入.ssh目錄,使用ssh-keygen命令生成rsa密鑰對:

# ssh-keygen –t rsa  (一路回車即可)

3.      這時生成了兩個文件:id_rsa和id_rsa.pub,其中前一個為私鑰,后一個為公鑰,公鑰須保留在服務器上,私鑰拷貝到客戶端機器上

4.      在.ssh目錄中新建一個文件名為:authorized_keys,將公鑰內容拷貝到這個文件中,並將文件權限改為600(僅用戶自身有讀寫權限)

# touch authorized_keys

# cat id_rsa.pub >> authorized_keys

# chmod 600 authorzied_keys

到此,服務器端的密鑰設置完成,這里需注意要保證.ssh和authorized_keys都僅用戶自身有寫權限,否則驗證無效,這也是系統處於安全性考慮做的設置。

三、客戶端密鑰的設置

首先我們需要將在服務器端生成的私鑰id_rsa拷貝到要用來登錄服務器的客戶端電腦。接下來根據客戶端電腦操作系統的不同進行分別說明:

 

Windows系統 

在Windows系統下,一般我們采用不同的X server工具來登錄,需要先將私鑰導入到登錄工具的密鑰管理器,建立一個新的連接,用戶名和主機的填寫與采用用戶名密碼登錄一樣,登錄不再選擇”Password”而是”Public key",User Name填寫自己的登錄用戶名,User Key選擇之前導入的服務器私鑰 ,保存之后,即可無密碼登錄。

 

Linux系統

Linux系統下設置同樣先將服務器私鑰拷貝到客戶端

1.      與服務器端一樣,在用戶目錄下新建一個.ssh目錄,並將其目錄權限改為700(僅用戶自身有讀寫操作權限):

       # mkdir .ssh

      # chmod 700 .ssh

2.      將私鑰id_rsa拷貝到.ssh目錄下,檢查文件權限是否為600,如果不是,需要更改文件權限為600

      # mv  id_rsa  ./.ssh

      # chmod 600 id_rsa

3.      這時即設置完畢,輸入ssh命令,即可直接連接到服務器,無需輸入用戶名密碼

      # ssh –l 用戶名 服務器IP

4.      如果需要從客戶端通過密鑰認證的方式登錄不同的服務器,私鑰的名稱不能都是用id_rsa,這是可以在.ssh目錄下建立一個config文件來進行區分,config文件權限同樣設為600

      # touch config

      # chmod 600 config

5.      為config文件添加內容如下:

      User username      //username 填寫自己的登錄用戶名

      Host server_IP   //設置服務器IP

      IdentityFile ~/.ssh/rsa_file   //rsa_file填寫私鑰名稱

      Port 22

這樣,用戶可以將私鑰id_rsa改為與config文件中irs_file同名的文件名,就可以匹配登錄服務器了。

 

Linux禁止root賬戶遠程登錄

      Linux系統中,root用戶幾乎擁有所有的權限,遠高於Windows系統中的administrator用戶權限。一旦root用戶信息被泄露,對於我們的服務器來說將是極為致命的威脅。所以禁止root用戶通過ssh的方式進行遠程登錄,這樣可以極大的提高服務器的安全性,即使是root用戶密碼泄露出去也能夠保障服務器的安全。就下來,就由專業運營香港服務器、美國服務器、韓國服務器等國外服務器的天下數據為大家詳細介紹如何禁止ROOT用戶通過SSH方式遠程登錄。

首先創建一個doiido普通用戶加入到相應的組

這里必須要新建一個用戶,否則將會造成無法通過遠程ssh登錄服務器

# groupadd doiido

# useradd -g doiido doiido

更改用戶 doiido 的密碼

# passwd doiido

然后修改sshd_config文件

# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

 

最后重啟ssh服務

# service sshd restart

這樣即使root用戶密碼泄漏,別人也無法通過root用戶直接連接服務器。


免責聲明!

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



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