🦁

Debian 12 環境構築

2024/07/06に公開

この記事は、さくらインターネットのVPSでDebian 12の環境構築をした作業記録である。価格だけで選ぶなら、X-ServerやWeb ARENAのVPSの方が安い。

aptコマンドの使い方

  • 検索:apt search apparmor
  • インストール:apt install apparmor
  • リストの更新:apt update
  • バイナリの更新:apt upgrade

systemctlの使い方

systemctlは、デーモンの起動・終了を自動で行う。

  • 起動:sudo systemctl start apparmor
  • 終了:sudo systemctl stop apparmor
  • ステータス確認:sudo systemctl status apparmor
  • 有効化:sudo systemctl enable apparmor
  • 無効化:sudo systemctl disable apparmor

auditd

後述のAppArmorで利用する。

  • インストール:apt install auditd

AppArmor

AppArmorとは、Debian系における、Redhat系のSELinuxのようなもの。SELinuxは慣れないとかなり煩わしいが、AppArmorSELinuxより楽である。

  • インストール
    sudo apt install apparmor apparmor-utils
    
  • ステータスを確認
    sudo systemctl status apparmor
    
    インストール直後に起動するはずだが、起動していなければ起動する。
    sudo systemctl start apparmor
    
    AppArmorの設定状況を確認する。
    sudo aa-status
    
    こんな感じで出力される。初期状態で7プロファイルが動作している。
    apparmor module is loaded.
    7 profiles are loaded.
    7 profiles are in enforce mode.
       /usr/lib/NetworkManager/nm-dhcp-client.action
       /usr/lib/NetworkManager/nm-dhcp-helper
       /usr/lib/connman/scripts/dhclient-script
       /{,usr/}sbin/dhclient
       lsb_release
       nvidia_modprobe
       nvidia_modprobe//kmod
    0 profiles are in complain mode.
    0 profiles are in kill mode.
    0 profiles are in unconfined mode.
    0 processes have profiles defined.
    0 processes are in enforce mode.
    0 processes are in complain mode.
    0 processes are unconfined but have a profile defined.
    0 processes are in mixed mode.
    0 processes are in kill mode.
    
  • 標準の設定ファイルがあるディレクトリー
    tree /etc/apparmor.d/abstractions/
    
  • ローカルの設定ファイルを作るディレクトリー
    /etc/apparmor.d/local/
    

Apache2のAppArmorプロファイルの作り方は、以下を参照。
https://qiita.com/hoogee/items/7f96f2d533b5cf9576cd

Apache2

Debian系のApacheの設定ファイルの管理方法は、控えめに言ってクソです。お勉強が得意なバカが考えそうな仕組みです。

  • インストール
    sudo apt install apache2
    
  • 起動を確認
    sudo systemctl restart apache2
    

mod_headers を有効にする

なんで有効にしたんだか忘れた。

sudo a2enmod headers
sudo systemctl restart apache2
sudo apache2ctl -M | grep headers

仮想ホストの設定

  1. sites-availableディレクトリーに、1サイトにつき1ファイルを作る
  2. a2ensiteコマンドで、sites-enabledにリンクを張る
  3. ownerrootじゃないとエラーになる?

PHP

PHPは、Apacheのモジュールとして動作するので速い。CGI(FastじゃないCGI)は、プロセス間通信するので遅い。現在ではPerlのapacheモジュールもあるし、Python版もあるらしい。PHP-FPM(FastCGI版)で動作させることも可能であるが、モジュール版の方が速いし手間が少ない。

  • Apache2用モジュールのインストール
    現在はNginx用のPHPモジュールも存在する
    sudo apt install libapache2-mod-php
    
  • 再起動してPHPモジュールを有効にする
    sudo systemctl restart apache2
    

どうやらdebianは、PHPをバージョン毎にインストールできそうだ。

/usr/bin/php8.2 --version

Let's Encrypt

Apache2のSSLを有効にする

sudo a2enmod ssl
sudo systemctl restart apache2

Let's Encryptのインストール

sudo apt install certbot python3-certbot-apache

SSL証明書の設定

ホスト名の一覧が表示されるので、番号から選択するだけ。
apacheのconfファイルの設定も行ってくれる。便利。

sudo certbot --apache

自動更新は設定してくれる

sudo systemctl status certbot.timer

MySQL

MySQLサーバーとCLIクライアントのパッケージ名はこちら。
なんでこうなった???まぁここは歴史的経緯があるからかもしれない。

sudo apt install default-mysql-server
sudo apt install default-mysql-client

FTP - vsftpd

パッシブモード

https://zenn.dev/tomoakinagahara/articles/97ac440ef1593e

chroot

https://zenn.dev/tomoakinagahara/articles/1f18348c1fef08

メールサーバー

Postfix

多分、インストールしただけで動作すると思う。

dovecot

https://zenn.dev/tomoakinagahara/articles/7fcdceabaf2c96

Fail2ban

SSHのログインが失敗したIPアドレスをブロックする。
細かな設定方法は以下の記事にまとめてある。

https://zenn.dev/tomoakinagahara/articles/a1af9d36c67c20

  1. インストール:sudo apt install fail2ban
  2. Fail2ban起動:sudo systemctl start fail2ban
  3. ステータスを確認:sudo systemctl status fail2ban

デフォルトで起動に失敗していた場合は、以下のエラーが表示されていないか確認する。

ERROR Failed during configuration: Have not found any log file for sshd jail

上記のエラーは、設定ファイルにログのパスが設定されていないから。
Debianで、Redhat系(CentOSなど)の/var/log/secureに相当するログファイルは/var/log/auth.logだがrsyslogがインストールされていないと作成されていないので、/etc/fail2ban/jail.d/defaults-debian.conflogpathが空欄になっている。

/etc/fail2ban/jail.d/defaults-debian.conf
[sshd]
enabled = true
logpath = 

backendsystemdにする方法もあるようだが上手くいかない。

/etc/fail2ban/jail.d/defaults-debian.conf
[sshd]
enabled = true
backend = systemd

rsyslogをインストールする方が良い。

  1. インストール:sudo apt install rsyslog
  2. ステータスを確認:sudo systemctl status rsyslog
  3. ログに書き込まれているか確認:cat /var/log/auth.log

再起動して確認

sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-server status 
sudo fail2ban-server status sshd

さくらインターネットで、追加ストレージ(NFS)もL2スイッチに接続する

基本的に以下のURLの通りにやればできる
https://manual.sakura.ad.jp/vps/support/technical/nfs.html
ただし、NFSを /www/ にマウントしたかったので、マウントだけ変えた。

mount -t nfs 192.168.1.100:/export /www

Discussion