Linux女子部 iptables復習編

50 %
50 %
Information about Linux女子部 iptables復習編
Technology

Published on February 19, 2014

Author: enakai

Source: slideshare.net

Description

Linux女子部07 「firewalld&Linuxセキュリティ勉強会」で使用予定の資料です。
http://connpass.com/event/5259/

オープンクラウド・キャンパス Linux女子部 iptables復習編 Linux女子部 iptables復習編 ver1.0 中井悦司 Twitter @enakai00

Linux女子部 iptables復習編 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and 「Linux独習書の新定番」 書きました! Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」 2 Open Cloud Campus

Linux女子部 iptables復習編 Contents  iptablesの基礎  コネクショントラッキング  補足資料 3 Open Cloud Campus

Linux女子部 iptables復習編 iptablesの基礎

Linux女子部 iptables復習編 iptablesの機能  iptablesの機能は、大きくは「パケットフィルタリング」と「NAT (Network Address Translation)」に分かれます。 – パケットフィルタリングは、Linuxにファイアウォール機能を提供するもので、IPパケットの送信、 受信、転送のそれぞれについて、許可条件を設定します。 – NATは、Linuxサーバをルータとして使用する際に利用する機能で、パケットの転送時に、パケット に含まれる送信元、もしくは宛先IPアドレスを変換します。 • 正確には、DNAT(宛先アドレス変換)、SNAT(送信元アドレス変換)、マスカレード(SNAT の特別版)の3種類があります。 インターネットからの 接続パケットをフィルタリング インターネット グローバル IPアドレス XX.XX.XX.XX プライベートネットワークから インターネットにマスカレード接続 外部からの接続パケットを フィルタリング ルータ用 Linuxサーバ 192.168.100.1 192.168.100.10 192.168.100.11 プライベートネットワーク 192.168.100.0/24 iptablesの利用例 5 Open Cloud Campus

Linux女子部 iptables復習編 iptablesの設定方法  iptablesの有効化/無効化は、iptablesサービスの起動・停止で行います。 – # service iptables start : 設定ファイル「/etc/sysconfig/iptables」をアクティブ化します。 – # service iptables stop : アクティブな設定をすべて無効化します。  iptablesの設定は、設定ファイルを編集して再アクティブ化する方法と、iptablesコマンド でアクティブな設定を直接変更する方法があります。 – アクティブな設定を直接変更した場合は、別途、設定ファイルに内容を書き出しておかないと、再 起動後に変更が失われます。 iptablesの2種類の設定方法 iptablesコマンドで設定 設定ファイルを編集 設定ファイルを再アクティブ化 # service iptables restart /etc/sysconfig/iptables 6 設定ファイルに書き出し # service iptables save アクティブな設定 Open Cloud Campus

Linux女子部 iptables復習編 iptablesにおける処理の流れ  Linuxサーバを通過するパケットは、いくつかの「チェーン」を通過します。 – INPUTチェーン : 受信パケットが通過します。 – OUTPUTチェーン : 送信パケットが通過します。 – PREROUTING、FORWARD、POSTROUTINGチェーン : 転送パケットが通過します。  通常の利用法では、下図のチェーンとテーブルを覚えておけば十分です。 – filterテーブル : パケットフィルタリングの処理を定義します。 – natテーブル : NATの処理を定義します。 ネットワーク ネットワーク#2 受信パケット ネットワーク#1 転送パケット OUTPUTチェーン INPUTチェーン POSTROUTINGチェーン PREROUTINGチェーン filterテーブル filterテーブル natテーブル natテーブル 送信パケット アプリケーション プログラム 7 SNAT/ マスカレード処理 DNAT処理 FORWARDチェーン filterテーブル Open Cloud Campus

