メインコンテンツまでスキップ

ファイアウォール設定

ファイアウォールを設定するには、以下の情報を使用します。

デフォルト・ファイアウォールの設定

デフォルト・セクションでは、特定のゾーンに属していないグローバル・ファイアウォール設定を宣言します。

表 1. デフォルト・ファイアウォールの設定
構文
  • sudo uci set firewall.@defaults[0].input=<input>
  • sudo uci set firewall.@defaults[0].output=<output>
  • sudo uci set firewall.@defaults[0].forward=<forward>
  • sudo uci set firewall.@defaults[0].syn_flood=<syn_flood>
  • sudo uci set firewall.@defaults[0].drop_invalid=<drop_invalid>
表 2. パラメーター
名前タイプ必須デフォルト説明

input

文字列

いいえ

REJECT

フィルター・テーブルの INPUT チェーンのポリシーを設定します。

output

文字列

いいえ

REJECT

フィルター・テーブルの OUTPUT チェーンのポリシーを設定します。

forward

文字列

いいえ

REJECT

フィルター・テーブルの FORWARD チェーンのポリシーを設定します。

syn_flood

ブール値

いいえ

0

SYN フラッド保護を有効にします (synflood_protect の設定により廃止)。

drop_invalid

ブール値

いいえ

0

無効なパケットをドロップします (たとえば、どのアクティブな接続にも一致しない場合)。

コマンド例:

表 3. コマンド例
  • sudo uci set firewall.@defaults[0].input=ACCEPT
  • sudo uci set firewall.@defaults[0].output= ACCEPT
  • sudo uci set firewall.@defaults[0].forward= ACCEPT
  • sudo uci set firewall.@defaults[0].syn_flood=1
  • sudo uci set firewall.@defaults[0].drop_invalid=1
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

新しいゾーンの追加

このセクションでは、「test」の共通プロパティを定義します。input および output のオプションで、このゾーンへのトラフィックの出力および入力に関するデフォルト・ポリシーを設定し、forward のオプションでゾーン内の異なるネットワーク間で転送されるトラフィックのポリシーを記述します。カバーされるネットワークによって、このゾーンのメンバーである利用可能なネットワークを指定します。

表 4. 新しいゾーンの追加
構文
  • sudo uci add firewall zone
  • sudo uci set firewall.@zone[-1].name=<name>
  • sudo uci set firewall.@zone[-1].input=<input>
  • sudo uci set firewall.@zone[-1].output=<output>
  • sudo uci set firewall.@zone[-1].forward=<forward>
  • sudo uci set firewall.@zone[-1].masq=<masq>
  • sudo uci set firewall.@zone[-1].mtu_fix=<mtu_fix>
  • sudo uci set firewall.@zone[-1].network=<network>
  • sudo uci set firewall.@zone[-1].family=<family>
  • sudo uci set firewall.@zone[-1].masq_src=<masq_src>
  • sudo uci set firewall.@zone[-1].masq_dest=<masq_dest>
  • sudo uci set firewall.@zone[-1].conntrack=<conntrack>
  • sudo uci set firewall.@zone[-1].log=<log>
  • sudo uci set firewall.@zone[-1].log_limit=<log_limit>
  • udo uci commit firewall
表 5. パラメーター

パラメーター

タイプ

必須

デフォルト

説明

name

ゾーン名

はい

なし

固有のゾーン名。動作するファイアウォール・ゾーン名の最大長は、11 文字です。

input

文字列

いいえ

REJECT

フィルター・テーブルの INPUT チェーンのポリシーを設定します。

output

文字列

いいえ

REJECT

フィルター・テーブルの OUTPUT チェーンのポリシーを設定します。

forward

文字列

いいえ

REJECT

フィルター・テーブルの FORWARD チェーンのポリシーを設定します。

masq

ブール値

いいえ

0

送信ゾーンのトラフィックをマスカレードするかどうかを指定します。これは通常、wan ゾーンで有効になっています。

