モチログ

はてなでのブログ

SSHサーバを設定しよう

今年はとりあえずサーバシリーズで始めていこうと思います。 では、DebianサーバシリーズSSH編でお送りしたいと思います。 まずは

インストール

# apt-get install ssh これで完了。SSH、始まりました。

次に

設定

です。これしっかりしないと、えらいことになります。 /etc/ssh/sshd_configを編集します。 # vi /etc/ssh/sshd_config 変更するのは主に下の部分 ChallengeResponseAuthentication no #チャレンジレスポンス認証をしない PasswordAuthentication no #鍵必須 #パスワードログイン受け付けない←設定する場合要注意 あらかじめ鍵を登録しておかないとSSHログインできなくなります PermitRootLogin     no # rootログインを禁止する PermitEmptyPasswords  no #空のパスワードログインを禁止する AllowUsers hogehoge  # hogehogeユーザしか入れない 必要に応じて設定 DenyUsers hogahoga # hogahogaユーザは入れない 必要に応じて設定 MaxAuthTries 6 # 6回まで間違いを受け付ける 適宜数値を調整 UsePAM no # pam経由で認証を可能にする 鍵認証ならnoが良いと思います UseLogin no #ログインプログラムを使わない これはno必須です。 MaxStartups 4:80:10 #同時接続4までそれ以降80%の確率で拒否、最大10接続 という設定 LogLevel INFO #ログするレベルです INFOで良いと思います。

編集したら再起動

/etc/init.d/ssh restart

これで設定が適応されます。

鍵の追加

puttで作成した鍵を登録。 puttyで作成した鍵(putty_id.pub)を登録したいユーザのホームディレクトリに置いて、 $ ssh-keygen -i -f putty_id.pub > linux.pub $ cat linux.pub >> $HOME/.ssh/authorized_keys で登録。

Debianで作成する。 $ssh-keygen -t rsa -f filename $ssh-copy-id -i ~/.ssh/id_rsa.pub debian.example.jp #リモートサーバアドレス これで鍵が転送されるようです。使ったこと内ので、できるかわかりません。。。

denyhostsインストール

上の設定で、いくら拒否しても何度もアタックされるとサーバ負荷的にも気持ち的にもくるので、そのための対策を。 ブルートフォースアタックしてきたIPをhosts.denyに書きこんでくれるソフト。 インストールは # apt-get install denyhosts

設定は/etc/denyhosts.conf

DenyHosts で ssh ブルートフォースアタック対策を参考に。

SECURE_LOG = /var/log/auth.log #denyhosts の読み込むログファイルの場所 HOSTS_DENY = /etc/hosts.deny #hosts.deny の場所 PURGE_DENY = #denyhostsが攻撃者と思われるIPを/etc/hosts.deny に登録しておく時間を設定(この設定時間を過ぎると、拒否するホストから削除され、 空白の場合は、ずっと登録したままにになる。--purge オプションを付けてスクリプトを起動しないと実行しない。 )。

PURGE_THRESHOLD #/etc/hosts.denyから削除する回数を定義する。この回数を超えると、/etc/hosts.deny に登録されたままになる。default 0 (disable)

BLOCK_SERVICE = sshd #/etc/hosts.denyに追加するときのサービス名。 DENY_THRESHOLD_INVALID = 4 #この回数より多くログインに失敗したホストをブロックする。存在しないユーザに適用。 DENY_THRESHOLD_VALID = 5 #この回数より多くログインに失敗したホストをブロックする。存在するユーザに適用。root 以外。 DENY_THRESHOLD_ROOT = 1 #この回数より多くrootログインに失敗したホストをブロックする。 DENY_THRESHOLD_RESTRICTED = 1 #この回数より多くログインに失敗したホストをブロックする。WORK_DIR/restricted-usernames ファイルに書かれている username のみ。 WORK_DIR = /var/lib/denyhosts #WORK_DIR のパス。 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES #YES に設定している場合、許可されたホストからの疑わしいログインを、疑わしいログインとしてレポートする。NOに設定している場合、レポートしない。許可されたホストでない疑わしいログインは、全てレポートする。 HOSTNAME_LOOKUP=YES #YES なら、IP アドレスからホスト名をルックアップする。 LOCK_FILE = /var/run/denyhosts.pid #LOCK_FILE を指定する。 ADMIN_EMAIL = hoge@localhost #新しい拒否するホストと疑わしいログインについてメールする。 SMTP_HOST = localhost #SMTP サーバのアドレス。 SMTP_PORT = 25 #SMTP サーバのポート。

SMTP_USERNAME=foo #SMTP 認証で使用するユーザ名。

SMTP_PASSWORD=bar #SMTP 認証のパスワード。

SMTP_FROM = DenyHosts #メールの From: アドレス。 SMTP_SUBJECT = DenyHosts Report #メールの件名。 #SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z #メールの Date: の書式。

SYSLOG_REPORT=NO #syslog へデータを送るかどうか。

ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO

# /etc/init.d/denyhosts restart で設定適応。これで、めんどくさいSSH攻撃もマシになるのではないでしょうか。