ssh配置文件說明


配置“/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
ClientAliveInterval 300
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”設置如果用戶不能成功登錄,在切斷連接之前服務器需要等待的時間(以秒為單位)。

ClientAliveInterval 300(默認為0)
這個參數的是意思是每5分鍾,服務器向客戶端發一個消息,用於保持連接


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地址。
使用SFTP代替FTP傳輸文件
     FTP(文件傳輸協議)是一種使用非常廣泛的在網絡中傳輸文件的方式,但是,它也同樣存在被網絡竊聽的危險,因為它也是以明文傳送用戶認證信息。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure FTP)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。若要開啟 SFTP功能可以修改sshd2_config文件的下列內容:
        # subsystem-sftp sftp-server
       去掉行首的“#”,然后重新啟動SSH服務器,這樣在進行SSH連接時就可以同時使用SFTP傳輸文件。
       關於客戶端設置
        以上是對服務器的設置,其實在SSH服務器中已經包含了一些客戶端工具(如SSH,SFTP工具)。但是,更多的客戶端用戶使用Windows系統,下面就對Windows上的客戶端系統設置加以說明。
       首先從上文給出的網址下載“SSHSecureShellClient-3.2.3.exe”文件並安裝。安裝完成后,在桌面上會產成兩個快捷方式,一個是“SSH Secure Shell Client”,用於遠程管理,另一個是“SSH Secure File Transfer Client”,用於和服務器進行文件傳輸。在工具欄中點擊“quick connnect”,輸入正確的主機名和用戶名,然后在彈出的對話框中輸入密碼完成登錄,即可開始執行命令或者傳輸文件。在使用SFTP時,默認只能顯示用戶的宿主目錄的內容和非隱藏文件。但是,有時候您可能還要查看其它目錄或者隱藏文件,這時只需要在菜單“eidt->setting-> file transfer”的選項中選中“show root directory”和“show hidden file”兩個選項即可。

         使普通用戶僅使用SFTP而沒有使用Shell的權限
默認情況下管理員給系統添加的賬號將同時具有SFTP和SSH的權限。讓普通用戶使用shell執行命令也是有很大的安全隱患的,如果能夠禁止用戶使用shell執行命令而僅使用SFTP傳輸文件,就能消除這種安全隱患,完全實現FTP的功能,
正如上文所述,SFTP沒有單獨的守護進程,只能借助於sshd守護進程,所以我們仍然需要使用SSH服務器,要保證sshd守護進程處於運行狀態。具體實現方法如下:
首先,在編譯安裝時,編譯中一定要有“--enable-static” 選項。安裝成功后,在安裝目錄下的bin目錄中執行下面的命令:
[root@localhost bin]# ls -l ssh-dummy-shell* sftp-server2*
       將看到下列輸出內容:
-rwxr-xr-x 1 root root 1350417 Apr 28 16:30 sftp-server2
-rwxr-xr-x 1 root root 3566890 Apr 28 16:30 sftp-server2.static
-rwxr-xr-x 1 root root 72388 Apr 28 16:30 ssh-dummy-shell
-rwxr-xr-x 1 root root 1813412 Apr 28 16:30 ssh-dummy-shell.static
       其中帶“static”后綴名,且比較大的兩個文件就是加上“--enable-static”選項后生成的,后面我們將用到這里兩個文件。
       下面以添加普通賬號test為例講述具體操作步驟。
      1.在“/home”目錄(或者將要存放普通用戶宿主目錄的目錄)下創建“bin”子目錄,並將兩個static文件復制到此目錄下(復制后改名去掉static后綴),執行如下命令:
[root@localhost bin]# cd /usr/local/ssh3.2/bin
[root@localhost bin]#cp ssh-dummy-shell.static /home/bin/ssh-dummy-shell
[root@localhost bin]# cp sftp-server2.static /home/bin/sftp-server
[root@localhost bin]#chown -R root.root /home/bin
[root@localhost bin]#chmod -R 755 /home/bin
       2.添加一個組,使以后所有禁止使用shell的用戶都屬於這個組,這樣便於管理更多的用戶:
[root@localhost bin]#groupadd template
      3.在添加系統賬號時使用如下命令:
[root@localhost root]#useradd -s /bin/ssh-dummy-shell -g template test
[root@localhost root]#passwd test
[root@localhost root]#mkdir /home/test/bin
[root@localhost root]#cd /home/test/bin
[root@localhost bin]#ln /home/bin/ssh-dummy-shell ssh-dummy-shell
[root@localhost bin]#ln /home/bin/sftp-server sftp-server
[root@localhost bin]#chown -R root.root /home/test/bin
[root@localhost bin]#chmod -R 755 /home/test/bin
     4.用戶添加成功后,還需要修改/etc/ssh2/sshd2_config文件,將下列內容:
#ChRootGroups sftp,guest
改為:
ChRootGroups sftp,guest,template
       修改上面這行內容,主要是為了禁止普通用戶查看系統的其它目錄,把其權限限制在自己的主目錄下。重新啟動SSH服務器程序,在客戶端使用SSH Secure File Transfer Client登錄,即使選擇顯示根目錄,普通用戶也看不到其它的任何目錄,而是把自己的主目錄當作根目錄。注意,這里使用的是按用戶所屬組限制,這樣可以使包含在template組內的所有用戶都可以實現此功能。若您只要限制個別用戶的話,可以修改下面的內容:
#ChRootUsers anonymous,ftp,guest

      事實證明SSH是一種非常好的網絡安全解決方案,但是,目前仍有很多管理員使用Telnet或FTP這種非常不安全的工具,希望盡快轉移到SSH上來,以減少網絡安全隱患。
 
本文轉載自http://blog.csdn.net/gzh0222/article/details/7690700


免責聲明!

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



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