GNU/Linux >> Linux の 問題 >  >> Ubuntu

Iptablesチュートリアル:Linuxファイアウォールの究極のガイド

はじめに

最新のオペレーティングシステムにはすべて、コンピューターへのネットワークトラフィックを規制するソフトウェアアプリケーションであるファイアウォールが装備されています。ファイアウォールは、信頼できるネットワーク(オフィスネットワークなど)と信頼できないネットワーク(インターネットなど)の間に障壁を作ります。ファイアウォールは、許可されるトラフィックとブロックされるトラフィックを管理するルールを定義することによって機能します。 Linuxシステム用に開発されたユーティリティファイアウォールはiptables

このチュートリアルでは、Linuxでiptablesをインストールし、構成し、使用する方法を学びます。

前提条件

  • sudoのユーザーアカウント 特権
  • ターミナルウィンドウ/コマンドラインへのアクセス(Ctrl-Alt-T、Ctrl-Alt-F2)

iptablesの仕組み

ネットワークトラフィックはパケットで構成されています。データは小さな断片(パケットと呼ばれる)に分割され、ネットワークを介して送信されてから、元に戻されます。 Iptablesは受信したパケットを識別し、一連のルールを使用してそれらをどう処理するかを決定します。

Iptablesは以下に基づいてパケットをフィルタリングします:

  • 表: テーブルは、同様のアクションを結合するファイルです。テーブルはいくつかのチェーンで構成されています 。
  • チェーン: チェーンはルールの文字列です 。パケットが受信されると、iptablesは適切なテーブルを見つけ、それをルールのチェーンを介して実行します 一致するものが見つかるまで。
  • ルール: ルールは、パケットをどう処理するかをシステムに指示するステートメントです。ルールは、あるタイプのパケットをブロックしたり、別のタイプのパケットを転送したりできます。パケットが送信される結果は、ターゲットと呼ばれます 。
  • ターゲット: ターゲットは、パケットをどう処理するかを決定することです。通常、これはそれを受け入れる、ドロップする、または拒否することです(これによりエラーが送信者に返されます)。

テーブルとチェーン

Linuxファイアウォールiptablesには4つのデフォルトテーブルがあります。 4つすべてを、各テーブルに含まれるチェーンとともに一覧表示します。

1.フィルター

フィルター テーブルは最も頻繁に使用されるものです。それは警備員として機能し、誰がネットワークに出入りするかを決定します。次のデフォルトチェーンがあります:

  • 入力 –このチェーンのルールは、サーバーが受信するパケットを制御します。
  • 出力 –このチェーンは、アウトバウンドトラフィックのパケットを制御します。
  • 転送 –この一連のルールは、サーバーを介してルーティングされるパケットを制御します。

2.ネットワークアドレス変換(NAT)

このテーブルには、直接アクセスできないネットワークにパケットをルーティングするためのNAT(ネットワークアドレス変換)ルールが含まれています。パケットの宛先または送信元を変更する必要がある場合は、NATテーブルが使用されます。次のチェーンが含まれます:

  • 事前ルーティング– このチェーンは、サーバーがパケットを受信するとすぐにパケットを割り当てます。
  • 出力– フィルターで説明した出力チェーンと同じように機能します テーブル。
  • ルーティング後– このチェーンのルールでは、パケットが出力チェーンを離れた後にパケットに変更を加えることができます。

3.マングル

マングル テーブルは、パケットのIPヘッダープロパティを調整します。この表には、上記で説明した次のチェーンがすべて含まれています。

  • 事前ルーティング
  • ルーティング後
  • 出力
  • 入力
  • 転送

4.生

テーブルは、接続追跡からパケットを除外するために使用されます。生のテーブルには、前述の2つのチェーンがあります。

  • 事前ルーティング
  • 出力

5.セキュリティ(オプション)

Linuxの一部のバージョンでは、セキュリティも使用されています 特別なアクセスルールを管理するためのテーブル。このテーブルには、入力、出力、が含まれます およびフォワード フィルターテーブルのようなチェーン。

ターゲット

ターゲットは、パケットがルール基準に一致した後に発生するものです。 終了しない ターゲットは、パケットがルールに一致する場合でも、チェーン内のルールに対してパケットを一致させ続けます。

終了 ターゲットの場合、パケットはすぐに評価され、別のチェーンと照合されません。 Linuxiptablesの終了ターゲットは次のとおりです。

  • 受け入れる –このルールは、iptablesファイアウォールを通過するパケットを受け入れます。
  • ドロップ –ドロップされたパッケージは、それ以降のチェーンと照合されません。 Linux iptablesがサーバーへの着信接続をドロップしても、接続しようとしている人はエラーを受け取りません。存在しないマシンに接続しようとしているように見えます。
  • 戻る –このルールは、パケットを元のチェーンに送り返すため、他のルールと照合できます。
  • 拒否 – iptablesファイアウォールはパケットを拒否し、接続しているデバイスにエラーを送信します。

Linuxファイアウォールのiptablesをインストールして構成する方法

IptablesUbuntuのインストール

Iptablesは、ほとんどのLinuxシステムにデフォルトでインストールされています。 iptablesがインストールされていることを確認するには、次のコマンドを使用します。

sudo apt-get install iptables

Ubuntuでの出力例は、最新バージョンのiptablesがすでに存在することを確認しています:

システムを再起動するときにiptablesファイアウォールルールを保持する場合は、永続パッケージをインストールします。

sudo apt-get install iptables-persistent

IptablesCentOSのインストール

CentOS7の場合 、iptablesは firewalldに置き換えられました 。

iptablesをインストールするには、最初にfirewalldを停止する必要があります。次のコマンドを入力します:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

