Fedora Serverをインストールしたら最初に行うべき6つの設定:クリーンで安全なサーバー構築

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Fedora Serverのインストール直後、無防備な状態でインターネットに公開してはいけません

Fedora Serverのインストール自体は10分程度で終わりますが、安定かつ安全に運用するにはそれ以上の準備が必要です。デフォルト状態(バニラ)のシステムは、設定が甘いことがよくあります。今すぐポート22を開放すれば、数分もしないうちにボットネットによるブルートフォース攻撃のログでシステムが埋め尽くされるでしょう。

2年間、個人PCとサーバーの両方でFedoraを使用してきた経験から、独自のルールセットをまとめました。デフォルトのままではなく、軽量かつ防御力の高いシステムに微調整するための手順を解説します。以下は、ターミナルが表示された直後に私が行う手順です。

1. DNFの高速化とアップデートの自動化

デフォルトでは、FedoraのパッケージマネージャーであるDNFは同時ダウンロード数が制限されているため、動作が低速です。新規インストール直後は300〜500MBほどのアップデートが控えていることが多いため、並列ダウンロードの設定を追加して高速化しましょう。

echo "max_parallel_downloads=10" | sudo tee -a /etc/dnf/dnf.conf
sudo dnf upgrade -y

セキュリティパッチの適用漏れを防ぐために、dnf-automaticをインストールします。このツールを使えば、手動操作なしで午前3時などの指定した時間に重要なパッチを自動的に適用できます。

sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

/etc/dnf/automatic.confファイル内のupgrade_type = securityを設定することをお勧めします。これにより、セキュリティに関する修正のみが更新され、実行中のサービスに影響を与える可能性のあるソフトウェアのバージョンアップを避けることができます。

2. SSHの強化 — 自動ボットを99%遮断する

ハッカーはいちいち手動でパスワードを入力しません。スクリプトを使ってポート22のIPアドレスをスキャンしています。攻撃のターゲットから外れるために、sshd_configの設定を変更しましょう。

  • ポート22の変更: 2468のようなランダムな数字を選びます。これだけで、ほとんどの無差別なスキャンを回避できます。
  • Rootログインの禁止: rootアカウントへの直接ログインを許可してはいけません。一般ユーザーでログインしてからsudoを使用してください。
  • SSHキーの使用: パスワード認証を完全に無効化します。物理的な秘密鍵ファイルがなければ、誰もサーバーにアクセスできなくなります。
# /etc/ssh/sshd_config 内の以下の行を修正
Port 2468
PermitRootLogin no
PasswordAuthentication no

警告: 現在のターミナルをすぐに閉じないでください。まずssh-copy-idコマンドで自分の公開鍵をサーバーに登録してください。そうしないと、SSHを再起動した後に自分自身がサーバーからロックアウトされてしまいます。

3. 「デフォルト拒否」の原則でFirewalldを設定する

Fedoraはネットワークトラフィックの管理にfirewalldを使用します。個別にポートを開くのではなく、サービス単位で管理することで制御しやすくなります。先ほどSSHポートを変更した場合は、まずそれをファイアウォールに登録する必要があります。

# 新しいSSHポートを開放し、古いデフォルト設定を削除する
sudo firewall-cmd --permanent --add-port=2468/tcp
sudo firewall-cmd --permanent --remove-service=ssh

# Webサーバーが必要な場合のみ開放する
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

sudo firewall-cmd --list-allコマンドで再確認してください。安全なサーバーとは、提供するサービスに必要な最小限のポートのみが開いているサーバーのことです。

4. SELinuxを無効化せず、ラベル付けを学ぶ

ネット上の多くのガイドでは、「Permission Denied」エラーを避けるためにSELinuxを無効化(disable)するよう勧めていますが、それは非常に悪いアドバイスです。SELinuxは各ファイルを見守るガードマンのようなものです。たとえハッカーにユーザー権限を奪われても、SELinuxが阻止すればシステムファイルを改ざんすることはできません。

Nginxをインストールして403エラーが発生する場合、多くはファイルのラベル(コンテキスト)が正しくないことが原因です。保護を無効にするのではなく、Webディレクトリに正しいラベルを割り当てましょう:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/my_site(/.*)?"
sudo restorecon -Rv /var/www/my_site

設定が難しいと感じる場合は、setroubleshoot-serverをインストールしてください。エラーの原因と、それを修正するために実行すべきコマンドを英語で詳しく解説してくれます。

5. zRAMによるメモリ最適化 — 小規模サーバーの救世主

FedoraにはzRAMという非常に優れた機能があります。不要なデータを低速なディスク(Swap)に書き出す代わりに、RAM内でデータを圧縮して保持します。圧縮率は通常2:1から3:1に達します。

1GBや2GBといったメモリの少ないサーバー(格安VPSなど)を使用している場合は、zramctlコマンドでzRAMを確認してください。圧縮容量を増やすことで、高価なハードウェアのアップグレードなしでより多くのDockerコンテナを実行できるようになります。

6. ログ容量を制限してディスクフルを防ぐ

Fedoraのログシステム(journald)は、数ヶ月放置すると数GBまで膨れ上がり、ルートパーティションの容量不足によるシステム停止を引き起こす可能性があります。必要十分なサイズ(例:200MB)に制限しましょう。

sudo vi /etc/systemd/journald.conf
# 次の行を探して修正: SystemMaxUse=200M
sudo systemctl restart systemd-journald

同様に、/etc/dnf/dnf.conf内のinstallonly_limit=2を設定して、保持する古いカーネルの数を制限してください。これにより、/bootパーティションの空き容量を常に確保できます。

おわりに

サーバーのセキュリティ対策は一度設定すれば終わりというものではありませんが、このチェックリストを正しく実行することで、より安心して運用できるようになります。SSH、FirewalldからSELinuxまで、多層防御がしっかりと構築されていれば、あなたのFedoraサーバーは一般的なネット上の攻撃に屈することなく、実務に耐えうるものになるでしょう。

Share: