ようこそNICのホームページへ(なが〜い試運転中)    あなたは2001/5/12以来 人目の来訪者です。
HP パソコン 健康 落語 海外 思うまま 電子工作


ssh2で通信を可能にする(2008/08/09)
Last update:2009/06/14  build:2009/06/09




1年ほど前にsshを利用できるようにした。まとめた記述がないことを思い出して、 ここにその時の経緯を改めてメモすることにした。(2009/06/09)

0 前提

 ローカルネットワークからtelnetでアクセスしてssh環境を作成
 サーバー: VersaPro os:freebsd
 クライアント:KAZE2 os:WindowsXP クライアントソフト:UTF-8 TeraTerm Pro with TTSSH2
 認証  : DSA使用
 バージョン: OpenSSH_4.2p1 FreeBSD-20050903, OpenSSL 0.9.7e-p1 25 Oct 2004

 

1 ssh2用のDSA鍵を作成


$ pwd
/usr/home/USER      ←ログオンユーザーのホームディレクトリー
$ ssh-keygen -t dsa   ←ssh2用のDSA鍵を作成する
Generating public/private dsa key pair.
Enter file in which to save the key (/home/USER/.ssh/id_dsa): ←キーを保存するディレクトリー(CRのみ入力)
Enter passphrase (empty for no passphrase):  ←パスフレーズを入力
Enter same passphrase again:          ←同じパスフレーズを再入力
Your identification has been saved in /home/USER/.ssh/id_dsa.
Your public key has been saved in /home/USER/.ssh/id_dsa.pub.
The key fingerprint is:
4d:8e:7d:fa:44:AA:AA:AA:AA:AA:AA:AA:aa:01:c6:1d USER@VersaPro.ddo.jp

キーの作成完了

$ pwd
/usr/home/USER

$ ll
drwxr-xr-x   5 USER   USER    -  512 Aug  9 23:18 ./
drwxr-xr-x   4 root   wheel   -  512 Jun 14 20:32 ../
drwx------   2 USER   USER    -  512 Aug 11 19:55 .ssh/
-rw-r--r--   1 USER   USER    -    0 Aug  9 10:07 mbox

$ cd .ssh
$ ll
drwx------  2 USER  USER  -  512 Aug 11 19:55 ./
drwxr-xr-x  5 USER  USER  -  512 Aug  9 23:18 ../
-rw-------  1 USER  USER  - 1264 Aug 11 19:55 id_dsa   ←秘密鍵(クライアントPCにのみ置く)
-rw-r--r--  1 USER  USER  - 1121 Aug 11 19:55 id_dsa.pub ←公開鍵(サーバー側に置く基本データ、処理が必要)
-rw-r--r--  1 USER  USER  - 1118 Aug  9 23:17 known_hosts

2 サーバー側での処理、公開鍵を登録

 自分のホームディレクトリの下で
 公開鍵を登録する
 /home/USER/.sshにおいて
 touch authorized_keys2          ←ファイルが無い場合は作る。ある時は不必要
  chmod 644 authorized_keys2       ←モードの変更
  cat  id_dsa.pub   >>  authorized_keys2 ←公開鍵を追加書き込み

3 sshd_configの変更

 /etc/ssh/sshd_configの以下を追加変更(RSAはあったがDSAはなかったのでRSAをコピーして修正)
 注釈行を無視して有効な文のみを取り出した( grep -v -e '^[ \t]*#' -e '^$' sshd_config )
  Port 22
  Protocol 2                  ←変更
  HostKey /etc/ssh/ssh_host_dsa_key      ←変更   # 2008/08/12 
  LoginGraceTime 2m              ←変更   # 2008/08/12 
  PermitRootLogin no
  MaxAuthTries 3                  ←変更   # 2008/08/12 
  DSAAuthentication yes            ← 追加  # 2008/08/11 
  AuthorizedKeysFile      .ssh/authorized_keys2← 追加   # 2008/08/11 
  PasswordAuthentication no          ←変更   # 2009/05/23 
  PermitEmptyPasswords no           ←変更   # 2008/07/28 
  Subsystem       sftp    /usr/libexec/sftp-server

