Centos7服務器配置筆記-2ssh服務端配置


Centos7服務器配置筆記-2ssh服務端配置

簡述

  服務器一般都是采用遠程登錄來管理,在windows上,我們基本上都是用遠程桌面來管理。linux用得不多,之前也嘗試用過桌面環境來管理,發現桌面環境最大的優勢在於可視化操作,很多時候,就算你不清楚命令,也能完成你想做的事。但桌面環境也有比較大的缺點,一個是相對字符終端資源耗費要多不少,二是x會話用下來不是太穩定,崩潰卡死這種狀況也是時有發生。所以現在考慮還是直接用字符終端來管理。一般是通過ssh遠程登錄到一個虛擬字符終端進行操作。

ssh 服務端配置

  黑客對ssh登錄破解也是非常頻繁的。其中root帳號尤其是重災區(因為帳號不用猜了,只要猜密碼就可以了)。解決辦法一般不外乎以下幾種:

  1. 禁用root遠程登錄
  2. 修改默認22端口
  3. 限制22端口能訪問IP地址
  4. 不使用密碼,改用密鑰訪問。
  5. 密碼輸錯超過指定次數后封IP

阿里雲自帶防火牆,但默認防火牆對22端口是全開放的,對於只在公司辦公的用戶,其實可以采用第3種方式,通過防火牆將能訪問的IP限制在本公司的公網IP段內。當然,centos自帶的防火牆firewall也是有這功能的。前四項在ssh的服務端配置文件里進行配置。其實個人覺得只要改成用密鑰訪問,就能杜絕多數攻擊了。不過配置的時候還是把各種方式都玩了一下,下面就說明一下配置文件要改的地方。默認 SSH服務提供程序為openssh server,他的配置文件為在 /etc/ssh/sshd_config,純文本,里面多數內容都被注釋了,並寫了一些簡要的說明。
如果我們要開啟密鑰方式登錄,並關閉密碼方式登錄,需要改的是以下幾行內容(注意,如果前面有注釋,一定要把注釋去掉

UseDNS no #僅用dns反向查找,可大大提高登錄連接速度

#關閉GSSAPI驗證,提高連接速度
GSSAPIAuthentication no

Protocol 2 #僅使用ssh-2版本協議,增強安全性

#開啟公驗證
PubkeyAuthentication yes #是否允許公鑰認證。僅可以用於SSH-2。默認值為”yes”。

#禁用密碼驗證方式
PasswordAuthentication no

#這個好像也要設置為no,不然可能還是可以用密碼方式登錄
ChallengeResponseAuthentication no

上面的是比較簡單的配置,如果要配置的復雜一些,可能就要用到Match指令,下面是一個相對復雜的配置:

#設置root用戶只能從指定地址訪問(下面的IP都是偽造的),並且只能使用密鑰方式進行驗證登錄 Match Address 161.192.37.71,161.192.37.35,161.192.37.196 User root PermitRootLogin yes PasswordAuthentication no RSAAuthentication yes PubkeyAuthentication yes AllowUsers root #允許 "ssh-login-users" 組用戶從任意地方登錄,並且登錄方式也沒做限制 Match Group ssh-login-users PasswordAuthentication yes RSAAuthentication yes PubkeyAuthentication yes AllowUsers *

 

 

Match指令組合在一起后可以做非常精致的定制,有興趣的朋友可以訪問文末參考資料,這里只做一個簡單的說明引用

Match
引入一個條件塊。塊的結尾標志是另一個 Match 指令或者文件結尾。
如果 Match 行上指定的條件都滿足,那么隨后的指令將覆蓋全局配置中的指令。
Match 的值是一個或多個”條件-模式”對。可用的”條件”是:User, Group, Host, Address 。
只有下列指令可以在 Match 塊中使用:AllowTcpForwarding, Banner,ForceCommand, GatewayPorts, GSSApiAuthentication,
KbdInteractiveAuthentication, KerberosAuthentication,
PasswordAuthentication, PermitOpen, PermitRootLogin,
RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
X11Forwarding, X11UseLocalHost

如果要修改ssh默認端口,需要修改sshd_config文件中下面這一行

Port 2222 #將端口改成2222

#下面是監聽地址,一般不需要動,默認就是注釋掉的
#ListenAddress 0.0.0.0
#ListenAddress ::

配置完成后保存,並重啟sshd服務

systemctl restart sshd

 

可以再看一下重啟后的狀態

systemctl status sshd

 

sshd_config配置詳細可參考文末參考sshd_config配置 詳解


ssh 客戶端配置

ssh有很多客戶端可以選擇,我這里主要用了putty和winscp,其中putty主要是用於登錄終端進行各類操作,winscp則主要提供圖形化的文件操作功能。
如果服務端ssh配置是通過密碼來認證,那個putty和winscp基本上不需要做啥特殊的處理,在用戶名、密碼、主機的位置填入相應的值,直接連接就行了。(winscp有內置的直接調用putty的按鈕)。
下面主要叭一下服務端ssh配置是通用密鑰來認證方式的配置方法。
密鑰認證相對密碼認證,我理解最主要的好處是在於密鑰的位數是很長的,標准的RSA加密長度為2048位,這個大大增加了暴力破解的難度。至於密碼方式需要輸入,而導致實際操作時容易被別人窺探這類好處,其實在現有多數客戶端軟件中是不存在的,像winscp這類軟件都提供保存密碼功能,是不存在這類問題的。如果用戶自己的機器被黑,那不管是用密碼還是用密鑰,都是差不多的結果。
ssh密鑰認證需要在服務器用戶home目錄中的指定文件中添加一個公鑰。自己保存私鑰。下面簡單講述一下過程:

生成密鑰對

生成方法有很多,如果手頭有linux系統,直接在終端輸入 ssh-keygen -t rsa,按鈕系統提示進行操作(建議在Enter passphrase 項時輸入密鑰保護密碼,以提高密鑰的安全性)就會在當前用戶目錄(~)中的.ssh目錄中生成id_rsa和 id_rsa.pub兩個文件,id_rsa就是私鑰,自己保存;id_rsa.pub就是公鑰,要復制到服務器上。

配置ssh服務器

服務端主要配置工作為將公鑰放入你要登錄的帳戶家目錄下指定文件中。例如,你在服務器上的用戶名是kitty,那么你第一步把id_rsa.pub復制到服務器 /home/kitty/.ssh/目錄中,然后往 /home/kitty/.ssh/authorized_keys 文件中添加你的公鑰(如果沒有該文件就新建一個,並設置屬性為僅自己可讀寫chmod 600 authorized_keys),
一般添加公鑰常用命令是 cat id_rsa.pub>>authorized_keys
添加完成后重啟ssh服務: systemctl restart sshd

配置ssh客戶端

客戶端以putty為例說明,詳細操作可參考設置Putty SSH使用密鑰登錄Linux VPS主機
首先,putty與linux的密鑰格式有一定區別,所以先要把私鑰轉換成putty支持的私鑰格式。
打開putty.exe同目錄下的puttygen.exe程序,在主界面中選擇load按鈕,加載一個私鑰文件,在打開文件對話框中,選擇id_rsa文件(如果你在生成密鑰對時設置了私鑰密碼,這時會提示你輸入密碼),打開私鑰文件。再點擊save private key,將私鑰另存為ppk為后綴的私鑰文件(如id_rsa.ppk)。私鑰轉換格式完成。
打開putty,在Connection->SSH->Auth頁中,在private key file for authentication中選擇上一步轉換的私鑰文件。
然后切換到在session頁,填入相應host地址,port,和session名稱(saved sessions 標題下的文本檔內),單擊save按鈕,將session保存,下次登錄時,選擇該session即可以以密鑰方式登錄服務器了。

參考資料

[1].sshd_config配置 詳解
[2]. CentOS/Linux 解決 SSH 連接慢
[3].設置Putty SSH使用密鑰登錄Linux VPS主機


免責聲明!

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



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