Linux女子部 iptables復習編 パケットフィルタリングの設定例  パケットフィルタリング設定の基本コマンドは次の通りです。 – デフォルトターゲットの定義 • iptables -P <チェーン> <ターゲット> ACCEPT パケットの送受信を許可 DROP パケットを破棄する パケットの拒否をICMPで通知 LOG • iptables -A <チェーン> <パケット条件> -j <ターゲット> 説明 REJECT – 指定条件にマッチするパケットに対するターゲットの定義 ターゲット パケット情報をSyslogに出力 – -Aオプションで設定した順にパケット条件の評価が行われて、最初にマッチした条件に対するター ゲットが実行されます。LOGアクション以外はそこで評価が終了します。 – どの条件にもマッチしなかった場合は、-Pオプションで指定したアクションが実行されます。 – 現在のアクティブな設定は次のコマンドで表示します。 • iptables [-t <テーブル>] [-v][-n] -L <チェーン> • -vオプションは詳細情報を表示します。-nオプションはIPアドレスやTCP/UDPポート番号を数 値で表示します。(指定しない場合は名前解決を行います。) 受信パケットに対するフィルタリング設定手順の例 # # # # # # # # 8 コネクショントラッキングの「パケットステータス」 によるフィルタリング(後述) service iptables stop iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -d 192.168.100.10 -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -j LOG -m limit --log-prefix "[INPUT Dropped] " iptables -P INPUT DROP service iptables save service iptables start Open Cloud Campus

Linux女子部 iptables復習編 NATの設定例 (1)  NATの設定は、「-t nat」オプションでnatテーブルを指定します。SNAT/マスカレードと DNATで使用するチェーンが異なります。 – SNAT/マスカレードはPOSTROUTINGチェーンを使用します。マスカレードでは、変換IPアドレスに は、ルータのNICのIPアドレスが自動的に使用されます。 • iptables -t nat -A POSTROUTING <パケット条件> -j SNAT --to-source <変換IPアドレス> • iptables -t nat -A POSTROUTING <パケット条件> -j MASQUERADE – DNATは、PREROUTIGNチェーンを使用します。 • iptables -t nat -A PREROUTING <パケット条件> -j DNAT --to-destination <変換IPアドレス>  SNAT/マスカレードの設定例 – 変換元と変換先のIPを1対1で指定して、SNAT変換を行います。 # iptables -t nat -A POSTROUTING -s 192.168.100.10 -j SNAT --to-source XX.XX.XX.10 # iptables -t nat -A POSTROUTING -s 192.168.100.11 -j SNAT --to-source XX.XX.XX.11 # iptables -t nat -A POSTROUTING -s 192.168.100.12 -j SNAT --to-source XX.XX.XX.12 – プライベートネットワーク「192.168.100.0/24」から、他のネットワークへの通信をマスカレード で変換します。 # iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE • マスカレード処理では変換先のIPアドレスは指定しません。パケットを送出するNICのIPアドレ スが自動的に選択されます。 9 Open Cloud Campus

Linux女子部 iptables復習編 NATの設定例 (2)  DNATの設定例 – 前ページのSNAT変換表と同じ変換をDNATでも行います。 # iptables -t nat -A PREROUTING -d XX.XX.XX.10 -j DNAT --to-destination 192.168.100.10 # iptables -t nat -A PREROUTING -d XX.XX.XX.11 -j DNAT --to-destination 192.168.100.11 # iptables -t nat -A PREROUTING -d XX.XX.XX.12 -j DNAT --to-destination 192.168.100.12 • SNATだけの場合、プライベートネットワークのサーバからインターネットへの接続はできます が、インターネットからプライベートネットワークのサーバへの接続はできません。前ページの SNATと合わせて、DNATを設定することで、プライベートネットワークとインターネットの双方 向通信が可能になります。 – インターネットからグローバルIPアドレス「XX.XX.XX.XX」にHTTPでアクセスすると、プライベー トネットワークのサーバ「192.168.100.10」に転送して応答を返します。 # iptables -t nat -A PREROUTING -d XX.XX.XX.XX -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10 • 宛先ポートがTCP80番のパケットだけを選択して、「192.168.100.10」のWebサーバに転送し ています。 http://XX.XX.XX.XX インターネット グローバル IPアドレス XX.XX.XX.XX HTTPアクセスのみ転送 ルータ用 Linuxサーバ 192.168.100.1 10 Webサーバ プライベートネットワーク 192.168.100.0/24 192.168.100.10 Open Cloud Campus

Linux女子部 iptables復習編 ユーザ定義チェーンの利用  デフォルトで用意されたチェーンの他に任意の名前のチェーンを追加で定義することがで きます。これを「ユーザ定義チェーン」と呼びます。 – -jオプションのターゲット名にユーザ定義チェーンを指定すると、そのパケットは該当のユーザ定 義チェーンに指定した処理が行われます。 • これは「サブルーチン」を呼び出すイメージになります。ユーザ定義チェーン内の評価にマッ チしなかったパケットは、呼び出し元のチェーンに戻って評価を継続します。 ネットワーク#2 ネットワーク#1 転送パケット – 次は、SSH接続を許可する条件を設定した 「SSH_OK」チェーンを定義して、FORWARD チェーンから呼び出す例です。 POSTROUTINGチェーン PREROUTINGチェーン natテーブル natテーブル # iptables -N SSH_OK # iptables -A SSH_OK -p tcp -p tcp -m tcp --dport 22 -j ACCEPT # iptables -A FORWARD -j SSH_OK FORWARDチェーン filterテーブル filterテーブル 11 ユーザ定義チェーン Open Cloud Campus

