Linuxでセキュリティ対策を行ううえで欠かせないのが「ファイアウォール」の設定です。
その中でも、現在のファイアウォールルールを確認するために使われる基本的なコマンドが iptables -L
です。
このコマンドを使えば、システムにどのような通信ルールが設定されているかを把握できます。
本記事では、iptables -L
コマンドの基本的な使い方からオプションの活用方法、実用的な確認方法までをわかりやすく解説します。
Linux初心者の方でも理解できるように、実行例やポイントを交えて丁寧に紹介します。
iptables
は、Linuxにおけるパケットフィルタリングを実現するツールです。
ネットワーク通信に対するルールを定義し、不正アクセスのブロックや、特定のポート制限などを設定することで、システムの安全性を保つ役割を担います。
iptablesは、以下のような「チェイン(Chain)」にルールを設定することで動作します:
これらのチェインにルールを追加したり、確認したりする際に使われるのが iptables -L
コマンドです。
iptables -L
は、現在のファイアウォールルールを一覧表示するためのコマンドです。
非常に基本的なコマンドですが、正しく使いこなすことでシステムの状態を把握しやすくなります。
sudo iptables -L
このコマンドを実行すると、各チェインに設定されているルールが表示されます。
表示される内容は以下のようになります:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ここでは、「ACCEPT」「DROP」といったアクションや、対象プロトコル、ポート番号などが確認できます。
iptables -L
にもいくつかの便利なオプションがあります。
それぞれのオプションの意味を知っておくと、より詳細な確認が可能になります。
DNS名やサービス名を使わず、IPアドレスやポート番号をそのまま数値で表示します。
大量のルールがある環境では、名前解決に時間がかかるため、-n
を使うことで表示が高速になります。
sudo iptables -L -n
各ルールに対するパケット数やバイト数など、より詳しい情報を表示します。
sudo iptables -L -v
ルールごとに番号を表示するオプションです。
特定のルールを削除したり変更したりする際に便利です。
sudo iptables -L --line-numbers
複数のオプションを同時に使うこともできます。たとえば、以下のようにすれば、数値形式+詳細情報+行番号が表示されます:
bashコピーする編集するsudo iptables -L -n -v --line-numbers
特定のチェインだけを確認したい場合は、チェイン名を指定することで目的の情報だけを表示できます。
sudo iptables -L INPUT
FORWARD や OUTPUT など、他のチェインも同様に指定できます。
ここで、具体的な例を見てみましょう。
sudo iptables -L -n -v --line-numbers
出力結果:
Chain INPUT (policy DROP)
num target prot opt in out source destination
1 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 ACCEPT tcp -- * * 192.168.1.0/24 0.0.0.0/0 tcp dpt:22
3 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
読み方のポイント:
num
:ルール番号。後で削除や編集する際に使用target
:ACCEPT(許可)、DROP(拒否)などのアクションprot
:プロトコル(tcp, udp, icmp など)source
/ destination
:送信元/宛先IPアドレスdpt
:宛先ポート(この例では22=SSH)iptables -L
を使う際には、以下の点に注意しましょう。
sudo
を使わないとファイアウォールルールを確認できません。iptables
はIPv4に対応しています。IPv6のルールは ip6tables
を使って確認しましょう。nftables
という後継システムに移行が進んでおり、iptables
コマンドの使用環境によってはエミュレーションで動いている可能性もあります。ファイアウォールが原因で通信できないとき、iptables -L
を使って現在のルールを確認するのが第一歩です。
例えば、SSHが接続できない場合、INPUTチェインに tcp dpt:22
を許可するルールがあるかどうか確認しましょう。
また、意図しない DROP ルールがあれば、それが通信を妨げている原因の可能性もあります。
iptables -L
コマンドは、Linuxのファイアウォール設定を確認するための非常に基本かつ重要なツールです。
オプションを使いこなすことで、より詳しい情報を取得し、セキュリティトラブルの原因を特定する助けになります。
初めてLinuxサーバーを扱う方も、まずは iptables -L
を使って現在のルールを把握するところから始めてみましょう。
ファイアウォールの理解が深まれば、より安全で安定したサーバー運用が可能になります。