SlideShare a Scribd company logo
Linux女子部 iptables復習編
ver1.1 中井悦司
Twitter @enakai00
オープンクラウド・キャンパス
Linux女子部
iptables復習編
Open Cloud Campus
2
Linux女子部 iptables復習編
自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
「Linux独習書の新定番」
書きました!
読者の声より ――
「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく 
 なっているのは不幸なことだと思う。そんな中、この本はすごくいい」
「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。
 脳みそに染みこんで来ます」
Open Cloud Campus
3
Linux女子部 iptables復習編
Contents
 iptablesの基礎
 コネクショントラッキング
 補足資料
Linux女子部 iptables復習編
iptablesの基礎
Open Cloud Campus
5
Linux女子部 iptables復習編
iptablesの機能
 iptablesの機能は、大きくは「パケットフィルタリング」と「NAT (Network Address
Translation)」に分かれます。
– パケットフィルタリングは、Linuxにファイアウォール機能を提供するもので、IPパケットの送信、
受信、転送のそれぞれについて、許可条件を設定します。
– NATは、Linuxサーバをルータとして使用する際に利用する機能で、パケットの転送時に、パケット
に含まれる送信元、もしくは宛先IPアドレスを変換します。
• 正確には、DNAT(宛先アドレス変換)、SNAT(送信元アドレス変換)、マスカレード(SNAT
の特別版)の3種類があります。
インターネット
192.168.100.10
プライベートネットワーク
192.168.100.0/24
192.168.100.1
グローバル
IPアドレス
XX.XX.XX.XX
インターネットからの
接続パケットをフィルタリング プライベートネットワークから
インターネットにマスカレード接続
ルータ用
Linuxサーバ
192.168.100.11
外部からの接続パケットを
フィルタリング
iptablesの利用例
Open Cloud Campus
6
Linux女子部 iptables復習編
iptablesの設定方法
 iptablesの有効化/無効化は、iptablesサービスの起動・停止で行います。
– # service iptables start : 設定ファイル「/etc/sysconfig/iptables」をアクティブ化します。
– # service iptables stop : アクティブな設定をすべて無効化します。
 iptablesの設定は、設定ファイルを編集して再アクティブ化する方法と、iptablesコマンド
でアクティブな設定を直接変更する方法があります。
– アクティブな設定を直接変更した場合は、別途、設定ファイルに内容を書き出しておかないと、再
起動後に変更が失われます。
iptablesコマンドで設定
アクティブな設定
設定ファイルに書き出し
# service iptables save
設定ファイルを再アクティブ化
# service iptables restart
/etc/sysconfig/iptables
設定ファイルを編集
iptablesの2種類の設定方法
Open Cloud Campus
7
Linux女子部 iptables復習編
iptablesにおける処理の流れ
 Linuxサーバを通過するパケットは、いくつかの「チェーン」を通過します。
– INPUTチェーン : 受信パケットが通過します。
– OUTPUTチェーン : 送信パケットが通過します。
– PREROUTING、FORWARD、POSTROUTINGチェーン : 転送パケットが通過します。
 通常の利用法では、下図のチェーンとテーブルを覚えておけば十分です。
– filterテーブル : パケットフィルタリングの処理を定義します。
– natテーブル : NATの処理を定義します。
ネットワーク
アプリケーション
プログラム
filterテーブルfilterテーブル
INPUTチェーンOUTPUTチェーン
ネットワーク#2
natテーブルnatテーブル
PREROUTINGチェーンPOSTROUTINGチェーン
ネットワーク#1
filterテーブル
FORWARDチェーン
DNAT処理SNAT/
マスカレード処理
受信パケット
送信パケット
転送パケット
Open Cloud Campus
8
Linux女子部 iptables復習編
パケットフィルタリングの設定例
 パケットフィルタリング設定の基本コマンドは次の通りです。