mtu_fix

ブール値

いいえ

0

送信ゾーン・トラフィックの MSS クランプを有効にします。

network

リスト

いいえ

なし

このゾーンに接続されているインターフェースのリスト。省略して、追加* オプション、サブネット、またはデバイスを指定しない場合は、デフォルトで name の値が使用されます。ネットワーク構成で定義されているエイリアス・インターフェースは、有効な「スタンドアロン」ネットワークとして使用できません。リスト構文は uci に説明されているように使用します。

family

文字列

いいえ

0

iptables 規則を生成するプロトコル・ファミリー (ipv4、ipv6、または any)。

masq_src

サブネットのリスト

いいえ

0.0.0.0/0

指定された送信元サブネットに対するマスカレードを制限します。サブネットの前に ! をつけることで否定が可能です。複数のサブネットを使用できます。

masq_dest

サブネットのリスト

いいえ

0.0.0.0/0

指定された宛先サブネットに対するマスカレードを制限します。サブネットの前に ! をつけることで否定が可能です。複数のサブネットを使用できます。

conntrack

ブール値

いいえ

マスカレードが使用されている場合は 1、そうでない場合は 0

このゾーンの接続追跡を強制します (接続追跡については注を参照)。

log

ブール値

いいえ

0

このゾーンのトラフィックのリジェクトとドロップに関するログ規則を作成します。

log_limit

文字列

いいえ

10/分

一定間隔のログ・メッセージの量を制限します。

コマンド例:

表 6. コマンド例
  • sudo uci add firewall zone
  • sudo uci set firewall.@zone[-1].name=test
  • sudo uci set firewall.@zone[-1].input=ACCEPT
  • sudo uci set firewall.@zone[-1].output= ACCEPT
  • sudo uci set firewall.@zone[-1].forward= ACCEPT
  • sudo uci set firewall.@zone[-1].masq=<masq>
  • sudo uci set firewall.@zone[-1].mtu_fix=<mtu_fix>
  • sudo uci set firewall.@zone[-1].network=<network>
  • sudo uci set firewall.@zone[-1].family=<family>
  • sudo uci set firewall.@zone[-1].masq_src=<masq_src>
  • sudo uci set firewall.@zone[-1].masq_dest=<masq_dest>
  • sudo uci set firewall.@zone[-1].conntrack=<conntrack>
  • sudo uci set firewall.@zone[-1].log=<log>
  • sudo uci set firewall.@zone[-1].log_limit=<log_limit>
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

新しい転送の追加

次のセクションでゾーン間のトラフィック・フローを制御し、特定の方向の MSS クランプを有効にすることができます。1 方向のみが転送規則によってカバーされます。2 つのゾーン間での双方向トラフィック・フローを許可するには、互いに逆の src と dest がある 2 つの転送が必要になります。

表 7. 新しい転送の追加
構文
  • sudo uci set firewall.@zone[-1].src=<src>
  • sudo uci set firewall.@zone[-1].dest=<dest>
  • sudo uci commit firewall
表 8. パラメーター
パラメータータイプ必須デフォルト説明

src

ゾーン名

はい

なし

トラフィックの送信元ゾーンを指定します。定義されたゾーン名の 1 つを参照する必要があります。

dest

ゾーン名

はい

なし

トラフィックの宛先ゾーンを指定します。定義されたゾーン名の 1 つを参照する必要があります。

コマンド例:

表 9. コマンド例
  • sudo uci set firewall.@zone[-1].src=test
  • sudo uci set firewall.@zone[-1].dest=lan
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

新しいポート転送の追加

ポート転送 (DNAT) は、リダイレクト・セクションによって定義されます。特定の規則に一致する指定された送信元ゾーンでのすべての着信トラフィックが、指定された内部ホストに送られます。リダイレクトは、一般に「ポート転送」および「仮想サーバー」としても知られています。ポート範囲は 6666:6670 のように「開始:停止」で指定されます。これは iptables 構文に類似しています。

