今までRaspberry Pi 3+に16GBのmicroSDを挿してwebサーバとして運用していましたが、手狭になってきたので64GBに改めて環境構築をした時の自分の作業の忘備録です。以前導入した時とだいぶ変わっている部分が多かったので驚いたのが第一印象でした。
前提
- このラズベリーパイは外部に公開はしません。(twitterへのポストはします)
- 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
- そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。
またこういう世界から遠ざかって久しいのでいろいろと拙い部分があると思います。ご指摘ください。
新しいユーザーを作成する
ずっとデフォルトユーザーのpiを使用していると、セキュリティ上物騒である為、新しくユーザーを作成します。
新しいユーザーを作成する際は、sudoが使用できるグループに所属させます。(私はこれでsudoが使用できないユーザーを作成した後にpiを凍結させて、$ sudo su - することもできずに環境を一度imgファイルから書き戻す羽目になりました。)
新しいユーザー作成後、piは削除するかアカウント凍結を行いましょう。
#グループの作成
$ sudo groupadd -(グループ番号) (グループ名)
#ユーザーの作成
$ sudo useradd -m (ユーザー名)
#ユーザーのパスワードの設定
$ sudo passwd (ユーザー名)
#ユーザーが所属するグループの追加。
$ sudo usermod (グループ名、カンマ区切りで複数指定可) (ユーザー名)
$ groups (ユーザー名)
#↑実行すると、そのユーザーが所属しているグループ名一覧が表示される。
#新しいユーザー名を作成する時はpiのグループをそれで取得してusermodで追加することも可能。
phpのインストール
以下のコマンドを実行し、phpとphp-curlをインストールします。(php-curlがないとtwitteroAuthが動きません)
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install php
$ sudo apt-get install php-curl
マルチバイト文字を使用するため、mbstring.dllのコメントアウトを外します。
;(略)
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;(略 ↓行頭のセミコロンを削除し、このコメントアウトを外す)
extension=mbstring
;
さらに足りないのでモジュールを追加します。
$ sudo apt-get install php-mbstring
とりあえずのセキュリティ設定
自分はセキュリティの専門家ではないので、一番世間で騒がれているセキュリティを一通り行うこととします。
DirecrotryIndex系は自分の環境ではwwwが置かれているディレクトリは別ディレクトリに複数分かれているため行いません。都度.htaccessに記載することにします。
もし過不足、誤りなどございましたらご指摘ください。
参考サイトはこちら
https://qiita.com/bezeklik/items/1c4145652661cf5b2271
#ファイルパスx.yはPHPのバージョン。
#エラー非表示
display_errors=off
#エラーログ出力設定
log_errors=on
#バージョン非表示
expose_php=off
↑すいません、パス間違ってました(2023/03/29)
httpリクエストのヘッダの追加・削除・変更を行います。これを行わないとサービス再起動時に後述のheaderなんちゃら系のエラーが出力されます。
$ sudo a2enmod headers
#バージョン非表示
ServerTokens Prod
ServerSignature off
Header unset "X-Powered-By"
#httpoxy対策
RequestHeader unset Proxy
#クリックジャッキング対策
Header append X-Frame-Options SAMEORIGIN
#XSS対策
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
#XST対策
TraceEnable Off
サービスを再起動します。
$ sudo /etc/init.d/apache2 restart
サービス再起動時にエラーが出力されない事を確認してください。
念のためこのあたりでWin32DiskImagerでmicroSDのイメージをコピーしておくことをお勧めします。
関連ページ