– 指定条件にマッチするパケットに対するターゲットの定義
• iptables -A <チェーン> <パケット条件> -j <ターゲット>
– デフォルトターゲットの定義
• iptables -P <チェーン> <ターゲット>
– -Aオプションで設定した順にパケット条件の評価が行われて、最初にマッチした条件に対するター
ゲットが実行されます。LOGアクション以外はそこで評価が終了します。
– どの条件にもマッチしなかった場合は、-Pオプションで指定したアクションが実行されます。
– 現在のアクティブな設定は次のコマンドで表示します。
• iptables [-t <テーブル>] [-v][-n] -L <チェーン>
• -vオプションは詳細情報を表示します。-nオプションはIPアドレスやTCP/UDPポート番号を数
値で表示します。(指定しない場合は名前解決を行います。)
ターゲット 説明
ACCEPT パケットの送受信を許可
DROP パケットを破棄する
REJECT パケットの拒否をICMPで通知
LOG パケット情報をSyslogに出力
# 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
9
Linux女子部 iptables復習編
REJECTとDROPの違い
 REJECTの場合は、接続拒否を示す「ICMP unreachable」を返すのでクライアント側は即座
にエラーになります。DROPの場合、クライアント側は応答パケットを待ち続けて、最終的
にタイムアウトします。
– クライアントに対してサーバの存在そのものを隠したい場合は、DROPを使用します。
REJECT
HTTP接続パケット
ICMP unreachable
サーバー内部
DROP
HTTP接続パケット
サーバー内部
返事が無い?
接続失敗
Open Cloud Campus
10
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変換を行います。
– プライベートネットワーク「192.168.100.0/24」から、他のネットワークへの通信をマスカレード
で変換します。
• マスカレード処理では変換先のIPアドレスは指定しません。パケットを送出するNICのIPアドレ
スが自動的に選択されます。
# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
# 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
Open Cloud Campus
11
Linux女子部 iptables復習編
NATの設定例 (2)
 DNATの設定例
– 前ページのSNAT変換表と同じ変換をDNATでも行います。
• SNATだけの場合、プライベートネットワークのサーバからインターネットへの接続はできます
が、インターネットからプライベートネットワークのサーバへの接続はできません。前ページの
SNATと合わせて、DNATを設定することで、プライベートネットワークとインターネットの双方
向通信が可能になります。
– インターネットからグローバルIPアドレス「XX.XX.XX.XX」にHTTPでアクセスすると、プライベー
トネットワークのサーバ「192.168.100.10」に転送して応答を返します。
• 宛先ポートがTCP80番のパケットだけを選択して、「192.168.100.10」のWebサーバに転送し
ています。
# iptables -t nat -A PREROUTING -d XX.XX.XX.XX -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10
# 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
インターネット
192.168.100.10
プライベートネットワーク
192.168.100.0/24
192.168.100.1
グローバル
IPアドレス
XX.XX.XX.XX ルータ用
Linuxサーバ
Webサーバ
http://XX.XX.XX.XX
HTTPアクセスのみ転送
Open Cloud Campus
12
Linux女子部 iptables復習編
ユーザ定義チェーンの利用
 デフォルトで用意されたチェーンの他に任意の名前のチェーンを追加で定義することがで
きます。これを「ユーザ定義チェーン」と呼びます。
– -jオプションのターゲット名にユーザ定義チェーンを指定すると、そのパケットは該当のユーザ定
義チェーンに指定した処理が行われます。
• これは「サブルーチン」を呼び出すイメージになります。ユーザ定義チェーン内の評価にマッ
チしなかったパケットは、呼び出し元のチェーンに戻って評価を継続します。
# iptables -N SSH_OK
# iptables -A SSH_OK -p tcp -p tcp -m tcp --dport 22 -j ACCEPT
# iptables -A FORWARD -j SSH_OK
ネットワーク#2
natテーブルnatテーブル
PREROUTINGチェーンPOSTROUTINGチェーン
ネットワーク#1
filterテーブル
FORWARDチェーン
転送パケット
filterテーブル
ユーザ定義チェーン
– 次は、SSH接続を許可する条件を設定した
「SSH_OK」チェーンを定義して、FORWARD
チェーンから呼び出す例です。
Linux女子部 iptables復習編
コネクショントラッキング
Open Cloud Campus
14
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
タイムアウト
送信(受信)側パケットの情報
受信(送信)側パケットの情報
Open Cloud Campus
15
Linux女子部 iptables復習編
パケットステータスによるフィルタリング
 コネクショントラッキングが各パケットが属するストリームを判別する際に、そのパケッ
