Telnet 與 SSH 主機的設定問題
[root@test
root]# rpm -qa | grep telnet
telnet-server-krb5-1.2.5-1mdk telnet-client-krb5-1.2.5-1mdk # 上面是 Mandrake 9.0 的範例;或底下是 Red Hat 7.2 的範例 telnet-0.17-20 telnet-server-0.17-20 |
[root@test
root]# vi /etc/xinetd.d/telnet
# default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { disable = yes<==就是改這裡,將 yes 改成 no 即可! flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID } |
方法一:僅支援
Red Hat 或 Mandrake 系統:
[root@test root]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 方法二:正統的啟動方式:
|
[root@test
root]# netstat -tl
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:telnet *:* LISTEN |
step 1: 修改一下
/etc/xinetd.d/telnet 檔案:
[root@test root]# vi /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { disable = no<==就是改這裡,將 no 改成 yes 即可! flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID } step 2: 重新啟動
xinet 即可:
|
[root@test
root]# telnet localhost
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Red Hat Linux release 7.2 (Enigma) Kernel 2.4.18 on an i586 login: test <==輸入帳號 Password: <==輸入密碼請注意!密碼並不會在螢幕上面顯示任何的字眼 Last login: Thu Oct 3 11:59:29 from test_inside <==提示上次登入的位址 You have new mail. <==自上次登入以來,是否信箱內有新信件!? [test@test test]$ <==這裡就進入了 telnet 的連線程序當中了! [test@test test]$ exit <==離開這次 telnet 的登入! |
[root@test
root]# vi /etc/xinetd.d/telnet
# This file had been modified by VBird 2002/11/04 # First is about inside the network service telnet { disable = no bind = 192.168.1.2 only_from = 192.168.1.0/24 # 上面這兩行說明僅提供內部網域! instance = UNLIMITED nice = 0 flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/telnetd server_args = -a none log_on_failure += USERID } # Second is
about the outside domain's settings
|
[root@test root]# mv /etc/securetty /etc/securetty.bak |
[root @test
/root]# vi /etc/pam.d/login
#%PAM-1.0 #auth required /lib/security/pam_securetty.so # 將上面這一行加上 # 註解掉! auth required /lib/security/pam_stack.so service=system-auth auth required /lib/security/pam_nologin.so account required /lib/security/pam_stack.so service=system-auth password required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth session optional /lib/security/pam_console.so |
/sbin/iptables
-A INPUT -p tcp -i eth0 -s 192.168.0.0/24 --dport 23 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 -s 61.xxx.xxx.xxx --dport 23 -j ACCEPT /sbin/iptables -A INPUT -p tcp -i eth0 --dport 23 -j DROP |
[root@test
root]# vi /etc/hosts.allow
in.telnetd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4, 192.168.0.5: allow [root@test root]#
vi
/etc/hosts.deny
|
[root@test
root]# /etc/rc.d/init.d/sshd start
[root@test root]# service sshd start [root@test root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN |
[root@test
root]# ssh user@hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6e:1a:60:d0:ee:d0:7c:91:df:94:de:09:35:7b:08:ba. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:8 RSA host key for hostname has changed and you have requested strict checking. Host key verification failed. |
sftp 一般連線的使用方式:
[root@test root]# sftp test@test.linux.org test@test.linux.org's password: <==請輸入 test 這個使用者的密碼! sftp> <==等待您輸入指令! |
針對遠方主機(Server)之行為 | |
變換目錄到 /etc/test 或其他目錄 | cd /etc/test
cd PATH |
列出目前所在目錄下的檔案或目錄 | ls
dir |
建立目錄 | mkdir directory |
刪除目錄 | rmdir directory |
顯示目前所在的目錄 | pwd |
更改檔案或目錄群組 | chgrp groupname PATH |
更改檔案或目錄擁有者 | chown username PATH |
更改檔案或目錄的權限 | chmod 644 PATH
其中,644 與權限有關!回去看基礎篇! |
建立連結檔 | ln oldname newname |
刪除檔案或目錄 | rm PATH |
更改檔案或目錄名稱 | rename oldname newname |
離開遠端主機 | exit
bye |
針對本機(Client)之行為(都加上 l, L 的小寫 ) | |
變換目錄到本機的 PATH 當中 | lcd PATH |
列出目前本機所在目錄下的檔名 | lls |
在本機建立目錄 | lmkdir |
顯示目前所在的本機目錄 | lpwd |
檔案傳輸 | |
將檔案由本機上傳到遠端主機 | put [本機目錄或檔案] [遠端]
put [本機目錄或檔案] 如果是這種格式,則檔案會放置到目前遠端主機的目錄下! |
將檔案由遠端主機下載回來 | get [遠端主機目錄或檔案] [本機]
get [遠端主機目錄或檔案] 若是這種格式,則檔案會放置在目前本機所在的目錄當中!可以使用萬用字元,例如: get * get *.rpm 亦是可以的格式! |
psftp: no hostname
specified; use "open host.name" to connect
psftp> |
psftp: no hostname
specified; use "open host.name" to connect
psftp> open test.linux.org login as: test Using username "test". test@test.linux.org's password: Remote working directory is /home/test psftp> |
# 1. 關於 SSH
Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式
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 時,就可以寫如同下面的樣式: ListenAddress 192.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 的一些設定!
# 3. 關於登錄檔的訊息資料放置與
daemon 的名稱!
# 4. 安全設定項目!極重要!
# 4.5 登入後的項目:
# 4.6 關於使用者抵擋的設定項目:
# 5. 關於 SFTP
服務的設定項目!
|
[test2@test2
test2]$ ssh-keygen -t rsa <==這個步驟在產生
Keys
Generating public/private rsa key pair. Enter file in which to save the key (/home/test2/.ssh/id_rsa): Enter passphrase (empty for no passphrase): <==這裡按 Enter Enter same passphrase again: <==再按一次 Enter Your identification has been saved in /home/test2/.ssh/id_rsa. <==這是私鑰 Your public key has been saved in /home/test2/.ssh/id_rsa.pub.<==這是公鑰 The key fingerprint is: c4:ae:d9:02:d1:ba:06:5d:07:e6:92:e6:6a:c8:14:ba test2@test2.linux.org 注意: -t 指的是『使用何種密碼演算方式?』由於我們使用 RSA , 所以直接輸入 -t rsa 即可建立兩支 Keys ! 此外,建立的兩把 Keys 都放置在家目錄下的 .ssh 這個目錄中! 察看一下這兩把 Keys 吧! [test2 @test2
test2]$ ll ~/.ssh
|
1. 先在 Client
端以 sftp 將公鑰丟到 test 上面去!
[test2@test2 test2]$ cd ~/.ssh <==切換目錄 [test2@test2 .ssh]$ sftp test@test.linux.org<==連到主機上面 Connecting to test.linux.org... test@test.linux.org's password: <==輸入 test 的密碼 sftp> put id_rsa.pub <==將公鑰丟到 Server 上面去! Uploading id_rsa.pub to /home/test/id_rsa.pub sftp> exit 2. 到 Server
上面,將公鑰轉存到 authorized_keys 檔案中!
|
[test2@test2 test2]$ ssh test@test.linux.org |
這三方面來著手進行!底下我們就說一說吧!
- /etc/ssh/sshd_config
一般而言,這個檔案的預設項目就已經很完備了!所以,事實上是不太需要更動他的!但是,如果您有些使用者方面的顧慮,那麼可以這樣修正一些問題呢!
- 禁止 root 的登入:任何時候,不許 root 以遠端連線的方式登入,都會是一個好主意!所以這裡蠻建議大家直接將 root 的登入權限拿掉吧!所以,可以修改 /etc/ssh/sshd_config 這個檔案的內容為:
如此一來,以後 root 就不能以 ssh 登入囉!這樣還是比較好的啦! ^_^
[root@test root]# vi /etc/ssh/sshd_config
PermitRootLogin no <==將他改成 no 啦!
[root@test root]# /etc/rc.d/init.d/sshd restart
- 不許某個群組登入:有些特殊情況中,我們想要讓使用者只能使用 sendmail, pop3, ftp 等,但是不希望他可以遠端連線進來,那麼您可以這樣做:
1. 將這些使用者都歸納在某一個特殊群組之下,例如 nossh 這個群組好了;
2. 在 /etc/ssh/sshd_config 當中加入這一行:『DenyGroups nossh』
3. 重新啟動 sshd : /etc/rc.d/init.d/sshd restart
這樣就OK啦!
- 不許某個使用者登入:跟 DenyGroups 類似,使用 DenyUsers 即可!參考 sshd_config 的設定喔!
- /etc/hosts.allow 及 /etc/hosts.deny :
這東西也是很簡單的啦!直接參考: 簡易防火牆架設 一文囉!當然,簡單的方法就是:
[root@test /root]# vi /etc/hosts.allow
sshd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4, 192.168.0.5: allow[root@test /root]# vi /etc/hosts.deny
sshd : ALL : spawn (/bin/echo Security notice from host `/bin/hostname`; \
/bin/echo; /usr/sbin/safe_finger @%h ) | \
/bin/mail -s "%d -%h security" root@localhost & \
: twist ( /bin/echo -e "\n\nWARNING connectin not allowed. Your attempt has been logged. \n\n\n警告您尚未允許登入,您的連線將會被紀錄,並且作為以後的參考\n\n ". )- iptables
多幾層保護也很好的!所以也可以使用 iptables 喔!參考:簡易防火牆架設 一文囉!
基本上, SSH 還蠻安全的,只要取消 root 的登入權限,那麼問題應該就會比較小一點啦!所以,雖然可以不用設定 iptables ,但是建議針對幾個網域設定一下 /etc/hosts.allow 與 /etc/hosts.deny !加油囉!