ホームページ >運用・保守 >Linuxの運用と保守 >FirewalldまたはIptablesを使用してLinuxでファイアウォールをセットアップするにはどうすればよいですか?
firewalld
またはiptables
いずれかを使用してLinuxでファイアウォールをセットアップするには、アーキテクチャの違いによりさまざまなアプローチが含まれます。 firewalld
、ファイアウォールルールを管理するためのユーザーフレンドリーなインターフェイスを提供するダイナミックファイアウォールデーモンです。IPTABLES iptables
、カーネルのNetFilterフレームワークを直接操作するコマンドラインユーティリティです。
Firewalldの使用:
firewalld
がインストールされていることを確認してください。ほとんどの分布では、これはパッケージマネージャーを使用して行われます(たとえば、Debian/ubuntuにapt install firewalld
、 dnf install firewalld
)。systemctl start firewalld
、 systemctl enable firewalld
を使用してブートを開始できるようにします。firewalld
「ゾーン」を使用して、さまざまなネットワークコンテキスト(「パブリック」、「内部」、「DMZ」)を定義します。各ゾーンには、デフォルトのルールセットがあります。 firewall-cmd --get-active-zones
でゾーンをリストできます。 SSH(ポート22)のようなサービスをデフォルトゾーン(通常は「パブリック」)に追加するには、 firewall-cmd --permanent --add-service=ssh
を使用します。変更を永続的にするには、 --permanent
フラグを使用します。ファイアウォールをfirewall-cmd --reload
変更を適用します。firewall-cmd --permanent --add-port=80/tcp
(HTTPの場合)を使用して特定のポートを追加できます。またはfirewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
(epent for a a epransect") "192.168.1.0/24"(iptablesの使用:
iptables
は通常、ほとんどのLinux分布にデフォルトで含まれます。iptables
、チェーン(例、 INPUT
、 OUTPUT
、 FORWARD
)を使用してルールを管理します。各ルールは、ソース/宛先IPアドレス、ポート、プロトコル、およびアクション(受け入れ、ドロップ、拒否)を指定します。たとえば、ssh接続を許可するには: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
。iptables
ルールは、再起動全体で永続的ではありません。スクリプトまたはiptables-save
などのユーティリティを使用してそれらを保存し、起動時のスクリプトを使用して起動時にロードする必要があります。正確な方法は、分布によって異なります。iptables
非常に微調整された制御を提供し、さまざまな一致する基準とカスタムチェーンを備えた複雑なルールセットを可能にします。ただし、これには、ネットワーキングとiptables
構文を深く理解する必要があります。主な違いは、ファイアウォール管理へのアプローチにあります。 firewalld
、 iptables
の上に構築された、高レベルのユーザーフレンドリーなインターフェイスを提供します。一般的なファイアウォールタスクを簡素化し、ゾーン、サービス、ポートの管理を容易にします。一方、 iptables
、NetFilterフレームワークを直接的な低レベルの制御を提供し、より柔軟性を提供しますが、より技術的な専門知識が必要です。
これが重要な違いを要約するテーブルです。
特徴 | ファイアウォール | iptables |
---|---|---|
インタフェース | ユーザーフレンドリーなオプションを備えたコマンドラインツール | コマンドラインのみ、複雑な構文 |
構成 | ゾーン、サービス、ポート、豊富なルール | チェーン、特定のマッチング基準を持つルール |
持続性 | 組み込みの持続メカニズム | ブートで手動で保存して読み込む必要があります |
複雑 | 学習と使用が簡単です | より急な学習曲線、より複雑 |
柔軟性 | iPtablesよりも柔軟性が低い | 非常に柔軟で、複雑なルールが可能です |
動的更新 | 動的更新をサポートします | 手動の更新が必要です |
Firewalldの使用:
特定のポートを許可するには(ポート80のHTTPなど)。
<code class="bash">firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload</code>
特定のポートを拒否するには(ポート21のFTPなど)。
これは、 firewalld
ではそれほど簡単ではありません。これを正確に達成するには、カスタムゾーンを作成するか、リッチルールを使用する必要がある可能性があります。一般に、 firewalld
デフォルトで許可し、明示的に拒否するように設計されています。
特定のサービスを許可する(例:SSH):
<code class="bash">firewall-cmd --permanent --add-service=ssh firewall-cmd --reload</code>
iptablesの使用:
特定のポートを許可するには(ポート80のHTTPなど)。
<code class="bash">iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # If you want to allow outgoing traffic on port 80 as well. service iptables save # Save the rules (method varies by distribution)</code>
特定のポートを拒否するには(ポート21のFTPなど)。
<code class="bash">iptables -A INPUT -p tcp --dport 21 -j DROP service iptables save # Save the rules (method varies by distribution)</code>
firewalld
またはiptables
を使用するかどうかに関係なく、次のベストプラクティスに従ってください。
INPUT
チェーンに細心の注意を払ってください。これにより、着信接続が制御されます。firewalld
とiptables
両方がこれをサポートする)を利用します。制御システムに展開する前に、常に制御された環境でファイアウォールルールをテストすることを忘れないでください。誤って構成されたファイアウォールルールは、システムをアクセスできない場合があります。
以上がFirewalldまたはIptablesを使用してLinuxでファイアウォールをセットアップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。