nftablesアプリケーションが一時的にポートを使用できるようにする方法

nftablesアプリケーションが一時的にポートを使用できるようにする方法

使っています曲球私のAndroid携帯電話からLinuxコンピュータと携帯電話の間でファイルを転送します。

アプリケーションは、42001初期接続と42000データ転送にポートを使用します。私はそれがTCPを使用すると信じています。

私はnftablesをファイアウォールとして使用しており、最近ファイアウォールから切り替えました。私はまだnftableを完全にマスターしていません。

42000,42001アプリケーションを起動する前に、マイコンピュータでこれら2つのポートを一時的に許可し、完了したらポートを閉じたいと思います。

既存のルールを引き続き一時的に追加し、可能であればbash / nftスクリプトを使用して削除したいと思います。

可能ですか?

洞察力のあるご案内に感謝します。

私のシステムには、次の簡単な基本構成があります。/etc/nftables.conf

#!/usr/bin/nft -f
# vim:set ts=2 sw=2 et:

# IPv4/IPv6 Simple & Safe firewall ruleset.
# More examples in /usr/share/nftables/ and /usr/share/doc/nftables/examples/.

table inet filter
delete table inet filter
table inet filter {
  chain input {
    type filter hook input priority filter
    policy drop

    ct state invalid drop comment "early drop of invalid connections"
    ct state {established, related} accept comment "allow tracked connections"
    iifname lo accept comment "allow from loopback"
    ip protocol icmp accept comment "allow icmp"
    meta l4proto ipv6-icmp accept comment "allow icmp v6"
    tcp dport ssh accept comment "allow sshd"
    pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited
    counter
  }
  chain forward {
    type filter hook forward priority filter
    policy drop
  }
}

事前にありがとう

ベストアンサー1

この場合、私がしなければならないのは、一時アクセス用のチェーンを構成することです。

以下では、「テーブル」は「フィルタ」(あなたの例に基づいています)であり、これらの規則の識別子として「warpinator」を使用しています。 (たとえば、テーブル名はあまり重要ではなく、このように「予約語」を使用することは常に非常に混乱しています。)

# Create a new chain and counter for this purpose. 
create chain inet filter warpinator
add counter inet filter warpinator

# add a rule to the chain 
add rule inet filter warpinator tcp dport { 42000, 42001 } log prefix "WARPINATOR: " counter name "warpinator" accept 

# insert a 'jump' condition to your input chain to inspect traffic
add rule inet filter input jump warpinator

これにより、次のインバウンドトラフィックが有効になります。どのソースをこのポートに接続します。

これにより、これをより積極的に制限できます。

add rule inet filter warpinator tcp dport { 42000, 42001 } ip saddr 192.168.0.0/24 .... 

これにより、そのアドレス範囲(192.168.0.1-192.168.0.255)内のアドレスに制限されます。 「ホーム」ネットワーク範囲を選択しますか?

これをnftスクリプト(おそらく/ etc / nftables?)として保存すると、次のことができます。

  • main.nftあなたの行の1つにそれを含めてくださいinclude
  • 一時的に実行してみてくださいnft -f <script>

「nft」構成に含まれているので、delete table inet filterそれを再ロードしてルールを再び削除できます。nft -f <main policy>

または、main.nftで定義されたチェーンを維持し、以下を有効にすることもできます。

add rule inet filter input jump warpinator

必要なとき。

必要に応じてポリシーからルールを削除できますが、「ルールID」が必要なほど単純ではありません。

たとえば、次のようにします。

nft -a list ruleset 

「ジャンプ」ルールの「処理ID」を探して処理番号別に削除してください。したがって、ポートを閉じるために「ベースライン」を再ロードするのが良い方法だと思います。

おすすめ記事