【GW特別進行】Raspberry Pi 3でセキュリティ対策設定を行ってみる(1)
こんばんは。GW真っ只中ですが、合間を見て普段出来ないことをゴソゴソやってみたりしてみたりしています。
今回はRaspberry Pi関係です。Raspberry Piを使う場合は、あまりセキュリティについて意識することは少ないんじゃないでしょうか。とりあえずOSインストールして、apt-get updateやapt-get upgradeコマンドを打つぐらいでしょうか。
rootユーザにパスワード設定
まず、rootユーザにノンパスワードでなれるのは拙いですので、パスワードを要求する様に設定します。rootになるためのパスワードを設定します。
$ sudo passwd root
piユーザの扱い
他にpiユーザをどうするかという問題もあります。少なくともデフォルトのままではあまりにも危険です。最低でもパスワードは変更しておきましょう。
$ passwd pi
可能であれば、piユーザも削除しておくと良いかもしれません。(設定などのバックアップを取っておくと良いです)
$ sudo userdel -r pi
Apacheのインストールと設定
そして、apache2をインストールし、apacheのバージョンとOSを表示させないように設定しました。
$ cd /etc/apache2/sites-available
$ sudo vi 000-default.conf
ServerSignature On
↓
ServerSignature Off
Nmapのインストールと設定
不必要なポートが開いていて、余計なサービスが立ち上がってないことを確認するためにnmapをインストールしました。
$ sudo apt-get install nmap
nmapを使って自機で立ち上がっているサービスをします。
$ nmap localhost
これで開いてるポート番号が表示されます。
sshに関する設定及びアクセス制限
sshログイン時は公開鍵認証のみにしておきます。設定はこちら。
# PasswordAuthentication yes
↓(パスワード認証を無効にするために"no"にしておきます)
PasswordAuthentication no
デフォルトでは公開鍵認証が有効になっていませんので、configを修正します。
#AuthorizedKeysFile %h/.ssh/authorized_keys
↓(公開鍵認証を有効にしておきます)
AuthorizedKeysFile %h/.ssh/authorized_keys
そして、sshdを再起動します。
$ sudo /etc/init.d/ssh restart
sshのアクセス制限をするために、LAN内からのみ許可するようにhosts.allowとhosts.denyの設定を行いました。ポート番号の変更も行っておくとよりいいかもしれません。ただ、ローカル限定なので、外側からは22/tcpが立ち上がってないように見えればOKだと考えています。
$ sudo vi /etc/hosts.allow
複数ある場合は、スペースで区切っておきます。
$ sudo vi /etc/hosts.deny
sshd: ALL
これで[利用したいIPアドレス]からのみsshでアクセス出来ます。
hosts.allowとhosts.denyだけでは心許ないので、ufwをインストールして設定を行うことにしました。iptablesでもいいのですが、ufwの方が扱いやすいということのようでしたので、試しに使ってみることにしました。
(注:具体的設定内容は現在吟味中です。続編で言及します。<(_ _)>)
通したいポート一覧(予定)
必要な通信としては、以下の通信を想定しています。それ以外はufwや物理的ファイアウォールでフィルタリングします。
22/tcp(LAN内限定:inbound)
53/tcp(outbound)
53/udp(outbound)
80/tcp(outbound、LAN内限定:inbound)
123/udp(outbound)
443/tcp(outbound、inbound)
SSLサーバ証明書については、動作試験用に自署証明書を発行してみます。これでSSLの動作確認を行います。Let's Encryptに関しても調べてみます。
Raspberry Pi 3でセキュリティ対策設定を行ってみる(2)も後日お送りしますので、少々お待ち下さい。<(_ _)>