Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
セキュリティ強化ガイド
  1. 前書き
  2. 1 セキュリティと機密保持
  3. I 認証
    1. 2 PAM を利用した認証
    2. 3 NIS の使用
    3. 4 YaST を利用した認証クライアントの設定
    4. 5 389 Directory Server を利用した LDAP サービス
    5. 6 Kerberos を利用したネットワーク認証
    6. 7 Active Directory サポート
    7. 8 FreeRADIUS サーバの構築
  4. II ローカルセキュリティ
    1. 9 物理的なセキュリティ
    2. 10 ソフトウエア管理
    3. 11 ファイルの管理
    4. 12 パーティションやファイルの暗号化
    5. 13 cryptctl を利用したアプリケーション向けのストレージ暗号化
    6. 14 ユーザ管理
    7. 15 cronat の制限
    8. 16 Spectre/Meltdown チェッカー
    9. 17 YaST を利用したセキュリティの設定
    10. 18 Polkit 認可フレームワーク
    11. 19 Linux でのアクセス制御リスト
    12. 20 AIDE を利用した侵入検知
  5. III ネットワークセキュリティ
    1. 21 X Window System と X 認証
    2. 22 OpenSSH によるネットワーク操作の機密保持
    3. 23 マスカレードとファイアウオール
    4. 24 VPN サーバの設定
    5. 25 X Window System で動作する PKI マネージャ XCA による管理
    6. 26 sysctl 変数によるネットワークセキュリティの改善
  6. IV AppArmor による権限の制限
    1. 27 AppArmor の紹介
    2. 28 入門
    3. 29 プログラムに対する予防接種
    4. 30 プロファイルのコンポーネントと文法
    5. 31 AppArmor のプロファイルリポジトリ
    6. 32 YaST を利用したプロファイルの構築と管理
    7. 33 コマンドラインからのプロファイル構築
    8. 34 チェンジハット機能による Web アプリケーションのプロファイル作成
    9. 35 pam_apparmor によるユーザの制限
    10. 36 プロファイルを作成したアプリケーションの管理
    11. 37 サポート
    12. 38 AppArmor 用語集
  7. V SELinux
    1. 39 SELinux の設定
  8. VI Linux 監査フレームワーク
    1. 40 Linux 監査システムの概要
    2. 41 Linux 監査フレームワークの設定
    3. 42 監査ルールセットの紹介
    4. 43 その他の情報源
  9. A GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.7

26 sysctl 変数によるネットワークセキュリティの改善 Edit source

sysctl (system control; システム制御) 変数はカーネルのパラメータを制御するための変数で、オペレーティングシステム内の様々な箇所の動作に影響する変数です。これらのパラメータは、 proc ファイルシステム内の /proc/sys 経由でアクセスすることができます。多くのカーネルパラメータは、このディレクトリ内の擬似ファイルに直接書き込むことで値を直接変更することができますが、指定した値は保存されませんので、システムを再起動してしまうと元の値に戻ってしまいます。このような構造から、システムの起動時に値を変更するよう、変更点を sysctl の設定ファイルに書き込んでおくことをお勧めします。

本章では、 Linux のセキュリティ機能を改善するのに役立つ様々なネットワーク関連変数を設定しています。ファイアウオールの有効化やその設定内容によっては、ここに書かれている値のいくつかが自動的に設定されている場合があります。現在の値を確認したい場合は、 sysctl ユーティリティを利用して下記のように入力して実行します:

> /sbin/sysctl net.ipv4.conf.all.rp_filter
net.ipv4.conf.all.rp_filter = 2

下記の設定を適用したい場合は、 /etc/sysctl.d/ ディレクトリ内に設定ファイルを作成してください。設定ファイルは .conf という接尾辞で終わっていなければならないことに注意してください (例: /etc/sysctl.d/network.conf) 。詳しくは man 5 sysctl.d で表示されるマニュアルページをお読みください。

