Debian 12 環境構築
この記事は、さくらインターネットの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は慣れないとかなり煩わしいが、AppArmorはSELinuxより楽である。
- インストール
sudo apt install apparmor apparmor-utils
- ステータスを確認インストール直後に起動するはずだが、起動していなければ起動する。
sudo systemctl status apparmor
AppArmorの設定状況を確認する。sudo systemctl start apparmor
こんな感じで出力される。初期状態で7プロファイルが動作している。sudo aa-status
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プロファイルの作り方は、以下を参照。
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
仮想ホストの設定
-
sites-available
ディレクトリーに、1サイトにつき1ファイルを作る -
a2ensite
コマンドで、sites-enabled
にリンクを張る -
owner
がroot
じゃないとエラーになる?
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
パッシブモード
chroot
メールサーバー
Postfix
多分、インストールしただけで動作すると思う。
dovecot
Fail2ban
SSHのログインが失敗したIPアドレスをブロックする。
細かな設定方法は以下の記事にまとめてある。
- インストール:
sudo apt install fail2ban
- Fail2ban起動:
sudo systemctl start fail2ban
- ステータスを確認:
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.conf
のlogpath
が空欄になっている。
[sshd]
enabled = true
logpath =
backend
をsystemd
にする方法もあるようだが上手くいかない。
[sshd]
enabled = true
backend = systemd
rsyslog
をインストールする方が良い。
- インストール:
sudo apt install rsyslog
- ステータスを確認:
sudo systemctl status rsyslog
- ログに書き込まれているか確認:
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の通りにやればできる/www/
にマウントしたかったので、マウントだけ変えた。
mount -t nfs 192.168.1.100:/export /www
Discussion