4 クライアント側の処理

 クライアントパソコンに秘密鍵を移動
  サーバー側の/home/USER/.ssh/id_dsa を
  クライアント側に移動。
   (本来は、秘密鍵の移動がないように、クライアント側で鍵を作り、公開鍵をサーバーに送る)
 teratermを使うことから
    c:\Program Files\teraterm\ssh\id_dsa
  に置く。
 teratermのprivate key fileを 上記に設定。
 後は、ユーザーIDとパスフレーズを入力してログオン
 繋がった

5 接続制限を行う

 ユーザーを限定するため
  /etc/ssh/sshd_configに
   AllowUsers USER 
 を追加した


6 sshへの攻撃を抑える(2009/06/11追記)

過去に何度かsshが繋がりにくくなった。昨日も21時半頃にsshが全く繋がらない。後でauth.logを 調べてみると辞書攻撃と思われるアクセス(174.142.46.102から)が21:18:53〜21:44:40の25分47秒の間に 623回見られた。一例を下に載せます。
Jun 10 21:18:53 VersaPro sshd[67649]: Did not receive identification string from 174.142.46.102
Jun 10 21:20:25 VersaPro sshd[67653]: Invalid user admin from 174.142.46.102
Jun 10 21:20:27 VersaPro sshd[67655]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:20:30 VersaPro sshd[67657]: Invalid user stud from 174.142.46.102
Jun 10 21:20:32 VersaPro sshd[67659]: Invalid user trash from 174.142.46.102
Jun 10 21:20:35 VersaPro sshd[67661]: Invalid user aaron from 174.142.46.102
Jun 10 21:20:37 VersaPro sshd[67663]: Invalid user gt05 from 174.142.46.102
Jun 10 21:20:39 VersaPro sshd[67665]: Invalid user william from 174.142.46.102
Jun 10 21:20:41 VersaPro sshd[67667]: Invalid user stephanie from 174.142.46.102
   (略)
Jun 10 21:43:52 VersaPro sshd[68944]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:43:54 VersaPro sshd[68946]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:43:57 VersaPro sshd[68948]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:43:59 VersaPro sshd[68950]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:44:01 VersaPro sshd[68952]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:44:03 VersaPro sshd[68967]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:44:05 VersaPro sshd[68969]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:44:07 VersaPro sshd[68971]: User root from ip-174-142-46-102.static.privatedns.com not allowed 
                                      because not listed in AllowUsers
Jun 10 21:44:40 VersaPro sshd[68973]: reverse mapping checking getaddrinfo for 
                                      ip-174-142-46-102.static.privatedns.com failed 
                                      - POSSIBLE BREAKIN ATTEMPT!
Jun 10 21:44:40 VersaPro sshd[68973]: User root from 174.142.46.102 not allowed because not listed in AllowUsers

このIPがどこかwhoisで調べてみた。詳しいデータが出てこなかった。
# whois 174.142.46.102
iWeb Technologies Inc. IWEB-BLK-06 (NET-174-142-0-0-1)
                                  174.142.0.0 - 174.142.255.255
iWeb Dedicated CL2 IWEB-CL-T186-01SH (NET-174-142-46-96-1)
                                  174.142.46.96 - 174.142.46.127

# ARIN WHOIS database, last updated 2009-06-10 19:10
# Enter ? for additional hints on searching ARIN's WHOIS database.

そこで sshd_configに下記の一文を追加した。
MaxStartups  5:70:10 # append 2009/6/11 
                     # 5つまでの接続要求を受け付け
                     # これを超えると70%の確率で接続要求を拒否し
                     # 10を超えるとすべて拒否する。 sshdへのアタックを抑える

7 PAM認証(実質的にはパスワード認証)を止める(2009/06/13追記)