トのステータスを割り当てます。
 iptablesの「--state」オプションでは、コネクショントラッキングで割り当てられたス
テータスによって、パケットをマッチングすることができます。
– 次は、既存のストリームに属するか、関係するパケットの受信を許可します。
• # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
– この場合、サーバ側から送信したパケットの応答パケットは「ESTABLISHED」と認識されるので、
必ず受信が許可されます。
ステータス 説明
NEW 新しいストリームを開始するパケット
ESTABLISHED 既存のストリームに属するパケット
RELATED 既存のストリームに「関係する」パケット
INVALID 不正なパケット(存在しないストレージに対する応答パケットなど)
Open Cloud Campus
16
Linux女子部 iptables復習編
ヘルパーモジュールの利用
 「RELATED」に分類されるパケットは、コネクショントラッキングが独自のロジックで判
別します。
– 例えば、エラー通知用のICMPパケットは、エラー発生の原因となったストリームに「関係する」パ
ケットと分類されます。
 追加のヘルパーモジュール(カーネルモジュール)をロードすることで、「RELATED」に
分類するロジックを追加することができます。
– 例えば、「nf_conntrack_ftp」をロードすると、FTPにおけるデータセッションをコントロール
セッションに関連するものと分類します。
• 詳細は次ページを参照
– 「nf_conntrack_netbios_ns」をロードすると、NETBIOSのネームサービスによる名前解決の応答
パケットを最初の問い合わせパケットに関連するものと分類します。
• NETBIOSのネームサービスはブロードキャストで問い合わせするので、これがないと、応答パ
ケットがブロードキャストに紐付けられません。
– 使用するヘルパーモジュールは、「/etc/sysconfig/iptables-config」の
「IPTABLES_MODULES=」に指定します。
Open Cloud Campus
17
Linux女子部 iptables復習編
(参考)FTPのコントロールセッションとデータセッション
 FTPでは、「ls/cd」などのコマンド操作を行う「コントロールセッション」と「put/get」
などのデータ転送を行う「データセッション」について、別々のTCPセッションを使用しま
す。
– データセッションは宛先ポートがランダムに決定されるので、フィルタリングの設定が困難になり
ます。
– 「nf_conntrack_ftp」モジュールを使用すると、「RELATED」の条件でデータセッションのパケッ
トを許可することが可能になります。
コントロールセッション(宛先ポート21)
データセッション(宛先ポートランダム)
FTPクライアントFTPサーバ
コントロールセッション(宛先ポート21)
データセッション(宛先ポートランダム)
FTPクライアントFTPサーバ
アクティブモード
パッシブモード
Linux女子部 iptables復習編
補足資料
Open Cloud Campus
19
Linux女子部 iptables復習編
iptablesの全体像
 iptablesには、全体として図のチェーンとテーブルが存在します。
– 次は、あまり使用しない特殊なテーブルです。
• mangleテーブル:TOS/TTL/SECMARKなどのメタ情報でフィルタリングする際に使用します。
• rawテーブル:このテーブルで「NOTRACK」ターゲットが適用されたパケットは、コネクショ
ントラッキングの対象から外れます。
– 全てのチェーン/テーブルに対する設定内容をダンプ出力する際は、iptables-saveコマンドを使用
すると便利です。
(出典)プロのための Linuxシステム・ネットワーク管理技術 
    http://www.amazon.co.jp/dp/4774146757
Open Cloud Campus
20
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」(日)が使用可能です。
Open Cloud Campus
21
Linux女子部 iptables復習編
リミットマッチオプションについて (2)
 LOGターゲット以外でもリミットマッチを使用することができます。
– 次の例では、10回以上連続するpingを受けると、その後は、1時間に6回だけ(正確には10分に1回
だけ)pingに応答します。
 各オプションのデフォルト値は「--limit 3/hour」および「--limit-burst 5」です。
