Raspberry Pi でサーバー構築 (SSH接続)

2013/03/20

◆ SSH接続の準備

Raspbian ではデフォルトでSSHサーバーがインストールされており、raspi-config で自動起動の設定が済んでいるので、SSHサーバーは既に実行されている。
初期状態を放置しておくと悪意のある攻撃を受けるとたやすく乗っ取られたりする。 設定ファイルを変更してセキュリティを強化する。

初期状態では、root の他にユーザー pi がいるが自分用のユーザーを追加するので新規ユーザーの作成を行い、パスワードを設定しておく。 以降新しいユーザーで全てのアクセスを行うこととする。

◆ 設定ファイル(sshd_config)の編集

エディタで sshd_config を編集する。 多くの設定ファイルでは#で始まる行はコメント文である。 コメントアウトとある個所は先頭の#を削除して設定を有効にする。
設定の該当箇所を修正する。指定のない個所はそのままにしておく。

 # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default ←設定ファイルのバックアップ
 # vi /etc/ssh/sshd_config

 PermitRootLogin no ←rootでのログインを禁止する

 AllowUsers ユーザー名 ←接続を許可するユーザーとグループを限定する(最終行へ追加)

SSHの再起動後設定が有効になる。

 # service ssh restart  ←sshサーバーを再起動
 又は
 # /etc/init.d/ssh restart

◆ ポート開放

外部からサーバーへアクセスした場合、外部から見れば家の中のパソコンはすべて同じIPアドレスなのでどのパソコンへ接続されるかわからない。
そのためにポート番号というものがあり、ルーターの方で○○番のポート番号はこのパソコンへデータを渡すといった設定をしなければならない。

ルーターのメーカーや型番により設定方法や呼び名が異なっており、ここいらの設定はWEBで検索すればなにかしら引っかかると思うのでそちらを参考にしてもらいたい。

とりあえず家のルーターの設定では、次のように設定されている。

20,21  FTP
22  SSH
23  Telnet
25  SMTP
80  HTTP
110  POP3
143  IMAP
443  HTTPS
587  submission (mail)

◆ ログインをメールで通知

外部からSSH接続でサーバーへログインした時に、メールで通知するようにできる。 これは SSH がログイン時に $home/ssh/rc が自動で実行されるのを利用することで可能です。

※素の Raspbian には、sendmail が入っていないので、このスクリプトを入れてもメールは配信されません。 とりあえず備忘録という事で。

 # vi /etc/ssh/sshrc ←スクリプトの作成

 #!/bin/sh
 ##SSH LOGIN MAIL##
 MAILAD = '送信先メールアドレス'
 echo "`whoami`@`hostname` `date +\%Y/\%m/\%d/\%H:\%M:\%S`" | mail -s "ssh-login: `whoami`@`hostname`" $MAILAD