iptables の IP「ホワイトリスト」を作成する

iptables の IP「ホワイトリスト」を作成する

私はiptablesを備えた携帯電話モデム/ルーターを使用しています。また、WAN ICMP/HTTPS/SSHをオンにするなどの簡単な調整が可能な、扱いにくいWebUIもあります。明らかに、これらのポートを広く公開したくないのですが、事前に設定したアドレスのホワイトリストからこのデバイスにリモート管理アクセスできるようにしたいと考えています。アドレスは最大10個あり、一部はIP範囲/サブネットです。私はこれを、次のようなルールで単一のアドレスでテストしました。

-A HTTPS_WAN_INPUT -i ppp0 -s x.x.x.x -p tcp -m tcp --dport 443 -j ACCEPT

しかし、このようなルールをポート/プロトコルごとに 10 回記述するのは面倒に思えるので、もっと良い方法があるかどうか確認するために書いています。すべてのアドレスを含む $WHITELIST 変数を作成し、それを -s で使用できますか? または、ポリシーの 1 つなど、チェーンのさらに上位にあるものにホワイトリストを適用できますか?

各ルールごとに 10 行も書かずに、IP セットへのリモート アクセスを許可するよりエレガントな方法があるかどうかを調べようとしています。

答え1

実際には 2 つのオプション (またはその組み合わせ) しかありませんが、一方は他方よりも少しリスクが高くなります。このsrcフィールドではサブネットも受け入れられることに注意してください (例: 192.168.1.0/24)。

初め、もしiptables/カーネルがiprangeモジュールを使用して構築されている場合、これを使用して 1 ~ 2 個ではなく IP の範囲を指定できますが、IP の「リスト」を提供することはできません。例:

-A HTTPS_WAN_INPUT -i ppp0 -m iprange --src-range x.x.x.x-y.y.y.y -p tcp -m tcp --dport 443 -j ACCEPT

次に、クリーンな状態を保つために、「ホワイトリスト」IP を含む新しいターゲット固有のターゲットを設定できます。例:

iptables -N RemoteManagement
iptables -P RemoteManagement DROP
iptables -A -A HTTPS_WAN_INPUT -i ppp0 -p tcp -m tcp --dport 443 -j RemoteManagement

... 許可する IP ごとに...

iptables -I RemoteManagement -s x.x.x.x -j ACCEPT

これにより、ルールを少し整理し、必要に応じて IP を削除したり追加したりできるようになります。もちろん、モジュールが利用iprange可能な場合は、RemoteManagement チェーンで範囲を指定することもできます。また、この同じチェーンを、適用される他のシナリオで再利用することもできます。

関連情報