Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

【初心者向け】Linuxのiptables入門:ファイアウォール設定の基本を徹底解説

Linuxのiptables入門:信頼されるファイアウォールの基本

この詳細なチュートリアルでは、長年にわたり実績と信頼を積み重ねてきたLinuxのファイアウォール「iptables」の使い方を、初心者にもわかりやすく解説します。

Linuxマシンは非常にセキュアなOSとして知られています。研究によれば、Linuxは設計段階からセキュリティを考慮して作られていることが示されています。しかし、Linuxに標準で搭載されている数々のセキュリティ機能も、正しく設定しなければ本来の効果を発揮できません。本記事では、マシンの安全性を高めるための重要なツールの一つである「ファイアウォール」の設定手順をご案内します。ここではLinuxのiptablesファイアウォールを使用します。Red Hat Enterprise Linux 4またはそれに類するサーバー環境を想定していますが、ほとんどの手順は他のLinuxディストリビューションでも同様に利用できます。今回は、Apache Webサーバー、FTP、SSHが稼働しているLinuxサーバーにファイアウォールを構築していきます。

各サービスが使用するポートを確認しよう

まず、これらのアプリケーションがどのポートを使用しており、そのうちどれをファイアウォールで開放する必要があるのかを確認しましょう。

Apache Webサーバーはデフォルトでポート80番を使用します。ApacheはすべてのWebコンテンツをこのポート経由で配信するため、ファイアウォール上でポート80を開放しておく必要があります。SSHサービスはポート22番で動作します。サーバーへリモート接続して作業できるようにするため、こちらも開放します。FTPはポート21番を使用しており、通信のためにポートを開けておく必要があります。

iptablesのインストール状況を確認する

次に、iptablesがインストールされていることを確認しましょう。rootユーザーで以下のコマンドを実行してください。

# rpm -qa | grep iptables

iptablesがインストールされていれば、システムはインストール済みのバージョン情報を表示します。もしインストールされていない場合は、以下のようなコマンドでインストールと起動を行ってください。

# yum install iptables

# /etc/init.d/iptables start

現在のiptablesの設定内容を確認するには、次のコマンドを実行します。

# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

このコマンドは、現時点で設定されているすべてのファイアウォールルールを一覧表示します。以降は、お使いのLinux環境のiptables設定にまだ何もルールが登録されていないものとして進めます。それでは、Webサーバー用のポート80、SSH用のポート22、FTP用のポート21での通信を許可するようファイアウォールを設定していきましょう。あわせて、指定以外のポートへの通信はすべてブロックするようにします。

ファイアウォールスクリプトを作成する

以下がファイアウォール設定用のシェルスクリプトです。新しいファイルを作成し、ファイル名をiptable-firewall.shとしてください。その後、以下のテキストをコピー&ペーストします。

#!/bin/sh

ANY="0/0"
OPEN_PORTS="21 22 80"

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# すべての個別ルールをフラッシュ(-F)する
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

for port in $OPEN_PORTS
do
iptables -A INPUT -i eth0 -p tcp -s $ANY -d $ANY --destination-port $port --syn -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -s $ANY -d $ANY --destination-port $port --syn -j ACCEPT
done

iptables -A INPUT -i eth1 -p icmp -s $ANY -d $ANY -j ACCEPT

# 関連・確立済みの接続をすべて許可する
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# その他の通信はすべて破棄する
iptables -A INPUT -i eth0 -j DROP
iptables -A INPUT -i eth1 -j DROP

# 起動時に読み込まれるよう保存する
iptables-save > /etc/sysconfig/iptables

ファイルを保存したら、実行権限を付与してから実行します。

# chmod +x iptable-firewall.sh

# ./iptable-firewall.sh

その後、ファイアウォールのルールを確認してみましょう。

# iptables --list

これですべてのファイアウォールルールが適用され、サーバーの安全が確保されました。ルールに変更や追加を行いたい場合は、スクリプト内のOPEN_PORTSパラメータが定義されている行を編集し、ポートの追加や削除を行ってください。変更後は必ずスクリプトを再実行することを忘れないようにしましょう。

もしコマンドライン操作に少し不安がある場合は、直感的なグラフィカルインターフェースを備えた「Firestarter」という使いやすいLinuxファイアウォールの設定チュートリアルも参考にしてみてください。GUI操作で簡単にファイアウォールを管理できます。

  1. Android MessagesをPCで使おう!Web版の初期設定と知って得する便利機能5選

    Googleは巨大なプラットフォームであり、世界有数の検索エンジンであることは言うまでもありません。しかし、その実力は検索だけにとどまりません。日常生活をより快適にしてくれる多彩なサービスを数多く提供しています。そんなGoogleが、Android Messagesアプリのアップデートをリリースしました。これにより、任意のWebブラウザからSMSメッセージを送受信できるようになり、AndroidユーザーはPCやMacから手軽にメッセージのやり取りが可能になりました。 利用に必要なのは、最新版にアップデートしたAndroid Messagesアプリだけ。以下では、Web版Android Mess

  2. Xen 仮想化の開始

    Zで綴られるZenは、8時間保持した後、雪の中でおしっこをしているときに頭頂部にある典型的な感覚です. Xen は X で綴られており、KVM と同様に、企業市場を対象としていますが、家庭でもビジネスでもセットアップを検討できるオープンソースの仮想化テクノロジです。 KVM に関するいくつかのチュートリアルがあり、導入記事、ストレージとネットワーク (ブリッジ ネットワークを含む) のセットアップと構成の方法、および VirtualBox との競合の解決方法をカバーしています。ここで、Xen についてもう少し学びましょう。同様に、仮想マシンをインストールして実行するために必要な最初の手順、