コマンドは停止し、firewalldが起動時に開始しないようにし、他のサービスがfirewalldを開始しないようにします

次に、iptablesをインストールして有効にします。まず、次のコマンドを使用してiptablesサービスパッケージをインストールします。

sudo yum -y install iptables-services

このパッケージは、システムの再起動後もルールを保持します。以下に表示される情報は、インストールが完了したことを確認します。

次のコマンドを入力して、CentOS7でiptablesを有効にして起動します。

sudo systemctl enable iptables
sudo systemctl start iptables

statusコマンドは、アプリケーションのステータスを確認します。

sudo systemctl status iptables

iptablesコマンドとオプションの基本構文

一般に、iptablesコマンドは次のようになります。

sudo iptables [option] CHAIN_rule [-j target]

一般的なiptablesオプションのリストは次のとおりです。

  • -A --append –チェーンにルールを追加します(最後に)。
  • -C --check –チェーンの要件に一致するルールを探します。
  • -D --delete –指定されたルールをチェーンから削除します。
  • -F --flush –すべてのルールを削除します。
  • -I --insert –チェーンの特定の位置にルールを追加します。
  • -L --list –チェーン内のすべてのルールを表示します。
  • -N -new-chain –新しいチェーンを作成します。
  • -v --verbose –リストオプションを使用するときに詳細情報を表示します。
  • -X --delete-chain –提供されたチェーンを削除します。

Iptablesでは大文字と小文字が区別されるため、正しいオプションを使用していることを確認してください。

Linuxでiptablesを構成する

デフォルトでは、これらのコマンドはフィルターに影響します テーブル。別のテーブルを指定する必要がある場合は、 –tを使用してください オプションの後にテーブルの名前が続きます。

現在のiptablesステータスを確認する

サーバー上の現在のルールセットを表示するには、ターミナルウィンドウに次のように入力します。

sudo iptables -L

チェーンのステータスが表示されます。出力には3つのチェーンがリストされます:

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

ループバックトラフィックを有効にする

自分のシステム(ローカルホスト)からのトラフィックを許可しても安全です。 入力を追加します 次のように入力してチェーンします:

sudo iptables -A INPUT -i lo -j ACCEPT

このコマンドは、ローカルホスト( lo )のトラフィックを受け入れるようにファイアウォールを構成します )インターフェース( -i これで、システムから発信されたものはすべてファイアウォールを通過します。アプリケーションがローカルホストインターフェイスと通信できるようにするには、このルールを設定する必要があります。

特定のポートでのトラフィックを許可する

これらのルールは、さまざまなポートでのトラフィックを許可します 以下のコマンドを使用して指定します。ポートは、特定のタイプのデータ用に指定された通信エンドポイントです。

HTTP Webトラフィックを許可するには、次のコマンドを入力します。

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

着信SSH(Secure Shell)トラフィックのみを許可するには、次のように入力します。

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

HTTPSインターネットトラフィックを許可するには、次のコマンドを入力します。

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

オプションは次のように機能します:

  • -p –指定されたプロトコルを確認します( tcp
  • -dport –宛先ポートを指定します。
  • -jジャンプ –指定されたアクションを実行します。

IPアドレスによるトラフィックの制御

次のコマンドを使用して、特定のIPアドレスからのトラフィックを受け入れます。

sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT

コマンドのIPアドレスを許可するIPアドレスに置き換えます。

IPアドレスからトラフィックをドロップすることもできます:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

ある範囲のIPアドレスからのトラフィックを拒否できますが、コマンドはより複雑です:

sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT

例で使用したiptablesオプションは次のように機能します。

  • -m –指定されたオプションに一致します。
  • -iprange –単一のIPアドレスではなく、ある範囲のIPアドレスを期待するようにシステムに指示します。
  • -src-range –IPアドレスの範囲を識別します。

不要なトラフィックのドロップ

dportを定義する場合 iptablesファイアウォールルールでは、他のポートを経由するトラフィックをドロップして、不正アクセスを防ぐ必要があります:

sudo iptables -A INPUT -j DROP

-A オプションは、チェーンに新しいルールを追加します。定義したポート以外のポートを介して接続が確立された場合、その接続は切断されます。

ルールを削除する

-Fを使用できます すべてのiptablesファイアウォールルールをクリアするオプション。より正確な方法は、ルールの行番号を削除することです。

まず、次のように入力して、すべてのルールを一覧表示します。

sudo iptables -L --line-numbers

削除するファイアウォールルールの行を見つけて、次のコマンドを実行します。

sudo iptables -D INPUT <Number>

<番号を置き換えます> 削除する実際のルール行番号を使用します。

変更を保存

Iptablesは、システムの再起動時に作成したルールを保持しません。 Linuxでiptablesを構成する場合は常に、行ったすべての変更は最初の再起動までのみ適用されます。

Debianベースのシステムにルールを保存するには、次のように入力します。

sudo /sbin/iptables–save

Red-Hatベースのシステムでルールを保存するには、次のように入力します。

sudo /sbin/service iptables save

次回システムが起動すると、iptablesはファイアウォールルールを自動的にリロードします。


Ubuntu
  1. Linuxファイアウォール

  2. Linux – Iptablesを介したルーティング?

  3. Linux IPTables:ファイアウォール ルールを追加する方法 (Allow SSH の例を使用)

  1. Jenkins環境変数:究極のガイド

  2. Linux IPTables ファイアウォールでドロップされたパケットをログ ファイルに記録する方法

  3. Linux OS サービス「iptables」

  1. Iptablesチュートリアル–LinuxファイアウォールでUbuntuVPSを保護する

  2. Linuxでiptablesファイアウォールを構成する方法

  3. Linuxシステムでファイルを作成する方法:究極のガイド