Ubuntuにファイアウォールスクリプトをインストールする方法?


回答:


0

「高度な」ファイアウォールスクリプトは、内部インターフェイスと外部インターフェイスの両方が起動した後に実行されることになっているシェルスクリプトです。

最初に、スクリプトをどこかに置き、たとえば/etc/init.d/local/my_firewall_script、実行可能に#!/bin/shし、スクリプトファイルの最初の行として追加します。

次に、両方のインターフェイスが起動した後にスクリプトが実行されるように調整する必要があります。次の2つのオプションがあります。

  • 新興企業を通じて。これは、両方のインターフェイスが起動しているときにスクリプトを実行する必要があるため、私の好みです。/etc/init/my_firewall.conf次のようなものを含むファイルを作成します。

    description "My firewall script"
    start on (net-device-up IFACE=br0 and net-device-up IFACE=eth0)
    console output
    
    pre-start exec /etc/init.d/local/my_firewall_script
    

    これは完全にテストされていません。また、私はアップスタートの経験がないため、ファイルを調整する必要があるかもしれません。また、あなたに影響を与える可能性のあるnet-device-upイベントに関連するバグがあります。

  • ifupスクリプトを通じて。2番目のインターフェイスが起動したときにスクリプトを実行する必要があるため、これは少し厄介です。/etc/network/if-up.d/my_firewall次のようなものを含むファイルを作成します(テストなし):

    #!/bin/sh
    if [ "$IFACE" = "br0" ] || [ "$IFACE" = "eth0" ]; then
      if [ -n "$(ip addr show br0 | grep '^ *inet ')" ] 2>/dev/null &&
         [ -n "$(ip addr show eth0 | grep '^ *inet ')" ] 2>/dev/null; then
        /etc/init.d/local/my_firewall_script
      fi
    fi
    

    単一のインターフェイスがあった場合、またはインターフェイスの1つが常に他のインターフェイスの後に常に起動するという保証があった場合、このメソッドはより単純で優先されますeth0

    #!/bin/sh
    if [ "$IFACE" = "et0" ]; then
      /etc/init.d/local/my_firewall_script
    fi
    

ここに記載されているスクリプトは、特定のセットアップにかなり固有のものであることに注意してください。これは、比較的高度なスクリプトの例です。少なくともIPアドレスの範囲とおそらくインターフェースの名前に合わせて、セットアップに合わせて調整する必要があります。

動作するメソッドを見つけたら、Wikiページにその方法の説明を書くことをお勧めします。


私は2番目の方法を試しましたが、ダメです。シェルからファイアウォールスクリプトを実行すると、ルールが追加されます。ただし、ブート直後にはルールはありません。スクリプトから/ var / log / messagesに何かを記録する方法はありますか?
パブロ

@Michael:set -x; exec >/var/tmp/ 2>&1ifupスクリプトの先頭に追加します。するとどうなりますかifdown eth0; ifup eth0
ジル


0

/etc/iptables.up.rulesたとえば、スクリプトを保存して、以下を追加できます。

post-up iptables-restore < /etc/iptables.up.rules

するために/etc/network/interfacesあなたのインターフェースの定義の下に提出。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.