web-dev-qa-db-ja.com

OpenVPNサーバーに接続されていない限り、すべてのインターネット接続をブロックする

OpenVPNに接続していない限り、すべてのインターネット接続をブロックします。もちろん、VPNサーバーへの接続を許可する必要があります。

VPNサーバーのIPへのトラフィックの出入りを許可することでこれを行うことはできますが、後でiptablesを使用してすべてのルールをドロップできますか?

@tachomiによって提案された解決策を試しましたが、iptablesルールが設定されているときにインターネット接続がありません。 iptables-save状態:

# Generated by iptables-save v1.6.0 on Wed Feb  3 00:53:32 2016
*filter
:INPUT DROP [247:40343]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [153:25961]
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p udp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p udp -j ACCEPT
COMMIT
# Completed on Wed Feb  3 00:53:32 2016
5
boolean.is.null

まず、ローカル接続とRELATED, ESTABLISHED接続プロトコルを許可します。

$ Sudo iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT
$ Sudo iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ Sudo iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ Sudo iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT

これにより、インターネット接続が可能になります。

デフォルトのチェーンポリシーを設定する

$ Sudo iptables -P INPUT DROP
$ sudp iptables -P OUTPUT DROP

これにより、あらゆる種類のインバウンド/アウトバウンドトラフィックが拒否されます。

VPN接続を許可する

$ Sudo iptables -A INPUT -s [VPN ip connection] -j ACCEPT
$ Sudo iptables -A OUPUT -d [VPN ip connection] -j ACCEPT

これにより、VPN接続が許可されます。

SSHで接続している場合は、IPアドレスもLOCALHOSTとして許可する必要があります

更新:

他の接続ルールについては、それらを許可するだけです。

たとえばHTTP:

$ Sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ Sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT  

個人的な推奨事項

$ Sudo iptables-save > iptables_backupを使用してiptablesルールをバックアップし、変更がある場合はvimを使用してルールを編集し、$ Sudo iptables-restore < iptables_backupを使用してiptablesを復元します。これは、ルールの重複を避けるための個人的な習慣にすぎません。

5
tachomi