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:パケットを破棄