Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.4.3. ソースルーティングの無効化

ソースルーティングは、IP パケットで情報を伝送できるようにするインターネットプロトコルメカニズムです。これは、ルーターがパケットが取る必要のあるパスを示すものです。ルートが通過するため、ホップを記録するオプションもあります。ホップのリスト「ルートレコード」は、ソースへの戻りパスと宛先を提供します。これにより、ソース(送信ホスト)はルート、不便または厳密、またはすべてのルーターのルーティングテーブルを無視できます。ユーザーは、悪意のある目的でネットワークトラフィックをリダイレクトできます。そのため、ソースベースのルーティングを無効にする必要があります。
accept_source_route オプションを使用すると、ネットワークインターフェースが Strict Source Routing (SSR)またはLSR (Loose Source Routing )オプションが設定されたパケットを受け入れます。ソースルーティングされたパケットの受け入れ機能は sysctl 設定によって制御されます。root で以下のコマンドを実行して、SSR または LSR オプションが設定されたパケットをドロップします。
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
パケットの転送を無効にする場合は、できるだけ上記の併用も実施する必要があります(転送の解除は仮想化に干渉する可能性があります)。root で以下に挙げるコマンドを実行します。
以下のコマンドは、すべてのインターフェースの IPv4 パケットおよび IPv6 パケットの転送を無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.forwarding=0
以下のコマンドは、すべてのインターフェース上のすべてのマルチキャストパケットの転送を無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.mc_forwarding=0
ICMP リダイレクトを許可すると、正当な使用が少数あります。特に必要でない限り、ICMP リダイレクトパケットの受信および送信を無効にします。
このコマンドは、すべてのインターフェースの ICMP リダイレクトパケットの受け入れを無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
~]# /sbin/sysctl -w net.ipv6.conf.all.accept_redirects=0
このコマンドは、すべてのインターフェースのセキュアな ICMP リダイレクトパケットの受け入れを無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.secure_redirects=0
このコマンドは、すべてのインターフェースの IPv4 ICMP リダイレクトパケットの受け入れを無効にします。
~]# /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
重要
net.ipv4.conf.all.send_redirects または net.ipv4.conf.interface.send_redirects オプションが有効になっていると、ICMP リダイレクトの送信はアクティブのままになります。net.ipv4.conf.interface.send_redirects オプションをすべてのインターフェースの 0 値に設定してください。新しいインターフェースを追加するたびに、ICMP リクエストの送信を自動的に無効にするには、以下のコマンドを入力します。
~]# /sbin/sysctl -w net.ipv4.conf.default.send_redirects=0
IPv4 リダイレクトパケットの送信を無効にするディレクティブのみがあります。IPv6 ノード要件の説明については、IPv4 と IPv6 の相違点について参照してください
注記
これらの設定を再起動しても保持するには、/etc/sysctl.conf ファイルを変更します。たとえば、すべてのインターフェースで IPv4 ICMP リダイレクトパケットの受信を無効にするには、root ユーザーとして実行しているエディターで /etc/sysctl.conf ファイルを開き、以下の行を追加します。
net.ipv4.conf.all.send_redirects=0
詳細は、sysctl の man ページ sysctl(8) を参照してください。ソースベースのルーティングおよびそのバリアントに関連するインターネットオプションの説明は、RFC791 を参照してください。
警告
イーサネットネットワークは、ARP、MAC アドレスのスプーフィング、不正な不正な DHCP サーバー、IPv6 ルーター、近接広告などのトラフィックをリダイレクトする追加の方法を提供します。さらに、ユニキャストトラフィックにブロードキャストを行うことがあり、これにより情報漏えいが発生します。これらの脆弱なさは、ネットワークオペレーターが実装する特定のカウンターテーマでのみ対応できます。ホストベースのカウンターテーマが完全に有効ではありません。

4.4.3.1. 逆パス転送

