Webサーバー用のセキュリティー設定のパート2です。
今回で一応のセキュリティはOKという状態になります。
今回やること
ファイヤーウォール(ufw)の設定
公開鍵認証を使ったSSH接続
ファイヤーウォール、ufwの設定
sudo apt-get install ufw
・・・インストール完了
とりあえずステータスを確認
sudo ufw status Status: inactive
SSHポート(22から61209に変更済み)
sudo ufw limit 61209 Rules updated
limitにすると、30秒間に6回アクセスた接続を拒否します。
Webサーバー用なのでポート80を許可します。
sudo ufw allow 80/tcp Rules updated
ファイヤウォールを有効にします。
sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
最後にステータスを確認。
sudo ufw status Status: active To Action From -- ------ ---- 61209 LIMIT Anywhere 80/tcp ALLOW Anywhere
これでファイヤーウォールの設定が完了です。
公開鍵認証を使ったSSH接続
最後に公開鍵認証を使ってSSH接続の接続をします。
イメージ的には公開鍵と秘密鍵を作って、
公開鍵をRaspberry Piにアップロードして、
秘密鍵を使ってSSH接続をする感じです。
秘密鍵を持っていない人はSSH接続ができない代物です。
秘密鍵をなくすと自分までアクセスできなくなるので注意が必要です。
ここではPuTTYのKye Generator、puttygenを使います。
設定
SSH-2 RSA
2048bits
SSH-2 DSAもありますがRSAが推奨らしいです。
Generateというボタンをクリックして、
マウスを適当に動かします。
(マウスを動かすことで乱数を作るんだとか)
少しすると鍵ができあがるので、それにパスワードを設定して保存します。
Key passphrase(Confirm..にも)に適当なパスワードを入力します。
そして、Save public keyとSave private keyを押して公開鍵と秘密鍵を保存します。
Save public key(公開鍵)
id_rsa.pubで保存
Save private key(秘密鍵)
id_rsa.ppkで保存
id_rsa.pubをRaspberry Piにアップロード
パソコンのコマンドプロンプトからputtyのフォルダにいって下記のようなコマンドを入力します。
pscp -pw "自分のパスワード" -P SSHのポート番号 id_rsa.pub username@Raspberry PiのローカルIPアドレス:/home/username/id_rsa.pub
もう少し具体的に書くと下記のようになります。
pscp -pw "My Password" -P 61209 id_rsa.pub username@192.168.0.3:/home/username/id_rsa.pub Store key in cashe? (y/n) y
これでRaspberry Piにid_rsa.pubがアップロードされます。
アップロードしたid_rsa.pubをOpenSSH用に使えるようにします。
Raspberry Piのユーザフォルダから
cd /home/username/ mkdir .ssh chmod 700 .ssh mv id_rsa.pub .ssh/id_rsa.pub cd .ssh ssh-keygen -i -f id_rsa.pub >> authorized_keys
これでOpenSSH用のauthorized_keysができました。
Puttyのカテゴリ→接続→SSH→認証
認証のためのプライベートキーファイルにid_rsa.ppkを指定します。
Puttyから接続する
login as: username Authenticating with public key "rsa-key-20140809" Passphrase for key "rsa-key-20140809":
前まではusernameを入力した後に通常のパスワードを入力していたところ、今回からはpublic keyのパスワードを入力してログインするようになりました。
公開鍵認証でログインすることになったので、
それ以外の方法のログインを無効にします。
cd /etc/ssh sudo vim sshd_config #PermitRootLogin yes PermitRootLogin no #PasswordAuthentication yes PasswordAuthentication no
これでRootのログインと通常のパスワードでのログインを禁止しました。
最後のSSHを再起動して完了です。
sudo service ssh restart
いつもこのページを参考にさせていただいています。
PuTTYで接続しようとすると、login as: でユーザー名を入力後、
Server refused out keyとなってしまい、結局もとのユーザーパスワードでのログインしかできません。
何かおかしいでしょうか。