AlmaLinux 9 運用ガイド 第5章

第5章:セキュリティ強化とシステムハードニング

この章で解説する主要な技術・概念

  • SELinuxの高度な運用とポリシー調整
    • SELinuxの動作モード、ブール値、カスタムポリシーモジュールの作成方法とその効果。
  • 高度なファイアウォールとネットワークセキュリティ設定
    • firewalldおよびiptables/nftablesの詳細なルール設定、ステートフル検査、レート制限パラメータの調整。
  • 脆弱性対策とセキュリティパッチ管理の自動化
    • セキュリティアップデートの自動適用、OpenSCAPなどのコンプライアンス・脆弱性スキャンツールの活用方法。
  • その他セキュリティ関連パラメータの最適化
    • sysctlを用いたカーネルのセキュリティ強化パラメータ(例: kernel.randomize_va_space など)の意味と効果。

5.1 SELinuxの高度な運用とポリシー調整

5.1.1 SELinuxの基本動作とモード

SELinux (Security-Enhanced Linux) は、カーネルレベルでアクセス制御を強化するための仕組みです。

  • 主な動作モード:
    • Enforcing: SELinuxポリシーが強制され、違反がブロックされます。
    • Permissive: ポリシー違反がログに記録されますが、実際のアクセスは許可されます。トラブルシュートに有用です。
    • Disabled: SELinux機能が無効となり、通常のUNIXアクセス制御のみが適用されます。

モード変更は、次のように一時的に行えます。

# Enforcingモードに設定
sudo setenforce 1

# Permissiveモードに設定
sudo setenforce 0

永続的な設定は /etc/selinux/config で行います。

5.1.2 SELinuxブール値の調整

SELinuxでは、各種ブール値により特定の機能の許可/拒否を制御します。たとえば、Apache(httpd)がネットワーク接続を行えるようにするブール値は httpd_can_network_connect です。

  • 効果と設定例:
    • on に設定: Apacheが外部に対してネットワーク接続できるようになり、Webアプリケーションがリモートデータベースなどにアクセス可能になります。
    • off に設定: セキュリティを高めるため、不要な外部接続を防止します。

設定例は以下の通りです。

# 現在のブール値を確認
sudo getsebool -a | grep httpd_can_network_connect

# ブール値を永続的に有効化
sudo setsebool -P httpd_can_network_connect on

5.1.3 カスタムSELinuxポリシーの作成

運用環境では、標準ポリシーでは対応できない特殊な要件が発生することがあります。audit2allow ツールを利用して、発生したポリシー違反のログからカスタムポリシーモジュールを生成できます。

手順例:

  • SELinuxの違反ログを収集します。
sudo ausearch -m avc -ts recent
  • audit2allow でポリシーのドラフトを生成します。
sudo ausearch -m avc -ts recent | audit2allow -M my_custom_policy
  • 生成されたポリシーモジュールをインストールします。
sudo semodule -i my_custom_policy.pp

この手法により、環境に合わせた柔軟なポリシー調整が可能になります。


5.2 高度なファイアウォールとネットワークセキュリティ設定

5.2.1 firewalldの詳細設定

firewalld は、動的にファイアウォールルールを管理できるツールです。

  • ゾーンとサービス:
    • ゾーンごとにネットワークインターフェースを分類し、各ゾーンに対して異なるルールを適用できます。
    • たとえば、パブリックゾーンで特定のポートのみ開放する場合:
# パブリックゾーンに対してHTTPとHTTPSサービスを追加 sudo firewall-cmd --zone=public --permanent --add-service=httpsudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload
  • 高度なルール例:
    • レート制限: 不正なアクセスやDoS攻撃を防ぐため、接続要求のレート制限を設定することが可能です。iptables や nftables の高度なルールと連携して実現される場合が多いです。

5.2.2 iptables/nftables の活用

