Linux標準のファイアウォール「iptables」の仕組み

f:id:koko55120:20220215100818p:plain
iptablesについて通信を制御しているというのはなんとなくで認識していたんですが、そもそも設定になっているのかなど仕組を知って設定してます?って現場のベテランに言われて頭が白くなったので備忘録程度に残しておきます。

iptablesLinux標準のファイアウォール

f:id:koko55120:20220215101232j:plain
まず、iptablesという物自体についてです。


iptablesLinuxのkernel2.4以降に標準インストールされている、標準のファイアウォールです。


Linuxにインストールされているiptablesは「パケットフィルタリング型」のファイアウォールになります。


check

ファイアウォールには「プロキシ型」と「ファイアウォール型」の2つがある。




iptablesの設定はどのファイルを修正すれば良い?

f:id:koko55120:20220117143913j:plain
iptablesの設定を変更するには「/etc/sysconfig/iptables」を修正します。


下記のコマンドを使用して修正することもできます。

iptables [-t テーブル]  コマンド [マッチ]  [ターゲット/ジャンプ]

設定を変更したらiptablesをリロードすること

iptablesの設定を変更したら反映するためにiptablesをリロードする必要があります。

下記のコマンドで可能です。

service iptables restart

現在適用されている設定を確認するには下記のコマンドを実行します。

iptables -nL

iptablesはコマンドで修正することもあれば、ファイルを直接編集したりするので一度このコマンドで適用されている設定を確認しておきましょう。

iptablesの構成図

iptablesは下記の図のようにiptables->Tables->Chains->Rulesの構成になっています。
f:id:koko55120:20220117164912p:plain



iptablesの4つのテーブル

f:id:koko55120:20220117144111j:plain

iptablesは下記の4つのテーブルに分かれていて、制御しています。




  • filterテーブル

  • natテーブル

  • mangleテーブル

  • rawテーブル


  • それぞれのテーブルについてざっくり紹介していきます。

    filterテーブル

    filterテーブルはパケットを通過する、パケットを遮断するなどの設定を記述するセクションです。

    *filter
    ....
    ....
    COMMIT
    

    行の初めに*を付けて始まり、最後はCOMMITを指定します。

    1. 入力に対して受け付ける設定をする場合
    *filter
    :INPUT ACCEPT[0:0]
    COMMIT
    

    natテーブル

    natテーブルはNAT(ネットワーク変換機能)を担います。


    送信先/送信元のパケットの中身を書き換えるときに利用します。

    各通信をローカルのサーバへ振り分けるルーターとしての使う事も出来ます。

    *nat
    #natについて記述する
    COMMIT
    

    mangleテーブル

    パケットのIPヘッダで定義されているType Of Service(TOS)フィールドの値などを書き換えます。

    TOSフィールドはパケット処理の優先度付けを行い、通信の品質を制御するQuality of Service(QoS)に利用されます。

    *mangle
    #mangleの関係について記述する
    COMMIT
    

    rawテーブル

    RawテーブルはNOTRACKターゲットと組み合わせて、接続のトラッキングから除外した構成をするために使用されます。

    *rae
    #rawの関係について記述する
    COMMIT
    

    チェインの役割

    チェイン 役割
    PREROUTING 受信時の宛先アドレスを変換するチェイン
    INPUT 入力(受信)に対するチェイン
    OUTPUT 出力(受信)に対するチェイン
    FORWARD 転送に対するチェイン
    POSTROUTING 送信時に送信元アドレスを変換するチェイン

    テーブルごとに使えるチェイン

    filterテーブル INPUT,OUTPUT,FORWARD
    natテーブル POSTROUTING,PREROUTING,OUTPUT
    mangleテーブル POSTROUTING,PREROUTING,INPUT,OUTPUT,FORWARD
    rawテーブル PREROUTING,OUTPUT

    さいご

    最後まで読んでいただき、ありがとうございました。

    もし、記載している内容が間違えていれば遠慮なくコメントしてください!
    私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

    関連記事・オススメ記事

    www.engineer-wataru.com


    wataru55120.hatenablog.jp


    wataru55120.hatenablog.jp




    ↓オススメ書籍↓

    スッキリわかるJava入門第3版 [ 中山清喬 ]

    価格:2,860円
    (2022/1/17 17:09時点)
    感想(7件)


    JavaプログラマGold SE 8 試験番号:1Z0-809 (オラクル認定資格教科書) [ 山本道子(プログラミング) ]

    価格:4,620円
    (2022/1/17 17:10時点)
    感想(0件)


    新人エンジニアのための データベースのしくみと運用がわかる本【電子書籍】[ 五十嵐貴之 ]

    価格:2,178円
    (2022/1/17 17:11時点)
    感想(0件)