iptables:特定のIPは許可し、他のすべての接続はブロックします。

iptables:特定のIPは許可し、他のすべての接続はブロックします。

iptablesで特定のIPを許可し、他のすべての接続をブロックする方法は?

答え1

私は書いたデスクトップユーザー向けのデフォルトのIptablesルールに関するブログ投稿ずっと前に、おそらくそれを読む必要があります。そしてそれにリンクされた記事ステートフルファイアウォールの設計。ただし、カーネル2.6.39以前(ipsetホワイトリストに10個以上のIPがある場合(そのうち10個はランダム))をホワイトリストに追加するためにこの機能を使用できます。

まず、受け入れるか破棄したい状態とインターフェイスを処理します。

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

IPでのみ許可したい場合は、ステータスは必要ありません。

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

ただし、これを行う際に問題が発生する可能性があるため、状態を使用して生活を簡単にすることをお勧めします。たとえば、これは許可されておらず、-i lo一部の-o loアプリケーションでは間違いなく問題が発生します。

答え2

以下は、ブロックする(テストされていません!)例です。着信接続のみしてください。ループバックインターフェイスを介して192.168.3.x、ICMP、またはSSHポートからの接続を許可します。他のすべての接続は拒否されます。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

答え3

次のルールはあなたのIPのみを許可し、ポート22またはSSHを介して他のすべてのIPをブロックします。接続を切断する前に、新しい端末を使用してテストしてください。

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP

答え4

以下は完全な作業例です。
また、アプリが機能します。 (re:keepassが起動しないという私の意見)

https://github.com/skironDotNet/linux-allow-only-single-ip

関連情報