ssh服務介紹及配置


一、ssh介紹

1、什么是 ssh

ssh 是 Secure Shell 的縮寫,是一個建立在應用層上的安全遠程管理協議。ssh 是目前較為可靠的傳輸協議,專為遠程登錄會話和其他網絡服務提供安全性。利用 ssh 協議可以有效防止遠程管理過程中的信息泄露問題。 ssh可用於大多數UNIX和類UNIX操作系統中,能夠實現字符界面的遠程登錄管理,它默認使用22端口,采用密文的形式在網絡中傳輸數據,相對於通過明文傳輸的Telnet協議,具有更高的安全性。

2、ssh的登錄驗證

ssh 提供了基於賬戶密碼(口令)和密鑰對兩種登錄驗證方式,這兩者都是通過密文傳輸數據的。

賬戶密碼驗證:

登錄格式
ssh 用戶名@IP地址
密鑰對驗證:
  • 首先需要在 Client 上創建一對密鑰,並且需要把公鑰放在需要訪問的 Server 上。
  • 當 Client 需要連接 Server 時,Client 端的軟件就會向 Server 端發出登錄請求,請求使用密鑰對中的的公鑰進行安全驗證
  • Server 收到請求之后,會在該用戶的家目錄下查詢公鑰文件,拿 Client 發送過來的公鑰和自己家目錄下的公鑰 進行比較
  • 如果兩個公鑰一致,Server 就用公鑰加密“challenge(質疑)”,並把它發送給 Client 軟件。Client 收到加 密內容之后,使用本地的私鑰進行解密,再把解密結果發送給 Server 端,Server 端驗證成功后,允許登錄。

二、ssh服務

1、環境准備

准備好兩台Linux操作系統的主機,且將其主機名更改為不同,便於后面的密鑰對登錄。
centos6 更改主機名

[root@centos ~]# vim /etc/sysconfig/network
HOSTNAME=centos-11

臨時關閉防護功能:

 iptables -F #清空防火牆規則 
 setenforce 0 #臨時關閉SELinux 

永久關閉防護功能:

 chkconfig iptables off         #設置防火牆開機不自啟動 
 sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config  #永久關閉SELinux 
 #注意:以上兩條命令執行后,需要重啟服務器才能生效
2、密鑰對登錄配置
1、linux主機間進行密鑰對登錄

1、客戶端生成密鑰對文件 ssh-keygen -t rsa -b 2048
-t 指定加密類型(rsa/dsa等)
-b 指定密鑰對加密長度
詢問1:執行過程中會詢問保存位置,一般默認保存在當前用戶家目錄下的.ssh/目錄下
詢問2:是否對密鑰文件進行加密
加密:若加密,則在調用密鑰文件時需要先驗證密鑰的密碼,密碼正確才能使用密鑰文件
不加密:若不加密,則密鑰文件可以直接被調用,整個登錄驗證過程無需輸入任何密碼,即為免密登錄

[root@centos-11 ~]# ssh-keygen -t rsa -b 2048

2、將公鑰文件上傳至服務器端 ssh-copy-id 用戶名@服務器IP地址

[root@centos-11 ~]# ssh-copy-id root@10.10.10.12
#該用戶名和要用來登錄服務器的用戶名一致

3、客戶端嘗試登錄服務器 ssh 用戶名@服務器IP地址

[root@centos-11 ~]# ssh root@10.10.10.12
Last login: Fri Dec 20 20:41:00 2019 from 10.10.10.1
#密鑰對驗證優先級大於賬戶密碼驗證 
2、windows 密鑰對登錄 linux主機

由於Windows不能直接生成密鑰對,所以需要借助工具。我使用的是xshell
1、使用Xshell自帶的密鑰對生成向導生成密鑰對

一直下一步,其中有一步是,設置密碼為本地私鑰。看情況進行選擇。最后一步復制公鑰無需保存。

2、將公鑰導入Linux主機的指定用戶下的指定公鑰配置文件內 后面用哪個用戶登錄就放在誰的用戶家目錄下,找到 .ssh 目錄,然后在里面創建 authorized_keys 文件,並且將公鑰寫入。

[root@centos-12 ~]# vim .ssh/authorized_keys
#粘貼你剛才復制的公鑰信息,另起一行

3、使用windows嘗試登錄指定用戶

3、禁止root用戶遠程登錄

root 在系統中是一個可以為所欲為的角色,我們可以在平時的操作中用普通用戶操作,在有需要修改一些系統設置的時候再從普通用戶切換到 root 用戶,這樣可以最大限度的避免因為誤操作而對系統造成破壞,同時也可以避免黑客在暴力破解后直接使用 root 用戶登錄系統,一般在遠程登錄管理上我們會禁止直接使用 root 用戶登錄。