表 10. 新しいポート転送の追加
構文
  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=<enabled>
  • sudo uci set firewall.@redirect[-1].name=<name>
  • sudo uci set firewall.@redirect[-1].proto=<proto>
  • sudo uci set firewall.@redirect[-1].src=<src>
  • sudo uci set firewall.@redirect[-1].src_mac=<src_mac>
  • sudo uci set firewall.@redirect[-1].src_ip=<src_ip>
  • sudo uci set firewall.@redirect[-1].src_port=<src_port>
  • sudo uci set firewall.@redirect[-1].src_dip=<src_dip>
  • sudo uci set firewall.@redirect[-1].src_dport=<src_dport>
  • sudo uci set firewall.@redirect[-1].dest=<dest>
  • sudo uci set firewall.@redirect[-1].dest_ip=<dest_ip>
  • sudo uci set firewall.@redirect[-1].dest_port=<dest_port>
  • sudo uci set firewall.@redirect[-1].reflection=<reflection>
  • sudo uci commit firewall
表 11. パラメーター
パラメータータイプ必須デフォルト説明

enabled

文字列

いいえ

1 または yes

リダイレクト規則を有効にするかどうかを設定します。

name

文字列

いいえ

なし

固有のリダイレクト名。

proto

プロトコル名または数値

はい

tcp udp

指定されたプロトコルを使用して、着信トラフィックを照合します。

src

ゾーン名

いいえ

DNAT ターゲットの場合は yes

トラフィックの送信元ゾーンを指定します。定義されたゾーン名の 1 つを参照する必要があります。一般的なポート転送の場合、これは通常 wan です。

src_mac

MAC アドレス

いいえ

なし

指定された MAC アドレスからの着信トラフィックを照合します。

src_ip

IP アドレス

いいえ

なし

指定された送信元 IP アドレスからの着信トラフィックを照合します。

src_port

ポートまたは範囲

いいえ

なし

クライアント・ホストで指定された送信元ポートまたはポート範囲 (例:「5000-5100」) から発信された着信トラフィックを照合します。

src_dip

IP アドレス

はい (SNAT ターゲットの場合)

なし

DNAT の場合、特定の宛先 IP アドレスに向けられた着信トラフィックを照合します。SNAT の場合、送信元アドレスを特定のアドレスに書き換えます。

src_dport

ポートまたは範囲

いいえ

なし

DNAT の場合、このホストで指定された宛先ポートまたはポート範囲 (例:「5000-5100」) に向けられた着信トラフィックを照合します。SNAT の場合、送信元ポートを特定の値に書き換えます。

dest

ゾーン名

はい (SNAT ターゲットの場合)

なし

トラフィックの宛先ゾーンを指定します。定義されたゾーン名の 1 つを参照する必要があります。Attitude Adjustment の DNAT ターゲットの場合、これが lan に等しい場合にのみ NAT リフレクションが機能します。

dest_ip

IP アドレス

はい (DNAT ターゲットの場合)

なし

DNAT の場合、照合した着信トラフィックを指定された内部ホストにリダイレクトします。SNAT の場合、特定のアドレスに向けられたトラフィックを照合します。DNAT では、ifconfig に示されているように、dest_ip の値がルーターのローカル IP アドレスと一致する場合は、規則が DNAT + input 「受諾」規則に変換されます。それ以外の場合は、DNAT + forward 規則です。

dest_port

ポートまたは範囲

いいえ

なし

DNAT の場合、照合した着信トラフィックを内部ホストの指定されたポートにリダイレクトします。SNAT の場合、特定のポートに向けられたトラフィックを照合します。ポートまたは範囲は 1 つしか指定できません (例:「5000-5100」)。規則と異なるポートを指定することはできません (以下を参照)。

reflection

ブール値

いいえ

1

