Gateway のハッキング対策 (nftables)
Back
HOME
過日配布されました iptables によるハッキング対策ツールに続いて、今後インストール済みファイアウォール・アプリケーションとして移行していきますので、OS入れ替えなどのタイミングで切り替えて戴ければと思います。当初の目的においては敢えて変更せずとも充分に効果は発揮すると思われますので、今後ファイアウォールを構築される場合はこちらを選択して戴ければ幸いです。
Copyright © 2026
The scripts created by JARL D-STAR Committee YASUDA Satoshi 7M3TJZ
=MEMO= DDモードをサポートしているリピータの場合、/etc/dsgwd.conf の #GW_DTPORT=40001 の '# ' を削除して有効にした上でリスタート(又は再起動)したください。
この部分がコメントアウトされていると、ファイアウォールのルールに 40001 が反映されません。
=MEMO= ゲートウェイ稼働後の OS アップデートについては、住来の dnf -y update ではなく、
dnf makecache; dnf -y update をご使用ください。
運用上定期的に自動で行われるアップデートのメタデータ取得が相当なメモリーを消費し dsgwd の通信に影響を与える為に、無効に設定されます。従ってアップデート時手動で行うことになります。(2026.2.10)
スクリプトを実行してファイアウォールをインストール
すでに nftables をご利用の方は、/etc/nftables.conf をバックアップしてください。
なお、今回のインストール作業の結果としては、AlmaLinux では /etc/sysconfig/nftables.conf となります。
① 次のコマンドを実行してファイアウォールの環境をインストールします。
AlmaLinux
dnf makecache
curl http://app.d-star.info/rpm/gw_firewall_nft | bash
CentOS
残念ながら CentOS は正式には CentOS 8 からですが、CentOS 7 で
カーネルが 3.13以降であれば、AlmaLinux のコマンドで セットアップ出来た事例が有ります。
iptables や firewalld が動いて居る場合はすべて無効にしてから行ってください。
なお、上手く行かなかった場合は
D-STAR Gateway のハッキング対策(暫定 iptables) をご参照ください。
Raspberry Pi OS
curl http://app.d-star.info/debian/bookworm64/rpi-GW/gw_firewall_nft | bash
② ファイアウォール (nftables) はすぐに有効になることはありません。
/usr/local/etc/nftables/nftables.conf.org と言うファイアウォールのルールを定義したファイルが出来ます。
nftables がインストールされていない場合は、関連ファイルとともにインストールされます。
ルールファイル (nftables.conf.org) が出来て居たらすること
/usr/local/etc/nftables/nftables.conf.org の内容を良く確かめ、既存のTCPに関する設定が漏れていた場合次のようにしてください。
① /usr/local/etc/nftables/extra_port というファイルを作成します
内容はTCPポートの羅列です。Last Heard をお使いの方は 8080 を記入してください。2つ以上の場合、
ポートひとつ毎に改行してください。
尚、Last Heard でも表示出来るようにしている「管理用WEB」の各ポートについてはインストール時に作成された nftables.conf.org を確認の上、
記載されていない場合(変更されている場合含む)は extra_port に追記してください。
② この時点で、
nftables に精通されている方は nftables.conf.org の内容で不要なポート等を削除することも、
またextra_portファイルを作成せず直接このファイルに追加することも可能です。(逆にUDPポートの追加に関しては編集が必要です。)
この設定により、以後
jpip_setup_nft や
jpip_reset_nft を実行しても、そのルールが反映されます。
ルールファイルに基づいて nftables を有効にする
① SSH で実行される方は nftables.conf.org の内容に、
間違いなく使用中の SSH ポートが含まれているか、念を入れて確認してください。
② curl の実行で /usr/local/bin/ に
jpip_setup_nft がインストールされています。
これを実行してください。su ユーザーであればパスを選ばず実行可能です。
=MEMO= 既に iptables をご使用の方は jpip_reset_nft を実行してください。
iptables を無効にした後、jpip_setup_nft が実行されます。
jpip_setup_nft
このコマンドは、curl 直後の再起動によっても実行されます。
いきなり再起動する場合は次の項目をよく読んでください。
(註:/usr/local/etc/nftables/domestic が存在する場合は再起動してもルールが適用されませんのでコマンドを使用してください。)
③ nftables が有効になっているか確認します。
nft list ruleset
再起動時に自動実行されること
① reboot した時、もし
SSH が効かなくなってしまったら(ほぼ起こりません)5分待ってください。
curl 実行時に jpip_setup_nft と供にインストールされている jpip_reset_nft と jpip_purge_nft の機能によって、5分後 nftables によるセキュリティ・ルールが解除されます。
② この場合、前項「
ルールファイルに基づいて nftables を有効にする」からやり直してください。
③ SSH に問題が無ければ、以後 nftables が解除されないよう次の作業をします。
# nano /usr/local/bin/jpip_reset_nft
GNU nano /usr/local/bin/jpip_reset_nft
:
:
# 正常に動作が行われることが確認出来た場合は、
# 下記行をコメントアウトもしくは削除すること
# その後、PCを再起動
#at now+5 min -f /usr/local/bin/jpip_purge_nft 1>/dev/null 2>&1
最終行をコメントアウト(又は削除)してください。
この時点では
nftabels が一旦解除された状況なので、もう一度
jpip_setup_nft を実行して再起動します。
④ 最後にもう一度 nftables が有効になっているか確認します。
nft list ruleset
これですべての作業が終了です。以後 nftables によって異常なアクセスは拒否されます。
サービスの起動・停止・再起動
● iptables と違って systemctl が使えます。
systemctl start nftables.service
systemctl stop nftables.service
systemctl restart nftables.service
● ただし、今回の仕組みでは
jpip_reset_nft で将来的にサポートされるため、
jpip_reset_nft.service が enable になっており、
nftables.service の start・stop はその中でコントロールされています。従って、 nftables.service は標準で disable になっていますが間違いではありません。
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by