2026年1月20日火曜日

D-STAR Gateway のハッキング対策(nftables版)

Back



過日配布されました iptables によるハッキング対策ツールに続いて iptables や他のfirewall アプリケーションの統合型後継となる nftables によるスクリプトが配布されます。 今後インストール済みファイアウォール・アプリケーションとして移行していきますので、OS入れ替えなどのタイミングで切り替えて戴ければと思います。当初の目的においては敢えて変更せずとも充分に効果は発揮すると思われますので、今後ファイアウォールを構築される場合はこちらを選択して戴ければ幸いです。

Copyright © 2026 The scripts created by JARL D-STAR Committee YASUDA Satoshi 7M3TJZ



=MEMO= DDモードをサポートしているリピータの場合、/etc/dsgwd.conf の #GW_DTPORT=40001 の '# ' を削除して有効にした上でリスタート(又は再起動)したください。 この部分がコメントアウトされていると、ファイアウォールのルールに 40001 が反映されません。


スクリプトを実行してファイアウォールをインストール



    すでに nftables をご利用の方は、/etc/sysconfig/nftables.conf(Alma) /etc/nftables.conf(Rpi) をバックアップしてください。

  1. 次のコマンドを実行してファイアウォールの環境をインストールします。

  2. AlmaLinux
    curl http://app.d-star.info/rpm/gw_firewall_nft | bash

    CentOS
    残念ながら CentOS は対応しておりませんので D-STAR Gateway のハッキング対策(暫定 iptables) をご参照ください。

    Raspberry Pi OS
    curl http://app.d-star.info/debian/bookworm64/rpi-GW/gw_firewall_nft | bash


  3. ファイアウォール (nftables) はすぐに有効になることはありません。

  4. /usr/local/etc/nftables/nftables.conf.org と言うファイアウォールのルールを定義したファイルが出来ます。nftables がインストールされていない場合は、関連ファイルとともにインストールされます。


ルールファイル (nftables.conf.org) が出来て居たらすること



  1. /usr/local/etc/nftables/nftables.conf.org の内容を良く確かめ、既存のTCPに関する設定が漏れていた場合次のようにしてください。

  2. /usr/local/etc/nftables/extra_port というファイルを作成します

  3. 内容はTCPポートの羅列です。Last Heard をお使いの方は 8080 を記入してください。2つ以上の場合、ポートひとつ毎に改行してください。

    尚、Last Heardでも表示出来るようにしている「管理用WEB」の各ポートについてはインストール時に作成された nftables.conf.org を確認の上、 記載されていない場合(変更されている場合含む)は extra_port に追記してください。

  4. この時点で、nftables に精通されている方は nftables.conf.org の内容で不要なポート等を削除することも、 またextra_portファイルを作成せず直接このファイルに追加することも可能です。(逆にUDPポートの追加に関しては編集が必要です。)

  5. この設定により、以後 jpip_setup_nftjpip_reset_nft を実行しても、そのルールが反映されます。


ルールファイルに基づいて nftables を有効にする



  1. SSH で実行される方は nftables.conf.org の内容に、間違いなく使用中の SSH ポートが含まれているか、念を入れて確認してください。

  2. curl の実行で /usr/local/bin/ に jpip_setup_nft がインストールされています。

  3. これを実行してください。su ユーザーであればパスを選ばず実行可能です。

    =MEMO= 今まで iptables をご使用の方は jpip_reset_nft を実行してください。 iptables を無効にした後、jpip_setup_nft が実行されます。

    # jpip_setup_nft
    このコマンドは、curl 直後の再起動によっても実行されます。いきなり再起動する場合は次の項目をよく読んでください。
    (註:/usr/local/etc/nftables/domestic が存在する場合は再起動してもルールが適用されませんのでコマンドを使用してください。)

  4. iptables が有効になっているか確認します。

  5. # nft list ruleset


再起動時に自動実行されること



  1. reboot した時、もし SSH が効かなくなってしまったら(ほぼ起こりません)5分待ってください。

  2. curl 実行時に jpip_setup_nft と供にインストールされている jpip_reset_nft と jpip_purge_nft の機能によって、5分後 nftables によるセキュリティ・ルールが解除されます。

  3. この場合、再度 SSH ポートが合致しているかなどを確認の上再起動し直してみてください。

  4. SSH に問題が無ければ、以後 nftables が解除されないよう次の作業をします。

  5. # nano /usr/local/bin/jpip_reset_nft
      GNU nano	
    		:
    		:
    # 正常に動作が行われることが確認出来た場合は、
    #  下記行をコメントアウトもしくは削除すること
    #  その後、PCを再起動
    #at now+5 min -f /usr/local/bin/jpip_purge_nft 1>/dev/null 2>&1

    最終行をコメントアウト(又は削除)してください。
    この時点では nftabels が有効になっていない状況なので、もう一度 jpip_setup_nft を実行して再起動します。

  6. 最後にもう一度 nftables が有効になっているか確認します。

  7. # nft list ruleset

    これですべての作業が終了です。以後 nftables によって異常なアクセスは拒否されます。


サービスの起動・停止・再起動


  • iptables と違って systemctl が使えます。

  • # systemctl start nftables.service
    # systemctl stop nftables.service
    # systemctl restart nftables.service


Back


TODO Yoshiharu /J E 3 H C Z

ご意見等は当ブログトップメニューページの「FORUM」リンクからお願いします。


0 件のコメント:

コメントを投稿