iptables:TFTPサーバーのルール

iptables:TFTPサーバーのルール

UDP標準ポートでリッスンするtftpサーバーがあります69iptablesを除くすべてのアイテムをブロックするために、ルールに次のルールを追加しましたUDP 69

-A INPUT -i eth0 -s 192.168.1.0/24 -p udp -m udp --dport 69 -j ACCEPT
-A INPUT                                                    -j   DROP

ただし、このルールにより、クライアントはTFTPサーバーにアクセスできません。tftp実際の転送(たとえばftp)にはより高いポートが使用され、そのモジュールを使用する必要があることを読みましたip_conntrack_tftp

# zcat /proc/config.gz  | grep -i tftp
CONFIG_NF_CONNTRACK_TFTP=m

カーネルにモジュールがあります。しかし、何をすべきですか?

ベストアンサー1

  • まず、送信元IPが「192.168.1.0/24」と一致するサーバーにのみ接続できます。確かにこれはLAN IPなので、サーバーとクライアントが同じLAN上にある場合にのみ機能します。この場合、インターネットのファイアウォールとして機能するルーターがある可能性があるため、iptables構成は必要ありません。

  • 2番目:最初の設定を次に変更します。

    -A INPUT -i eth0 -s 192.168.1.0/24 -p udp --dport 69 -m state --state NEW,ESTABLISHED -j ACCEPT
    
  • ただし、上記の設定を使用すると、ポート69からの着信接続のみが許可されます。これは、発信接続の既定のフィルタリング ポリシーに従ってサーバーがメッセージを再送信できないことを意味します。サーバーがポート69で応答できるようにするには、発信接続を許可する基本ポリシーが必要です。

    -P OUTPUT ACCEPT
    

    または、ポート69で応答を許可します。

    -A OUTPUT -i eth0 -p udp --sport 69 -m state --state ESTABLISHED -j ACCEPT
    
  • また、カーネルモジュールip_conntrackip_conntrack_tftp「親ポート接続」をロードする必要があります。 (両方を使用してロードされていることを確認してくださいlsmod。)実際のデータ転送用に新しい接続を受け入れるには、次のようにします。

    -A INPUT --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
    -A OUTPUT --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
    

1024 より大きいポートでは新しい接続を確立できません。

おすすめ記事