Raspberry Pi のサーバ最適化とセキュリティ設定まとめ

いままでRaspberryPiにいろいろなセキュリティを行ってきたのですが新ブログに移転したのもあるので内容をまとめておきます。セキュリティには4つの重要な要素があります。

制限する

一番安全で強力なセキュリティの方法はネットワークに接続しないことです。(後に紹介する)冗長化や監視に必要なアプリケーションは残しておきますが、可能な限りのアプリケーションは停止します。

参考: Raspberry Pi 起動高速化手順メモ

ラズパイへの施行例

root@rpi1 /var/www #chkconfig --list
alsa-utils                0:off  1:off  2:off  3:off  4:off  5:off  6:off
apache2                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
atd                       0:off  1:off  2:on   3:on   4:on   5:on   6:off
avahi-daemon              0:off  1:off  2:off  3:off  4:off  5:off  6:off
bluetooth                 0:off  1:off  2:off  3:off  4:off  5:off  6:off
bootlogs                  0:off  1:on   2:on   3:on   4:on   5:on   6:off
bootmisc.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkfs.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkroot-bootclean.sh    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkroot.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
console-setup             0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
cron                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
dbus                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
dhcpcd                    0:off  1:off  2:on   3:on   4:on   5:on   6:off
dphys-swapfile            0:off  1:off  2:off  3:off  4:off  5:off  6:off
dropbear                  0:off  1:off  2:on   3:on   4:on   5:on   6:off
fake-hwclock              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
hostname.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
hwclock.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off
kbd                       0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
keyboard-setup            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
killprocs                 0:off  1:on   2:off  3:off  4:off  5:off  6:off
kmod                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
motd                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
mountall-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountall.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountdevsubfs.sh          0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountkernfs.sh            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountnfs-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountnfs.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mysql                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
networking                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
nfs-common                0:off  1:off  2:off  3:off  4:off  5:off  6:off
ntp                       0:off  1:off  2:on   3:on   4:on   5:on   6:off
php7.0-fpm                0:off  1:off  2:on   3:on   4:on   5:on   6:off
plymouth                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
plymouth-log              0:off  1:off  2:off  3:off  4:off  5:off  6:off
procps                    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
raspi-config              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
rc.local                  0:off  1:off  2:on   3:on   4:on   5:on   6:off
rcS                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
rmnologin                 0:off  1:off  2:on   3:on   4:on   5:on   6:off
rpcbind                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
rsync                     0:off  1:off  2:on   3:on   4:on   5:on   6:off
rsyslog                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
sendsigs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
sudo                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
triggerhappy              0:off  1:off  2:off  3:off  4:off  5:off  6:off
udev                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
udev-finish               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
umountfs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
umountnfs.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off
umountroot                0:off  1:off  2:off  3:off  4:off  5:off  6:off
urandom                   0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

また、PHPの便利すぎてクラッキングにも使えるfunctionを制限しておきます。

参考: Dangerous PHP Functions Must be Disabled

ラズパイへの施行例 (php.iniファイルを編集して、Apache再起動すると反映されます。)

root@rpi1 /etc/php/7.0/apache2 #less php.ini
; 中略
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names.
; http://php.net/disable-functions
disable_functions = phpinfo,system,popen,show_source,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

冗長化する

セキュリティには可用性も重要です。二番目は可用性を確保するために可能な限りスペアのアプリケーションを用意しておき、どこかに異常が現れた際にすぐに代用が可能な状態にすることです。

参考 : Raspberry Pi チューニング – DBサーバの独立と移行

監視する

問題を事前に発見するために監視を怠らないようにするのもセキュリティにはとても重要です。
サーバのメトリクス(評価尺度)を可視化するのは、Mackerelがかんたんに導入できておすすめです。ロードアベレージが一定数を超えたらメールが飛んでくるように設定することもできます。

参考 : Raspberry Pi を Mackerel で監視する

空にする

最後に意図して情報資産を保持しないようにするのも効果的な方法です。お金を自宅に置かずに銀行に預けるように、お金に関わる情報や個人情報等の情報資産は外部サイトにあずけてしまうのも手です。

コメントを残す

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