Linux女子部 iptables復習編 コネクショントラッキング

Linux女子部 iptables復習編 コネクショントラッキングとは?  iptablesは、コネクショントラッキング機能により、それぞれのパケットが属する「スト リーム」を判別します。 – 「ストリーム」とは、クライアント・サーバ間の特定の通信に伴うパケットの流れを表します。 – 例: • SSH接続における1つのTCPセッション • DNSサーバによる名前解決時にやりとりする一連のUDPパケット • pingコマンドにおける一連のecho request/echo replyの繰り返し  認識されているストリームは、「/proc/net/nf_conntrack」から確認できます。 – 該当ストリームに属するパケットを受信しないと、タイムアウト値が減っていき、0になるとこの ストリームの情報は削除されます。 タイムアウト 送信(受信)側パケットの情報 # cat /proc/net/nf_conntrack ipv4 2 icmp 1 23 src=192.168.122.1 dst=192.168.122.101 type=8 code=0 id=4652 src=192.168.122.101 dst=192.168.122.1 type=0 code=0 id=4652 mark=0 secctx=system_u:object_r:unlabeled_t:s0 zone=0 use=2 ipv4 2 tcp 6 431999 ESTABLISHED src=192.168.122.1 dst=192.168.122.101 sport=46866 dport=22 src=192.168.122.101 dst=192.168.122.1 sport=22 dport=46866 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 zone=0 use=2 受信(送信)側パケットの情報 13 Open Cloud Campus

Linux女子部 iptables復習編 パケットステータスによるフィルタリング  コネクショントラッキングが各パケットが属するストリームを判別する際に、そのパケッ トのステータスを割り当てます。 ステータス 説明 NEW 新しいストリームを開始するパケット ESTABLISHED 既存のストリームに属するパケット RELATED 既存のストリームに「関係する」パケット INVALID 不正なパケット(存在しないストレージに対する応答パケットなど)  iptablesの「--state」オプションでは、コネクショントラッキングで割り当てられたス テータスによって、パケットをマッチングすることができます。 – 次は、既存のストリームに属するか、関係するパケットの受信を許可します。 • # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT – この場合、サーバ側から送信したパケットの応答パケットは「ESTABLISHED」と認識されるので、 必ず受信が許可されます。 14 Open Cloud Campus

Linux女子部 iptables復習編 ヘルパーモジュールの利用  「RELATED」に分類されるパケットは、コネクショントラッキングが独自のロジックで判 別します。 – 例えば、エラー通知用のICMPパケットは、エラー発生の原因となったストリームに「関係する」パ ケットと分類されます。  追加のヘルパーモジュール(カーネルモジュール)をロードすることで、「RELATED」に 分類するロジックを追加することができます。 – 例えば、「nf_conntrack_ftp」をロードすると、FTPにおけるデータセッションをコントロール セッションに関連するものと分類します。 • 詳細は次ページを参照 – 「nf_conntrack_netbios_ns」をロードすると、NETBIOSのネームサービスによる名前解決の応答 パケットを最初の問い合わせパケットに関連するものと分類します。 • NETBIOSのネームサービスはブロードキャストで問い合わせするので、これがないと、応答パ ケットがブロードキャストに紐付けられません。 – 使用するヘルパーモジュールは、「/etc/sysconfig/iptables-config」の 「IPTABLES_MODULES=」に指定します。 15 Open Cloud Campus

Linux女子部 iptables復習編 (参考)FTPのコントロールセッションとデータセッション  FTPでは、「ls/cd」などのコマンド操作を行う「コントロールセッション」と「put/get」 などのデータ転送を行う「データセッション」について、別々のTCPセッションを使用しま す。 – データセッションは宛先ポートがランダムに決定されるので、フィルタリングの設定が困難になり ます。 – 「nf_conntrack_ftp」モジュールを使用すると、「RELATED」の条件でデータセッションのパケッ トを許可することが可能になります。 FTPサーバ FTPクライアント コントロールセッション(宛先ポート21) アクティブモード データセッション(宛先ポートランダム) FTPサーバ FTPクライアント コントロールセッション(宛先ポート21) パッシブモード データセッション(宛先ポートランダム) 16 Open Cloud Campus