このリダイレクトの NAT リフレクションをアクティブにします。DNAT ターゲットに適用可能です。

コマンド例:

表 12. http (HTTPS ではない) トラフィックを 192.168.1.10 で実行されている Web サーバーに転送します。
  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=1
  • sudo uci set firewall.@redirect[-1].proto=tcp
  • sudo uci set firewall.@redirect[-1].src=wan
  • sudo uci set firewall.@redirect[-1].src_dport=80
  • sudo uci set firewall.@redirect[-1].dest=lan
  • sudo uci set firewall.@redirect[-1].dest_ip=192.168.1.10
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

新しいトラフィック規則の追加

ポート転送 (DNAT) は、リダイレクト・セクションによって定義されます。特定の規則に一致する指定された送信元ゾーンでのすべての着信トラフィックが、指定された内部ホストに送られます。リダイレクトは、一般に「ポート転送」および「仮想サーバー」としても知られています。ポート範囲は 6666:6670 のように「開始:停止」で指定されます。これは iptables 構文に類似しています。

表 13. 新しいトラフィック規則の追加
構文
  • sudo uci add firewall rule
  • sudo uci set firewall.@rule[-1].enabled=<enabled>
  • sudo uci set firewall.@rule[-1].name=<name>
  • sudo uci set firewall.@rule[-1].family=<family>
  • sudo uci set firewall.@rule[-1].proto=<proto>
  • sudo uci set firewall.@rule[-1].src=<src>
  • sudo uci set firewall.@rule[-1].src_mac=<src_mac>
  • sudo uci set firewall.@rule[-1].src_ip=<src_ip>
  • sudo uci set firewall.@rule[-1].src_port=<src_port>
  • sudo uci set firewall.@rule[-1].dest=<dest>
  • sudo uci set firewall.@rule[-1].dest_ip=<dest_ip>
  • sudo uci set firewall.@rule[-1].dest_port=<dest_port>
  • sudo uci set firewall.@rule[-1].target=<target>
  • sudo uci set firewall.@rule[-1].weekdays=<weekdays>
  • sudo uci set firewall.@rule[-1].monthdays=<monthdays>
  • sudo uci set firewall.@rule[-1].start_time=<start_time>
  • sudo uci set firewall.@rule[-1].stop_time=<stop_time>
  • sudo uci set firewall.@rule[-1].start_date=<start_date>
  • sudo uci set firewall.@rule[-1].stop_date=<stop_date>
  • sudo uci set firewall.@rule[-1].utc_time=<utc_time>
  • uci commit firewall
表 14. パラメーター
パラメータータイプ必須デフォルト説明

enabled

ブール値

いいえ

はい

規則を有効または無効にします。

name

文字列

いいえ

なし

固有の規則名。

family

文字列

いいえ

any

iptables 規則を生成するプロトコル・ファミリー (ipv4、ipv6、または any)。

proto

プロトコル名または数値

いいえ

tcp udp

指定されたプロトコルを使用して、着信トラフィックを照合します。tcp、udp、tcpudp、udplite、icmp、esp、ah、sctp、またはすべてのいずれか、あるいはこれらのプロトコルのいずれかや別のプロトコルを表す数値に設定できます。/etc/protocols のプロトコル名も使用できます。数値 0 はすべてに相当します。

src

ゾーン名

はい (ファイアウォール v2、バージョン 58 以降はオプション)

なし

トラフィックの送信元ゾーンを指定します。定義されたゾーン名の 1 つを参照する必要があります。

src_mac

MAC アドレス

いいえ

なし

指定された MAC アドレスからの着信トラフィックを照合します。

src_ip

IP アドレス

いいえ

なし

指定された送信元 IP アドレスからの着信トラフィックを照合します。

src_port

ポートまたは範囲

いいえ

なし

関連する proto を指定した場合、指定された送信元ポートまたはポート範囲 (例:「5000:5100」、ポート範囲はすべてのプロトコルに適用されない) の着信トラフィックを照合します。複数のポートは '80 443 465' 1 のように指定できます。

