sshピンポンダッシュを防ぐ方法としてiptablesを使う方法などもあるけど、もっと簡単に防ぐ方法としては、sshのポート番号を変えてしまえば楽です。会社とかのサーバだとなかなかそうはいかなくても、自宅鯖程度ならこのほうが楽かと思います。ポートスキャナには発見されてしまいますが、最近のbrutesshでのアタックは22番ポート決め打ちでしょうから有効でしょう。おっと、ポート番号を変更する場合は、ルータのNAT/パケットフィルタリング等の設定も忘れずに変更しておいてくださいね。
追記:そういえば、NAPTのいわゆる"ポート変換機能"を持ったルータの設定のみ変更して、外部公開するポートを8022などにし、LAN内のsshサーバのポート22に転送するように設定する手もありますね。(sshサーバのポート番号を変更する必要なし)
これだったら、既存のサーバ設定をいじることなく、外から接続する場合"のみ"sshの-pオプションをつけるか、~/.ssh/configの設定を書いておけばいいだけなので便利かと思います。
sshでのポート番号を変更する方法@debian * /etc/ssh/sshd_config Port 22 の設定を Port 8022 などの任意のポートに変更しておく。(他のアプリとぶつからないこと) # /etc/init.d/ssh restart でsshサーバを再起動させれば設定が有効になる。 この状態でリモートからsshを繋ぐ場合は ssh -p 8022 192.168.0.2 のように、-pオプションを使ってポートを指定して接続する。 scpの場合は、-Pオプションでポートを指定する。 オプションが大文字なのに注意。 scp -P 8022 hoge.txt user@192.168.0.2:~ いつもオプションをつけるのが面倒な人はホームディレクトリの.sshフォルダ 以下にconfigファイルを作成/設定する $ vi ~/.ssh/config の中に Port 8022 を追加しておけばOK 特定のホストだけポート番号を変更して繋ぎたいような場合は Host 192.168.0.2 Port 8022 のように、Host xxx.xxx.xxx.xxxの設定に続けてPort指定を記述する。 Host設定を追加すれば、HostごとにPortを変更することもできる。 ホスト名は空白を空けて、複数並べて記述することも可能。 例) Host 192.168.0.2 192.168.0.10 Port 8022 Host 192.168.0.100 Port 10022 接続がうまく行かない場合は、sshに-vオプションを追加して デバッグメッセージ中のPortの指定があっているか等を確認すること。 詳細は、man sshやman sshd_configやman ssh_configを参照のこと。 日本語訳をしてくれているサイトもあるので、ありがたい。以下を参照。 OpenSSH 日本語マニュアルページ http://www.unixuser.org/~euske/doc/openssh/jman/
□ SSHへのアタックに対して、iptablesのipt_recentモジュールを使って拒否する 下記のコマンド2行を実行すると、5分(300秒)で10回以上のsshのコネクション があると、以降のパケットはしばらくの間破棄されます。 たいがいのsshアタックは数秒おきにコネクションを張ろうとするので あっという間に制限に引っかかって接続できなくなります。 時間がたてば再接続できるようになりますが、たいがいはアタックをあきらめて よそに行ってくれるはずです。 ---------------------------------------------------------------------------------------------------------------------- # iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshattack --set # iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshattack --rcheck --seconds 300 --hitcount 10 -j DROP ---------------------------------------------------------------------------------------------------------------------- iptablesのipt_recentモジュールを使う代わりに、ipt_hashlimitを 使う方法もある模様。 上記の設定で良ければ、iptables-saveコマンドを実行してルールファイルを 保存しておく。起動時に自動的に読み込まれるようにするのは、ディストリごとに 異なり、いくつか方法があったりするので、ググって調べるべし。 Debianの場合の一例として (see Debianスレッドテンプレ) -------------------------------------------------------------- # iptables-save > /etc/iptables.up.rules # iptables-save > /etc/iptables.down.rules -------------------------------------------------------------- を実行した上で、/etc/network/interfacesに -------------------------------------------------------------- pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-restore < /etc/iptables.down.rules -------------------------------------------------------------- を追記する方法とかある。 参考リンク iptables の ipt_recent で ssh の brute force attack 対策 http://www2s.biglobe.ne.jp/~nuts/labo/inti/ipt_recent.html iptablesチュートリアル - 10.3.19. Recentマッチ http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/explicitmatches.html#RECENTMATCH DSAS開発者の部屋 - ssh の brute force アタックパケットの制限 http://dsas.blog.klab.org/archives/50208645.html netfilter.org - Documentation http://www.netfilter.org/documentation/index.html
* 空のパスワードを禁止する /etc/ssh/sshd_configでPermitEmptyPasswords noに設定 外部公開しているマシンなら当然 * root権限でのログインを禁止する /etc/ssh/sshd_configでPermitRootLogin noに設定 root権限の必要な作業は、一般ユーザでログインしてsudoを利用するか ログイン後にsuコマンドでrootになって作業する。 * ログインできるユーザを限定する /etc/ssh/sshd_configでAllowUsers <ユーザ名>を設定 設定は簡単で効果は大きいです * パスワード認証方式を不許可にして、鍵認証方式のみに限定 (PasswordAuthentication no) 鍵がないとパスワードが分かっていてもログインできません。 ただし、鍵の生成、登録などを事前に行っておくことが必要。詳細はググるべし。 * どうしてもパスワード方式で運用しなければならないとしても、パスワードは 十分長い文字数にして、辞書に載っていないものを選ぶ。
10/1からJR東日本の「えきねっと券売機」での座席指定が、一番すいている車両だけでなく、全車両の中から選択できるようになったらすい。帰りにJRの駅で試してみようっと。JR西日本でいうところの、「みどりの券売機」です。JR東日本のサイトでは、利用シミュレーションで画面が見れますので楽しいかも。その他にJRの予約システムMARSネタのリンクを。
JR東日本 - 指定席券売機ご利用案内 http://www.jreast.co.jp/mv-guide/ JR西日本 - おでかけネット みどりの券売機 http://www.jr-odekake.net/guide/info_7.html JRシステム - トータルソリューション MV30形端末 http://www.jrs.co.jp/keiki/total/jirei/kokyaku_sousa.html JRの切符収集情報ライブラリー - マルス端末の機種紹介 http://homepage2.nifty.com/mars/term-guide.html