Linux のファイアウォールは、コンピュータ システムのセキュリティ保護に重要な役割を果たします。ファイアウォールは障壁として機能し、ネットワーク トラフィックを制御およびフィルタリングして、不正アクセス、攻撃、その他の脅威からシステムを保護します。ファイアウォールが適切に構成されていないと、サーバーはさまざまな種類のサイバー攻撃に対して脆弱になり、データのセキュリティと機密性に深刻な影響が生じる可能性があります。
この記事では、Linux ファイアウォールを構成するための 2 つの主要なツールである、firewalld と iptables について説明します。これらのツールの特徴、機能、利点を比較分析します。さらに、これらのツールの設定と使用に関する詳細な手順を提供し、Linux プラットフォームでファイアウォールを使用してシステムを保護するためのベスト プラクティスについて説明します。すべてのアクションは、 仮想サーバー rootアクセスで。
Linux でのファイアウォールの設定
Firewalld (ファイアウォール デーモン) は、Linux オペレーティング システムでファイアウォールを管理するためのプログラムです。ファイアウォール ルールの設定、ネットワーク アプリケーションの接続の許可またはブロックを行うためのユーザー インターフェイスを提供します。ほとんどのサーバー ディストリビューションでは、デフォルトでプレインストールされています。Firewalld がプレインストールされていない場合は、ディストリビューションの公式リポジトリから個別にインストールできます。
Red Hat システム (RHEL、CentOS、Fedora など) の場合、インストールは次のコマンドで実行されます。
yum install firewalld
Debian/Ubuntu の場合:
apt-get install firewalld
インストール後、次のコマンドですぐに起動してアクティブ化できます。
systemctl start firewalld
次に、スタートアップにサービスを追加する必要があります。
systemctl enable firewalld
この時点では、このツールをfirewalldやiptablesと同時に使用することは推奨されないため、ufwを無効にすることをお勧めします。ステータスを確認します。
systemctl status ufw
停止するには、次のコマンドを入力します。
systemctl stop ufw
完全に無効化するには:
ufw disable
これらのアクションを実行したら、firewalld の設定に進むことができます。
まず、信頼ゾーンを定義する必要があります。Firewalld はゾーンの概念を使用して、ネットワーク インターフェースの信頼レベルを決定します。各インターフェースには 1 つのゾーンが割り当てられ、ファイアウォール ルールはゾーンに基づいて適用されます。使用可能なすべてのゾーンのリストは、次のコマンドで開きます。
firewall-cmd --get-zones
通常、次の 4 つのメインゾーンが使用されます。
- 公共: このゾーンは、安全ではないと思われるネットワーク用です。
- プライベート: ホーム ネットワークまたはその他の信頼できるネットワーク接続に適用されます。
- インナー: 組織内や企業ネットワーク内の内部ネットワークに使用されます。
- DMZ: このゾーンには、通常、インターネットからアクセスできるサーバーが配置されます。
ただし、これは単なる一例です。次のコマンドを使用して独自のゾーンを追加できます。
firewall-cmd --permanent --new-zone=nameyourzone
追加後、リロードが必要です。
firewall-cmd --reload
ゾーンを削除するには、同様の方法を使用します
firewall-cmd --permanent --delete-zone=nameyourzone
ゾーンを定義した後、必要なサービスとポートのトラフィックを許可する必要があります。特定のサービスを許可するには、次のコマンドを使用します。
firewall-cmd --zone=public --add-service=name
場所 名 はサービスの名前です。たとえば、Apache のトラフィックを許可するには、次のようにします。
firewall-cmd --zone=public --add-service=http
許可されるポートを定義するには、次のコマンドを使用します。
firewall-cmd --zone=public --add-port=number/protocol
たとえば、SSH の標準ポート 22 は次のようになります。
firewall-cmd --zone=public --add-port=22/tcp
この段階では、主要なルールはすでに作成されています。次に、送信元、送信先、ポート、その他の基準に応じてトラフィックをどのように処理するかを決定します。ルールを追加するには( 公共 ゾーンの例):
firewall-cmd --zone=public rule
たとえば、任意のソースからポート 80 (HTTP) への着信トラフィックを許可するには、次のようにします。
firewall-cmd --zone=public --add-port=80/tcp --permanent
ルールを削除するには:
firewall-cmd --permanent --remove-rule=rule_specification
場所 ルール ルールの種類(例:ポート、サービス、リッチルールなど)であり、 ルール仕様 ルール自体の仕様です。
Firewalld の設定を変更した後は、変更内容を保存して適用する必要があります。変更を保存するには、次のコマンドを使用します。
firewall-cmd --runtime-to-permanent
変更を適用するには:
firewall-cmd --reload
セットアップが完了したら、すべてのルールのリストを開いて、選択したパラメータを確認できます。
firewall-cmd --list-all
問題が発生した場合は、次のコマンドで Firewalld ログを確認してください。
journalctl -u firewalld
注: ここでは接続を設定するための一般的なアルゴリズムについてのみ説明しました。このツールには幅広い機能があります。利用可能なすべてのオプションの詳細については、 公式ドキュメント またはヘルプを開きます:
firewall-cmd --help
Linux での iptables の設定
Firewalld とは異なり、iptables は Linux でファイアウォールを管理する古いツールですが、今でも広く使用されています。Linux カーネル レベルでのパケット フィルタリング ルールに対して、より直接的で柔軟なアプローチを提供します。ただし、iptables は Firewalld に比べて高度な知識と経験を必要とするため、初心者には使いにくいです。次のコマンドを使用して、ツールのプリインストール バージョンを確認します。
iptables -V
ツールがインストールされていない場合は、インストールする必要があります。Ubuntu、Debian にインストールするためのコマンド:
apt install iptables
Red Hat システム (例: CentOS、Fedora):
yum install iptables
インストール後のアクティベーションコマンド:
systemctl start iptables
スタートアップに追加するには、次を実行します。
systemctl enable iptables
iptables の設定を始める前に、それがどのように動作するかを理解することが重要です。これはプログラムの構文によって助けられます。構文は次のようになります。
iptables -t table action chain additional_parameters
それぞれの項目についてさらに詳しく見ていきましょう。
Iptables には 4 つの主要なテーブルがあります。 フィルター、NAT、マングル、生それぞれは特定の種類のパケットを処理するように設計されており、独自のルール チェーンを持っています。
- filter : これは最も頻繁に使用されるテーブルで、パケット フィルタリング ルールが含まれています。パケットを許可するか拒否するかを決定するために使用されます。
- NAT: このテーブルは、パケット内のネットワーク アドレスとポートを変更するために使用されます。マスカレード (NAT) の設定によく使用されます。
- マングル: このテーブルでは、パケット ヘッダーを変更できます。マーキングなどの特殊なパケット操作に使用されます。
- 生: このテーブルは、接続追跡システムを通過する前に適用されるルールを構成するために使用されます。通常、特定のアドレスからのパケットをドロップするなど、追跡システムによって変更されるべきではないルールを設定するために使用されます。
各テーブルにはチェーンのセットが含まれています。チェーンは、順番にチェックされる一連のルールです。定義済みのチェーンは 3 つあります。
- 入力(受信)このチェーン内のルールは、着信パケットをどのように処理するかを決定します。
- 出力(発信)このチェーンは、コンピュータがネットワーク上の他のデバイスまたはコンピュータに送信するすべてのパケットに適用されます。
- FORWARD(転送)このチェーンのルールは、転送されたパケットをどのように処理するかを指定します。
最後に、各チェーンには何らかのアクション(ターゲット)があります。実際には、5 つの主なアクションが使用されます。
- 同意: パケットがファイアウォールを通過できるようにします。
- DROP: パケットを拒否し、応答せずに破棄します。
- 拒否: パケットを拒否し、送信者に ICMP エラー メッセージを送信します。
- LOG: パケットをシステム ログに記録し、別のアクション (ACCEPT または DROP など) を実行します。
- リターン: 現在のチェーン内のルールのチェックを停止し、呼び出しチェーンに戻ります (該当する場合)。
セットアップを開始するには、次のコマンドで既存のルールのリストを開きます。
iptables -L
Iptables を設定するためのガイドとして、最もよく使用されるコマンドの実際の例を見てみましょう。便宜上、特定のチェーンに応じて例を 3 つのグループに分けます。
鎖 入力:
- ポート 80 で TCP プロトコル経由の着信トラフィックを許可します。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. ポート 22 で UDP プロトコル経由の着信トラフィックを許可します。
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. 特定の IP アドレスからの受信トラフィックをブロックします。
iptables -A INPUT -s 192.168.1.100 -j DROP
鎖 出力:
- ポート 443 で TCP プロトコル経由の送信トラフィックを許可します。
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. ポート 80 で UDP プロトコル経由の送信トラフィックを許可します。
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. 特定のポート(例:21)への送信トラフィックをブロックします。
iptables -A OUTPUT -p tcp --dport 21 -j DROP
鎖 FORWARD:
- 特定の範囲の IP アドレスからの転送トラフィックをブロックします。
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. 特定のネットワーク インターフェイスからのパケットの転送をブロックします。
iptables -A FORWARD -i eth1 -j DROP
3. 特定のポートの同時接続数を制限します (この例では、ポート 10 で 80 分あたり XNUMX 接続)。
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
ご覧のとおり、それぞれのケースで追加の引数 (コマンド) が使用されています。使用可能な引数の完全なリストとツールの機能の全体的なサポートを取得するには、次のように入力します。
iptables -h
設定が正しいことを確認するには、コマンドを再度入力してルールのリストを表示します。
iptables -L
特定のルールを削除するには、次のコマンドを使用します。
iptables -D chain rule_number
たとえば、INPUT チェーンからルール番号 1 を削除する場合、コマンドは次のようになります。
iptables -D INPUT 1
1 つのコマンドですべてのルールを削除するには:
iptables -F
重要な注意: iptablesルールはシステムまたはサービスの再起動後に自動的に保存されません。ルールを保存するには、設定ファイルに追加し、再起動後に復元する必要があります。 iptables-保存 の三脚と iptables-復元 ユーティリティがこれに役立ちます。ルールを保存するには、次のコマンドを入力します。
iptables-save > /etc/iptables/rules.v4
これにより、現在の iptables ルールが rules.v4 ファイルに保存されます。再起動後に復元するには、次のように入力します。
iptables-restore < /etc/iptables/rules.v4
このコマンドは、rules.v4 ファイルからルールを復元します。
結論
Linux でファイアウォールを firewalld または iptables を使用して構成することは、サーバーのセキュリティを確保する上で重要な要素です。どちらのツールも、ネットワーク トラフィックを管理し、不正アクセスやサイバー攻撃からシステムを保護する信頼性の高い手段を提供します。firewalld と iptables のどちらを選択するかは、それぞれの機能と長所の違いを考慮し、ユーザーの特定のニーズと好みに応じて決定します。