linux安全加固常見加密協議(續)

技術小阿哥發表於2017-11-26

OPENSSH

是一個程式,ssh協議的實現方式。

伺服器端稱為sshd,客戶端稱為ssh。

SSH是提供安全加密通訊的遠端登陸服務,稱為安全的殼程式協議。

sshv1已經淘汰,建議使用sshV2

執行於windows上的ssh客戶端:

xmanager–>xshell

securecrt

putty

sshclient

SSH服務連線步驟:

1、SSH伺服器主動生成公鑰和私鑰、並將公鑰放在/etc/.ssh/ssh_host_*中

2、客戶端通過ssh請求建立連線。

3、伺服器傳送公鑰要求客戶端安裝。

4、客戶端安裝,預設放在~/.ssh/known_hosts中,並計算自己的公私祕鑰。

5、客戶端用伺服器的公鑰加密自己的公鑰,並傳送給伺服器

6、伺服器和客戶開始通訊,客戶端的公鑰是臨時的,每次通訊的公私祕鑰是不同的。

認證方式:

    使用者認證:

        基於口令的認證:username:password

        基於祕鑰的認證:使用者登入不需要密碼,自動完成,需要將自己的公鑰放在對方伺服器上來實現認證。

配置檔案:

/etc/ssh/sshd_config  //伺服器端

/etc/ssh/ssh_config    //客戶端

採用哪種方式需要考慮對方是否支援,如果隨意的話建議rsa。

總結建議:

使用預設方式建立私鑰和公鑰,即ssh-keygen -t rsa即可,不要使用-f引數,使用-f建立的在實驗中不可用。

在.ssh/目錄下建立本地公鑰和其他主機的公鑰資料夾並分別存放,方便查詢和使用。

設定.ssh的許可權為700,authorized_keys的許可權是600,比較妥當。

經驗:養成檢視日誌的習慣,.ssh和authorized_keys的許可權並不是也大越好,設定大了也會造成問題,/root目錄許可權也會影響ssh服務,養成定期備份authorized_keys的習慣。

1、修改監聽埠

2、啟用基於祕鑰的認證

3、禁用version 1

4、禁止主機認證機制,預設為禁止。

5、禁止dns反解析。

6、禁止顯示lastlogin。

7、顯示banner以提示使用者。

登入驗證資訊放在使用者家目錄下的.ssh裡。

ssh常用命令:

ssh ipaddr:如果不指定使用者名稱的話,預設以本地主機自己的賬戶名登入遠端主機,(如果伺服器端沒有這個使用者,肯定登不上去。)

ssh username@ipaddr:指定登陸的使用者名稱

ssh username@ipadr‘command’:不進入遠端主機,只是執行命令。

-p :用於指定特殊埠

ssh gong@192.168.1.8 -p 2222:    //通過ssh服務使用gong賬戶登入遠端主機192.168.1.55的2222埠。

基於祕鑰的認證:

1、客戶端在本地生成一對祕鑰。(將自己的公鑰放到伺服器上,單向信任,如果伺服器要登陸客戶端需要同樣傳輸公鑰到客戶端)

如果是linux系統,使用ssh-keygen -t rsa 來完成。

-P:設定密碼,可以通過‘’來設定密碼為空。

-f:指定檔案儲存位置

在etc/ssh/sshd_conf中設定登陸使用者的範圍:AllowUsers。

設定會話超時時長:ClientAliveInterval

2、將公鑰傳送到遠端主機,並儲存到目標家目錄下的.ssh/authorized_keys裡面。

SCP

基於ssh協議,在主機間複製工具。

格式:scp [-pr] [-l 速率] [username@ipaddr:/path/filename]

選項和引數

-p:保留檔案原有的許可權資訊

-r:複製來源為目錄是,將複製整個目錄的內容

-l:設定傳輸的速率,預設單位kbits/s

scp .ssh/id_rsa.pub root@192.168.1.9:/root/.ssh/



ssh-copy-id -i .ssh/id.pub root@192.168.1.9:/root/.ssh/



ssh_conf檔案配置詳解


配置“/etc/ssh/ssh_config”檔案


“/etc/ssh/ssh_config” 檔案是OpenSSH系統範圍的配置檔案,允許你通過設定不同的選項來改變客戶端程式的執行方式。這個檔案的每一行包含“關鍵詞-值”的匹配,其中“關鍵詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令檢視幫助頁(ssh (1))可以得到詳細的列表。


編輯“ssh_config”檔案(vi /etc/ssh/ssh_config),新增或改變下面的引數:


# Site-wide defaults for various options

Host *

ForwardAgent no

ForwardX11 no

RhostsAuthentication no

RhostsRSAAuthentication no

RSAAuthentication yes

PasswordAuthentication yes

FallBackToRsh no

UseRsh no

BatchMode no

CheckHostIP yes

StrictHostKeyChecking no

IdentityFile ~/.ssh/identity

Port 22

Cipher blowfish

EscapeChar ~


下面逐行說明上面的選項設定:


Host *

選項“Host”只對能夠匹配後面字串的計算機有效。“*”表示所有的計算機。


ForwardAgent no

“ForwardAgent”設定連線是否經過驗證代理(如果存在)轉發給遠端計算機。


ForwardX11 no

“ForwardX11”設定X11連線是否被自動重定向到安全的通道和顯示集(DISPLAY set)。


RhostsAuthentication no

“RhostsAuthentication”設定是否使用基於rhosts的安全驗證。