MaxStartupsは同じセッションに対しては働かないような記述があった。事実6月11日の22時頃に「MaxStartups」の設定を行った。 しかし、その後も同じような例が出ている。以下にその例を挙げます。
Jun 12 05:23:25 VersaPro sshd[76645]: Did not receive identification string from 125.236.226.94
Jun 12 05:26:28 VersaPro sshd[76656]: User root from 125-236-226-94.adsl.xtra.co.nz not allowed 
                                      because not listed in AllowUsers
Jun 12 05:26:31 VersaPro sshd[76658]: Invalid user fluffy from 125.236.226.94
Jun 12 05:26:34 VersaPro sshd[76660]: Invalid user admin from 125.236.226.94
Jun 12 05:26:37 VersaPro sshd[76662]: Invalid user test from 125.236.226.94
Jun 12 05:26:40 VersaPro sshd[76664]: Invalid user guest from 125.236.226.94
Jun 12 05:26:51 VersaPro sshd[76666]: Did not receive identification string from 125.236.226.94

Jun 12 10:35:07 VersaPro sshd[77487]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:09 VersaPro sshd[77489]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:12 VersaPro sshd[77491]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:14 VersaPro sshd[77493]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:15 VersaPro sshd[77495]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:17 VersaPro sshd[77497]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:19 VersaPro sshd[77499]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:21 VersaPro sshd[77501]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:23 VersaPro sshd[77503]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:26 VersaPro sshd[77505]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:30 VersaPro sshd[77507]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:32 VersaPro sshd[77509]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:34 VersaPro sshd[77511]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:36 VersaPro sshd[77513]: User root from 218.25.11.147 not allowed because not listed in AllowUsers
Jun 12 10:35:39 VersaPro sshd[77515]: User root from 218.25.11.147 not allowed because not listed in AllowUsers

Jun 12 15:41:34 VersaPro sshd[78316]: Did not receive identification string from 58.102.157.95
Jun 12 15:44:52 VersaPro sshd[78330]: User root from 58.102.157.95 not allowed because not listed in AllowUsers
Jun 12 15:44:53 VersaPro sshd[78332]: User root from 58.102.157.95 not allowed because not listed in AllowUsers
Jun 12 15:44:54 VersaPro sshd[78334]: User root from 58.102.157.95 not allowed because not listed in AllowUsers
Jun 12 15:44:55 VersaPro sshd[78336]: User root from 58.102.157.95 not allowed because not listed in AllowUsers
     (略)

Jun 13 02:19:48 VersaPro sshd[80088]: Did not receive identification string from 219.143.232.143
Jun 13 02:23:29 VersaPro sshd[80106]: Invalid user staff from 219.143.232.143
Jun 13 02:23:30 VersaPro sshd[80108]: Invalid user sales from 219.143.232.143
Jun 13 02:23:31 VersaPro sshd[80110]: Invalid user recruit from 219.143.232.143
Jun 13 02:23:33 VersaPro sshd[80112]: Invalid user alias from 219.143.232.143
     (略)
Jun 13 02:26:55 VersaPro sshd[80400]: Invalid user telnetd from 219.143.232.143
Jun 13 02:26:56 VersaPro sshd[80402]: Invalid user identd from 219.143.232.143
Jun 13 02:27:01 VersaPro sshd[80404]: Invalid user gnats from 219.143.232.143
Jun 13 02:27:02 VersaPro sshd[80406]: Invalid user jeff from 219.143.232.143
Jun 13 02:27:03 VersaPro sshd[80408]: Invalid user irc from 219.143.232.143


IPアドレス219.143.232.143からは2:19:48から2:27:03までの7分15秒の間に 147回の攻撃があった。約3秒に一回の割合だ。 また、最初に認証キーを受け付けないのでその後パスワード受付に変わっているようだった。

過去にもtelnetでイントラからサーバーにアクセスし、そのままsshでlocalhostにログイン してみたことがある。最初に認証キーを聞いてくるので無視して改行を入れると、今度はパスワードを聞いてくる。 正しいパスワードを入れるとログインできてしまう。パスワードによるログインはsshd_configで 禁止している(PasswordAuthentication no )はずなのに何故かわからなかった。

