【Rsyslog基礎 第2回】構築編 – プロが教えるインストールと「攻め」のセキュリティ設定【AlmaLinux】

Linux

インストールする「前」が勝負

こんにちは!「リナックス先生」です。
前回は設計を行いましたね。今回はいよいよAlmaLinux上にRsyslogサーバーを構築していきます。

コウ君

先生!早く dnf install しましょう!
コマンド一発で終わりますよね?

リナックス先生

ちょっと待ちなさい。
ログサーバーにおいて、ソフトを入れる前に絶対に確認しなければならないことが一つあるわ。
それは「時刻同期」よ。

1. 【Pro視点】時刻同期の徹底(Chrony)

ログサーバーにとって、「いつ(Timestamp)」の情報は命です。
もしログサーバーの時計が5分ずれていたら、障害発生時に「ログがない!」とパニックになり、原因特定が不可能になります。

Chronyの確認と設定

AlmaLinux 9では標準で chronyd が使われます。

# 状態確認
systemctl status chronyd

# 同期状態の確認(ここが重要!)
chronyc sources -v

* マークがついているNTPサーバーがあり、Last offset がミリ秒単位に収まっていることを確認してください。
もしずれている場合は、/etc/chrony.conf を日本のNTPサーバー(ntp.nict.jpなど)に書き換えて即座に同期させます。

2. Rsyslogのインストールとバージョン確認

土台ができたらインストールです。AlmaLinux 9は最初から入っていることが多いですが、最新版であることを確認します。

# インストール(または更新)
dnf install rsyslog -y

# 自動起動設定
systemctl enable --now rsyslog

インストール内容の検証

プロなら「何が入ったか」を確認します。

rsyslogd -v

出力例の中に GSSAPI, imtcp, imudp などのサポート機能が表示されます。
「あ、このバージョンならTLS通信も対応してるな」といった判断材料になります。

3. 【Pro視点】Firewalldで「送信元」を絞る

ここが今回のハイライトです。
多くの解説サイトでは --add-port=514/tcp で「全開放」してしまいますが、これはセキュリティ上好ましくありません。

ログサーバーは攻撃者にとって「消したい証拠の山」です。
「社内のネットワーク(例:192.168.1.0/24)からしか接続させない」設定を行いましょう。これをRich Rules(リッチルール)と呼びます。

リッチルールの設定手順

まずは現状を確認します。

firewall-cmd --list-all

次に、特定のネットワーク(ここでは 192.168.1.0/24)からの TCP/UDP 514番のみを許可します。

# UDP 514番 (192.168.1.0/24 からのみ許可)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="514" protocol="udp" accept'

# TCP 514番 (192.168.1.0/24 からのみ許可)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="514" protocol="tcp" accept'

# 設定反映
firewall-cmd --reload
コウ君

おお!これでインターネット側からの不審なアクセスは全部弾かれるんですね!
「全開放」より手間だけど、安心感が違います。

4. SELinuxとの付き合い方

AlmaLinuxを使う以上、SELinux(強制アクセス制御)を無視できません。
ログサーバーでは、「標準以外のポート(例えば5140番)」を使ったり、「標準以外の場所(/data/logsなど)」に保存しようとすると、SELinuxにブロックされます。

現状の確認

getenforce

Enforcing(有効)になっているはずです。

どう対処すべきか?

今回は標準ポート(514)を使い、/var/log/ 配下に保存するため、特別な設定変更は不要です。
しかし、もし後で「ポートを変えたい」となった場合は、以下のコマンドが必要になることを覚えておいてください。

# (参考) Rsyslogが使うポートとして5140番を追加許可する場合
semanage port -a -t syslogd_port_t -p tcp 5140

※「とりあえず無効化(setenforce 0)」は、学習用ならOKですが、本番環境では推奨しません。

5. 設定ファイルのバックアップとGit管理

いじり始める前に、オリジナルの設定ファイルをバックアップします。
プロの現場では、設定ファイルをGitでバージョン管理することもあります。

# シンプルなバックアップ (-pでタイムスタンプ保持)
cp -p /etc/rsyslog.conf /etc/rsyslog.conf.org

# (応用) Gitで管理する場合
dnf install git -y
cd /etc
git init
git add rsyslog.conf
git commit -m "Initial commit of rsyslog configuration"
リナックス先生

設定ミスでRsyslogが起動しなくなった時、Gitがあれば git checkout 一発で元通りよ。
「いつ、誰が、なぜ変更したか」も残るから、チーム開発では必須のスキルね。


次回予告:ログ振り分けの魔法

お疲れ様でした!
これで「セキュアで正確なログサーバーの土台」が完成しました。

  1. 時刻同期 (Chrony) で時間のズレなし。
  2. 最新の Rsyslog が稼働中。
  3. Firewalld の Rich Rules で関係者以外シャットアウト。

次回はいよいよRsyslogの核心部分、「テンプレート機能」を使って、送られてきたログをIPアドレスごとに別々のフォルダへ自動収納する設定を行います。
ここから一気に面白くなりますよ!

▼堅牢なログサーバーを構築するなら

長期運用するログサーバーには、安定性とディスクI/O性能が必要です。SSD標準搭載で信頼性の高いこちらのVPSが最適です。

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント