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

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

完全なiptablesチュートリアルをお探しですか?入れたまま。この記事では、Ubuntuシステムにiptablesをインストールして使用する方法を紹介します。このLinuxファイアウォールツールについて学ぶことで、コマンドラインインターフェイスを使用してLinuxVPSを保護できます。

Iptablesとは何ですか、どのように機能しますか?

簡単に言えば、iptablesはLinux用のファイアウォールプログラムです。 テーブルを使用してサーバーとの間のトラフィックを監視します 。これらのテーブルには、一連のルールが含まれています 、チェーンと呼ばれます 、着信および発信データパケットをフィルタリングします。

[optin-monster-shortcode id =” fv4lqeko3gylvecpszws”]

パケットの場合 ルールに一致します 、ターゲットが与えられます 、これは別のチェーンまたはこれらの特別な値の1つである可能性があります:

  • 同意する –パケットの通過を許可します。
  • ドロップ –パケットを通過させません。
  • 戻る –パケットがチェーンを通過するのを停止し、前のチェーンに戻るように指示します。

このiptablesチュートリアルでは、 filterと呼ばれるデフォルトのテーブルの1つを使用します。 。 3つのチェーンで構成されています:

  • 入力 –サーバーへの着信パケットを制御します。
  • フォワード –別の場所に転送される着信パケットをフィルタリングします。
  • 出力 –サーバーから送信されるパケットをフィルタリングします。

このガイドを開始する前に、SSH rootがあることを確認してください またはsudo Ubuntu16.04以降で実行されているマシンへのアクセス。 PuTTY(Windows)またはターミナルシェル(Linux、macOS)を介して接続を確立できます。 Hostinger VPSを所有している場合は、hPanelの[サーバー]タブでSSHログインの詳細を取得できます。

重要! iptablesルールはipv4にのみ適用されます 。 ipv6のファイアウォールを設定する場合 プロトコルの場合、 ip6tablesを使用する必要があります 代わりは。

IptablesLinuxファイアウォールをインストールして使用する方法

このiptablesチュートリアルを3つのステップに分割します。まず、Ubuntuにツールをインストールする方法を学びます。次に、ルールを定義する方法を説明します。最後に、iptablesに永続的な変更を加える方法を説明します。

ステップ1—Iptablesのインストール

Iptablesは、ほとんどのLinuxディストリビューションにプリインストールされています。ただし、デフォルトでUbuntu / Debianシステムにない場合は、以下の手順に従ってください。

  1. SSH経由でサーバーに接続します。わからない場合は、SSHチュートリアルを読むことができます。
  2. 次のコマンドを1つずつ実行します。
    sudo apt-get update
    sudo apt-get install iptables
  3. 次のコマンドを実行して、現在のiptables構成のステータスを確認します:
    sudo iptables -L -v

    ここで、 -L オプションは、すべてのルールを一覧表示するために使用され、 -v より詳細な形式で情報を表示するためのものです。以下に出力例を示します。

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in out   source destination
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in out   source destination
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in out   source destination

これで、Linuxファイアウォールがインストールされます。この時点で、すべてのチェーンが ACCEPTに設定されていることがわかります。 ルールはありません。フィルタリングせずにパケットが通過する可能性があるため、これは安全ではありません。

心配しないで。 iptablesチュートリアルの次のステップでルールを定義する方法を説明します。

ステップ2–連鎖律の定義

ルールを定義するということは、それをチェーンに追加することを意味します。これを行うには、 -Aを挿入する必要があります オプション(追加 )次のように、iptablesコマンドの直後:

sudo iptables -A

チェーンに新しいルールを追加していることをiptablesに警告します。次に、コマンドを次のような他のオプションと組み合わせることができます。

  • -i インターフェース )— eth0、lo、ppp0などのトラフィックをフィルタリングするネットワークインターフェース
  • -p プロトコル )—フィルタリングプロセスが行われるネットワークプロトコル。 tcpのいずれかです。 、 udp udplite icmp sctp icmpv6 、 等々。または、すべてと入力することもできます すべてのプロトコルを選択します。
  • -s ソース )—トラフィックの送信元のアドレス。ホスト名またはIPアドレスを追加できます。
  • –dport 宛先ポート )— 22などのプロトコルの宛先ポート番号 ( SSH )、 443 https )など
  • -j ターゲット )—ターゲット名( ACCEPT ドロップ返品 )。新しいルールを作成するたびにこれを挿入する必要があります。

それらすべてを使用する場合は、次の順序でコマンドを作成する必要があります。

sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

基本的な構文を理解したら、サーバーのセキュリティを強化するためにファイアウォールの構成を開始できます。このiptablesチュートリアルでは、 INPUTを使用します 例としてチェーン。

ローカルホストでのトラフィックの有効化