ここによると 「ChallengeResponseAuthentication no」にしておかないとパスワード認証を受け付けるとのこと。 明示的に「ChallengeResponseAuthentication yes」と記述しなければ大丈夫と思っていたのが間違いのようだ。 明示的に否定しないといけないらしい。6月13日の21時半頃にsshd_configを修正した。 telnetでイントラからサーバーにアクセスし、そのままsshでlocalhostにログイン を試みる。最初に認証キーを聞いてくるので同じく無視して改行を入れると、受付を拒否された。 「ChallengeResponseAuthentication no」が効いているようだ。

8 sshのポート番号の変更(2009/06/14追記)

昨日の変更でも減らないので、sshのポート番号を変更することにした。過去にポートを22から他の番号に 変更したことがあったが、うまくいかなかった。今回も前回と同様のことをしたのだが、何故かうまくいった。

インターネットで調べると、sshを独立したデーモンで動かしている時は  sshd_configを修正するようだが、  スーパーサーバー(スーパーデーモン、inetdのこと)から起動する場合は
 /etc/services のなかの
 ssh 22/tcp #Secure Shell Login
 ssh 22/udp #Secure Shell Login
 の番号を変更することも必要とのこと。ためしに、/etc/servicesのみ修正すると接続できるようになった。  /etc/ssh/sshd_configは修正しなくてもつながった。これで外部からもうまく繋がった。  ただし、モデムルーターのポート番号の解放をsshのポート番号に合わせる必要があった。  telnetも問題なく繋がる。sshへの攻撃もこれで減ると良いのだが、しばらく様子を見よう。
 2009/06/14 18時30分頃完了

9 sshのポート番号変更の効果(2009/06/16追記)

6月14日の18時半頃にポートを変更したその結果、全くアクセスが無くなった。 16日午前3時に送られてきたログ(VersaPro.ddo.jp security run output)を以下に載せます。
Checking setuid files and devices:

Checking for uids of 0:
root 0
toor 0

Checking for passwordless accounts:

VersaPro.ddo.jp login failures:

VersaPro.ddo.jp refused connections:

-- End of security output --
ちなみに15日午前3時に送られてきたログ(VersaPro.ddo.jp security run output)には多量のアタックがありました。
Checking setuid files and devices:

Checking for uids of 0:
root 0
toor 0

Checking for passwordless accounts:

VersaPro.ddo.jp login failures:
Jun 14 03:01:43 VersaPro sshd[87361]: Invalid user root3 from 173.11.107.148
Jun 14 10:05:05 VersaPro sshd[89053]: Invalid user test from 117.21.249.75
Jun 14 10:05:06 VersaPro sshd[89055]: Invalid user guest from 117.21.249.75
Jun 14 10:05:08 VersaPro sshd[89057]: Invalid user admin from 117.21.249.75
Jun 14 10:05:09 VersaPro sshd[89059]: Invalid user admin from 117.21.249.75
Jun 14 10:05:10 VersaPro sshd[89061]: Invalid user user from 117.21.249.75
Jun 14 10:05:15 VersaPro sshd[89069]: Invalid user test from 117.21.249.75
Jun 14 13:14:34 VersaPro sshd[89736]: Invalid user admin from 218.108.234.208
Jun 14 13:14:40 VersaPro sshd[89738]: Invalid user test from 218.108.234.208
    (略)
Jun 14 14:59:11 VersaPro sshd[91995]: Invalid user austin from 203.246.104.166
Jun 14 14:59:13 VersaPro sshd[91997]: Invalid user jackson from 203.246.104.166
Jun 14 14:59:14 VersaPro sshd[91999]: Invalid user justin from 203.246.104.166
Jun 14 14:59:16 VersaPro sshd[92001]: Invalid user brandon from 203.246.104.166
Jun 14 14:59:18 VersaPro sshd[92003]: Invalid user john from 203.246.104.166

VersaPro.ddo.jp refused connections:

-- End of security output --

パソコンのことへ     HomePage     このページのトップ