逆方向パス転送は、1 つのインターフェースを介して到達したパケットが別のインターフェースを通過しないようにするために使用されます。発信ルートと受信ルートが異なると、非対称ルーティングと呼ばれることもあります。ルーターはこの方法でパケットをルーティングすることはできますが、ほとんどのホストではこれを実行する必要はありません。例外は、あるリンクでのトラフィックの送信や、別のサービスプロバイダーからの別のリンクでのトラフィックの受信を行う必要があるアプリケーションです。たとえば、リースした行と xDSL または satellite リンクと 3G モードms を使用します。このようなシナリオが適用可能な場合は、受信インターフェースの逆引きパス転送をオフにする必要があります。簡単に言えば、必要だと思われない限り、ローカルサブネットから IP アドレスをスプーフィングし、DDoS 攻撃の機会を減らすためです。
警告
転送が有効な場合には、source-address の検証(例: iptables ルールなど)が他の意味を持つ場合に限り、Reverse Path Forwarding を無効にする必要があります。
rp_filter
reverse Path Forwarding は、rp_filter ディレクティブで有効になります。sysctl ユーティリティーを使用すると、稼働中のシステムに変更を加えることができます。永続的な変更は、行を /etc/sysctl.conf ファイルに追加することで実行できます。rp_filter オプションを使用して、カーネルが 3 つのモードのいずれかから選択するように指示されます。
一時的なグローバル変更を行うには、root で以下のコマンドを入力します。
sysctl -w  net.ipv4.conf.default.rp_filter=integer
sysctl -w net.ipv4.conf.all.rp_filter=integer
ここで、integer は以下のいずれかになります。
  • 0: ソースの検証はありません。
  • 1 - RFC 3704 で定義されている厳格なモード。
  • 2 - RFC 3704 で定義された loose モード。
以下のように net.ipv4.conf.interface.rp_filter コマンドを使用して、ネットワークインターフェースごとに上書きできます。
sysctl -w net.ipv4.conf.interface.rp_filter=integer
注記
これらの設定を再起動しても保持するには、/etc/sysctl.conf ファイルを変更します。たとえば、すべてのインターフェースのモードを変更するには、root ユーザーとして実行しているエディターで /etc/sysctl.conf ファイルを開き、以下の行を追加します。
net.ipv4.conf.all.rp_filter=2
IPv6_rpfilter
IPv6 プロトコルの場合は、firewalld デーモンはデフォルトで Reverse Path Forwarding に適用されます。この設定は、/etc/firewalld/firewalld.conf ファイルで確認することができます。IPv6_rpfilter オプションを設定することで、firewalld の動作を変更できます。
Reverse Path Forwarding のカスタム設定が必要な場合は、以下のように ip6tables コマンドを使用して firewalld デーモンなしに実行できます
ip6tables -t raw -I PREROUTING -m rpfilter --invert -j DROP
このルールは、raw/PREROUTING チェーンの先頭に挿入することで、ステートフルマッチングルールの前に、すべてのトラフィックに適用されるようにする必要があります。iptables サービスおよび ip6tables サービスの詳細は、iptablesを使用した IP セットの設定および制御」 を参照してください。
パケット転送の有効化
システム外からのパケットを別の外部ホストに転送できるようにするには、カーネルで IP 転送を有効にする必要があります。root としてログインし、/etc/sysctl.conf ファイルの net.ipv4.ip_forward = 0 を読み取る行を以下のように変更します。
net.ipv4.ip_forward = 1
/etc/sysctl.conf ファイルから変更を読み込むには、以下のコマンドを入力します。
/sbin/sysctl -p
IP 転送が有効になっているのを確認するには、root で以下のコマンドを実行します。
/sbin/sysctl net.ipv4.ip_forward
上記のコマンドが 1 を返すと、IP 転送が有効になります。0 を返す場合は、以下のコマンドを使用して手動で有効にできます。
/sbin/sysctl -w net.ipv4.ip_forward=1

このページには機械翻訳が使用されている場合があります (詳細はこちら)。