配置文件:/etc/ssh/sshd_config 
選項:  
PermitRootLogin no 
4、修改默認端口
修改默認端口:ssh 作為一個用來遠程管理服務器的工具,需要特別的安全,默認情況下使用TCP的22端口,若不進行修改,很容易被利用遭到攻擊,所以我們一般都會修改端口,盡量修改一個高位端口(范圍1-65535)
配置文件:/etc/ssh/sshd_config 
 Port 55235
linux 主機登錄
    ssh -p 55235 root@10.10.10.12
xshell 登錄
    ssh root@10.10.10.12:55235
5、ssh服務相關服務
scp:安全的遠程文件復制命令

scp是secure copy的簡寫,用於在Linux下進行遠程拷貝文件的命令,類似於命令有cp,scp傳輸是加密的,所以可能會稍微影響一點速度。另外,scp還非常不占資源,不會提高多少系統負荷。

格式:
scp 本地文件 用戶名@服務器IP:目錄 
scp test.txt root@10.10.10.12:/tmp    
 -P 端口   #若端口不是默認22,則需要使用此格式指定端口 
sftp:安全的文件傳輸協議

sftp是Secure FileTransferProtocol的縮寫,安全文件傳送協議。sftp與ftp有着幾乎一樣的語法和功能。由於這種傳輸方式使用了加密/解密技術,所以sftp比ftp更安全一些,但傳輸效率比普通的FTP要低得多.

格式:
sftp 用戶名@服務器IP  
-oPort=端口  #若端口不是默認22,則需要使用此格式指定端口 
交互命令: 
help:查看在交互模式下支持哪些命令 
pwd/lpwd:pwd是查看服務器所在路徑;lpwd是查看客戶端所在路徑 
ls/lls:ls是查看服務器當前目錄下的文件列表;lls是查看客戶機當前所在路徑的所有文件列表 
put:將客戶機中的指定文件上傳到服務器端 
get:將服務器端的指定文件下載到客戶機的當前所在目錄 
rm:刪除掉服務器端的指定文件 
quit:退出sftp的交互模式,斷開和服務器之間的連接 
6 TCP Wrappers(簡單防火牆)
1、介紹

TCP_Wrappers是一個工作在第四層(傳輸層)的的安全工具,對有狀態連接(TCP)的特定服務進行安全檢測並實現訪問控制,界定方式是凡是調用libwrap.so庫文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制誰可以訪問,常見的程序有rpcbind、vsftpd、sshd,telnet。
簡單來說 TCP Wrappers 只對走tcp協議的一些服務起到控制作用。
判斷方式:

1. 查看對應服務命令所在位置 which sshd 
2. 查看指定命令執行時是否調用libwrap.so文件 ldd /usr/sbin/sshd | grep libwrap.so
[root@centos-12 ~]# which sshd
/usr/sbin/sshd
[root@centos-12 ~]# ldd /usr/sbin/sshd | grep libwrap.so
	libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fd38c0d1000)
2、工作原理

以ssh為例,每當有ssh的連接請求時,先讀取系統管理員所設置的訪問控制文件,符合要求,則會把這次連接原封不動的轉給ssh進程,由ssh完成后續工作;如果這次連接發起的ip不符合訪問控制文件中的設置,則會中斷連接請求,拒絕提供ssh服務。

3、配置

TCP_Wrappers的使用主要是依靠兩個配置文件/etc/hosts.allow, /etc/hosts.deny,以此實現訪問控制,默認情況下,/etc/hosts.allow,/etc/hosts.deny什么都沒有添加,此時沒有限制 。

service_list@host: client_list 
配置文件編寫規則: 
    service_list: 是程序(服務)的列表,可以是多個,多個時,使用,隔開
    @host:設置允許或禁止他人從自己的哪個網口進入。這一項不寫,就代表全部 
    client_list:是訪問者的地址,如果需要控制的用戶較多,可以使用空格或,隔開
    內置ACL:ALL(所有主機)、LOCAL(本地主機)

以ssh服務代碼示例:

拒絕單個 IP 使用 ssh 遠程連接: 
配置文件: 
    hosts.allow:空着 
    hosts.deny:sshd:10.10.10.1
拒絕某一網段使用 ssh 遠程連接: 
    hosts.allow:空着 
    hosts.deny:sshd:10.10.10. 
僅允許某一 IP 使用 ssh 遠程連接: 
    hosts.allow:sshd:10.10.10.11
    hosts.deny:sshd:ALL


免責聲明!

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



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