iptables を使用した Linux ファイアウォールのセットアップ

Linux サーバーまたはデスクトップに適切なファイアウォールが必要な場合は、iptables が最適な選択肢です。柔軟性が高く、高速です。このガイドでは、Linux で iptables ファイアウォールを設定する方法を説明します。

Linux への iptables のインストール

Linux システム上で iptables を使用してファイアウォールを設定するには、まずそれをインストールする必要があります。ターミナル ウィンドウを開き、Linux OS に応じて以下のインストール手順に従います。iptables は Linux デスクトップとサーバーの両方にインストールできます。iptables の汎用 Linux ダウンロードを希望する場合は、公式 Web サイトにアクセスしてください。インストールが完了したら、iptables を使用したファイアウォールのセットアップに進むことができます。

Ubuntuの説明書

sudo apt install iptables

Debian の説明書

sudo apt-get install iptables

Arch Linux の説明書

sudo pacman -S iptables

Fedora の説明書

sudo dnf iptables をインストールする

OpenSUSE の手順

iptablesのsudo sudo zypper

EPEL ディストリビューション (Rhel、CentOS、Rocky、Alma など)

sudo yum で iptables をインストール

iptables ルールセットを作成する方法

ファイアウォールとして使用する前に、新しい iptables ルールセットを作成する必要があります。ターミナル ウィンドウを開き、 sudoコマンドを入力できることを確認します。ユーザーがログインできない場合は、 suを使用して root アカウントにログインします。

ここから、iptables -Fコマンドを使用します。このコマンドは、システム上の iptables の以前のルールをすべて削除してフラッシュします。

sudo iptables -F

上記のコマンドを実行した後、iptables -Lコマンドを実行してルールが消去されたことを確認できます。

sudo iptables -L

iptables ルールがフラッシュされたことを確認したら、以下のiptables -Pコマンドを使用して、デフォルトで受信トラフィックをブロックします。

警告: SSH 経由で iptables を編集している場合は、切断して物理マシンで編集してください。以下のコマンドを実行すると、ファイアウォールの通過を許可するまで SSH から自動的に切断されます。

sudo iptables -P INPUT DROP

次に、iptables 経由でシステムからの送信トラフィックを許可する必要があります。次のiptables -Pコマンドを入力すると、iptables ファイアウォールを通過する送信トラフィックを許可できます。

sudo iptables -P 出力受け入れ

受信トラフィックを無効にし、送信トラフィックを有効にしたら、特定のサービスの許可に進みます。

iptables ファイアウォールを通過するポートを許可する方法

デフォルトでは、iptables -P INPUT DROP を実行すると、すべてのソース (SSH、HTTP など) からの受信トラフィックが無効になります。これらのサービスを有効にするには、iptables ルールに追加する必要があります。

物事を簡単にするために、iptables ファイアウォールで有効にする必要がある一般的なポートのリストを次に示します。iptables ファイアウォール経由で有効にするポートに関連付けられたコマンドをコピーします。

  • HTTP (ポート 80):sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  • HTTPS (ポート 443):sudo iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  • SSH (ポート 22):sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  • FTP (ポート 21):sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
  • SMTP (ポート 25):sudo iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
  • DNS (ポート 53): sudo iptables -A INPUT -p udp --dport 53 -j ACCEPTUDP またはsudo iptables -A INPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPTTCP用
  • DNS over TLS (DoT) (ポート 853):sudo iptables -A INPUT -p tcp --dport 853 -m state --state NEW,ESTABLISHED -j ACCEPT
  • DNS over HTTPS (DoH) (ポート 443):sudo iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  • リモート デスクトップ プロトコル (RDP) (ポート 3389):sudo iptables -A INPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT
  • 仮想ネットワーク コンピューティング (VNC) (ポート 5900):sudo iptables -A INPUT -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT
  • X11 転送を使用したセキュア シェル (SSH) (ポート 6010):sudo iptables -A INPUT -p tcp --dport 6010 -m state --state NEW,ESTABLISHED -j ACCEPT
  • MySQL データベース (ポート 3306):sudo iptables -A INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
  • PostgreSQL データベース (ポート 5432):sudo iptables -A INPUT -p tcp --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT

許可したいポートをすべて許可したら、iptables -Lを使用してルールを確認できます。

sudo iptables -L

最後に、バックアップのために iptables ルールをファイルに保存します。これは、 iptables-saveコマンドを使用して実行できます。

sudo iptables-save > /path/tosave/where/you/wish/to/save/rules/iptable-rules-backup

iptables バックアップを復元する方法

iptables ファイアウォールを別のマシンに再デプロイする必要がある場合は、次の手順を実行します。まず、iptables -Fコマンドを使用して既存のルールをフラッシュします。

sudo iptables -F

次に、バックアップ ファイルをシステムにコピーします。コピーしたら、バックアップを復元します。

sudo iptables-restore <>


UbuntuサーバーにGitLabをインストールする方法

UbuntuサーバーにGitLabをインストールする方法

GitLab を Ubuntu サーバー上で動作させたいと考えていますか? GitLab は、GitHub のようなサービスに代わる、強力な自己ホスト可能な代替サービスです。これを使用すると、次のことができます

SELinux による Ubuntu Linux サーバーの保護

SELinux による Ubuntu Linux サーバーの保護

SELinux をインストールしてアクティブ化することで、Ubuntu Linux サーバーにセキュリティを追加する方法を学びます。

Cockpit を使用して Linux サーバー上で NFS を構成する

Cockpit を使用して Linux サーバー上で NFS を構成する

Linux サーバーに NFS 共有をマウントする簡単な方法が必要ですか? Cockpit アプリを使用して NFS 共有をマウントする方法を学びます。

Ubuntu 22.04 LTS にアップグレードする方法

Ubuntu 22.04 LTS にアップグレードする方法

Ubuntu 22.04 の長期サポートが登場しました! デスクトップまたはラップトップを最新の Ubuntu リリースにアップグレードする方法を学びます。

最新の Nvidia GPU ドライバーを Linux にインストールする方法

最新の Nvidia GPU ドライバーを Linux にインストールする方法

最新の Nvidia GPU ドライバーを Linux にインストールする方法

Dockerコンテナにファイルを転送する方法

Dockerコンテナにファイルを転送する方法

ファイルを Docker コンテナに転送する必要がありますか? Docker cp ツールを使用すると、コンテナーとの間でファイルを簡単に移動できます。

Linux に DEB ファイルをインストールする方法

Linux に DEB ファイルをインストールする方法

.DEB ファイルとは何ですか? それを使って何をしますか?Linux PC に DEB ファイルをインストールするさまざまな方法を学びましょう。

GOG Galaxy を Linux 上で動作させる方法

GOG Galaxy を Linux 上で動作させる方法

GOG.com のゲームを所有していますか? ビデオ ゲームを楽しむために Linux PC に GOG Galaxy クライアントをセットアップしたいですか? このガイドに従ってください。

CentOS に Docker エンジンをインストールする方法

CentOS に Docker エンジンをインストールする方法

Docker Engine は、Linux およびその他のプラットフォーム用のオープン コンテナ化プログラムです。Docker Engine は、次のように動作する自己完結型コンテナを管理します。

Ferdi とすべてのチャットを 1 つにまとめる方法

Ferdi とすべてのチャットを 1 つにまとめる方法

Slack、Discord、その他多くの生産性向上ツールを Linux システムにインストールすることにうんざりしていませんか? それらをすべて 1 つに結合できたらいいのにと思いますか