HOME → 1 Raspberry Pi → 01 セットアップ → 

Raspberry Pi Webサーバー セキュリティ設定

Raspberry Pi セットアップ
Webサーバーの為の セキュリティ設定
 
Raspberry Pi を、Webサーバーとして運用するための「セキュリティ設定」。
 
ポート番号と役割
ポート番号とポートの役割(サービス名)
 
以下に、Raspberry Pi のセキュリティ対策を記載。
 

 

スポンサー リンク

 

 
 
 
 
 
1. root パスワードの設定とユーザの追加
 
root パスワードの設定。
sudo passwd root
 
root でログインし直す。
sudo su 
 
pi ではない、新しい「xxxxxx」 ユーザの追加と sudo グループへの追加。
adduser xxxxxx
gpasswd -a xxxxxx sudo
 
/etc/sudoersを編集し、xxxxxx ユーザの、コマンド毎でのパスワード入力を不要にする 。
nano /etc/sudoers
次の行を追記する。
xxxxxx ALL=(ALL) NOPASSWD: ALL
 
新しい「xxxxxx」 ユーザが作成できたので、pi ユーザーを削除したいのだが・・・。
userdel -r pi
 
user pi is curently used by process とのメッセージが出る。
理由:
初期設定のままだと、「Desktop Autologin」で【 pi 】ユーザーが使用されている。
 
そこで、自動ログインを停止する。
 
raspi-config」を入力し、【 3 Boot Option 】を選択する。
【 3 Boot Option 】を選択する
 
【 B1 Desktop / CLI 】を選択する。
【 B1 Desktop / CLI 】を選択する
 
【 B1 Console 】を選択する。
【 B1 Console 】を選択する
 
初期画面に戻るので、「Finish」を選択する。
初期画面に戻るので、「Finish」を選択する
 
「はい」をクリックして、reboot する。
「はい」をクリックして、reboot する
 
pi ユーザーを削除する。
userdel -r pi
 
「userdel: pi のメールスプール (/var/mail/pi) がありません」と表示されるが、これでOK.。
「userdel: pi のメールスプール (/var/mail/pi) がありません」と表示されるが、これでOK
 
 
 
2. sshのポート変更 と root でのログインを無効化
 
ssh接続で、root でのログインはディフォルトで不可になっている。
逆に、root でのログインを可能にするには、追記が必要。
sudo nano /etc/ssh/sshd_config 
PermitRootLogin yes
 ← 追記が必要
 
ssh設定ファイルのバックアップ。
cd /etc/ssh/
sudo cp sshd_config sshd_config.org
 
sshのポート番号を変更し、SSHの root でのログインを無効にする。
sudo nano sshd_config
(自由に利用できる番号として、公式には 49152 - 65535 が規定されている)
Port 22 → nnnnn
 ← 変更
PermitRootLogin no
 ← 追記
 
sshサーバを再起動。
cd
sudo service ssh restart
 
 
リモートアクセスのポート番号と役割
ポート番号とポートの役割(サービス名)は、下記のようになっており、リモートアクセスを行うポートは、通常、FTPの場合:21番、SSHの場合:22番となっている。(この22番ポートへのアクセスがうっとうしいので、変更。)
ポート番号と役割
 
 
 
3. SSH接続のアクセス制限
 
SSH接続は、外部から破られコンピュータを乗っ取られる危険がある。
 
そこで、【ローカルLAN】または【指定IPアドレス】からの接続のみを許可するように、アクセス制限を行う。
 
hosts.denyファイルを修正する。
sudo nano /etc/hosts.deny
# アクセス制限を追加(すべてのアクセスを拒否)
sshd: ALL
 
hosts.allowファイルを修正する。
sudo nano /etc/hosts.allow
# ローカルLANからのアクセスのみを許可
sshd: 192.168.11.0/24 127.0.0.0/8
 
 
 
4. ファイヤーウォールの導入
 
ファイヤーウォールの導入。
sudo apt-get install ufw
 
ステータスの確認。
sudo ufw status
inactive
 
アクセス制限の設定。Port 22 → nnnnn に変更済み番号。
sudo ufw limit nnnnn
 
ポート 80 と 443 を許可する。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
 
ファイヤウォールを有効にする。
sudo ufw enable
 
ステータスの確認。
sudo ufw status
active
 
 
 
5. SSH接続の公開鍵化
 
 
SSHの認証方式
①.パスワード認証方式
パスワード認証方式はデフォルトの認証方式で、ユーザー名とパスワードでログインする方式。
ユーザー名とパスワードは接続先OSのユーザーアカウントの情報が使用される。

②.公開鍵認証方式

公開鍵認証方式は公開鍵と秘密鍵の2つの鍵(キーペア)を使用した接続方式。
サーバーに公開鍵、クライアントに秘密鍵を置いて使用する。
 
 
以下の要領は、すでに公開鍵があり、同じものを使いまわす場合の手順を記載。
 
公開鍵を作成する場合の参考:
 
公開鍵ファイル id_rsa.pub をTera Termにドラッグアンドドロップする。
 
注意点
SSH接続している Tera Term の『ユーザー』は、
公開鍵を設定するユーザーか確認?
 
ドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送する。
ssh 公開鍵化
 
この時、「 SCP: 転送先にするLinux上のパス」に「~/」を入力する。
「 SCP: 転送先にするLinux上のパス」に「~/」を入力する
 

ログインしたユーザ(一般ユーザ)のホームディレクトリに送信されるが、うまくいかない場合は、

ユーザ名のフォルダに、「id_rsa.pub」ファイルを作成し、元の【id_rsa.pub】の内容を貼り付ける。「xxxxxx」 は、ユーザ名。

$ sudo nano /home/xxxxxx/id_rsa.pub 
 

 
鍵格納用フォルダを作り、作成したフォルダのパーミッションを設定した後、「id_rsa.pub」を鍵ファイルに移動する。「xxxxxx」 は、ユーザ名。
$ pwd
/home/xxxxxx
$ ls
id_rsa.pub
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
 
SSHの設定を、認証鍵方式のログインに変更。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org2
sudo nano /etc/ssh/sshd_config
- - - - - 最下行に下記3行を追記
PubkeyAuthentication yes
 ← 追記
AuthorizedKeysFile %h/.ssh/authorized_keys
 ← 追記
PasswordAuthentication no
 ← 追記
 
以上で設定は終了。
 
SSHサーバーを再起動して設定を読み込ませる。
sudo service ssh restart
 
FileZilla の接続設定例。
FileZilla の接続設定例
 
 
Raspberry Pi をWebサーバーとして運用するための「 セキュリティ設定 」は以上で完了。
 
 
次のステップ:
 
 
 
以上。
(2019.05.10)
 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください