Open1
パケットフィルタリング

パケットフィルタリングとは
パケットとは、インターネット上でやり取りされる「データの小包」のようなものです。
例えば、あなたがウェブサイトを見るとき、そのデータは小さな「パケット」に分割されて送られてきます。
各パケットには以下の情報が含まれています:
- 送信元IPアドレス(どこから来たか)
- 送信先IPアドレス(どこへ行くか)
- ポート番号(どのサービス用か)
- データの内容
パケットフィルタリングとは、この「パケット」を検査して、「通すか・通さないか」を判断する仕組みです。
例:
「外部から来るHTTP通信(80番ポート)は通す」
「SSH通信(22番ポート)は特定のIPアドレスからのみ通す」
「その他の通信は全て拒否」
iptablesコマンド
iptablesは、Linuxでパケットフィルタリングを設定するためのコマンドです。
実際には「netfilter」というLinuxカーネルの機能を操作するためのツールです。
iptablesの基本的な考え方
iptablesは「テーブル」→「チェイン」→「ルール」という階層構造になっています。
1. テーブル(table)
- filter:パケットの通過を制御
- nat:ネットワークアドレス変換
- mangle:パケットの改変
2. チェイン(chain)
filterテーブルには3つの主要なチェインがあります
- INPUT:サーバーに入ってくるパケット
- OUTPUT:サーバーから出ていくパケット
- FORWARD:サーバーを経由するパケット
3. ルール(rule)
各チェインに設定する具体的な条件と動作
基本的なiptablesコマンドの例
# 現在の設定を確認
iptables -L
# HTTP通信(80番ポート)を許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# SSH通信を特定IPからのみ許可
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# その他全て拒否
iptables -A INPUT -j DROP
コマンドの意味:
-
-A INPUT
:INPUTチェインにルールを追加 -
-p tcp
:TCPプロトコル -
--dport 80
:宛先ポート80番 -
-s 192.168.1.100
:送信元IP指定 -
-j ACCEPT
:パケットを通す -
-j DROP
:パケットを破棄