Linuxセキュリティ
この記事でわかること
Section titled “この記事でわかること”- 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が見つかってから修正されるまでの流れ”- 脆弱性の発見: セキュリティ研究者や開発者がカーネルやソフトウェア(OpenSSHやOpenSSLなど)の脆弱性を発見し、CVE番号が発行されます。
- ** upstream(開発元)での修正**: プログラムの元の開発コミュニティが修正パッチを作成し、最新のマイナーバージョン(Mainline/Stable等)をリリースします。
- ベンダーによる「バックポート」: UbuntuやDebianなどのディストリビューションベンダーは、安定稼働を優先するため、OSのバージョン(カーネルバージョンなど)を勝手に上げません。代わりに、「脆弱性を修正するための最小限のコード(パッチ)だけ」を抽出し、古いバージョンのパッケージに適用して配布します。これを「バックポート(逆移植)」と呼びます。
したがって、一般の管理者は「カーネルのメジャーバージョンを最新にする」必要はなく、「ディストリビューションが提供するセキュリティアップデートを実行する」だけで、CVEの脆弱性対策が完了します。
主要OS別のセキュリティ更新・確認手順
Section titled “主要OS別のセキュリティ更新・確認手順”脆弱性からシステムを守るための、日々のアップデートコマンドです。
- Ubuntu / Debian系列
セキュリティ情報を含めた更新リストの取得と適用:
Terminal window sudo apt updatesudo 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
2. sudo の最小限の運用
Section titled “2. sudo の最小限の運用”すべての作業を管理者権限(root)で行うのは非常に危険です。
- 一般のユーザーアカウントを作成し、システム設定を変更する一時的なタイミングのみ
sudoコマンドを使用するように制限します。 sudoグループ(Ubuntuではsudo、Red Hat系ではwheel)に属するユーザーは、推測されにくい強力なパスワード(またはパスフレーズ)を設定してください。- 関連コマンド:Linuxの基本操作とユーザー・権限管理
3. ファイアウォール(UFW)の有効化
Section titled “3. ファイアウォール(UFW)の有効化”外部からの不要な通信(パケット)を入り口で遮断します。
- Ubuntu等の場合、「UFW(Uncomplicated Firewall)」が最も簡単で推奨されます。
- 基本ポリシーを「すべて遮断(deny)」にし、SSHやWebサーバーなど必要なポート(例:22、80、443)のみを許可(allow)します。
Terminal window sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow 22/tcpsudo ufw enable
4. 不要なリスニングポート(サービス)の停止
Section titled “4. 不要なリスニングポート(サービス)の停止”OSインストール時に、気づかないうちにWebサーバーや不要なデータベース、ファイル共有サービスなどが起動していることがあります。
- 以下のコマンドで、現在外部からの通信を待ち受けている(LISTEN状態の)ポートと、それを起動しているプロセス名を確認します。
Terminal window sudo ss -tulpn - 使用していないサービスがあれば、自動起動を無効化・停止させます。
不正アクセスを検知するためのログ監視の入り口
Section titled “不正アクセスを検知するためのログ監視の入り口”いくら強力な壁を作っても、それが突破されていないか、または執拗なアタックを受けていないかを「ログ」から確認することが不可欠です。
認証ログの確認
Section titled “認証ログの確認”誰がログインに成功・失敗したかの全記録は、セキュリティログに記録されます。
- Ubuntu/Debian系:
/var/log/auth.log - Red Hat/AlmaLinux系:
/var/log/secure
確認用コマンド例:
Section titled “確認用コマンド例:”直近で「ログインに失敗(Failed password)」した履歴があるかをチェックします。
sudo grep -i "failed password" /var/log/auth.log | tail -n 20もし身に覚えのないIPアドレスから大量の失敗履歴がある場合、それはボットによる総当たり攻撃を受けている証拠です。速やかにSSHポートの変更や、アタックIPを自動遮断するツール(Fail2banなど)の導入を検討してください。
システムログの詳細な見方と不具合特定の手順はこちら:Linuxログ確認の第一歩
FAQ(よくある質問)
Section titled “FAQ(よくある質問)”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)が最後の砦として機能します。