Iptables:Iptablesを使用して、すべてのトラフィックを固定IPとループバックに制限することでLinuxシステムを保護します。

Iptables:Iptablesを使用して、すべてのトラフィックを固定IPとループバックに制限することでLinuxシステムを保護します。

私は固定IP(私の家のコンピュータ)を持っています。次のルールを使用すると、使用するリモートサーバー(自宅、静的IPからリモートサーバーまで)を保護するのに十分ですか?

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

#Allow traffic from address $STATIC_IP
-A INPUT -s $STATIC_IP -j ACCEPT
-A OUTPUT -d $STATIC_IP -j ACCEPT

#Reject everything else
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT

COMMIT

編集:ここに私の最終的なIptableがありますエゴール・バシリエフ回答

iptablesの一般的な使用(DNSなし、httpsなし、外部IPのhttpなし、マイ固定IP XXXXのみ)

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A OUTPUT -i lo -j ACCEPT

#Allow traffic from address X.X.X.X
-A INPUT -s X.X.X.X -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#Reject everything else
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT

COMMIT

編集:DNS、HTTP、HTTPSを許可するルールが追加されました(配布ミラーから新しいパッケージをダウンロードし、ホスト名をIPに解決するために必要です)

なりすましを防ぐためのループバックの追加規則を参照してください(参照:議論する次のように)

-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

パッケージを更新およびインストールするためのIptablesルール

*filter

#Allow all loopback (lo0) traffic and reject traffic
#to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT

#Allow traffic from address X.X.X.X
-A INPUT -i eth0 -s X.X.X.X -j ACCEPT
-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#Allow DNS
-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Allow HTTP
-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Allow HTTPS
-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Reject everything else
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -j DROP

COMMIT

現在私の解決策は、これらの2つの規則を交互に使用し、一般的な使用には最初の規則を使用し、パッケージの更新とインストールには2番目の規則(DNS、HTTP、HTTPSを使用)に変更することです。

ベストアンサー1

これはサーバールールですか?もしそうなら:

このルールは必要ありません:

-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

このルールはなりすまし保護です。トラフィックのみを許可します。~からそして到着あなたのコンピュータを信頼するならば、この規則は必要ありません。

ループバックアドレスを必要とするアプリケーションが正しく機能しません。

誰にとっても基本的なポリシーがあり、ループバックトラフィックを許可するルールREJECTはありません。OUTPUTスクリプトに次のルールを追加します。

-A OUTPUT -i lo -j ACCEPT

サーバーはすべてのトラフィックをコンピュータに送信できます

それがあなたに必要なものなら、あなたのルールは正しいものです。もしただコンピュータでデータ交換を有効にする必要がありますが、ルールが正しくありません。

この規則を変えなさい:

-A OUTPUT -d $STATIC_IP -j ACCEPT

これに関して:

-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

おすすめ記事