Linux女子部 iptables復習編 補足資料

Linux女子部 iptables復習編 iptablesの全体像  iptablesには、全体として図のチェーンとテーブルが存在します。 – 次は、あまり使用しない特殊なテーブルです。 • mangleテーブル:TOS/TTL/SECMARKなどのメタ情報でフィルタリングする際に使用します。 • rawテーブル:このテーブルで「NOTRACK」ターゲットが適用されたパケットは、コネクショ ントラッキングの対象から外れます。 – 全てのチェーン/テーブルに対する設定内容をダンプ出力する際は、iptables-saveコマンドを使用 すると便利です。 18 (出典)プロのための Linuxシステム・ネットワーク管理技術      http://www.amazon.co.jp/dp/4774146757 Open Cloud Campus

Linux女子部 iptables復習編 リミットマッチオプションについて (1)  リミットマッチオプションを使用すると、マッチング条件にパケットをマッチさせる回数 を制限することができます。 – LOGターゲットで情報を記録する際に、大量のログ出力が発生して問題になる場合があります。こ のような時にログ出力を制限することができます。 – マッチした回数を記録するカウンタによってコントロールします。パケットがマッチすると、カウ ンタが1づつ増加していき、指定した値に達すると、それ以上はマッチしなくなります。ただし、 一定時間ごとにカウンタの値が1づつ減少します。 – limitモジュールの拡張マッチング機能のため「-m limit」オプションを指定します。   次の例で説明します。 • -m limit --limit 5/min --limit-burst 10 – カウンタの最大値が10「--limit-burst 10」で、1分間に5回(正確には12秒に1回)カウンタの値 が減少します「--limit 5/min」。その結果、条件にマッチするパケットが連続した場合、最初の10 個はすべてマッチして、その後は12秒に1個の割合でマッチします。 – 「--limit」オプションは、単位時間に何回カウンタを減少するかを指定します。「/sec」(秒)、 「/min」(分)、「/hour」(時間)、「/day」(日)が使用可能です。 19 Open Cloud Campus

Linux女子部 iptables復習編 リミットマッチオプションについて (2)  LOGターゲット以外でもリミットマッチを使用することができます。 – 次の例では、10回以上連続するpingを受けると、その後は、1時間に6回だけ(正確には10分に1回 だけ)pingに応答します。 # iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 6/hour --limit-burst 10 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP  各オプションのデフォルト値は「--limit 3/hour」および「--limit-burst 5」です。 – 「-m limit」のみを指定した場合は、それぞれのデフォルト値が適用されます。 20 Open Cloud Campus

Linux女子部 iptables復習編 SNAT/マスカレードの仕組み  下図は、SNAT/マスカレードによる送信元IPアドレス変換の例です。 – プライベートネットワークのIPアドレス「192.168.100.10」のサーバからインターネットのIPアド レス「YY.YY.YY.YY」のサーバにパケットが送信されます(①)。 – ルータ用Linuxは、送信元IPアドレスを自身のグローバルIP「XX.XX.XX.XX」に書き換えて、イン ターネットにパケットを転送します(②)。 – インターネットから返送されたパケット(③)は、宛先IPアドレスを元の「192.168.100.10」に 逆変換して、プライベートネットワークのサーバに送り返します(④)。 インターネット YY.YY.YY.YY 宛先IPアドレス  送信元IPアドレス XX.XX.XX.XX YY.YY.YY.YY ③ ② YY.YY.YY.YY XX.XX.XX.XX グローバルIPアドレス XX.XX.XX.XX ルータ用 Linuxサーバ 逆変換 変換 宛先IPアドレス  送信元IPアドレス 192.168.100.10 YY.YY.YY.YY ④ ① YY.YY.YY.YY 192.168.100.10 192.168.100.10 プライベートネットワーク 192.168.100.0/24 21 Open Cloud Campus

