Iptables-Proxy-NAT-IDSでネットワークを保護する:パート1

この投稿では、ネットワークがどのように機能するか、そしてLinux機器をルーターに変えて、自宅でもビジネスでも、ネットワークをもう少し確保する方法について少し説明します。 それでは、ビジネスに取り掛かりましょう。

このコンテンツは、「Linux-システム管理とネットワークサービスの運用」という本に基づいています-SébastienBOBILLIER

ルーティングとフィルタリング

ルーティングについて話し、理解するために、最初にルーターの機能を定義できますか? このため、ルーターには、ネットワークを作成して他の機器との接続を許可することに加えて(AP、スイッチ、ハブなどでこれを実行できることを知っている)、XNUMXつの異なるネットワークを相互に接続する機能があると言えます。

ルータ

画像でわかるように、ルーターによって作成され、10.0.1.0つのインターフェイスのいずれかに到達するローカルネットワーク「XNUMX」があります。 次に、他のインターフェイス上のルーターには、インターネットに接続できるパブリックIPを備えた別のネットワークがあります。 ルーティング機能は、基本的に、これらXNUMXつのネットワークが通信できるようにするための仲介役として機能します。

ルーターとしてのLinux。

当然、Linuxカーネルにはすでに「転送」を実行する機能がありますが、デフォルトでは無効になっているため、Linuxにこの作業を実行させる場合は、ファイルに移動する必要があります。

/proc/sys/net/ipv4/ip_forward

ここで、それがゼロ「0」のみを含むファイルであることがわかります。この動作をアクティブにするには、ファイルを1つの「XNUMX」に変更する必要があります。 残念ながら、これはコンピュータを再起動すると削除されます。デフォルトでアクティブのままにするには、次のコマンドを使用する必要があります。

sysctl net.ipv4.ip_forward=1

または、ファイルで直接編集します /etc/sysctl.conf。 ディストリビューションによっては、この構成を次のファイルに含めることもできます。  /etc/sysctl.d/。

デフォルトでは、Linuxにはルーティングテーブルが必要です。これは通常、LANネットワークの構成とルーターへの接続です。 このルーティングを確認したい場合は、次のXNUMXつのコマンドを使用できます。

route -n

o

netstat -nr

どちらのコマンドも同じものを返す必要があります。

2014-09-30:18:23のスクリーンショット

一般に、この構成はLinuxがゲートウェイとして機能するのに十分であり、他のコンピューターはコンピューター内を移動できます。 これで、たとえばローカルかどうかに関係なく、LinuxでXNUMXつ以上のネットワークに接続する場合は、静的ルートを利用できます。

Linuxに172.26.0.0つのネットワークインターフェイスがあり、最初のインターフェイスには10.0.0.0のネットワーク接続があり、XNUMX番目のインターフェイス(XNUMX)には別のローカルネットワークのコンピューターがあるとします。 パケットを他のネットワークにルーティングする場合は、次を使用できます。

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

一般的には:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

私たちが与えるなら ルート-n このネットワークが存在するかどうかに関係なく、このルーティングはテーブルで修正されます。

2014-09-30:18:31のスクリーンショット

上記のルーティングを排除したい場合は、

route del -net 10.0.0.0 netmask 255.0.0.0

Iptables。

基本的にiptablesは、パケット、送信、受信などのフィルタリングに使用されます。これにより、ネットワークトラフィックを管理するための優れたツールになります。 ええと、iptablesは、同じコンピューターからのトラフィックをフィルタリングできるのと同じように、それを通過するトラフィックもフィルタリングできます。 (転送)。 Iptablesは、テーブル、チェーン、およびアクションに分けることができます。

  • ボード:  基本的にXNUMXつのテーブルがあります。 フィルタ、 パケットをフィルタリングし、  NAT アドレスを変換する、つまり、あるネットワークから別のネットワークに移動する。
  • CADENAS: チェーンとは、フィルタリングまたはスイムするトラフィックのタイプを指します。つまり、どのトラフィックにテーブルを適用しますか? そしてそれらはすることができます:  入力:着信トラフィック、 OUTPUT: アウトバウンドトラフィックまたは フォワード: それを通過するトラフィックですが、適切な接続ではありません。
  • それも現れるかもしれません ポストルート、 これは、ルーティングされた後、特定の方法でパケットを処理するために使用されます。
  • アクション: アクションは基本的にチェーンで実行されるアクションです。 このアクションは 落とす、 そのトラフィックを破壊するか、 受け入れる。 これにより、トラフィックはそのアクションを実行できます。

IPTABLESルールは、作成された順序で保存および実行されます。ルールが前のルールを削除した場合、その順序の最後のルールが常に適用されます。

ファイアウォールポリシー。

一般に、ファイアウォールはXNUMXつの方法で自然に機能します。

  1. またはを除くすべてのトラフィックを許可する
  2. ...以外のトラフィックを許可しないでください。

ポリシーを適用するには、 IPTABLES-Pアクションチェーン

文字列がトラフィックのタイプ(INPUT、OUTPUT、FORWARD、POSTROUTING ...)を表し、アクションがDROP ORACCEPTである場合。

例を見てみましょう。

2014-09-30:18:53のスクリーンショット

ここでは、最初にpingを実行できたことがわかります。次に、すべてのOUTPUTトラフィックがDROPであるか、許可されていないことをIPTABLESに伝えました。 それから私はIPTABLESにそれを受け入れるように言いました。

