CentOS後継であるAlmaLinuxをインストールする方も増えてきているかと思います。Linuxサーバのセキュリティを強化する一つの方法として、不要なサービスは停止しておくことが挙げられます。ここでは、OSインストール直後にまず最初に行う設定として、不要なサービスを自動起動しないようにする方法をお伝えします。どのようなサービスが起動していて、どのサービスが不要か判断していただき、セキュアなサーバ構築を行ってください。
OSインストール直後の起動サービス(systemctlで確認)
AlmaLinuxを最小限でインストールした直後の、サービスの起動状況をお伝えします。
ここでは、AlmaLinux-8.7-x86_64-minimal.iso を使用してインストールした結果です。
# systemctl list-unit-files --type=service | grep enabled
auditd.service enabled
autovt@.service enabled
chronyd.service enabled
crond.service enabled
dbus-org.fedoraproject.FirewallD1.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
dbus-org.freedesktop.timedate1.service enabled
firewalld.service enabled
getty@.service enabled
import-state.service enabled
irqbalance.service enabled
kdump.service enabled
loadmodules.service enabled
lvm2-monitor.service enabled
microcode.service enabled
NetworkManager-dispatcher.service enabled
NetworkManager-wait-online.service enabled
NetworkManager.service enabled
nis-domainname.service enabled
rsyslog.service enabled
selinux-autorelabel-mark.service enabled
sshd.service enabled
sssd.service enabled
syslog.service enabled
timedatex.service enabled
tuned.service enabled
結論(サービスを停止しても良いもの)
まず結論から、サービスを停止(無効)してもよいサービスは、
- import-state.service
- kdump.service
- loadmodules.service
- NetworkManager-wait-online.service
- nis-domainname.service
- selinux-autorelabel-mark.service
- sssd.service
となります。こちら利用される環境で必要か不要かをご自身でご判断ください。
私は当初、NetworkManager-dispatcher.service のサービスも無効にして良いと思っていましたが、OS起動時に、[system] Activation via systemd failed for unit ‘dbus-org.freedesktop.nm-dispatcher.service’: Unit dbus-org.freedesktop.nm-dispatcher.service not found.
というエラーが、/var/log/messagesに出ていました。(NetworkManager-dispatcher.service のサービスを無効にすると、dbus-org.freedesktop.nm-dispatcher.serviceも無効になるようです)
ですので、NetworkManager-dispatcher.service のサービスは有効のままにします。この際、OS起動時に、[system] Activation via systemd failed for unit ‘dbus-org.freedesktop.resolve1.service’: Unit dbus-org.freedesktop.resolve1.service not found. というエラーが今度は出るので、/etc/NetworkManager/NetworkManager.conf にて、
[main]
systemd-resolved=false
を追記して、エラーメッセージが出ないように対処します。なお、エラーが出ていても運用には特に影響はないようですが、念のため。
自動起動の設定をパッケージのシステムアップデートより前に実施するか
サービスの自動起動の設定を、パッケージのアップデート前に実施するかどうか、判断に迷う方もいらっしゃるかもしれません。結論からどちらが先でも問題ございません。
なおパッケージの自動アップデートの方法については、自動アップデートを有効にしてサイバー攻撃に備える設定方法で紹介しています。
私は、上記のサービス無効化の設定をした後、まずはOSを再起動するようにしています。これにより、起動していた不要なサービスが停止することになりますし、もし停止してはダメなサービスがあると起動時や起動後にエラーが出るので、何が問題であったかを突き止めやすいです。
不要な後戻りを避けるためにも、一つずつ作業して、動作確認するようにしましょう!
自動起動を有効にするかを判断するためのサポート
ここでは、自動起動しているサービス一つ一つを確認し、本当に起動が必要かを判断するための情報を提供します。個人的な意見も含まれますので、利用するサーバの役割等を考慮の上、設定ください。
項番 | サービス名 | 役割 | 自動起動 |
1 | auditd.service | 監査サービスデーモン。Linuxカーネル のシステムコールなどのイベントを監視。Linux Audit を使用すると、システムコール が実行された状態をログに記録できる。システムがダウンした場合、攻撃を受けた場合に、原因の究明に役立つ。 | 有効 |
2 | autovt@.service | コンソールログインに利用するサービス。本当に必要な場合に限り実行されるので、起動している場合はそのままにしておく。 | 有効 |
3 | chronyd.service | 時刻同期のサービス。サーバの時刻がずれると困るので有効にしておく。 | 有効 |
4 | crond.service | コマンドの定時実行を行うサービス。停止すると、crontabも動かなくなるので、有効にしておく。 | 有効 |
5 | dbus-org.fedoraproject. FirewallD1.service | firewalld.service へのシンボリックリンク。外部にFirewallがあったとしても、サーバ側でもFirewalldを有効にしておくべきなので、こちらも有効にしておく。 | 有効 |
6 | dbus-org.freedesktop. nm-dispatcher.service | NetworkManager-dispatcher.service へのシンボリックリンク。nm-dispatcher がプロセス間通信をおこなうためのメッセージバスサービス。必要そう。 | 有効 |
7 | dbus-org.freedesktop. timedate1.service | timeコマンドやdateコマンドで使っているプロセス間通信のサービス。時刻に関する事は重要なので有効にしておく。 | 有効 |
8 | firewalld.service | ファイアウォールのサービス。絶対有効にすべき。 | 有効 |
9 | getty@.service | “get teletype”の省略形であり、ホストコンピュータ上で仮想端末(TTY)を制御するためのサービス。このサービスは、本当に必要な場合に限り実行されるため、無効にする必要はありません。 | 有効 |
10 | import-state.service | ネットワークストレージからの起動が必要ない場合に限り無効にします。 | 無効 |
11 | irqbalance.service | CPU が 1 つしかない場合に限り無効にする。システムに CPU が複数ある場合は 無効にしない。 | 有効 |
12 | kdump.service | カーネルクラッシュからのレポートが必要ない場合に限り無効。dump情報を解析は個人では難しいので、サポートに入っていない場合は無効。 | 無効 |
13 | loadmodules.service | このサービスは、/etc/rc.modules ディレクトリーまたは /etc/sysconfig/modules ディレクトリーがなければ起動しない。最小インストールでは起動しない。 | 無効 |
14 | lvm2-monitor.service | 論理ボリュームマネージャー (LVM) を使用しない場合に限り無効にする。デフォルトのディスク構成で、LVMを使用しているので有効のまま。 | 有効 |
15 | microcode.service | CPU 内のマイクロコードソフトウェアの更新を提供するため、有効のまま | 有効 |
16 | NetworkManager- dispatcher.service | ネットワーク設定変更の通知が必要ない場合 (静的ネットワークなど) に限り無効にする。こちらを無効にすると、項番6のdbus-org.freedesktop.nm-dispatcher.serviceも無効になる。なので、有効にしておく。 | 有効 |
17 | NetworkManager-wait- online.service | システムの起動直後にネットワーク接続が利用できるようになっている必要がない場合に限り無効にします。このサービスを有効にすると、ネットワーク接続が有効になるまで、システムの起動が完了しません。サーバは固定IPでネットワークありきなので、起動しなくても良い気がする。 | 無効 |
18 | NetworkManager.service | ネットワークの接続が必要なので有効のまま。 | 有効 |
19 | nis-domainname.service | ネットワークインフォメーションサービス (NIS) を使用しない場合に限り無効。 | 無効 |
20 | rsyslog.service | シスログのサービスなので、ログがないと困る。有効のまま。 | 有効 |
21 | selinux-autorelabel-mark.service | SELinux を使用しない場合に限り無効にする。セキュリティを考慮すると使用した方が良いが、SELinuxを無効化しているので、無効にする。 | 無効 |
22 | sshd.service | sshを使用するので、有効のまま。 | 有効 |
23 | sssd.service | ネットワークを介して (たとえば LDAP や Kerberos を使用して) システムにログインするユーザーがいない場合に限り無効にする。 | 無効 |
24 | syslog.service | rsyslog.service のエイリアスなので、rsyslogを有効にしている場合は、有効のまま。 | 有効 |
25 | timedatex.service | システムクロックやRTC(リアルタイムクロック)のD-Busサービス。有効のまま。 | 有効 |
26 | tuned.service | パフォーマンスチューニングを使用する必要がない場合に限り無効にする。有効のまま。 | 有効 |
参考文献
今回はここまでです。最後までお読みいただきありがとうございました。