なお、下記の値は環境に合わせて変更してください。

  • # これらの値の既定値: 2 (loose mode)
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.all.rp_filter = 1

    上記の設定を適用すると、 IPv4 における逆方向パスフィルタを厳格モードに設定します。これにより、 IP パケットに対する応答を送信する際、必ず受信したインターフェイスから送信するように強制されます。なお、システム側で応答パケットを生成する際、ルーティングテーブルに従って受信パケットとは異なるインターフェイスを選択してしまうと、これらのパケットは廃棄されるようになります。この設定は、 IP スプーフィング攻撃と呼ばれる分散型サービス拒否攻撃 (DDoS) 等を防ぐのに役立ちます。

  • # これらの値の既定値: 0
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.all.accept_source_route = 0

    上記の設定を適用すると、 IPv4 のヘッダ内に SSR オプションが設定されているパケットの受信を無効化します。 つまり、 ソースルーティング を使用するパケットが拒否されることになります。これにより IP パケットの転送を防止することができるため、ファイアウオールの配下に存在するホストにパケットが届かないようになります。

  • # この値の既定値: 1
    net.ipv4.tcp_syncookies = 1

    IPv4 と IPv6 の 両方 に対して、 TCP SYN Cookie 保護の機能を有効化します。これは TCP プロトコルレベルでの特定のサービス拒否 (Denial Of Service; DoS) 攻撃を防ぐための機能で、少しだけ CPU の負荷が上がるものの、不正攻撃によって発生しうるメモリ浪費を防ぐことができます。この保護機構はフォールバック型のアルゴリズムとして作られていて、通常の TCP 接続を受け付けられないほど負荷が高い場合にのみ動作します。また、この仕組みは TCP プロトコルとの完全な互換性は無いため、相手側の TCP 実装によっては問題が発生する可能性があります。過負荷状態では新しい接続を全く受け付けなくする手法もありますが、この仕組みを利用することで、正当な TCP 接続と TCP によるサービス拒否攻撃を正しく分けて扱うことができるようになります。なお、お使いのシステムで TCP 接続の負荷が高いことが予想される場合、この設定によって逆効果となる場合もあります。

  • # 既定値: 128
    net.ipv4.tcp_max_syn_backlog = 4096

    TCP SYN backlog 設定は、処理待ちの SYN パケットの数を設定するためのものです。指定した値よりも多くの SYN パケットが届いた場合、 SYN パケットは廃棄され、新しい TCP 接続はできなくなります (もしくは、 SYN Cookie 保護が動作するようになります) 。この値を増やすことで、 TCP SYN 攻撃に対する保護を強化することができます。

  • # 既定値: 1
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    IPv4 ブロードキャストアドレスに対する ICMP エコー要求 (ping) は特定のネットワーク内に存在するホストや IP アドレスを検出するための仕組みですが、ネットワークセグメントに対する過負荷攻撃としても使用することができます。この設定を適用することで、ブロードキャストアドレスに送信される ICMP エコー要求を無視するようになります。

  • # 既定値: 1
    net.ipv4.icmp_ignore_bogus_error_responses = 1

    この設定は、ブロードキャストフレームに対する不正な応答によって、不要なエラーメッセージを生成しないようにするためのもので、ログファイルが埋め尽くされることを防ぐ効果があるものです。詳しくは RFC 1122 インターネットホストの要件: 通信レイヤー のセクション 3.2.2 をお読みください。

  • # 既定値: 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv6.conf.default.accept_redirects = 0
    net.ipv6.conf.all.accept_redirects = 0

    ICMP redirect (転送) メッセージの受け付けを無効化します。これらのメッセージはゲートウエイから発信されるもので、宛先のホストに辿り着くためのより適切なルートを指し示すためのものです。転送メッセージを悪用することで、中間者攻撃が成立してしまうことから、無効化しておくべき値となります。

  • net.ipv4.conf.default.secure_redirects = 0
    net.ipv4.conf.all.secure_redirects = 0

    ごく稀な用途ですが、 '安全な' ICMP redirect (転送) を受け付けるための設定です。どうしても必要な場合を除いて、無効化しておくべきものです。

  • net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.all.send_redirects = 0

    IPv4 ICMP redirect (転送) 要求を送信しないようにする設定です。ルータとして動作させる場合を除いて、不要であるためです。

  • # 既定値: 0
    net.ipv4.ip_forward = 0
    net.ipv6.conf.all.forwarding = 0
    net.ipv6.conf.default.forwarding = 0

    ルータとして動作させる場合を除いて、 IP 転送機能は無効化しておくべきものです。

このページを印刷