iptables は、パケットフィルタリングルールを細かく制御できる強力なツールです。

  • 基本設定:
    例えば、SSH(ポート22)への接続を許可し、その他の接続は制限する設定例:
  # iptables のルール追加例
  sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  sudo iptables -A INPUT -p tcp --dport 22 -j DROP
  • nftables:
    最近では、iptables の後継として nftables が採用され、より簡潔かつ柔軟なルール記述が可能です。基本的な設定例は以下の通りです。
  table inet filter {
      chain input {
          type filter hook input priority 0;
          ct state established,related accept
          tcp dport 22 accept
          ip protocol icmp accept
          drop
      }
  }

nftables を利用することで、複雑なルールの管理が容易になり、パフォーマンスの向上が期待できます。


5.3 脆弱性対策とセキュリティパッチ管理の自動化

5.3.1 セキュリティアップデートの自動化

エンタープライズ環境では、最新のセキュリティパッチを迅速に適用することが重要です。

  • dnf-automatic の活用:
    dnf-automatic を用いて、セキュリティアップデートを自動的にチェック・適用する設定例は以下の通りです。
  sudo dnf install -y dnf-automatic
  sudo vi /etc/dnf/automatic.conf

設定ファイル内で、以下のように設定します
(例):

[commands]
  upgrade_type = security
  random_sleep = 360
[emitters]
  emit_via = stdio
[base]
  debuglevel = 1

その後、タイマーを有効にしてサービスを開始します。

sudo systemctl enable --now dnf-automatic.timer

5.3.2 OpenSCAP とコンプライアンス

OpenSCAP は、セキュリティコンプライアンスのチェックや脆弱性スキャンを自動化するツールです。

  • 活用例:
    例えば、Red Hat SCAP ベースラインを利用してシステムのコンプライアンス状況を評価することができます。
sudo dnf install -y scap-workbench openscap-scanner
oscap oval eval --results results.xml --report report.html  /usr/share/xml/scap/ssg/content/ssg-almalinux9-ds.xml

このレポートにより、システムの脆弱性や設定の不備を把握し、対策を講じることが可能です。


5.4 その他セキュリティ関連パラメータの最適化

5.4.1 カーネルセキュリティパラメータの調整

sysctl を用いたカーネルセキュリティパラメータの設定は、システムハードニングの一環として重要です。

  • 例: ASLR (Address Space Layout Randomization) の強化
  sudo sysctl -w kernel.randomize_va_space=2
  • 意味と効果:
    • kernel.randomize_va_space=2 は、プロセスごとのメモリ空間を完全にランダム化する設定で、バッファオーバーフロー攻撃などの脆弱性を緩和します。

5.4.2 その他の推奨設定

  • IPv6の無効化(必要に応じて):
    利用していない場合、IPv6を無効化することで、攻撃対象となる可能性を低減できます。
  sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

章末のまとめと次章へのつながり

まとめ

本章では、セキュリティ強化とシステムハードニングの各要素を深堀りしました。具体的には以下の点を確認しました。

  • SELinuxの高度な運用:
    • SELinuxの動作モード、ブール値の調整、audit2allowを用いたカスタムポリシー作成手法を通じて、環境に適したアクセス制御の最適化方法を理解しました。
  • 高度なファイアウォール設定:
    • firewalldとiptables/nftablesの高度な設定方法、ゾーン管理、レート制限、ステートフル検査などにより、ネットワーク攻撃に対する防御策を強化する手法を学びました。
  • 脆弱性対策とパッチ管理の自動化:
    • dnf-automaticによるセキュリティアップデートの自動化、OpenSCAPを用いたコンプライアンスチェックにより、継続的な脆弱性管理の手法を確認しました。
  • その他セキュリティパラメータの最適化:
    • ASLRの強化や、不要なプロトコルの無効化など、カーネルレベルでのセキュリティ強化策を取り上げました。

次章へのつながり

次章では、これまでのセキュリティ強化の知識を基盤に、システム全体のパフォーマンス監視およびトラブルシューティングの高度な手法について解説します。セキュリティ面とパフォーマンス管理は密接に関連しており、両者のバランスを最適化することがエンタープライズ環境の安定運用に不可欠です。次章では、各種モニタリングツールの高度な使い方と、問題発生時の迅速な原因解析・対策手順について、具体例とともに学んでいきます。