– 「-m limit」のみを指定した場合は、それぞれのデフォルト値が適用されます。
# 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
Open Cloud Campus
22
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
インターネット
192.168.100.10
プライベートネットワーク
192.168.100.0/24
ルータ用
Linuxサーバ
192.168.100.10YY.YY.YY.YY
グローバルIPアドレス
XX.XX.XX.XX
①
XX.XX.XX.XXYY.YY.YY.YY②XX.XX.XX.XX YY.YY.YY.YY ③
192.168.100.10 YY.YY.YY.YY ④
宛先IPアドレス  送信元IPアドレス
宛先IPアドレス  送信元IPアドレス
変換逆変換
Open Cloud Campus
23
Linux女子部 iptables復習編
複数サーバのSNAT処理について
 複数サーバのプライベートIPアドレスを共通のグローバルIPに変換する際は、逆変換の際に
変換先のプライベートIPアドレスを正しく判別する必要があります。
 iptablesは、送信元IPアドレスと送信元ポート番号のペアを記憶しておき、返送パケットの
送信先ポート番号から、逆変換先のIPアドレスを決定します。
 SNAT対象のサーバごとに、個別のグローバルIPアドレスを割り当てて使用することも可能
です。
インターネット
192.168.100.10
プライベートネットワーク
192.168.100.0/24
192.168.100.1
グローバルIPアドレス
XX.XX.XX.XX ルータ用
Linuxサーバ
192.168.100.11 192.168.100.12
送信元IPアドレス 送信元ポート番号
変換後の
送信元ポート番号
192.168.100.10 3021 3021
192.168.100.11 4008 4008
192.168.100.12 3021 9000
SNAT記憶テーブルの例– 複数サーバが同じ送信元ポート番号を使った
場合、SNAT処理において、送信元ポート番号
も変換します。
– ただし、大量のサーバが同時にSNATを利用す
ると、変換先の送信元ポート番号が不足して、
SNAT処理ができなくなる場合があります。
Open Cloud Campus
24
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に送り返します(④)。
インターネット
192.168.100.10
ルータ用
Linuxサーバ
192.168.100.10YY.YY.YY.YY
グローバルIPアドレス
XX.XX.XX.XX
③
XX.XX.XX.XXYY.YY.YY.YY④XX.XX.XX.XX YY.YY.YY.YY ①
192.168.100.10 YY.YY.YY.YY ②
宛先IPアドレス  送信元IPアドレス
宛先IPアドレス  送信元IPアドレス
逆変換変換
YY.YY.YY.YY
Open Cloud Campus
25
Linux女子部 iptables復習編
参考資料
 「クラウド基盤構築」講義資料
– 第3回 IPネットワークと認証技術の基礎
– https://sites.google.com/site/cloudlecture/text
 iptablesの徹底理解には、下記の書籍が最適です。
Open Cloud Campus
26
Linux女子部 iptables復習編
QA
Linux女子部 iptables復習編
中井悦司
Twitter @enakai00
オープンクラウド・キャンパス
Linuxでネットワークの基礎を
学びましょう!

More Related Content

What's hot

今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
Hidenori Ishii
 

What's hot (20)

Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのかネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
 
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
 
監視 Overview
監視 Overview監視 Overview
監視 Overview
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料第9回ACRiウェビナー_セック/岩渕様ご講演資料
第9回ACRiウェビナー_セック/岩渕様ご講演資料
 

Viewers also liked

OpenStack: Inside Out
OpenStack: Inside OutOpenStack: Inside Out
OpenStack: Inside Out
Etsuji Nakai
 
Try andstudy cloud
Try andstudy cloudTry andstudy cloud
Try andstudy cloud
Etsuji Nakai
 
TUTLTを開催する真の理由
TUTLTを開催する真の理由TUTLTを開催する真の理由
TUTLTを開催する真の理由
Kento Kawakami
 
SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。
Etsuji Nakai
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
Etsuji Nakai
 
RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能
Etsuji Nakai
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
Etsuji Nakai
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方
Koiwa Hidekazu
 

Viewers also liked (20)

RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
OpenStack: Inside Out
OpenStack: Inside OutOpenStack: Inside Out
OpenStack: Inside Out
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
Dive into .git 日本語版
Dive into .git 日本語版Dive into .git 日本語版
Dive into .git 日本語版
 
2014.03.19 linux joshi_security_public
2014.03.19 linux joshi_security_public2014.03.19 linux joshi_security_public
2014.03.19 linux joshi_security_public
 
