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攻撃もマシになるのではないでしょうか。