Linuxサーバー・ハードニング・チェックリスト
15分で読めます - 2026年5月8日

Linuxサーバーを堅牢化するためのステップバイステップのチェックリスト。SSH、ファイアウォール、パッチ適用、ファイルパーミッション、SELinux/AppArmor、監査ロギングをカバー。
Linuxサーバーのセキュリティ強化チェックリスト
デフォルトのLinuxインストールは、安全な状態ではありません。ルートユーザーへのSSHアクセスが開放されている、ファイアウォールの設定が不十分、ソフトウェアのパッチが適用されていないといった設定ミスが、セキュリティ侵害の大部分を占めています。新しいサーバーはオンラインになって数分以内に自動スキャンを受けるため、何よりもまずセキュリティ強化を行う必要があります。
このチェックリストでは、SSHのロックダウン、ファイアウォールの設定、パッチ適用、ファイル権限の厳格化、強制アクセス制御(MAC)の有効化、監査ログの設定といった主要な手順を網羅しています。
SSHの厳重な保護
SSHは主要なアクセスポイントであり、攻撃者が最初に探る対象です。デフォルトの設定(パスワード認証、rootログイン、ポート22)は、まさに自動スキャナーが探しているものです。
RSAよりも優れたセキュリティとパフォーマンスを提供するEd25519鍵ペアを生成してください:
ssh-keygen -t ed25519鍵ベースのログインが機能したら、更新してください /etc/ssh/sshd_config:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2デフォルトのポートを22から、より目立たない番号に変更してください。これにより、執拗な攻撃者を完全に阻止できるわけではありませんが、自動スキャンによるノイズを大幅に削減できます。
現在のセッションを終了する前に、必ず別の端末から変更内容をテストしてください。 sudo sshd -t を実行して構文エラーを確認し、その後 systemctl reload sshd を実行して、アクティブな接続を切断せずに適用します。
二要素認証を追加する
2FAを導入すれば、攻撃者はSSHキーとデバイスへの物理的なアクセス権の両方を必要とするようになります。Google AuthenticatorのPAMモジュールをインストールしてください:
sudo apt install libpam-google-authenticator # Debian/Ubuntu
sudo dnf install google-authenticator # RHEL/Fedora各ユーザーに対して google-authenticator を実行して、各ユーザーごとに秘密鍵とリカバリコードを生成します。リカバリコードはオフラインで保管してください。
次の行を /etc/pam.d/sshd:
auth required pam_google_authenticator.so次に、 /etc/ssh/sshd_config:
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactiveテスト中はアクティブなセッションを開いたままにしておいてください。TOTPコードは正確なシステム時刻に依存するため、NTPが稼働していることを確認してください。
ファイアウォールとFail2Banの設定
サーバーがネットワークファイアウォールの内側に配置されている場合でも、ホストベースのファイアウォールを実行してください。その原則は単純です。デフォルトですべての着信トラフィックを拒否し、必要なものだけ許可するようにします。
Ubuntu/Debian (UFW) の場合:
ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enableRHEL/Rocky/AlmaLinux (Firewalld) の場合:
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload以下の設定を /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1Fail2Banのインストール
Fail2Banはログイン試行を監視し、繰り返し失敗したIPをブロックします。 /etc/fail2ban/jail.local ( jail.conf 。更新時に上書きされます)を作成し、10分以内に3回失敗した後に1時間IPをブロックするように設定します。お使いのファイアウォールに適したバックエンドを設定してください(banaction = ufw または banaction = nftables).
監査サービスとレガシープロトコルの削除
listenしているものを確認するには ss -tlnp でリスニングしているサービスを確認し、 systemctl list-units --type=service --state=running。不要なものはすべて無効にしてください:Bluetooth、CUPS、avahi-daemon、rpcbind。
データを平文で送信するレガシープロトコルを削除します:
| レガシープロトコル | ポート | 安全な代替手段 |
|---|---|---|
| Telnet | 23 | SSH |
| RSH / Rlogin | 512、513、514 | SSH |
| FTP | 21 | SFTP / FTPS |
| TFTP | 69 | SFTP / SCP |
| NIS | 変数 | LDAP / Kerberos |
Debian/Ubuntuの場合: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. RHELベースのシステムでは: yum erase xinetd ypserv tftp-server telnet-server rsh-server. 削除を確認するには ss -tulpn.
パッチ適用と更新の自動化
システムの更新は、既知のセキュリティ上の脆弱性を解消する最も迅速な方法です。プロビジョニング後すぐに更新を実行してください:
apt update && apt upgrade -y # Debian/Ubuntu
dnf update -y # RHEL/Rocky次に、セキュリティパッチの適用を自動化します。Debian/Ubuntuでは、 unattended-upgrades をインストールし、セキュリティパッチのみを適用するように設定します。RHEL/Rockyでは、 dnf-automatic をインストールし、 upgrade_type = security を /etc/dnf/automatic.conf.
更新結果のメール通知を設定してください。本番サーバーでは自動再起動を無効にし(Automatic-Reboot = false)を無効にし、再起動は計画されたメンテナンス時間帯に行われるようにします。高稼働率の環境では、Canonical Livepatch(Ubuntu)または kpatch(RHEL)によるライブパッチ適用を検討してください。
ファイルシステムと権限の強化
まず、SUIDおよびSGIDバイナリを監査してください。これらのファイルは特権で実行されるため、悪用される主な標的となります:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls重要なファイルの権限を厳格化してください: /etc/shadow すべき 600, /etc/passwd すべき 644, /etc/ssh/sshd_config 以下のように設定してください 600。グローバルに設定する umask を 027 を /etc/profile に設定して、新規ファイルが世界読み取り可能になるのを防ぐ。
で世界書き込み可能なファイルを探して修正します find / -xdev -type f -perm -0002 -ls。世界書き込み可能のままにしておく必要があるディレクトリ(例: /tmp)には、スティッキービットを適用します: chmod 1777 /tmp.
セキュアマウントオプション
編集 /etc/fstab を編集し、重要なパーティションでの動作を制限します:
| パーティション | マウントオプション | 目的 |
|---|---|---|
/tmp | nodev, nosuid, noexec | 世界書き込み可能領域でのマルウェアの実行を防止する |
/var/tmp | nodev, nosuid, noexec | /tmp と同じ保護機能 |
/dev/shm | nodev, nosuid, noexec | 共有メモリを保護する |
/home | nodev, nosuid | setuid バイナリおよびデバイスノードをブロック |
/var/log | nodev, nosuid, noexec | ログの整合性を保護 |
再起動前の変更を mount -o remount 再起動前にテストを行い、起動時の問題を回避してください。
強制アクセス制御(MAC)を有効にする
SELinuxとAppArmorは、プロセスの動作に対してカーネルレベルの制限を追加します。お使いのディストリビューションに同梱されているものを使用してください。RHEL/CentOS/Fedoraの場合はSELinux、Ubuntu/Debian/SUSEの場合はAppArmorです。これらを切り替えると互換性の問題が発生します。
SELinux:ステータスを確認するには getenforceでステータスを確認してください。システムを破損させずにワークロードの挙動を把握するため、少なくとも2週間は許容モード(setenforce 0)で少なくとも2週間動作させ、システムを破損させることなくワークロードの挙動を把握してください。違反は ausearch -m avc -ts recentで違反を監視します。 audit2why を使用してブロックを診断し、 audit2allow -M [module_name] を使用してポリシーモジュールを作成します。ログに問題がなくなったら、 setenforce 1で強制モードに切り替え、その後 /etc/selinux/config.
AppArmorで恒久化します。アクティブなプロファイルを確認するには aa-statusでアクティブなプロファイルを確認します。管理コマンド用に apparmor-utils をインストールして管理コマンドを利用できるようにします。プロファイルを aa-complainでプロファイルをコンプレインモードで開始し、 aa-enforce を使用してエンフォースモードに移行します。 aa-genprof を使用して、カスタムアプリケーション用のプロファイルを作成してください。
監査ログの記録と監視の設定
ログがなければ、インシデントの痕跡は残らない。インストール auditd:
sudo apt-get install auditd audispd-plugins重要なファイルに対するファイルシステム監視を追加する:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identityルートレベルでのコマンド実行をすべて追跡する:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commandsルールを読み込み、 augenrules --load を使用してルールを読み込み、 -e 2 をルールファイルの末尾に追加して、設定を改ざん防止にします(変更には再起動が必要です)。
AIDE によるファイル整合性監視
AIDEは、現在の状態を正常なベースラインと比較することで、不正なファイル変更を検出します。これをインストールし、 aideinitでデータベースを初期化し、生成されたファイルを /var/lib/aide/aide.db.gzに移動します。毎日実行されるcronジョブを設定して aide --check を実行し、結果を管理者にメールで送信するように設定します。
ログの集中管理
root権限を持つ攻撃者がログを削除した場合、ローカルのログは無意味になります。rsyslogとTLS暗号化を使用して、ログをリモートサーバーにリアルタイムで転送してください。 /etc/rsyslog.conf:
*.* @@remote-host:514Set LogLevel VERBOSE を追加し、ログインに成功した際の鍵のフィンガープリントがログに含まれるようにします。複数のサーバーを管理する本番環境では、WazuhやOSSECなどのツールが、一元化されたログ分析機能を備えたホストベースの侵入検知を提供します。
継続的なメンテナンス
セキュリティ強化は一度きりの作業ではありません。設定は徐々に変化し、新たな脆弱性が発見され、スタッフの異動によって管理されていないアカウントが残されることがあります。
毎週:Fail2Banのログを確認し、更新の失敗がないかチェックし、バックアップを検証します。
毎月:ユーザーアカウントと権限の監査、稼働中のサービスの確認、LynisまたはOpenSCAPによるフルスキャンを実行。
四半期ごと:認証情報のローテーション、ファイアウォールルールの更新、災害復旧のテスト。
AnsibleなどのInfrastructure-as-Codeツールとdev-sec.ioのハードニングロールを併用し、全環境において一貫した設定を強制し、監査間の設定のずれを防止します。
FDCの専用サーバーなら、完全なrootアクセス権とセキュリティスタックに対する完全な制御が可能です。すべてのレイヤーを制御できるプラットフォーム上で構築するため、専用サーバーのオプションをご検討ください。

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。
今すぐアップグレード
Prometheusとnode_exporterのセットアップガイド
Prometheusとnode_exporterをインストールし、スクレイプターゲットを設定し、systemdサービスをセットアップし、監視スタックを保護する。Linux用のステップバイステップ。
15分で読めます - 2026年5月29日
Linuxパケット処理のためのXDPとeBPF
14分で読めます - 2026年5月27日

ご質問またはカスタムソリューションが必要ですか?
柔軟なオプション
グローバル・リーチ
即時展開
柔軟なオプション
グローバル・リーチ
即時展開