【IPv6サーバーをたてる】 CentOS 8.X系(RHEL 8.X)で IPv6ファイアウォール、フィルタリング を設定する

1 はじめに

本記事では、「IPv6サーバーをたてる」の一貫として、
IPv6ファイアウォールフィルタリングの設定について簡単に示します。

CentOS 8.X系(含RHEL8.X)でのfirewalldの設定を中心に、
ルーターの設定についてはYAMAHARTX830RTX1220などの RTX系の設定を例に説明していきます。

他のLinuxディストリビューションであっても、本記事は参考になるのではと思います。

IPv6ファイアウォールフィルタリングは、
IPv6アドレスのフォーマットをきちんと抑えておけば、
IPv4とさほど違いはないと気づかれるのではないかと思います。

ということで、IPv6アドレスのフォーマットについては、
次のWebページに整理してありますのでそちらをご参照してください。

【IPv6サーバーをたてる】まずはじめにIPv6アドレスについて

サーバーのIPv6アドレスは手動で設定するのが基本です。
サーバーのIPv6アドレスの決め方については、次のページをご覧いただければと思います。

【IPv6サーバーをたてる】IPv6アドレスの決め方

2 firewalld設定ファイルの場所と設定変更の反映

firewalldの設定は、CLIの”firewall-cmd”で設定するのが基本ですが、
基本的な設定なら最終結果であるテキストの設定フィルを直接編集した方が手っとり早いです。

zoneが”public”の場合の、firewalld設定ファイルパスは以下に示す通りです。

/etc/firewalld/zones/public.xml

現在の設定状況は、次のコマンドで確認することができます。

# firewall-cmd --list-all

また、3章5章で示す変更設定は、 以下のコマンドでfirewalldに反映させます。

# firewall-cmd --reload

3 IPv6基本プロトコルの許可

firewalldは、明示的に解放されていないポートのトラフィックをすべてブロックします。

ですから、
次のリンクローカルマルチキャストIPv6の基本的な通信は、
以下のように「許可=”accept”」を設定します。

リンクローカルユニキャストアドレス (fe80::/10)
マルチキャストアドレス (ff00::/8)

リンクローカルマルチキャストIPv6アドレスは、上に表記されている通りにします。
他のIPv6アドレスであってはなりません。

ただし、多くの場合、IPv4と併用するかと思います。
その場合、上記2つの許可設定は特に必要はありません

IPv4で、IPv6のリンクローカルに相当するのは、同じサブネットマスクのネットワークです。
何も明示しなくとも、セグメント内のノード間通信は当然可能です。

<zone>
<rule family="ipv6">
<destination address="fe80::/10"/>
<accept/>
</rule>
<rule family="ipv6">
<destination address="ff00::/8"/>
<accept/>
</rule>
</zone>

ちなみに、リンクローカルユニキャストアドレスは同一セグメント内のノードとの通信に、
マルチキャストアドレス近隣ノードのMACアドレスを求める時などの通信に使われます。

4 IPv6サービス

4.1 firewalldの設定

IPv6下でのHTTPSMTPPOP3FTPなどのサービスの許可設定は、
IPv4の時と全く同じです。

<zone>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="ftp"/>
<service name="https"/>
<service name="pop3s"/>
<service name="smtps"/>
</zone>

4.2 ルーターの設定

IPv6ですから、IPv4の時のNATの設定はありません。
代わりに、フィルター設定でのポートオープン設定が必要です。

IPv6ルーターでは、HTTPSMTPPOP3FTPなどのサービスポートは、
初期状態ではクローズしています。
ファイアウォールでこれらのサービスを有効にしても、
セグメント内での通信が有効になるだけです。
外部との通信を行うには、ルーターでこれらのポートをオープンしなければなりません。

4.2.1 HTTTP、SMTPなどのサービスのポートオープン

YAMAHARTX830RTX1220などのRTX系ルーターでは、
IPv4 over IPv6OCNバーチャルコネクトの接続設定が済めば、
下に示すようにサービスのポートは、アウトバウンド(送信)方向だけ、動的有効に設定されます。

ipv6 lan2 secure filter in 101000 101001 101002 101003
ipv6 lan2 secure filter out 101099 dynamic 101080  101081 101082 101083 101084  101085 101098 101099

ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp

【備考】

    フィルター番号
    「101080~」などは、フィルター番号で、
    他のフィルターの番号と被らない任意一意の1~21474836の数値。

ipv6 filter dynamic ~”は、コネクションを通過させるコマンドです。
コネクションが成立していれば通過させ、コネクションが成立していなければ破棄します。
30.7.3 IPv6 動的フィルターの定義

しかし、ポートは、インバウンド(受信)方向が有効となっていないので、
実質クローズした状態となっています。

以下にインバウンド(受信)方向のHTTPのポートのオープンの仕方を示します。
SMTPPOP3FTPであっても手順は同様ですので、本記事では省略します。

