WANアクセスをブロックする - LANアクセスを許可する - Linuxホスト

WANアクセスをブロックする - LANアクセスを許可する - Linuxホスト

私が望むのは、WANへのアクセスをブロックし、これらのホストが192.168.1.0/24 LANで互いに通信できるようにすることです。この構成はそのホストで行う必要があります。

同様の投稿もありますが、ユースケースがあまりにも具体的または複雑すぎる場合が多いです。これでギガバイトあたりの費用を支払います。一度設定されると、実際にWANアクセスは必要ありませんが、多くのデータを使用しているように見えるVMがいくつかあります。 (何らかの理由でLDAPサーバー?)

DD-WRTフィルタリングを調べていますが、ホスト側でどうするか知りたいです。

また、1 日に 1 時間 WAN アクセスを有効にすることも検討します。これは「」で行うことができます。iptablesスクリプト「CRONを使用するか、DD-WRT経由で使用してください。

IPTablesが最善の選択だと思います。私のすべてのサーバーはIPTableを使用し、一部はUFWを使用し、一部はFirewallDを使用すると思います。

私はこれがおそらく「一般的な質問」だと思いますが、ほとんどの答えは多くの/すべてのディストリビューションに適用する必要があります。しかし、ちなみに私は主にUbuntu 14/16とCentOS 6/7を使います。

答え1

フィルタリング用IPテーブル

これは、許可されたトラフィックのルールセットを作成し、残りを破棄することによって達成できます。

チェーンの場合は、OUTPUTループバックトラフィックとネットワークトラフィックを許可するルールを作成します192.168.1.0/24。一致するルールがない場合は、基本操作が適用されますREJECT。に設定されます。

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -P OUTPUT REJECT

チェーンの場合、INPUT同様のルールを作成できます。ループバックとローカルネットワークのトラフィックを許可し、残りの部分を破棄します。

単一のルールを使用して、確立されたトラフィック(ホストが開始した接続への応答トラフィック)を一致させることができます-m conntrack --ctstate ESTABLISHED。これにより、インターネットアクセスを有効にしたい場合にチェーンを変更する必要がなくなります。この方法は、ローカルネットワークの外部からの接続が必要なプログラム/デーモンを実行しない場合に機能します。

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

ローカルネットワークの外部から開始された接続を許可する必要がある場合は、INPUT同じ方法でチェーンを構成し、OUTPUT同様のメカニズムを使用して適用する必要があります。

無制限(WANアクセス)ネットワークアクセスを許可するには、デフォルトのタスクをに変更しますACCEPT。制限を復元するには、デフォルトの操作をもう一度変更してくださいREJECT。最後のルールを追加/削除しても-j ACCEPT同じ効果が得られます。

iptables -P OUTPUT ACCEPT

また、使用することができますiptables 時間モジュールは、一日の特定の時間のトラフィックを許可します。この場合、cronを使用する必要はありません。たとえば、12:00 から 13:00 の間のトラフィックを許可するには、ルールは次のようになります。

iptables -A OUTPUT -m time --timestart 12:00 --timestop 13:00 -j ACCEPT

答え2

削除デフォルトパス

ホストのルーティングテーブルからデフォルトパスを削除すると、そのホストがローカルネットワーク外の他のホストと通信できなくなります。デフォルトパス設定は、デフォルトパスの追加とデフォルトパスのip route削除です。ip route default add ...ip route del default

ルーターからのトラフィックがまだホストに到達する可能性があります。有効にすると、送信元アドレスへの既知のルートがないトラフィックを破棄できます。リバースパスフィルタリング

リバースパスフィルタリングを設定する方法は2つあります。システム制御またはiptables。これシステム制御このメソッドはipv4でのみ機能し、iptablesルールはipv4とipv6の両方に対して作成できます。

  • リバースパスフィルタリングを有効にするには、次のようにします。システム制御 rp_filter:

    sysctl net.ipv4.conf.all.rp_filter = 1
    
  • そしてiptables、使用rpfilter基準寸法:

    iptables -t raw -I PREROUTING -m rpfilter --invert -j DROP
    

    にも同じ規則が適用されますip6tablesnftables、使用fib氏名。

デフォルトパスを削除して復元するには、cronで簡単なスクリプトを使用できます。

#!/bin/sh -e
FILE="/root/default.gw"

case "$1" in
    "remove")
        route="$(ip route show default 0.0.0.0/0)"

        if [ -z "$route" ]; then
            echo "no default route configured"
            exit 1
        fi

        echo "$route" > $FILE
        ip route del default
        ip route flush cache
    ;;

    "restore")
        route="$(cat $FILE)"

        if [ -z "$route" ]; then
            echo "no default route saved"
            exit 1
        fi

        ip route add $route 
    ;;

    *)
        echo "invalid argument"
        echo "usage: $(basename -- $0) remove|restore"
        exit 1
esac

関連情報