コンテンツにスキップ
PR

Linuxセキュリティ

  • Linuxセキュリティにおける4つの柱(更新・停止・権限・ログ)
  • 自宅サーバーやVPSを立ち上げたら最初にやるべきチェックリスト
  • 脆弱性番号(CVE)とディストリビューションが提供するセキュリティパッチの関係
  • **SSH、sudo、ファイアウォール(UFWなど)**の安全な基本設定
  • 不審なアクセスを検知するためのログ監視の入り口

「LinuxはWindowsよりもウイルスに強く、安全である」という話を耳にすることがあります。しかし、これは「デフォルトで安全」という意味ではありません。

結論として、Linuxセキュリティの基本は、「システムやパッケージを継続的に更新すること」「不要なサービスを停止すること」「適切な権限(最小特権)を徹底すること」「不審なアクセスを検知するためのログ監視」の4点に尽きます

特にインターネット上に公開するVPS(仮想専用サーバー)や自宅サーバーの場合、構築直後から無差別な自動アタック(不正ログインの試行)に晒されます。ハッカーによる高度な攻撃を恐れる前に、まずは「ログインパスワードの強化・鍵認証化」や「不要なポートを閉じる」といった、基本の防御策を習慣化することが最も重要です。


最初に実行すべき「Linuxセキュリティチェックリスト」

Section titled “最初に実行すべき「Linuxセキュリティチェックリスト」”

Linuxサーバーのセットアップ時、または定期監査時に確認すべき必須のチェックリストです。

  • システムパッケージがすべて最新版に更新されているか
  • root(スーパーユーザー)アカウントへの直接SSHログインが禁止されているか
  • SSHログインが「パスワード認証」ではなく「公開鍵認証」に制限されているか
  • ファイアウォール(UFWやfirewalld)が有効になっており、不要なポートが閉じられているか
  • sudo 権限を持つユーザーが適切に制限され、推測されにくいパスワードが設定されているか
  • 外部に公開されている不要なネットワークサービス(サービスポート)が起動していないか

CVE(共通脆弱性識別子)とセキュリティパッチの関係

Section titled “CVE(共通脆弱性識別子)とセキュリティパッチの関係”

Linuxのニュースなどでよく見かける「CVE-2026-XXXX」といったコードは、世界的に公開された脆弱性の識別番号(Common Vulnerabilities and Exposures)です。

1. CVEが見つかってから修正されるまでの流れ

Section titled “1. CVEが見つかってから修正されるまでの流れ”
  1. 脆弱性の発見: セキュリティ研究者や開発者がカーネルやソフトウェア(OpenSSHやOpenSSLなど)の脆弱性を発見し、CVE番号が発行されます。
  2. ** upstream(開発元)での修正**: プログラムの元の開発コミュニティが修正パッチを作成し、最新のマイナーバージョン(Mainline/Stable等)をリリースします。
  3. ベンダーによる「バックポート」: UbuntuやDebianなどのディストリビューションベンダーは、安定稼働を優先するため、OSのバージョン(カーネルバージョンなど)を勝手に上げません。代わりに、「脆弱性を修正するための最小限のコード(パッチ)だけ」を抽出し、古いバージョンのパッケージに適用して配布します。これを「バックポート(逆移植)」と呼びます

したがって、一般の管理者は「カーネルのメジャーバージョンを最新にする」必要はなく、「ディストリビューションが提供するセキュリティアップデートを実行する」だけで、CVEの脆弱性対策が完了します


主要OS別のセキュリティ更新・確認手順

Section titled “主要OS別のセキュリティ更新・確認手順”

脆弱性からシステムを守るための、日々のアップデートコマンドです。

  • Ubuntu / Debian系列 セキュリティ情報を含めた更新リストの取得と適用:
    Terminal window
    sudo apt update
    sudo apt upgrade -y
  • Fedora / AlmaLinux系列(Red Hat系) セキュリティアップデートのみを適用する便利なコマンド:
    Terminal window
    sudo dnf upgrade --security
  • Arch Linux 常にシステム全体を最新にローリングアップデート:
    Terminal window
    sudo pacman -Syu

    パッケージ更新と依存関係の確認手順の詳細はこちら:Linuxアップデート確認コマンドガイド


サーバーを保護する必須の「4つの基本設定」

Section titled “サーバーを保護する必須の「4つの基本設定」”

外部からの不正アクセスや侵入を防ぐために、サーバー構築直後に行うべき具体的な初期設定です。

1. SSHのセキュリティ強化(最重要)

Section titled “1. SSHのセキュリティ強化(最重要)”

SSH(Secure Shell)はサーバーの遠隔操作口であり、最も攻撃の標的になりやすいポートです。

  • rootログインの禁止: 管理者アカウント(root)で直接SSHログインできないように設定ファイル /etc/ssh/sshd_config を編集します。
    PermitRootLogin no
  • 公開鍵認証の強制: パスワードの総当たり攻撃(ブルートフォースアタック)を防ぐため、パスワードでのログインを無効にし、事前に生成した「秘密鍵と公開鍵」のペアでしか入れないように制限します。
    PasswordAuthentication no

すべての作業を管理者権限(root)で行うのは非常に危険です。

  • 一般のユーザーアカウントを作成し、システム設定を変更する一時的なタイミングのみ sudo コマンドを使用するように制限します。
  • sudo グループ(Ubuntuでは sudo、Red Hat系では wheel)に属するユーザーは、推測されにくい強力なパスワード(またはパスフレーズ)を設定してください。

