ネットワークセキュリティ設定

1. カーネルパラメータの設定概要

カーネルパラメータを変更する場合以下の方法があり

  • sysctl コマンドによる変更
  • sysctlコンフィグファイルによる変更
  • /proc/sys の仮想ファイルを直接編集する方法

永続的にパラメータを変更する場合 sysctl コマンドか sysctl コンフィグを編集する必要がある

1.1. sysctlコマンドの利用

一時的なパラメータ設定

# sysctl net.ipv4.conf.all.rp_filter=1

永続的なパラメータ設定

# sysctl -w net.ipv4.conf.all.rp_filter=1

1.2. sysctlコンフィグの利用

ファイルによるコンフィグを設定する場合、幾つかの分散ファイルを理解します
sysctl 設定は /usr/lib/sysctl.d//run/sysctl.d//etc/sysctl.d/ にて定義されベンダー設定は /usr/lib/sysctl.d/ にて管理されています
任意の設定の追加、全ての定義ファイルより優先して設定を行ないたい場合は /etc/sysctl.d/ にファイルを作成し定義します

# vim /etc/sysctl.d/99-sysctl.conf
net.ipv4.conf.all.rp_filter=1

# sysctl -p /etc/sysctl.d/99-sysctl.conf

本手順ではコンフィグファイルによる設定管理を行う

2. IPv6モジュールの無効化

IPv6を無効化する場合はNICの他にkernelモジュールも読み込まないようにする

# vim /etc/sysctl.d/99-sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

3. ソースルーティング対策

ネットワークアクセスのセキュア化

ソースルーティングはインターネットプロトコルメカニズムで、
IPパケットがアドレス一覧の情報を持ち運べるようにします。
このアドレスは、パケットが通過する必要のあるパスをルーターに知らせるものです。
ルートを移動する際にホップを記録するオプションもあります。
「ルート記録」と呼ばれるホップの記録は、宛先にソースまでの帰りのパスを提供します。
これによりソースは(つまり送信ホスト)、すべてもしくは一部のルーターのルーティングテーブルを無視して、
ルートを厳密もしくは緩やかに特定することができます。
これによりユーザーは、不正目的でネットワークトラフィックをリダイレクトすることが可能になります。
このため、ソースベースのルーティングは無効にする必要があります。

デフォルトで下記のように設定されている

# vim /usr/lib/sysctl.d/50-default.conf
net.ipv4.conf.all.accept_source_route = 0

4. 逆方向パス転送

ネットワークアクセスのセキュア化

逆方向パス転送は、あるインターフェイスから着信したパケットが異なるインターフェイス経由で去ってしまうことを防ぐために使用されます。
送信ルートと着信ルートが異なる場合は、非対称ルーティングと呼ばれる場合もあります。
ルーターがパケットをこの方法でルート設定することはよくありますが、ほとんどのホストはこのようなことをする必要はないはずです。
例外として挙げられるのは、トラフィックをあるリンクで送信し、異なるサービスプロバイダーから別のリンクでトラフィックを受け取るアプリケーションです。
例えば、xDSL との組み合わせで専用回線を使っている場合や、3Gモデムを使ったサテライトリンクなどの場合です。
このようなシナリオが該当する場合は、着信インターフェイスで逆方向パス転送をオフにすることが必要になります。
つまり、これが必要だと分かっている場合を除いて、有効にしておくのが最善の方法です。
これは、ローカルサブネットからユーザーがIPアドレスをスプーフィングすることを防ぎ、DDoS 攻撃の機会を減らすためです。

注意
Red Hat Enterprise Linux 7 はデフォルトで厳密な逆方向パス転送を使用します。
これは、RFC 3704 の Ingress Filtering for Multihomed Networks からの厳密な逆方向パスに関する推奨事項に準拠したものです。
現在これが適用されるのは、IPv4 のみです。

  • 0 — ソース確認なし
  • 1 — RFC3704 で定義された厳密モード
  • 2 — RFC3704 で定義された緩やかなモード

デフォルトで下記のように設定されている

# vim /usr/lib/sysctl.d/50-default.conf
net.ipv4.conf.all.rp_filter = 1

5. SYN FLOOD攻撃対策

Wiki - SYN cookies

サーバは SYN パケットを受けとった後、クライアントに対して SYN ACK パケットを返す。ここにはその TCP 接続に関連づけられたTCPシーケンス番号が含まれている。TCPシーケンス番号はこれ以降の TCP通信の中で、クライアントおよびサーバが共通して使用する。そのためクライアントはサーバが返した SYN ACK パケットにあるシーケンス番号を ACK パケットの中に含めてくるはずである。この性質を利用して、もしサーバが本来メモリ上に記憶するべき情報を返りの SYN ACK パケットの中のシーケンス番号の中に埋めこむことができれば、サーバ側は SYN を受けとった直後に記憶領域を消費する必要はなくなり、ACK パケットが来てからはじめて TCP 接続用の領域を割り当てればよくなる。大量の SYN flood を行うほとんどの攻撃元ホストは IP アドレスを偽装しているため、このシーケンス番号を受けとることはできず、したがってサーバに正しい ACK パケットを送ることができない。その結果、サーバは正当なホストからの接続要求のみに対応 (メモリ割り当て) することができる。

# vim /etc/sysctl.d/99-sysctl.conf
net.ipv4.tcp_syncookies = 1

6. Smurf攻撃対策

Wiki - Smurf攻撃

DoS攻撃の一種であり、標的となるコンピュータのIPアドレスを送信元アドレスとしてなりすました大量のICMPパケットをブロードキャストアドレスによってコンピュータネットワークにブロードキャストで送信するものである。ネットワーク上のほとんどのデバイスは、デフォルトで、受信したICMPメッセージの送信元アドレスに対して応答メッセージを送信する。パケットを受信して応答するマシンが非常に多いと、標的のコンピュータはトラフィックであふれることになる。

# vim /etc/sysctl.d/99-sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1

7. 設定の反映

反映

# sysctl -p /etc/sysctl.d/99-sysctl.conf

または再起動し確認する

results matching ""

    No results matching ""