RhostsRSAAuthentication no

“RhostsRSAAuthentication”設定是否使用用RSA演算法的基於rhosts的安全驗證。


RSAAuthentication yes

“RSAAuthentication”設定是否使用RSA演算法進行安全驗證。


PasswordAuthentication yes

“PasswordAuthentication”設定是否使用口令驗證。


FallBackToRsh no

“FallBackToRsh”設定如果用ssh連線出現錯誤是否自動使用rsh。


UseRsh no

“UseRsh”設定是否在這臺計算機上使用“rlogin/rsh”。


BatchMode no

“BatchMode”如果設為“yes”,passphrase/password(互動式輸入口令)的提示將被禁止。當不能互動式輸入口令的時候,這個選項對指令碼檔案和批處理任務十分有用。


CheckHostIP yes

“CheckHostIP”設定ssh是否檢視連線到伺服器的主機的IP地址以防止DNS欺騙。建議設定為“yes”。


StrictHostKeyChecking no

“StrictHostKeyChecking”如果設定成“yes”,ssh就不會自動把計算機的密匙加入“$HOME/.ssh/known_hosts”檔案,並且一旦計算機的密匙發生了變化,就拒絕連線。


IdentityFile ~/.ssh/identity

“IdentityFile”設定從哪個檔案讀取使用者的RSA安全驗證標識。


Port 22

“Port”設定連線到遠端主機的埠。


Cipher blowfish

“Cipher”設定加密用的密碼。


EscapeChar ~

“EscapeChar”設定escape字元。




——————————————————————————–


配置“/etc/ssh/sshd_config”檔案


“/etc/ssh/sshd_config”是OpenSSH的配置檔案,允許設定選項改變這個daemon的執行。這個檔案的每一行包含“關鍵詞-值”的匹配,其中“關鍵詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令檢視幫助頁(sshd (8))可以得到詳細的列表。


編輯“sshd_config”檔案(vi /etc/ssh/sshd_config),加入或改變下面的引數:


# This is ssh server systemwide configuration file.

Port 22

ListenAddress 192.168.1.1

HostKey /etc/ssh/ssh_host_key

ServerKeyBits 1024

LoginGraceTime 600

KeyRegenerationInterval 3600

PermitRootLogin no

IgnoreRhosts yes

IgnoreUserKnownHosts yes

StrictModes yes

X11Forwarding no

PrintMotd yes

SyslogFacility AUTH

LogLevel INFO

RhostsAuthentication no

RhostsRSAAuthentication no

RSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords no

AllowUsers admin


下面逐行說明上面的選項設定:


Port 22

“Port”設定sshd監聽的埠號。


ListenAddress 192.168.1.1

“ListenAddress”設定sshd伺服器繫結的IP地址。


HostKey /etc/ssh/ssh_host_key


“HostKey”設定包含計算機私人密匙的檔案。


ServerKeyBits 1024

“ServerKeyBits”定義伺服器密匙的位數。


LoginGraceTime 600

“LoginGraceTime”設定如果使用者不能成功登入,在切斷連線之前伺服器需要等待的時間(以秒為單位)。


KeyRegenerationInterval 3600

“KeyRegenerationInterval”設定在多少秒之後自動重新生成伺服器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的資訊。


PermitRootLogin no

“PermitRootLogin”設定root能不能用ssh登入。這個選項一定不要設成“yes”。


IgnoreRhosts yes

“IgnoreRhosts”設定驗證的時候是否使用“rhosts”和“shosts”檔案。


IgnoreUserKnownHosts yes

“IgnoreUserKnownHosts”設定ssh daemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略使用者的“$HOME/.ssh/known_hosts”


StrictModes yes

“StrictModes”設定ssh在接收登入請求之前是否檢查使用者家目錄和rhosts檔案的許可權和所有權。這通常是必要的,因為新手經常會把自己的目錄和檔案設成任何人都有寫許可權。


X11Forwarding no

“X11Forwarding”設定是否允許X11轉發。


PrintMotd yes

“PrintMotd”設定sshd是否在使用者登入的時候顯示“/etc/motd”中的資訊。


SyslogFacility AUTH

“SyslogFacility”設定在記錄來自sshd的訊息的時候,是否給出“facility code”。


LogLevel INFO

“LogLevel”設定記錄sshd日誌訊息的層次。INFO是一個好的選擇。檢視sshd的man幫助頁,已獲取更多的資訊。


RhostsAuthentication no

“RhostsAuthentication”設定只用rhosts或“/etc/hosts.equiv”進行安全驗證是否已經足夠了。


RhostsRSAAuthentication no

“RhostsRSA”設定是否允許用rhosts或“/etc/hosts.equiv”加上RSA進行安全驗證。


RSAAuthentication yes

“RSAAuthentication”設定是否允許只有RSA安全驗證。


PasswordAuthentication yes

“PasswordAuthentication”設定是否允許口令驗證。


PermitEmptyPasswords no

“PermitEmptyPasswords”設定是否允許用口令為空的帳號登入。


AllowUsers admin

“AllowUsers”的後面可以跟著任意的數量的使用者名稱的匹配串(patterns)或user@host這樣的匹配串,這些字串用空格隔開。主機名可以是DNS名或IP地址。

本文轉自 blackstome 51CTO部落格,原文連結:http://blog.51cto.com/137783/1968756,如需轉載請自行聯絡原作者


相關文章