ローカルホストでのトラフィックを許可するには、次のコマンドを入力します:

sudo iptables -A INPUT -i lo -j ACCEPT

このiptablesチュートリアルでは、 loを使用します またはループバック インターフェース。ローカルホスト上のすべての通信に使用されます。上記のコマンドは、同じマシン上のデータベースとWebアプリケーション間の接続が正しく機能していることを確認します。

HTTP、SSH、およびSSLポートでの接続の有効化

次に、 http (ポート 80 )、 https (ポート 443 )、および ssh (ポート 22 )通常どおりに機能する接続。これを行うには、プロトコルを指定する必要があります( -p )および対応するポート( –dport )。これらのコマンドを1つずつ実行できます:

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

ルールがiptablesに追加されているかどうかを確認するときが来ました:

sudo iptables -L -v

以下の結果が返されるはずです。これは、指定されたポートからのすべてのTCPプロトコル接続が受け入れられることを意味します。

ソースに基づくパケットのフィルタリング

Iptablesを使用すると、IPアドレスまたはIPアドレスの範囲に基づいてパケットをフィルタリングできます。 -sの後に指定する必要があります オプション。たとえば、 192.168.1.3からのパケットを受け入れるには 、コマンドは次のようになります:

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

ACCEPT を置き換えることで、特定のIPアドレスからのパケットを拒否することもできます。 DROPでターゲットを設定する 。

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

ある範囲のIPアドレスからパケットをドロップする場合は、 -mを使用する必要があります オプションとiprange モジュール。次に、 –src-rangeを使用してIPアドレス範囲を指定します 。次のように、ハイフンでIPアドレスの範囲をスペースなしで区切る必要があることに注意してください。

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP
他のすべてのトラフィックをドロップする

DROPを使用することが重要です –dport を定義した後、他のすべてのトラフィックのターゲット ルール。これにより、不正な接続が他の開いているポートを介してサーバーにアクセスするのを防ぐことができます。これを実現するには、次のように入力します。

sudo iptables -A INPUT -j DROP

これで、指定したポートの外部の接続が切断されます。

ルールの削除

すべてのルールを削除して白紙の状態から始めたい場合は、 -Fを使用できます。 オプション(フラッシュ ):

sudo iptables -F

このコマンドは、現在のすべてのルールを消去します。ただし、特定のルールを削除するには、-Dオプションを使用する必要があります。まず、次のコマンドを入力して、使用可能なすべてのルールを確認する必要があります。

sudo iptables -L --line-numbers

番号付きのルールのリストが表示されます:

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     all -- 192.168.0.4          anywhere
2    ACCEPT     tcp -- anywhere             anywhere tcp dpt:https
3    ACCEPT     tcp -- anywhere             anywhere tcp dpt:http
4    ACCEPT     tcp -- anywhere             anywhere tcp dpt:ssh

ルールを削除するには、対応するチェーンと番号をリストから挿入します。このiptablesチュートリアルで、ルール番号3を削除したいとします。 入力の 鎖。コマンドは次のようになります:

sudo iptables -D INPUT 3
ステップ3–変更の永続化

作成したiptablesルールはメモリに保存されます。つまり、再起動時にそれらを再定義する必要があります。サーバーの再起動後にこれらの変更を永続化するには、次のコマンドを使用できます。

sudo /sbin/iptables-save

現在のルールがシステム構成ファイルに保存され、サーバーが再起動するたびにテーブルを再構成するために使用されます。

ルールを変更するたびに、このコマンドを常に実行する必要があることに注意してください。たとえば、iptablesを無効にする場合は、次の2行を実行する必要があります。

sudo iptables -F
sudo /sbin/iptables-save

次の結果が表示されます:

結論

Iptablesは、LinuxサーバーまたはVPSを保護するために使用できる強力なファイアウォールプログラムです。すばらしいのは、好みに基づいてさまざまなルールを定義できることです。

このiptablesチュートリアルでは、ツールをインストールして使用する方法を学びました。これで、一連のルールを管理して、着信パケットと発信パケットをフィルタリングできるようになります。

自分でテストして頑張ってください!


Ubuntu
  1. Ubuntu14.04でIptablesを使用したファイアウォール構成

  2. Ubuntu16.04でLXCを使用してLinuxコンテナをセットアップする

  3. Linux / Ubuntuドライバーを搭載したUSBディスプレイアダプター?

  1. Ubuntu 16.04でIptablesをFirewalldに置き換える方法は?

  2. UbuntuとCentOSでiptablesを使用してファイアウォールを設定する方法

  3. IPTABLES/Netfilterファイアウォールを使用したUbuntu/DebianベースのVPSの保護

  1. 例を含むLinuxPingコマンドチュートリアル

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

  3. Ubuntu18.04でUFWを使用してファイアウォールを設定する方法