1. はじめに
ここ最近、新たなサーバーを構築する機会があり、AlmaLinux 9 を選択しました。
AlmaLinux 9 をインストールした後、最初にする設定をまとめます。
AlmaLinux は、CentOS 8 のフォークで、CentOS 8 のサポートが終了した後の代替として提供されています。
上記のサイトから、AlmaLinux 9 の (最小の)ISO イメージをダウンロードし、インストールまで完了しているものとします。
2. パッケージの追加と更新
AlmaLinux 9 をインストールした後、まず最初にすることは、パッケージの更新です。
ベース、開発ツールパッケージと日本語化も行います。
root 権限でコマンドを実行しているものとします。
# パッケージの更新
dnf -y update
# ベースと開発ツールパッケージのインストール
dnf -y groupinstall base "Development tools"
# 日本語ロケールのインストール
dnf install -y glibc-langpack-ja
# 日本語に設定
localectl set-locale LANG=ja_JP.utf8
# 再ログインすることで、日本語が有効になります。
上記でインストールができない場合、名前解決が何らかの理由で失敗しているかもしれないため以下のファイルを確認してください。
# /etc/resolv.conf
nameserver xxx.xxx.xxx.xxx
nameserver には、DNS サーバーの IP アドレスを指定します。
使用しているルーターの IP アドレスを指定することが多いです。
SELinux を無効にする場合は、以下のコマンドを実行します。
# SELinux無効化
setenforce 0
# SELinux状態確認
getenforce
# Permissive になっていれば、無効化されています。
# 永続化
grubby --update-kernel ALL --args selinux=0
3. 鍵生成と公開鍵設定
SSH 接続のための鍵生成と公開鍵設定を行います。
鍵の生成は WinSCP の PuTTYgen を使用します。
PUTTYGEN での鍵生成と公開鍵のサーバへの転送
基本的には上記のやり方ですが、「Number of bits in a generated Key」は 4096 にしています。
秘密鍵(.ppk) と 公開鍵(authorized_keys) を生成します。
生成した公開鍵は WinSCPを使い以下のディレクトリに配置します。
鍵を使い接続するユーザーのホームディレクトリ以下に .ssh ディレクトリを作成。
mkdir -p ~/.ssh
authorized_keys ファイルを、.ssh ディレクトリに配置し権限を変更します。
# 権限の変更
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh の設定ファイルを編集。
# sshd_config ファイルを編集
vi /etc/ssh/sshd_config
# Root ログインを無効化
PermitRootLogin no
# パスワード認証を無効化
PasswordAuthentication no
# 空パスワードを無効化
PermitEmptyPasswords no
# 必要であればホームディレクトリのみにアクセスを制限
Match Group *,!wheel
ChrootDirectory /home/%u/./
# sshd を再起動
systemctl restart sshd
作成した秘密鍵を使い、WinSCP で接続します。
4. セキュリティ強化
セキュリティ強化のため、以下の設定を行います。
こちらは以下を参考にしてください。
ファイル改竄検知システム導入(Tripwire)
rootkit検知ツール導入(chkrootkit)
アンチウイルスソフト導入(Clam AntiVirus)
ファイアウォール構築(firewalld)
5. ログローテーション設定
ログ監視に logwatch と logcheck を使います。
まずは、logwatch のインストールと設定を行います。
# logwatch のインストール
dnf install -y logwatch
# logwatch の設定
vi /etc/logwatch/conf/logwatch.conf
# メール送信先の設定
MailTo = root
# ログレベル(Low, Med, High)
Detail = High
MailTo には、メール送信先のアドレスを指定します。
自サーバーのアカウントであればユーザー名でも構いません。
Detail には、ログの詳細度を指定します。
以下で動作確認を行います。
# 標準出力に表示
logwatch --output stdout
# メールに送信
logwatch --output mail
# CRONで動くようファイルがあるか確認
ls -la /etc/cron.daily/0logwatch
次に、logcheck のインストールと設定を行います。
# rsyslog のインストール
dnf install -y rsyslog
# logcheck のインストール
dnf install -y logcheck
# logcheck の設定
vi /etc/logcheck/logcheck.conf
# メール送信先の設定
SENDMAILTO="root"
# logcheck.logfiles の確認
vi /etc/logcheck/logcheck.logfiles
# 対象ログファイルの権限変更
chmod 644 /var/log/messages
chmod 644 /var/log/secure
# logrotate の設定
vi /etc/logrotate.d/rsyslog
# 対象ログファイルがあるか確認
/var/log/messages
/var/log/secure
SENDMAILTO は、logchek ユーザーが指定されています。ユーザーがいないため root に変更します。
logcheck.logfiles には、監視するログファイルを指定します。
対象のログファイルを追加した場合、logrotate の設定も変更する必要があります。
# CRONで動くようファイルがあるか確認
ls -la /etc/cron.d/logcheck
毎時、指定したメールにログが送信されるようになります。
権限を変更しないとメールが送信されないため、受信できない場合は権限を確認してください。
6. まとめ
AlmaLinux 9 をインストールした後、最初にする設定をまとめました。
サーバーに導入する機能によってはここから拡張することになりますが、基本的な設定は共通なのでまとめておきました。
構築時の参考になれば幸いです。
今回の記事も、Github Copilot が7割くらい書いてくれました。
A. 参考サイト
AlmaLinuxで自宅サーバー構築
PUTTYGEN での鍵生成と公開鍵のサーバへの転送
AlmaLinux9.2のログ監視にlogwatchをインストール
/var/log 以下に cron, secure, message などのログがない場合
コメント