Try andstudy cloud
Try andstudy cloudTry andstudy cloud
Try andstudy cloud
 
TUTLTを開催する真の理由
TUTLTを開催する真の理由TUTLTを開催する真の理由
TUTLTを開催する真の理由
 
ケイゾク?
ケイゾク?ケイゾク?
ケイゾク?
 
CaitSith 新しいルールベースのカーネル内アクセス制御
CaitSith 新しいルールベースのカーネル内アクセス制御CaitSith 新しいルールベースのカーネル内アクセス制御
CaitSith 新しいルールベースのカーネル内アクセス制御
 
AzureでopenSUSE Leap42.1が使えるよ!
AzureでopenSUSE Leap42.1が使えるよ!AzureでopenSUSE Leap42.1が使えるよ!
AzureでopenSUSE Leap42.1が使えるよ!
 
SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。
 
Install dev stack
Install dev stackInstall dev stack
Install dev stack
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
 
RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方
 

Similar to Linux女子部 iptables復習編

OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
Etsuji Nakai
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
Etsuji Nakai
 
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Panda Yamaki
 
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
Takashi Yamanoue
 

Similar to Linux女子部 iptables復習編 (20)

OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
 
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたOpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
 
計算機理論入門08
計算機理論入門08計算機理論入門08
計算機理論入門08
 
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
Docker on Mesos with OpenVNet
Docker on Mesos with OpenVNetDocker on Mesos with OpenVNet
Docker on Mesos with OpenVNet
 
Reading NATS
Reading NATSReading NATS
Reading NATS
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
 
20060520.tcp
20060520.tcp20060520.tcp
20060520.tcp
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
 
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlow
 

More from Etsuji Nakai

TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (11)

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

