sshd配置文件/etc/ssh/sshd_config
Port 22 # SSH 預設使用 22 這個 port,您也可以使用多的port !
# 亦即重復使用 port 這個設定項目即可!
Protocol 2,1 # 選擇的 SSH 協議版本,可以是 1 也可以是 2,
# 如果要同時支持兩者,就必須要使用 2,1這個分隔了!
#ListenAddress 0.0.0.0 # 監聽的主機適配卡!舉個例子來說,如果您有兩個IP,
# 分別是 192.168.0.100 及 192.168.2.20,那么只想要
# 開放 192.168.0.100時,就可以寫如同下面的樣式:
ListenAddress192.168.0.100 # 只監聽來自 192.168.0.100 這個 IP 的SSH聯機。
# 如果不使用設定的話,則預設所有接口均接受SSH
PidFile /var/run/sshd.pid # 可以放置 SSHD 這個 PID的檔案!左列為默認值
LoginGraceTime 600 # 當使用者連上 SSH server之后,會出現輸入密碼的畫面,
# 在該畫面中,在多久時間內沒有成功連上 SSH server,
# 就斷線!時間為秒!
Compression yes #是否可以使用壓縮指令?當然可以啰!
# 2. 說明主機的 Private Key放置的檔案,預設使用下面的檔案即可!
HostKey /etc/ssh/ssh_host_key # SSH version 1使用的私鑰
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2使用的 RSA 私鑰
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2使用的 DSA 私鑰
# 2.1 關於 version 1的一些設定!
KeyRegenerationInterval 3600 # 由前面聯機的說明可以知道,version 1 會使用
# server 的 Public Key ,那么如果這個Public
# Key被偷的話,豈不完蛋?所以需要每隔一段時間
# 來重新建立一次!這里的時間為秒!
ServerKeyBits 768 # 沒錯!這個就是 Server key的長度!
# 3. 關於登錄文件的訊息數據放置與 daemon的名稱!
SyslogFacilityAUTH # 當有人使用 SSH 登入系統的時候,SSH會記錄資
# 訊,這個信息要記錄在什么 daemon name底下?
# 預設是以 AUTH 來設定的,即是/var/log/secure
# 里面!什么?忘記了!回到 Linux基礎去翻一下
# 其它可用的 daemon name為:DAEMON,USER,AUTH,
#LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,
LogLevelINFO # 登錄記錄的等級!嘿嘿!任何訊息!
#同樣的,忘記了就回去參考!
# 4. 安全設定項目!極重要!
# 4.1 登入設定部分
PermitRootLogin no # 是否允許 root登入!預設是允許的,但是建議設定成 no!
UserLogin no # 在 SSH 底下本來就不接受 login這個程序的登入!
StrictModes yes # 當使用者的 host key 改變之后,Server就不接受聯機,
# 可以抵擋部分的木馬程序!
#RSAAuthentication yes # 是否使用純的 RSA 認證!?僅針對version 1 !
PubkeyAuthentication yes # 是否允許 Public Key?當然允許啦!只有 version 2
AuthorizedKeysFile .ssh/authorized_keys
#上面這個在設定若要使用不需要密碼登入的賬號時,那么那個
# 賬號的存放檔案所在檔名!
# 4.2 認證部分
RhostsAuthentication no # 本機系統不止使用 .rhosts ,因為僅使用.rhosts 太
# 不安全了,所以這里一定要設定為 no !
IgnoreRhosts yes # 是否取消使用 ~/.ssh/.rhosts來做為認證!當然是!
RhostsRSAAuthentication no # 這個選項是專門給 version 1用的,使用 rhosts 檔案在
# /etc/hosts.equiv配合 RSA演算方式來進行認證!不要使用
HostbasedAuthentication no # 這個項目與上面的項目類似,不過是給version 2 使用的!
IgnoreUserKnownHosts no # 是否忽略家目錄內的~/.ssh/known_hosts 這個檔案所記錄
# 的主機內容?當然不要忽略,所以這里就是 no啦!
PasswordAuthentication yes # 密碼驗證當然是需要的!所以這里寫 yes啰!
PermitEmptyPasswords no # 若上面那一項如果設定為 yes的話,這一項就最好設定
# 為 no,這個項目在是否允許以空的密碼登入!當然不許!
ChallengeResponseAuthenticationyes # 挑戰任何的密碼認證!所以,任何login.conf
# 規定的認證方式,均可適用!
#PAMAuthenticationViaKbdIntyes # 是否啟用其它的 PAM 模塊!啟用這個模塊將會
# 導致 PasswordAuthentication設定失效!
# 4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos主機,所以底下不用設定!
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosTgtPassing no
# 4.4 底下是有關在 X-Window 底下使用的相關設定!
X11Forwarding yes
DisplayOffset 10
UseLocalhost yes
# 4.5 登入后的項目:
PrintMotdno # 登入后是否顯示出一些信息呢?例如上次登入的時間、地點等
# 等,預設是 yes ,但是,如果為了安全,可以考慮改為 no!
PrintLastLog yes # 顯示上次登入的信息!可以啊!預設也是 yes!
KeepAlive yes # 一般而言,如果設定這項目的話,那么 SSH Server會傳送
# KeepAlive 的訊息給 Client端,以確保兩者的聯機正常!
# 在這個情況下,任何一端死掉后, SSH可以立刻知道!而不會
# 有僵屍程序的發生!
UsePrivilegeSeparation yes # 使用者的權限設定項目!就設定為 yes吧!
MaxStartups 10 # 同時允許幾個尚未登入的聯機畫面?當我們連上 SSH,
#但是尚未輸入密碼時,這個時候就是我們所謂的聯機畫面啦!
#在這個聯機畫面中,為了保護主機,所以需要設定最大值,
#預設最多十個聯機畫面,而已經建立聯機的不計算在這十個當中
# 4.6 關於使用者抵擋的設定項目:
DenyUsers * #設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部
#擋吧!若是部分使用者,可以將該賬號填入!例如下列!
DenyUsers test
DenyGroups test # 與 DenyUsers相同!僅抵擋幾個群組而已!
# 5. 關於 SFTP服務的設定項目!
Subsystem sftp /usr/lib/ssh/sftp-server
~~~~~~~~~~~~~~~~~~~
1.9 openssh支持sftp上傳下載日志記錄
vi /etc/ssh/sshd_config
LogSftp yes
SftpLogFacility AUTH
vi /etc/syslog.conf
auth,authpriv.* /var/log/sftp.log
service syslog restart
1.10 重啟sshd
service sshd start
2配置sshd以支持chroot
2.1構建chroot環境
2.1.1使用環境變量,方便
export CHROOT_PATH=/home/vitter
2.1.2創建基本目錄
mkdir -p $CHROOT_PATH/{bin,home,usr,lib}
chown -R root.root $CHROOT_PATH
cd $CHROOT_PATH
2.1.3 創建/bin/bash環境
cp /bin/bash $CHROOT_PATH/bin/bash
for a in $(ldd /bin/bash | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname$a`
cp -f $a $CHROOT_PATH$a;
done
2.1.4 創建sftp-server 環境
export SFTP_SERVER=`grep Subsystem /etc/ssh/sshd_config | awk'{print $3}'`
echo $SFTP_SERVER
mkdir -p $CHROOT_PATH/`dirname $SFTP_SERVER`
cp $SFTP_SERVER $CHROOT_PATH$SFTP_SERVER
for a in $(ldd $SFTP_SERVER | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname$a`
cp -f --reply=yes $a $CHROOT_PATH$a;
done
chroot環境已經搭建完畢,只有一個bash可供使用
sftp-server,是為了相應用戶的sftp登陸的
2.2配置chroot-openssh
2.2.1添加或指定享受此待遇的用戶,這里以sftptest為例
useradd -d /home/sftptest sftptest
mv /home/sftptest $CHROOT_PATH/home/sftptest
ln -s $CHROOT_PATH/home/sftptest /home/sftptest
passwd sftptest
這里使用了軟連接,為了保持chroot環境和實際環境的一致。
2.2.2修改sshd配置
[vi /etc/ssh/sshd_config]
UsePAM yes
2.2.3修改sshd.pam配置
[vi /etc/pam.d/sshd]
session required pam_chroot.so
2.2.4修改chroot配置
echo sftptest $CHROOT_PATH >>/etc/security/chroot.conf
2.2.5重新啟動
service sshd restart
3可選操作,增加安全性
chattr -R +i $CHROOT_PATH
chattr -R -i $CHROOT_PATH/home