直接ルーターコマンドをたたいて設定することも可能ですが、
関連する項目も自動で編集してくれるので設定漏れが少なくなるからGUIで設定する方が無難です。

なお、アウトバウンド(送信)方向は、FTPHTTPSMTPPOP3SSUBMISSIONであれば、
新しくフィルターを追加する必要はありません。

ⅰ)IPフィルター設定画面を開く
トップ画面詳細設定」 ⇒ 「セキュリティーIPフィルター」 ⇒ 「IPv6
⇒ 「WAN確認
の順で「適用されているIPv6フィルターの一覧」画面を開く。

ⅱ)静的フィルター画面を開く
適用されているIPv6フィルターの一覧」において、
一覧表示の切り換え」のプルダウンが
受信方向のフィルターを表示」になっていることを確認して、
静的フィルター」の「編集」をクリックします。

ⅲ)静的フィルターを新規に作成する
[WAN]インターフェースへの適用の設定」において、
適用リストの設定静的フィルター」の「新規」をクリックします。

ⅳ)静的フィルターを設定する
静的フィルターの設定」において、 表4.2-1に示すよう各項目を設定します。

ⅴ)静的フィルターを適用する
手順ⅳ)で編集した静的フィルターが「静的フィルター」ペインに表示されます。
適用したいフィルターの左端をチェックし、 をクリックします。

ⅵ)あたらしく作成した静的フィルターが適用されていることを確認する
新しく作成したフィルターが適用されると、
適用されているIPv6フィルターの一覧」にそのフィルターが追加表示されます。

下に示すコマンド行は、IPv6フィルターに関する部分のルーターコマンドを抜粋したものです。
黄色でマーキングした部分が、
先に示した操作で作成したHTTPSMTPのポートをオープンするために設定したコマンドとなります。

ポートオープン前と比べると、
インバウンド(受信方向)のフィルターが追加されたことがおわかりになるかと思います。

ipv6 lan2 secure filter in 101000 101001 101002 101003 101100 101101
ipv6 lan2 secure filter out 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099

ipv6 filter 101000 pass * * icmp6 * *
ipv6 filter 101001 pass * * tcp * ident
ipv6 filter 101002 pass * * udp * 546
ipv6 filter 101003 pass * * 4
ipv6 filter 101099 pass * * * * *
ipv6 filter 101100 pass * * tcp * www
ipv6 filter 101101 pass * * tcp * smtp
ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp

4.2.2 サービスポートのオープンの確認は、パブリックVPNを利用する

オープンしたポートの疎通確認は、セグメント内なら、セグメント内のノードからpingを打つ、
ブラウザからWebページを開くなどして行えます。

でも、ネットワーク外から行おうとすると、自分で2回線以上利用していませんし、
まず自分の周りに自分が利用できるIPv6のネットワークがまずありません。

CMAN:サーバー監視/ネットワーク監視サービスや、 MxToolboxなどのインターネットサービスは、
まだIPv6に対応していないらしく、
pingが通らない、ポートのオープンチェックができない、HTTPの疎通確認ができないなど
思ったような結果をだせませんでした。

じゃー、疎通確認はできないかというと、
VPN Gate 筑波大学による公開 VPN 中継サーバープロジェクト
パブリックVPNサービスを利用すれば、
まるで2回線もったように確認できるようになります。

VPN接続ノードのIPアドレス体系はIPv4となりますが、
外部となるVPN接続ノードからは、
セグメント内ノードと同じようにpingを打ったり、
ブラウザからWebページを開くなどして疎通確認をすることができるようになります。

ちなみに、WindowspingやWebブラウザは、IPv4IPv6の両対応になっています。

# インターネットサービスでは、なぜIPv6接続へのテストだとダメなのかな?
# IPv4VPNノードとの疎通確認できるのはなぜ?
# IPv6ノードからGmailへの送信、GmailからのIPv6ノードでの受信確認はできた。
# うう~ん、今考えると携帯のWi-Fiルーターでの確認でも良かったのかな?

ちょっとした知恵でした。
これを思いつくまでに、けっこう時間がかかってしまいました。

5 フィルタリング

サーバーを開くと、どうしても良からぬことを企んでいる不正アクセスがあります。
それらは、排除したいもの。

ルーターで排除することも可能です
RTX830の場合、 最大フィルター数約65,000で、数的には充分)が、
firewalldなら設定のテキストファイルを直接編集できますので、
管理上の面倒はこちらの方が少ないのかもしれません。

わたしは、firewalldで不正アクセスを排除しています。

firewalldで特定のアドレスからのアクセスを拒否する設定は、
基本的にはIPv4の時と変わりはありません。

以上

HTMLだと、
思うように編集することは難しく、やろうすればとっても時間が掛かります。
ですので、本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。

役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