ファイアウォールを最初から構築する場合は、常に次のルールを適用する必要があります(...以外のトラフィックを許可しないでください。この場合、ルールを適用します。

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
これらのポリシーが適用される場合、それらにはいかなる種類の接続もありません
.

戻るには、同じように記述し、DROPをACCEPTに置き換えます。

この時点で、すべてのトラフィックが拒否されるため、IPTABLESにどのようなトラフィックが発生する可能性があるかを伝え始めます。

構文は次のとおりです。

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

ここで:

文字列= INPUT、OUTPUT、またはFORWARD

origin_ip =パケットの発信元。これは単一のIPまたはネットワークである可能性があり、この場合はマスクを指定する必要があります)。

destination_ip =パケットの行き先。 これは単一のIPまたはネットワークにすることができ、この場合はマスクを指定する必要があります)。

プロトコル =パケットが使用するプロトコルを示します(icmp、tcp、udp ...)

ポート= トラフィックの宛先ポート。

アクション= DROPまたはACCEPT。

例:

2014-09-30:19:26のスクリーンショット

すべての制限付きポリシーが適用されます。

2014-09-30:19:27のスクリーンショット

次に、TCPプロトコルを使用して、ポート80HTTPおよび443HTTPSを介してトラフィックを送信できるようにするルールを追加します。 次に、ポート53 DNSクライアントがドメインを解決するために適用されます。それ以外の場合は、ナビゲートできません。 これはudpプロトコルで機能します。

この線:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

これは次の理由によるものです。たとえば、HTTP要求を行う場合、サーバーのポート80に接続しますが、情報を返すサーバーは任意のポートを介して接続する必要があります。 (一般的に1024より大きい)。

すべてのポートが閉じているため、1024を超えるすべてのポートを開かない限りこれは達成されません(悪い考え)。 これは、私が自分で確立した接続からのすべての着信トラフィックが受け入れられるということです。 つまり、原則として私が始めたつながりです。

ルールにOUTPUTを入れる場合、これは問題の機器にのみ適用されます。これらの接続を許可するルーターとして機器を使用している場合は、OUTPUTをFORWARDに変更する必要があります。 トラフィックはコンピューターを通過しますが、コンピューターによって開始されないため
これらのルールはすべて再起動後に削除されるため、デフォルトで開始するようにスクリプトを作成する必要があります。 しかし、これは次の段階で見ます

この情報が気に入っていただけたでしょうか。 次は、ファイアウォールのNAT、プロキシ、スクリプトについて説明します。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ロジェリオピント

    これは、多くの起業家が独自のファイアウォールを製造するために取る基礎です。そのため、Linuxが組み込まれたファイアウォールのブランドが非常に多く、優れているものとそうでないものがあります。

  2.   ヒーバー

    優れた記事。 後半が楽しみです。

  3.   ミルトン

    非常に良い説明でした、それは私が私の仕事の代理を理解するのを助けました。 ありがとうございました

  4.   ファウストッド

    こんにちはJlcmux、

    素晴らしい、私はそれが本当に好きでした、いつ相手が利用可能になるのですか?

    ご挨拶と共有していただきありがとうございます

    1.    @jlcmax

      コメントありがとうございます。

      私は昨日他の部分を送りました、その日の間に彼らはそれを出版すると思います。

      ご挨拶。

  5.   イスラエル

    非常に良い記事の友人@Jlcmux、彼が私がしばらくの間持っていたいくつかの疑問を明らかにしたので、私は本当に彼と一緒に学びました。 2番目の部分であるsalu2sを確認します。

    1.    @jlcmax

      こんにちはイスラエルにコメントしてくれてありがとう。

      私はその本を物理的な形で持っていることがわかりました。 しかし、私はこのリンクをGoogleブックスで見つけました。 http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      完了したと思います。

  6.   アリエル

    非常に良い記事です。質問を追加します。専用のハードウェアに関して、Linuxをルーターとして使用する利点は何でしょうか。 それとも運動のためだけですか? 専用のディストリビューションがあることは知っていますが、古いPCを回収するのか、構成の柔軟性を高めるのかはわかりません。

    1.    @jlcmax

      さて、長所と短所は、これを実装しようとしているシナリオに依存すると思います。 なぜあなたはあなたの家のためにUTMまたはそのようなものを買うつもりがないのですか? そして多分それを買う余裕がない中小企業のために。 これは、このすべてのロジックを理解するのに役立ち、専用のFWallをより適切に構成できるため、演習としても役立ちます。 それに加えて、これらのデバイスのほとんどすべてが実際に組み込みLinuxを備えています。

      ご挨拶。

  7.   アリエル

    こんにちは、質問です。ネットワーク間の同様のルーティングのために、Linuxで「人工」インターフェースを生成できますか? (パケットトレーサースタイル)仮想マシンで動作しますか? たとえば、eth0がある場合(もちろんカードが1枚あるため)、ethXNUMXを作成して別のネットワークを作成できますか? とても良い家庭教師!

    1.    エラヴ

      もちろん、Linuxでは仮想インターフェイスを作成できます。 eth0がある場合は、eth0:0、eth0:1、eth0:2 ...などを使用できます。

  8.   チノロコ

    とても良い、共有してくれてありがとう