k-nishiki
2025年3月12日 9時21分
==========
製品型番:A6E Cat.1 WLAN/BT(BTOモデル)
Debian/ABOSバージョン:base_os 3.20.3-at.7
カーネルバージョン:5.10.230-0
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
グローバル固定IPアドレス付きのSIMを用い、インターネット上のサーバからのインバウンド通信を許可する際に、特定のサーバのIPアドレスに対するIPフィルタリングを設定しています。添付ファイルの apply_ipfilter.sh によりiptablesを変更した後に、デバイス側から外部へのアウトバンド通信がブロックされてしまいます(例えば、ping 8.8.8.8 や curl "https://1.1.1.1" などの通信が失敗)。添付ファイルの clear_ipfilter.sh によりiptablesを元に戻した後は、アウトバンド通信がブロックされず正常に通信が行えています。どのようにルールを修正すれば、インバウンド通信のみ制限し、アウトバンド通信は制限しないことを実現できますでしょうか?
ファイル | ファイルの説明 |
---|---|
apply_ipfilter.sh | IPフィルターを追加する処理 |
clear_ipfilter.sh | 追加したIPフィルターを削除する処理 |
コメント
k-nishiki
k-nishiki
at_dominique.m…
マルティネです。
> ・アクセスを許可していないIPアドレスからの要求 ping、sshは拒否されますが、http要求は許可されています
問い合わせ時に添付していただいた apply ファイルに related,established のルールを追加しただけの変更ですね?
そのスクリプトを見た限りでは http (tcp/80か443) と ssh (tcp/22)に違いがあるには見えませんので、
念のため「iptables -S」の出力を共有していたでけますか?(特定な IP をマスクしていただいた構いません)
(スクリプトの頭でテーブルを削除してますので、違いはないはずですが…)
また、/proc/net/nf_conntrack を確認すると接続状態も確認できますので、
そのファイルから間違って許可された接続の行も確認させてください。
よろしくお願いします
k-nishiki
マルティネさん、
お世話になっております。
修正した点は、 related,established のルールを追加した以外に、INPUTのデフォルトポリシーをDROPに変更しました。
念のため、修正したシェルプログラムを添付します。また設定後の内容も添付します。
ご面倒をおかけしますが、よろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
ipfilter-1.txt | IPフィルター適用後の設定 |
apply_ipfilter-1.sh | 修正後のIPフィルター設定 |
at_dominique.m…
マルティネです
> 念のため、修正したシェルプログラムを添付します。また設定後の内容も添付します。
ありがとうございます。
確認しますが、ipfilter-1.txt ファイルの conntrack ファイルによるとインバウンド通信の接続はなかったので、http リクエストを受信した後の出力でしょうか?
(dst=34.199.160.42 の https 接続は、Armadillo Twin agent による armadillo からの接続です。(netstat -npt
で接続中のプロセスを確認できます)
Armadillo Twin サービスをご利用してなくても「困った時に後から登録して使えるように…」という理屈で接続しますが、クライアントの作りとして SWU の鍵がないと何もできないので、セキュリティの面では問題ないはずです。
ご迷惑でしたら「persist_file -d /etc/runlevels/default/armadillo-twin-agentd
」等でサービスは起動時に起動されなくなります)
インバウンドで他の接続があればお手数ですがその時の conntrack ファイルで確認できれば幸いです。
それかアウトバウンドでもリストされた ip に制限したい場合は output でも似たようなルールを追加すればそういう制限も設定できますが、そういうつもりでしたか?
よろしくお願いします
at_dominique.m…
2025年3月12日 10時12分
k-nishikiさん
お世話になっています、
マルティネです。
apply_ipfilter.sh を見たところ「接続済み」のパケットを受ける設定はないからです。
「
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
」を drop前に追加していただければ、期待通りに動くと思います。全般な案内で申し訳ないですが、全体的に参考にできる資料はいくつか見つかりましたので、よろしければご参考にしていただければ幸いです:
弊社の標準ガイド: https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…
外部のサイトですが、各ルールを説明してくれてます: https://knowledge.sakura.ad.jp/4048/
よろしくお願いします