iptablesファイアウォールの作成方法

最初にiptablesを使用したとき、私の目的は、ホームネットワークを不要なトラフィックから保護するための信頼できるファイアウォールを設定し、LAN上のすべてのコンピュータにインターネット接続を共有するのと同じくらい簡単でした。 この記事では、そのような目的のための簡単な例を示します。

iptablesとは何ですか?

Wikipediaのフリー百科事典:「iptablesは、システム管理者が configure Linuxカーネルのファイアウォール(さまざまなNetfilterモジュールとして実装されている)と、それが格納するチェーンとルールによって提供されるテーブル。

キーワード

  • table - iptablesにはいくつかの事前定義テーブルが含まれています。 我々はそれらの2を調査する予定です:
    • filter - デフォルトのテーブル
    • nat - アドレス変換ルールに使用されるテーブル
  • チェーンテーブルはチェーンを含み、ルールは別のチェーンの後に定義されます。 あなたはそれを実際の鎖として描くことができます。 パケットがチェーンを通過するとき、それはぶら下がっているチェーン上に落ちる水のようなものです。 そのドロップがいずれかのリンクで「一致」している場合は、そこで停止します。
    • フィルターテーブルには、3ビルトインチェーンINPUT、OUTPUT、およびFORWARDがあります。 サーバへの、サーバからの、およびサーバを通る、対応するトラフィックのそれぞれ
    • natテーブルには、2ビルトインチェーンPREROUTINGとPOSTROUTINGがあります。 これらは、パケットがルーティングされる前と後で使用されます。 PREROUTINGは主にDNAT(宛先アドレス変換、IPパケット内の宛先の変更)およびSNAT(IPアドレスの変換元IPの変更)用のPOSTROUTINGに使用されます。
  • アクション - チェーンのリンク上のドロップで何が起こるか
  • ポリシー - チェーンの最後のデフォルトのアクション - 最後のリンクを残して落ちると何が起こるか

基本的なファイアウォールの設定

以下の例は、ほとんどの場合に適しており、さらなるルールのための良い基礎を提供することができます。

  1. 私たちはいくつかの変数を設定する必要があります

echo "1"> / proc / sys / net / ipv4 / ip_forward#パケットを転送するために必要

echo "1"> / proc / sys / net / ipv4 / ip_dynaddr#マスカレードに必要(snat)

  1. フィルタテーブルに3チェーンのポリシーを設定しましょう。 また、 -tフィルタ.

iptables -P INPUT DROP

iptables -P出力受諾

iptables -P FORWARD DROP

  1. 我々はすべてを削除する ルール 存在するかもしれない これらの鎖で、またすべての ナットテーブル:

iptables -F INPUT

iptables -F OUTPUT

iptables -F FORWARD

iptables -t nat -F

  1. 以前の通信に関連するすべてのパケットは、INPUTおよびFORWARDチェーンでも有効にする必要があります。

iptables -A INPUT -mステート - 確立、関連-jアクセプト

iptables -A FORWARD -m状態 - 状態の確立、関連-j受け入れ

  1. 通常、私はpingを有効にしたいのですが、制限された速度で:

iptables -A INPUT -p icmp -m limit -limit 10 / sec -j ACCEPT

  1. ローカルループバックインターフェイスに着信するすべてのパケットを有効にしたい:

iptables -A INPUT -i lo -j ACCEPT

  1. SSH また有効にする必要があります:

iptables -A INPUT -p tcp -dport 22 -j ACCEPT

ルールを作成していないINPUT通信は有効になりませんのでご注意ください。 ルールを上に置いてスクリプトを実行するのが一番です。

いくつかの一般的なルール

次の(一連の)コマンドは、一般的なケースの例を示しています。 これらは、基本的なファイアウォールの終わりに含めることができ、より多くのコミュニケーションを可能にし、より小さな "トリック"を実行します。

DNAT aka。 ポート転送

LANのファイアウォールとして機能するVMまたはルータがある場合は、パブリックインターフェイスの一部のポートを内部ポートに転送する必要があります。
必要なときの例:

  • アクティブモードのためのパブリックポートが必要なTorrentクライアントがあります
  • LAN上にWindowsマシンがあり、インターネットからRDP(3389)ポートにアクセスしたいとします。

DNATについては、 ナットテーブル 特に PREROUTING パケットをルーティングする前にパケットを変更したいからです。 したがって、インターネットからのパケットはLANに転送されます。 また、このパッケージの入力と転送も有効にする必要があります。
高いポートをLAN IPに転送する例を見てみましょう。 ウィンドウズ ワークステーション:

iptables -A INPUT -i eth0 -p tcp -dport 45678 -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 45678 -j DNAT - 192.168.1.3:3389

iptables -A FORWARD -i eth0 -o eth1 -p tcp -dport 3389 -j ACCPET

#eth0はパブリックIPを使用したインターネットへの接続です
#eth1はLANへの接続です
#tcp45678は使用している公開上位ポートです
#192.168.1.3は IPアドレスウィンドウズ LAN上のワークステーション
#tcp3389はRDPのデフォルトポートです

マスカレード - "インターネット共有"

もう1つの最も一般的なシナリオは、インターネット接続をLAN用に共有したい場合です

次のルールの他に、ip_dynaddr変数を設定する必要があります。 (これは基本的なファイアウォールの設定を確認してください)

  1. トラフィックはLAN上のコンピュータから発信されるため、これらのパッケージの転送を有効にする必要があります。

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

#eth0はインターネットインターフェースです
#eth1はファイアウォールのLANインターフェイスです

  1. インターネット上のコンピュータはどこに返信するのかわからないので リクエスト あなたのLANコンピュータの中にプライベートIPが含まれています。 リクエスト)、私たちはLAN IPを隠す必要があります。 置き換える 私たちのファイアウォールをインターネットに向けて残しているときに、私たちの公開IPをソースとして使用します。 これは習熟している。 SNAT(ソースネットワークアドレス変換)を使用することもできますが、そのためには IPアドレス 私たちが使用したいのです。 通常は公開IPが時々変更されるため、このIP置換をMASQUERADEで動的に行う方が簡単です。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

上記の2エクステンションを持つ基本的なファイアウォールは、90%のケースに適していますまた、単純なSOHOルータには、ポート転送(対称型のみ)と「インターネット共有」
より複雑なニーズについては、iptablesのマニュアルを参照してください。オフラインで読んでみることを強くお勧めします: Gregor N. PurdyのLinux iptables Pocket Reference http://shop.oreilly.com/product/9780596005696.do

iptablesの使用に関するヒント

  • -A チェーンの最後にルールを追加します。 –I ルールの先頭にルールを挿入します。 それらを混在させない方が良いので、ファイアウォールは十分に読みやすくなります
  • 実行中のファイアウォールを iptables-save と復元する iptables-restore
  • 起動時にファイアウォールスクリプトを実行する場合
    • それには適切なヘッダーが必要な場合があります。
  • ### BEGIN INIT INFO

    #提供:ファイアウォール

    #必須 - 開始:$ local_fs $ network

    #必須 - 停止:$ local_fs

    #デフォルト - 開始:2 3 4 5

    #デフォルト - 停止:0 1 6

    #短い説明:ファイアウォール

    #説明:iptablesベースのファイアウォールサービス

    ### END INIT INFO

  • それをデフォルトのランレベルに含める
  • update-rc.d myfirewall.shのデフォルト

関連のポスト

返信を残します

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.