Linux女子部 iptables復習編

  • 1. Linux女子部 iptables復習編 ver1.1 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス Linux女子部 iptables復習編
  • 2. Open Cloud Campus 2 Linux女子部 iptables復習編 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 「Linux独習書の新定番」 書きました! 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」
  • 3. Open Cloud Campus 3 Linux女子部 iptables復習編 Contents  iptablesの基礎  コネクショントラッキング  補足資料
  • 5. Open Cloud Campus 5 Linux女子部 iptables復習編 iptablesの機能  iptablesの機能は、大きくは「パケットフィルタリング」と「NAT (Network Address Translation)」に分かれます。 – パケットフィルタリングは、Linuxにファイアウォール機能を提供するもので、IPパケットの送信、 受信、転送のそれぞれについて、許可条件を設定します。 – NATは、Linuxサーバをルータとして使用する際に利用する機能で、パケットの転送時に、パケット に含まれる送信元、もしくは宛先IPアドレスを変換します。 • 正確には、DNAT(宛先アドレス変換)、SNAT(送信元アドレス変換)、マスカレード(SNAT の特別版)の3種類があります。 インターネット 192.168.100.10 プライベートネットワーク 192.168.100.0/24 192.168.100.1 グローバル IPアドレス XX.XX.XX.XX インターネットからの 接続パケットをフィルタリング プライベートネットワークから インターネットにマスカレード接続 ルータ用 Linuxサーバ 192.168.100.11 外部からの接続パケットを フィルタリング iptablesの利用例
  • 6. Open Cloud Campus 6 Linux女子部 iptables復習編 iptablesの設定方法  iptablesの有効化/無効化は、iptablesサービスの起動・停止で行います。 – # service iptables start : 設定ファイル「/etc/sysconfig/iptables」をアクティブ化します。 – # service iptables stop : アクティブな設定をすべて無効化します。  iptablesの設定は、設定ファイルを編集して再アクティブ化する方法と、iptablesコマンド でアクティブな設定を直接変更する方法があります。 – アクティブな設定を直接変更した場合は、別途、設定ファイルに内容を書き出しておかないと、再 起動後に変更が失われます。 iptablesコマンドで設定 アクティブな設定 設定ファイルに書き出し # service iptables save 設定ファイルを再アクティブ化 # service iptables restart /etc/sysconfig/iptables 設定ファイルを編集 iptablesの2種類の設定方法
  • 7. Open Cloud Campus 7 Linux女子部 iptables復習編 iptablesにおける処理の流れ  Linuxサーバを通過するパケットは、いくつかの「チェーン」を通過します。 – INPUTチェーン : 受信パケットが通過します。 – OUTPUTチェーン : 送信パケットが通過します。 – PREROUTING、FORWARD、POSTROUTINGチェーン : 転送パケットが通過します。  通常の利用法では、下図のチェーンとテーブルを覚えておけば十分です。 – filterテーブル : パケットフィルタリングの処理を定義します。 – natテーブル : NATの処理を定義します。 ネットワーク アプリケーション プログラム filterテーブルfilterテーブル INPUTチェーンOUTPUTチェーン ネットワーク#2 natテーブルnatテーブル PREROUTINGチェーンPOSTROUTINGチェーン ネットワーク#1 filterテーブル FORWARDチェーン DNAT処理SNAT/ マスカレード処理 受信パケット 送信パケット 転送パケット
  • 8. Open Cloud Campus 8 Linux女子部 iptables復習編 パケットフィルタリングの設定例  パケットフィルタリング設定の基本コマンドは次の通りです。 – 指定条件にマッチするパケットに対するターゲットの定義 • iptables -A <チェーン> <パケット条件> -j <ターゲット> – デフォルトターゲットの定義 • iptables -P <チェーン> <ターゲット> – -Aオプションで設定した順にパケット条件の評価が行われて、最初にマッチした条件に対するター ゲットが実行されます。LOGアクション以外はそこで評価が終了します。 – どの条件にもマッチしなかった場合は、-Pオプションで指定したアクションが実行されます。 – 現在のアクティブな設定は次のコマンドで表示します。 • iptables [-t <テーブル>] [-v][-n] -L <チェーン> • -vオプションは詳細情報を表示します。-nオプションはIPアドレスやTCP/UDPポート番号を数 値で表示します。(指定しない場合は名前解決を行います。) ターゲット 説明 ACCEPT パケットの送受信を許可 DROP パケットを破棄する REJECT パケットの拒否をICMPで通知 LOG パケット情報をSyslogに出力 # 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 受信パケットに対するフィルタリング設定手順の例 コネクショントラッキングの「パケットステータス」 によるフィルタリング(後述)
  • 9. Open Cloud Campus 9 Linux女子部 iptables復習編 REJECTとDROPの違い  REJECTの場合は、接続拒否を示す「ICMP unreachable」を返すのでクライアント側は即座 にエラーになります。DROPの場合、クライアント側は応答パケットを待ち続けて、最終的 にタイムアウトします。 – クライアントに対してサーバの存在そのものを隠したい場合は、DROPを使用します。 REJECT HTTP接続パケット ICMP unreachable サーバー内部 DROP HTTP接続パケット サーバー内部 返事が無い? 接続失敗
  • 10. Open Cloud Campus 10 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変換を行います。 – プライベートネットワーク「192.168.100.0/24」から、他のネットワークへの通信をマスカレード で変換します。 • マスカレード処理では変換先のIPアドレスは指定しません。パケットを送出するNICのIPアドレ スが自動的に選択されます。 # iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE # 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
  • 11. Open Cloud Campus 11 Linux女子部 iptables復習編 NATの設定例 (2)  DNATの設定例 – 前ページのSNAT変換表と同じ変換をDNATでも行います。 • SNATだけの場合、プライベートネットワークのサーバからインターネットへの接続はできます が、インターネットからプライベートネットワークのサーバへの接続はできません。前ページの SNATと合わせて、DNATを設定することで、プライベートネットワークとインターネットの双方 向通信が可能になります。 – インターネットからグローバルIPアドレス「XX.XX.XX.XX」にHTTPでアクセスすると、プライベー トネットワークのサーバ「192.168.100.10」に転送して応答を返します。 • 宛先ポートがTCP80番のパケットだけを選択して、「192.168.100.10」のWebサーバに転送し ています。 # iptables -t nat -A PREROUTING -d XX.XX.XX.XX -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10 # 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 インターネット 192.168.100.10 プライベートネットワーク 192.168.100.0/24 192.168.100.1 グローバル IPアドレス XX.XX.XX.XX ルータ用 Linuxサーバ Webサーバ http://XX.XX.XX.XX HTTPアクセスのみ転送
  • 12. Open Cloud Campus 12 Linux女子部 iptables復習編 ユーザ定義チェーンの利用  デフォルトで用意されたチェーンの他に任意の名前のチェーンを追加で定義することがで きます。これを「ユーザ定義チェーン」と呼びます。 – -jオプションのターゲット名にユーザ定義チェーンを指定すると、そのパケットは該当のユーザ定 義チェーンに指定した処理が行われます。 • これは「サブルーチン」を呼び出すイメージになります。ユーザ定義チェーン内の評価にマッ チしなかったパケットは、呼び出し元のチェーンに戻って評価を継続します。 # iptables -N SSH_OK # iptables -A SSH_OK -p tcp -p tcp -m tcp --dport 22 -j ACCEPT # iptables -A FORWARD -j SSH_OK ネットワーク#2 natテーブルnatテーブル PREROUTINGチェーンPOSTROUTINGチェーン ネットワーク#1 filterテーブル FORWARDチェーン 転送パケット filterテーブル ユーザ定義チェーン – 次は、SSH接続を許可する条件を設定した 「SSH_OK」チェーンを定義して、FORWARD チェーンから呼び出す例です。
  • 14. Open Cloud Campus 14 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 タイムアウト 送信(受信)側パケットの情報 受信(送信)側パケットの情報
  • 15. Open Cloud Campus 15 Linux女子部 iptables復習編 パケットステータスによるフィルタリング  コネクショントラッキングが各パケットが属するストリームを判別する際に、そのパケッ トのステータスを割り当てます。  iptablesの「--state」オプションでは、コネクショントラッキングで割り当てられたス テータスによって、パケットをマッチングすることができます。 – 次は、既存のストリームに属するか、関係するパケットの受信を許可します。 • # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT – この場合、サーバ側から送信したパケットの応答パケットは「ESTABLISHED」と認識されるので、 必ず受信が許可されます。 ステータス 説明 NEW 新しいストリームを開始するパケット ESTABLISHED 既存のストリームに属するパケット RELATED 既存のストリームに「関係する」パケット INVALID 不正なパケット(存在しないストレージに対する応答パケットなど)
  • 16. Open Cloud Campus 16 Linux女子部 iptables復習編 ヘルパーモジュールの利用  「RELATED」に分類されるパケットは、コネクショントラッキングが独自のロジックで判 別します。 – 例えば、エラー通知用のICMPパケットは、エラー発生の原因となったストリームに「関係する」パ ケットと分類されます。  追加のヘルパーモジュール(カーネルモジュール)をロードすることで、「RELATED」に 分類するロジックを追加することができます。 – 例えば、「nf_conntrack_ftp」をロードすると、FTPにおけるデータセッションをコントロール セッションに関連するものと分類します。 • 詳細は次ページを参照 – 「nf_conntrack_netbios_ns」をロードすると、NETBIOSのネームサービスによる名前解決の応答 パケットを最初の問い合わせパケットに関連するものと分類します。 • NETBIOSのネームサービスはブロードキャストで問い合わせするので、これがないと、応答パ ケットがブロードキャストに紐付けられません。 – 使用するヘルパーモジュールは、「/etc/sysconfig/iptables-config」の 「IPTABLES_MODULES=」に指定します。
  • 17. Open Cloud Campus 17 Linux女子部 iptables復習編 (参考)FTPのコントロールセッションとデータセッション  FTPでは、「ls/cd」などのコマンド操作を行う「コントロールセッション」と「put/get」 などのデータ転送を行う「データセッション」について、別々のTCPセッションを使用しま す。 – データセッションは宛先ポートがランダムに決定されるので、フィルタリングの設定が困難になり ます。 – 「nf_conntrack_ftp」モジュールを使用すると、「RELATED」の条件でデータセッションのパケッ トを許可することが可能になります。 コントロールセッション(宛先ポート21) データセッション(宛先ポートランダム) FTPクライアントFTPサーバ コントロールセッション(宛先ポート21) データセッション(宛先ポートランダム) FTPクライアントFTPサーバ アクティブモード パッシブモード
  • 19. Open Cloud Campus 19 Linux女子部 iptables復習編 iptablesの全体像  iptablesには、全体として図のチェーンとテーブルが存在します。 – 次は、あまり使用しない特殊なテーブルです。 • mangleテーブル:TOS/TTL/SECMARKなどのメタ情報でフィルタリングする際に使用します。 • rawテーブル:このテーブルで「NOTRACK」ターゲットが適用されたパケットは、コネクショ ントラッキングの対象から外れます。 – 全てのチェーン/テーブルに対する設定内容をダンプ出力する際は、iptables-saveコマンドを使用 すると便利です。 (出典)プロのための Linuxシステム・ネットワーク管理技術      http://www.amazon.co.jp/dp/4774146757
  • 20. Open Cloud Campus 20 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」(日)が使用可能です。
  • 21. Open Cloud Campus 21 Linux女子部 iptables復習編 リミットマッチオプションについて (2)  LOGターゲット以外でもリミットマッチを使用することができます。 – 次の例では、10回以上連続するpingを受けると、その後は、1時間に6回だけ(正確には10分に1回 だけ)pingに応答します。  各オプションのデフォルト値は「--limit 3/hour」および「--limit-burst 5」です。 – 「-m limit」のみを指定した場合は、それぞれのデフォルト値が適用されます。 # 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
  • 22. Open Cloud Campus 22 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 インターネット 192.168.100.10 プライベートネットワーク 192.168.100.0/24 ルータ用 Linuxサーバ 192.168.100.10YY.YY.YY.YY グローバルIPアドレス XX.XX.XX.XX ① XX.XX.XX.XXYY.YY.YY.YY②XX.XX.XX.XX YY.YY.YY.YY ③ 192.168.100.10 YY.YY.YY.YY ④ 宛先IPアドレス  送信元IPアドレス 宛先IPアドレス  送信元IPアドレス 変換逆変換
  • 23. Open Cloud Campus 23 Linux女子部 iptables復習編 複数サーバのSNAT処理について  複数サーバのプライベートIPアドレスを共通のグローバルIPに変換する際は、逆変換の際に 変換先のプライベートIPアドレスを正しく判別する必要があります。  iptablesは、送信元IPアドレスと送信元ポート番号のペアを記憶しておき、返送パケットの 送信先ポート番号から、逆変換先のIPアドレスを決定します。  SNAT対象のサーバごとに、個別のグローバルIPアドレスを割り当てて使用することも可能 です。 インターネット 192.168.100.10 プライベートネットワーク 192.168.100.0/24 192.168.100.1 グローバルIPアドレス XX.XX.XX.XX ルータ用 Linuxサーバ 192.168.100.11 192.168.100.12 送信元IPアドレス 送信元ポート番号 変換後の 送信元ポート番号 192.168.100.10 3021 3021 192.168.100.11 4008 4008 192.168.100.12 3021 9000 SNAT記憶テーブルの例– 複数サーバが同じ送信元ポート番号を使った 場合、SNAT処理において、送信元ポート番号 も変換します。 – ただし、大量のサーバが同時にSNATを利用す ると、変換先の送信元ポート番号が不足して、 SNAT処理ができなくなる場合があります。
  • 24. Open Cloud Campus 24 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に送り返します(④)。 インターネット 192.168.100.10 ルータ用 Linuxサーバ 192.168.100.10YY.YY.YY.YY グローバルIPアドレス XX.XX.XX.XX ③ XX.XX.XX.XXYY.YY.YY.YY④XX.XX.XX.XX YY.YY.YY.YY ① 192.168.100.10 YY.YY.YY.YY ② 宛先IPアドレス  送信元IPアドレス 宛先IPアドレス  送信元IPアドレス 逆変換変換 YY.YY.YY.YY
  • 25. Open Cloud Campus 25 Linux女子部 iptables復習編 参考資料  「クラウド基盤構築」講義資料 – 第3回 IPネットワークと認証技術の基礎 – https://sites.google.com/site/cloudlecture/text  iptablesの徹底理解には、下記の書籍が最適です。
  • 26. Open Cloud Campus 26 Linux女子部 iptables復習編 QA