Linux女子部 iptables復習編 複数サーバのSNAT処理について  複数サーバのプライベートIPアドレスを共通のグローバルIPに変換する際は、逆変換の際に 変換先のプライベートIPアドレスを正しく判別する必要があります。  iptablesは、送信元IPアドレスと送信元ポート番号のペアを記憶しておき、返送パケットの 送信先ポート番号から、逆変換先のIPアドレスを決定します。 – 複数サーバが同じ送信元ポート番号を使った 場合、SNAT処理において、送信元ポート番号 も変換します。 – ただし、大量のサーバが同時にSNATを利用す ると、変換先の送信元ポート番号が不足して、 SNAT処理ができなくなる場合があります。 グローバルIPアドレス XX.XX.XX.XX インターネット SNAT記憶テーブルの例 送信元IPアドレス 送信元ポート番号 変換後の 送信元ポート番号 192.168.100.10 3021 3021 192.168.100.11 4008 4008 192.168.100.12 3021 9000 192.168.100.10 192.168.100.11 192.168.100.12 ルータ用 Linuxサーバ 192.168.100.1 プライベートネットワーク 192.168.100.0/24  SNAT対象のサーバごとに、個別のグローバルIPアドレスを割り当てて使用することも可能 です。 22 Open Cloud Campus

Linux女子部 iptables復習編 DNATの仕組み  下図は、DNATによる宛先IPアドレス変換の例です。 – インターネットのIPアドレス「YY.YY.YY.YY」のPCからルータ用LinuxサーバのグローバルIPアドレ ス「XX.XX.XX.XX」にパケットが送信されます(①)。 – ルータ用Linuxは、宛先IPアドレスをプライベートネットワークのサーバのIPアドレス 「192.168.100.10」に書き換えて、パケットを転送します(②)。 – プライベートネットワークのサーバから返送されたパケット(③)は、送信元IPアドレスを 「XX.XX.XX.XX」に逆変換して、インターネットのPCに送り返します(④)。 インターネット YY.YY.YY.YY 宛先IPアドレス  送信元IPアドレス XX.XX.XX.XX YY.YY.YY.YY ① ④ YY.YY.YY.YY XX.XX.XX.XX グローバルIPアドレス XX.XX.XX.XX ルータ用 Linuxサーバ 変換 逆変換 宛先IPアドレス  送信元IPアドレス 192.168.100.10 23 YY.YY.YY.YY ② ③ YY.YY.YY.YY 192.168.100.10 192.168.100.10 Open Cloud Campus

Linux女子部 iptables復習編 参考資料  「クラウド基盤構築」講義資料 – 第3回 IPネットワークと認証技術の基礎 – https://sites.google.com/site/cloudlecture/text  iptablesの徹底理解には、下記の書籍が最適です。 24 Open Cloud Campus

Linux女子部 iptables復習編 QA 25 Open Cloud Campus

オープンクラウド・キャンパス Linux女子部 iptables復習編 Linuxでネットワークの基礎を 学びましょう! 中井悦司 Twitter @enakai00

Add a comment

Related presentations

Related pages

Linux女子部 iptables復習編 - Technology - documents.mx

Linux女子部 iptables復習編 Jan 15, 2015 Technology etsuji-nakai
Read more

Linux女子部勉強会 - connpass

Linux女子部への入部方法について. Linux女子部 (GoogleGroup) へ参加していただくことにより、Linux女子部への入部と ...
Read more

【みんなの反応】Linux女子部 iptables復習編 - ねとなび

Linux女子部 iptables復習編. Linux女子部 iptables復習編 Presentation Transcript オープンクラウド・キャンパス Linux女子部 ...
Read more

Linux女子部07 「firewalld&Linuxセキュリティ勉強会」 - connpass

本勉強会は、企業のセミナーではありません。Linuxが好きなコミュニティ「Linux女子部 ... Linux女子部 iptables復習編.
Read more

Linux女子部 iptables復習編 : iptables(アイピーテーブルズ) - NAVER まとめ

Linux女子部 iptables復習編. http://www.slideshare.net/enakai/iptables-study-v10. Linux女子部07 「firewalld&Linuxセキュリティ勉強会 ...
Read more

新米エンジニア(アプリ・インフラエンジニア問わず)に知っておいてほしいトラブルシューティング入門 実践編 - Qiita

Linux女子部 firewalld徹底入門! Linux女子部 iptables復習編. ...
Read more

コラム - クラウド時代のオープンソース実践活用 | 第40回 「iptablesとFTP」の困った関係|CTC教育 ...

はじめに 先週は、Linux女子部の 主催 ... 筆者からは、iptablesの復習とRHEL7の ... *1 )「Linux女子部 iptables復習編 ...
Read more