遠端訪問及控制——ssh

weixin_50344843發表於2020-11-05

ssh

ssh是什麼

  • 是一種安全通道協議
  • 對通訊資料進行了加密處理,用於遠端管理
  • 服務名稱:sshd
  • 服務端主程式: /usr/sbin/sshd
  • 服務端配置檔案: /etc/ssh/sshd_config

使用者登入控制

AllowUsers zhangsan lisi@192.168.100.11
#表示只允許zhangsan登入,lisi在192.168.100.11主機上登入
PermitRootLogin no#空密碼登入
LoginGraceTime 2m#限制登入時間為2分鐘
MaxAuthTries 6#限制重試次數為6次
PasswordAuthentication yes#啟用密碼驗證,密碼對驗證
PubkeyAuthentication yes#指定公鑰庫位置

遠端命令

ssh user@host -p 埠號#遠端安全登入
scp user@host:file1 file2#將目標主機中的file1檔案複製到本主機重命令為file2(下載)
scp file1 user@host:file2#將本主機上的file1檔案複製到目標主機上重新命名為file2(上傳)
sftp user@host#安全FTP上下載(登入的為user的家目錄)

構建ssh金鑰

構建金鑰對驗證的ssh體系

  • 建立金鑰對
    私鑰檔案:id_rsa
    公鑰檔案:id_rsa.pub
  • 上傳公鑰檔案
    id_rsa.pub
  • 匯入公鑰資訊
    公鑰庫檔案:/home/lisi/.ssh/authorized_keys
  • 使用金鑰對驗證方式
  • 即以服務端的使用者lisi的身份進行登入

ssh-keygen命令

  • 可用的加密演算法:RSA、ECDSA或DSA
  ssh-keygen -t ecdsa
  scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp
  mkdir /home/lisi/.ssh
  cat /tmp/id_ecdsa.pub >> /home/lisi.ssh/authorized_keys
  tail -l /home/lisi/.ssh/authorizedz-keys

客戶端使用金鑰對驗證登入

  • 驗證使用者:伺服器的使用者
  • 驗證密碼:客戶端的使用者的私鑰短語

免密登入

免密登入即代理,有一定的安全風險,但是使用者伺服器對客戶機的控制比較方便管理。有密碼的情況下需要輸入 ssh-agent bash ,沒有就不用了。

  • 伺服器上輸入 :ssh-keygen -t rsa
  • 伺服器上輸入:ssh-copy-id 192.168.188.130(客戶機ip)
  • 伺服器上輸入: ssh-agent bash (如果設定的時候沒有設定密碼,此步驟可以省略)
  • 伺服器上輸入:ssh- add
  • 輸入密碼金鑰
    代理成功!無密碼直接登入!
  • ssh root@192.168.188.130

Tcp Wrappers

保護機制的實現方式

  • 方式1:通過tcpd程式對其他服務程式進行包裝
  • 方式2:由其他服務程式呼叫libwrap.so.*連結庫

訪問控制策略的配置檔案

/etc/hosts.allow #相當於白名單
/etc/hosts.deny #相當於黑名單

設定訪問控制策略

  • 策略格式:服務程式列表:客戶端地址列表
  • 服務程式列表
    多個服務以逗號分隔,ALL表示所有服務
  • 客戶端地址列表
    多個地址以逗號分隔,ALL表示所有列表
    允許使用萬用字元?和*
    網段地址,如192.168.10._ 或者192.168.2.0/24
    區域地址,如 .benet.com

TCP Wrappers策略應用

  • 檢查hosts.allow,找到匹配則允許訪問
  • 再檢查hosts.deny,找到則拒絕訪問
  • 若兩個檔案中均無匹配策略,則預設允許訪問

相關文章