3. ファイアウォール(UFW)の有効化

Section titled “3. ファイアウォール(UFW)の有効化”

外部からの不要な通信(パケット)を入り口で遮断します。

  • Ubuntu等の場合、「UFW(Uncomplicated Firewall)」が最も簡単で推奨されます。
  • 基本ポリシーを「すべて遮断(deny)」にし、SSHやWebサーバーなど必要なポート(例:22、80、443)のみを許可(allow)します。
    Terminal window
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow 22/tcp
    sudo ufw enable

4. 不要なリスニングポート(サービス)の停止

Section titled “4. 不要なリスニングポート(サービス)の停止”

OSインストール時に、気づかないうちにWebサーバーや不要なデータベース、ファイル共有サービスなどが起動していることがあります。

  • 以下のコマンドで、現在外部からの通信を待ち受けている(LISTEN状態の)ポートと、それを起動しているプロセス名を確認します。
    Terminal window
    sudo ss -tulpn
  • 使用していないサービスがあれば、自動起動を無効化・停止させます。

不正アクセスを検知するためのログ監視の入り口

Section titled “不正アクセスを検知するためのログ監視の入り口”

いくら強力な壁を作っても、それが突破されていないか、または執拗なアタックを受けていないかを「ログ」から確認することが不可欠です。

誰がログインに成功・失敗したかの全記録は、セキュリティログに記録されます。

  • Ubuntu/Debian系: /var/log/auth.log
  • Red Hat/AlmaLinux系: /var/log/secure

直近で「ログインに失敗(Failed password)」した履歴があるかをチェックします。

Terminal window
sudo grep -i "failed password" /var/log/auth.log | tail -n 20

もし身に覚えのないIPアドレスから大量の失敗履歴がある場合、それはボットによる総当たり攻撃を受けている証拠です。速やかにSSHポートの変更や、アタックIPを自動遮断するツール(Fail2banなど)の導入を検討してください。

システムログの詳細な見方と不具合特定の手順はこちら:Linuxログ確認の第一歩


Q1. アンチウイルスソフトはLinuxにも導入すべきですか?

Section titled “Q1. アンチウイルスソフトはLinuxにも導入すべきですか?”

A1. ファイルサーバーなど、他のWindows端末にファイルを配布する用途のサーバーであれば導入すべきです。 Linux自身がWindows向けのウイルスに感染することはありませんが、ウイルスに汚染されたファイルをLinuxサーバー上に保管し、それを他のWindowsクライアントがダウンロードして感染を広げるケースがあります。代表的なオープンソースのアンチウイルスソフトとして「ClamAV」などがあり、定期スキャンを実行する設定を行うのが一般的です。

Q2. 脆弱性(CVE)情報で「深刻度:Critical / High」が出たら、即時対応が必要ですか?

Section titled “Q2. 脆弱性(CVE)情報で「深刻度:Critical / High」が出たら、即時対応が必要ですか?”

A2. その脆弱性を持つサービスを「外部(インターネット)に公開しているか」によります。 例えば、外部に一切公開していない内部向けのツールや、使用していないデータベースの脆弱性であれば、緊急度は下がります。一方で、OpenSSHやWebサーバー(Nginx/Apache)など、インターネット上に露出しているサービスの重大な脆弱性の場合は、数日以内に悪用コードが出回ることが多いため、ディストリビューションから修正パッケージが配布され次第、数時間〜数日以内のパッチ適用が推奨されます。

Q3. SSHのポート番号をデフォルトの「22」から変更するのは効果がありますか?

Section titled “Q3. SSHのポート番号をデフォルトの「22」から変更するのは効果がありますか?”

A3. ボットによる「無差別アタック」を回避するのには非常に効果的です。 ポート番号を変更したからといって、標的型攻撃(特定の個人や企業を狙う攻撃)を防ぐ根本的なセキュリティ強度が高まるわけではありませんが、ネット上に漂うボットのほとんどは「22番ポート」だけをスキャンして攻撃してくるため、ポートを別番号(例:50022など)に変えるだけで、攻撃を受ける頻度とログの肥大化を99%以上削減できます。

Q4. パッケージの「自動セキュリティ更新」を設定しても大丈夫ですか?

Section titled “Q4. パッケージの「自動セキュリティ更新」を設定しても大丈夫ですか?”

A4. セキュリティパッケージに限定した自動更新であれば、基本的には有効化することが推奨されます。 Ubuntuでは unattended-upgrades というパッケージがあり、バグ修正や機能追加は行わず、「セキュリティパッチのみ」を夜間に自動でダウンロード・適用する設定が可能です。これにより、アップデートの適用漏れを防ぐことができます。

Q5. セキュリティグループ(AWSなど)を設定していれば、OS側のファイアウォールは不要ですか?

Section titled “Q5. セキュリティグループ(AWSなど)を設定していれば、OS側のファイアウォールは不要ですか?”

A5. 二重の防御(防御の深層化)の観点から、OS側でもファイアウォールを設定しておくのが望ましいです。 クラウドプロバイダ側のセキュリティグループが正しく設定されていれば基本的に侵入は防げますが、設定ミス(人為的ミス)によってセキュリティグループが一時的に「全開放」になってしまった際、OS側のファイアウォール(UFW)が最後の砦として機能します。