Ubuntu 14.04におけるIPTablesを使用したファイアウォール設定方法は、システムのセキュリティを確保するために非常に重要です。以下では、IPTablesを使って効果的なファイアウォールを構築する手順を詳しく説明します。
1. IPTablesの基本について理解する
IPTablesは、Linuxカーネルに組み込まれているパケットフィルタリングのツールで、ネットワークトラフィックを制御するために使用されます。これにより、ネットワークのセキュリティを強化し、許可されたトラフィックのみがシステムに到達するようにすることができます。

Ubuntu 14.04では、IPTablesはデフォルトでインストールされていますが、念のため確認してみましょう。ターミナルを開いて、以下のコマンドを実行します。
bashsudo apt-get update sudo apt-get install iptables
2. IPTablesの基本的なルール設定
IPTablesは、ルール(chain)を使ってトラフィックの流れを制御します。主なチェーンには次のものがあります:
- INPUTチェーン:システムに入るパケットを処理
- OUTPUTチェーン:システムから出るパケットを処理
- FORWARDチェーン:システムを通過するパケットを処理
ファイアウォールを構築する際には、これらのチェーンに対して適切なルールを追加していきます。
2.1 デフォルトポリシーの設定
まず、ファイアウォールのデフォルトポリシーを設定します。デフォルトポリシーは、明示的に許可されていないすべてのパケットを拒否することを意味します。
以下のコマンドを実行して、すべてのチェーンに対してデフォルトで「拒否」するように設定します。
bashsudo iptables -P INPUT DROP sudo iptables -P OUTPUT DROP sudo iptables -P FORWARD DROP
これにより、デフォルトでシステムへのすべてのアクセスが拒否されますが、必要に応じて許可ルールを後で追加します。
2.2 必要なポートの許可
次に、必要なポートへのアクセスを許可します。例えば、SSH(ポート22)やHTTP(ポート80)、HTTPS(ポート443)などのサービスを使用する場合、これらのポートを許可する必要があります。
SSHを許可するには、以下のコマンドを実行します。
bashsudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
HTTPを許可するには、以下のコマンドを実行します。
bashsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
HTTPSを許可するには、以下のコマンドを実行します。
bashsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
このようにして、必要なサービスに対するポートを許可していきます。
2.3 パケットのログ記録
IPTablesでは、特定のパケットをログに記録することができます。これにより、不正アクセスを監視することが可能になります。例えば、すべての入力トラフィックのログを記録するには、次のように設定します。
bashsudo iptables -A INPUT -j LOG --log-prefix "INPUT packet: "
このコマンドは、すべての入力パケットをログに記録し、そのログに「INPUT packet:」というプレフィックスを付けます。
3. 設定の保存
IPTablesで設定したルールは、システムを再起動すると失われてしまうため、設定を永続化する必要があります。Ubuntu 14.04では、iptables-persistent
パッケージをインストールすることで、設定を保存できます。
以下のコマンドを実行して、iptables-persistent
をインストールします。
bashsudo apt-get install iptables-persistent
インストールが完了したら、設定を保存します。以下のコマンドを実行します。
bashsudo netfilter-persistent save
これで、システム再起動後も設定が保持されるようになります。
4. ファイアウォール設定の確認
設定が正しく行われているかを確認するために、以下のコマンドを実行して現在のIPTablesルールを表示できます。
bashsudo iptables -L
このコマンドにより、現在のルールの一覧が表示されます。ルールが正しく反映されているか確認し、必要に応じて調整を行いましょう。
5. 特殊な設定(例:特定のIPからのみアクセス許可)
場合によっては、特定のIPアドレスからのみアクセスを許可したいことがあります。例えば、SSHアクセスを特定のIPアドレスからのみ許可するには、以下のコマンドを使用します。
bashsudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
これにより、192.168.1.100
というIPアドレスからのSSHアクセスのみが許可されます。
6. その他の設定(例:拒否リスト)
特定のIPアドレスやネットワークからのアクセスを完全に拒否したい場合、次のように設定します。
bashsudo iptables -A INPUT -s 192.168.1.200 -j REJECT
これにより、192.168.1.200
というIPアドレスからのすべてのトラフィックが拒否されます。
7. サービスを自動起動させる
システム起動時にIPTablesを自動的に適用するためには、iptables-persistent
を使うことに加えて、起動時にIPTablesの設定を適用するスクリプトを作成しておくと便利です。
例えば、以下のコマンドで起動時に自動的にルールを適用できるようになります。
bashsudo service netfilter-persistent start
これにより、システム再起動後もファイアウォールが適切に動作し続けます。
まとめ
IPTablesを使ったファイアウォールの設定は、Ubuntu 14.04を使用するシステムのセキュリティを強化するために重要です。基本的な設定から特殊なアクセス制限まで、さまざまな要件に応じて柔軟に対応できます。ファイアウォールの設定後は必ず設定内容を確認し、必要に応じてログ記録やアクセス制限を行うことで、システムの安全性を確保できます。また、設定を永続化させることで、システム再起動後も設定が保持されるようにしましょう。