dest

ゾーン名

いいえ

なし

トラフィックの宛先ゾーンを指定します。定義されたゾーン名の 1 つまたは任意のゾーンの * を参照する必要があります。指定した場合、転送されるトラフィックに規則が適用されます。それ以外の場合は、input 規則として扱われます。

dest_ip

IP アドレス

いいえ

なし

指定された宛先 IP アドレスに向けられた着信トラフィックを照合します。dest ゾーンがない場合、input 規則として扱われます。

dest_port

ポートまたは範囲

いいえ

なし

関連する proto を指定した場合、特定の宛先ポートまたはポート範囲 (例:「5000:5100」、ポート範囲はすべてのプロトコルに適用されない) に向けられた着信トラフィックを照合します。複数のポートは '80 443 465' 1 のように指定できます。

target

文字列

はい

DROP

このリダイレクトの NAT リフレクションをアクティブにします。DNAT ターゲットに適用可能です。

weekdays

平日のリスト

いいえ

(常時)

指定した場合は、指定された曜日のトラフィックのみ照合します。たとえば、日曜日、月曜日、木曜日、日曜にのみ照合するには sun mon thu fri とします。頭に感嘆符をつけることでリストを逆転させることができます。たとえば、! sat sun で土曜日と日曜日以外は常時照合します。

monthdays

日付のリスト

いいえ

(常時)

指定した場合、月の指定された日のトラフィックのみ照合します。たとえば、月の 2 日、5 日、30 日にのみ照合するには 2 5 30 とします。頭に感嘆符をつけることでリストを逆転させることができます。たとえば、!31 で月の 31 日以外は常時照合します。

start_time

時刻 (hh:mm:ss)

いいえ

(常時)

指定した場合、1 日の指定した時間 (この時間を含む) 以降のトラフィックのみ照合します。

stop_time

時刻 (hh:mm:ss)

いいえ

(常時)

指定した場合、1 日の指定した時間 (この時間を含む) 以前のトラフィックのみ照合します。

start_date

日付 (yyyy-mm-dd)

いいえ

(常時)

指定した場合、指定した日 (この日を含む) 以降のトラフィックのみ照合します。

stop_date

日付 (yyyy-mm-dd)

いいえ

(常時)

指定した場合、指定した日 (この日を含む) 以前のトラフィックのみ照合します。

utc_time

ブール値

いいえ

0

指定されたすべての時間値を現地時間ではなく UTC 時間として扱います。

コマンド例:

表 15. 指定されたホスト・アドレスへの接続試行をすべてブロックします。
  • sudo uci add firewall rule
  • sudo uci set firewall.@rule[-1].enabled=1
  • sudo uci set firewall.@rule[-1].src=lan
  • sudo uci set firewall.@rule[-1].dest=wan
  • sudo uci set firewall.@rule[-1].dest_ip=123.45.67.89
  • sudo uci set firewall.@rule[-1].target=REJECT
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

新しい送信元 NAT の追加

送信元 NAT は、組み込みスイッチ・システムがパケットの送信元であるかのように発信パケットを変更します。

コマンド例:
表 16. UDP および TCP トラフィックの送信元 NAT の定義

IP アドレス 10.55.34.85 のホストから発信してポート 123 に向けられた UDP および TCP トラフィックの送信元 NAT を定義します。

送信元アドレスは 63.240.161.99 に書き換えられます。

  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=1
  • sudo uci set firewall.@redirect[-1].src=lan
  • sudo uci set firewall.@redirect[-1].src_ip=10.55.34.85
  • sudo uci set firewall.@redirect[-1].src_dip=63.240.161.99
  • sudo uci set firewall.@redirect[-1].dest=wan
  • sudo uci set firewall.@redirect[-1].dest_port=123
  • sudo uci set firewall.@redirect[-1].target=SNAT
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart