回答:
かなり前にデスクトップユーザー向けの基本的なIptablesルールに関するブログ記事を書いたので、おそらく読んでおくべきでしょう。また、ステートフルファイアウォールの設計に関するリンク記事もあります。ただし、カーネル2.6.39より前(ipset
10を超えるホワイトリスト(10は任意)がある場合は、IPをホワイトリストに含めるために使用することもできます)。
最初に、受け入れまたはドロップすることがわかっている状態、およびインターフェイスを処理します。
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
、確かに、特定のアプリケーションで問題が発生します。
iptables -F
すべてのルールをクリアすることになっている場合、ubuntu.comにpingすることもできません
着信接続のみをブロックする(テストされていない!)例です。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
lo
上記の例では、状態の一致から除外され、常に許可されています。
以下のルールは、IPのみを許可し、ポート22またはsshを介して他のすべてのIPをブロックします。切断する前に新しい端末でテストしてください。
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress
、私はいくつかのIPアドレスと範囲を追加することができますか?また、2888のような非標準ポートでSSHを使用している場合、コマンドは22
例のを2288
?に変更します。また、これは許可されたものを除くすべてのIPからこのサーバーへのrsync、sftpなどもブロックしますか?
-p tcp
重要なのは、--dport
それなしでは機能しないためです。また、ポートを閉じたポートと同一にし、そのポート宛てのパケットをブラックホールにするため、-j REJECT
代わりに使用することをお勧めします。実際には、リモートの攻撃者は、実際に閉じられているポートから構成済みのポートを検出できます。DROP
REJECT
DROP
DROP
完全な作業例を次に示します。
また、アプリケーションを動作させます(re:keepassが起動しないという私のコメント)