基礎からのデバイスドライバ作成講座(第2回)

パケットフィルタ・ドライバの解説、作成と応用

CQ出版発行の組み込みエンジニアのための Embedded Unix の記事関連のダウンロード・コーナです。

株式会社デバイスドライバーズ

前回はシリアルポートという、コントローラのハードウェアと直接関わるデバイスドライバの開発について取り上げました。しかしUNIX系オペレーティング・システムにおけるドライバ開発では、直接ハードウェアの制御に関わらない、中間モジュールとしてのドライバ・モジュールを開発する場合が多いのも事実です。

本誌の第2回目では、そのような例としてLinuxにおけるTCP/IPネットワークのパケットフィルタ・ドライバの開発をテーマとして取り上げて解説、作成方法と応用を紹介しています。

なお、ここで紹介するipsimpleはパケットを扱うローダブル・モジュールのデバイスドライバ開発実験として今回開発したものです。まだ実際にどの程度正しく動作するかは検証していません。またシステムへの侵入手口も変化しつつある事と、絶対的な防御手段は存在しないという事は念頭に置いてご利用下さい。

ダウンロード・ファイル

ファイル 説明
ipfwadmとMakefileの修正Patch
ipfwadm.patch
Redhat8.0等で、ipfwadmのコンパイル・エラーを修正するためのパッチ
procfileインタフェイス・プログラム
procfile.tar.gz
procfileを使用したインタフェイス・モジュールと、パラメータ受け渡しをテストするプログラム
ipfwadmとシンプルIPフィルタ制御プログラムipsimpleのソース
ipsimple.tar.gz
ipfwadmとシンプルIPフィルタipsimple.oを制御するためのインタフェス・プログラムipsimpleのソース
入力フィルタ機能だけ動作するipfwadmとipsimple.oのモジュールのソース
netfilter.tar.gz
入力フィルタ機能だけ動作するipfwadm.oとipsimple.oのローダブル・モジュールのソースとMakefile
pakemonの修正パッチ
pakemon.c.patch
ipsimpleと組み合わせて動作させるためのpakemonの修正パッチ
ipsimple用基本ルール設定シェルipsimple-rule ipsimple初期動作時にに基本ルールを設定させるためのシェルスクリプト
pakemon用ipsimpleインタフェイス
log-exec.pl
pakemon用のipsimpleリダイレクタ・インタフェイスのPerlスクリプト(Pathの通っているディレクトリに配置する必要があります)
e-unix-vol4-netfilter.tar.gz 上記すべてをまとめたパッケージ
★参考情報:
今回紹介するipsimpleの元としている、ipfwadmの設定使用例を以下に示します。「アクセス許可型」、「アクセス制限型」の各例は、設定をテストするためのサンプルですので、実際に使用する場合には、各環境に合わせて設定を変えて使用して下さい。
アクセス許可型の設定例
#!/bin/sh
ipfwadm -I ?f # 設定のクリア
ipfwadm -I -p deny # 基本ポリシーは全て不許可にして必要なものだけ通す
ipfwadm -I -a accept -W lo0
ipfwadm -I -a accept -P tcp -D 192.168.51.114/32 -k
ipfwadm -I -a accept -P tcp -D 192.168.51.114/32 ssh
ipfwadm -I -a accept -P tcp -D 192.168.51.114/32 ftp
ipfwadm -I -a accept -P tcp -S 0.0.0.0/0 smtp -D 192.168.51.114/32
ipfwadm -I -a accept -P tcp -S 0.0.0.0/0 domain -D 192.168.51.114/32
ipfwadm -I -a accept -P udp -S 0.0.0.0/0 domain -D 192.168.51.114/32
ipfwadm -I -l
アクセス制限型の設定例
#!/bin/sh
ipfwadm -I ?f # 設定のクリア
ipfwadm -I -p accept # 基本ポリシーはすべて許可にして制限項目を記述
ipfwadm -I -a deny -P tcp -D 192.168.51.114/32 netbios-ns
ipfwadm -I -a deny -P udp -D 192.168.51.114/32 netbios-ns
ipfwadm -I -a deny -P tcp -D 192.168.51.114/32 telnet
ipfwadm -I -a deny -P tcp -D 192.168.51.114/32 ftp
ipfwadm -I -l

本文で紹介しているリンク先

サイト 説明
Netfilter / Iptables

Netfilter / iptables の開発元のページです。

様々な付加機能をNetfilterに追加する、Patch-O-Matic(POM)のダウンロードページ

pakemon / Packet Monster
(パケット・モンスター) An Open Source Intrusion Detection System (日本語)
武田圭史氏が慶応義塾大学大学院に在籍中に開発した、pakemon のページ。

pakemonのインストールに必要なファイルも、ここからたどって下さい。

netfilter/iptables FAQ(日本語) netfilter/iptablesに関する日本語のFAQ
Linux 2.4 NAT HOWTO(日本語) Linux 2.4におけるNATの使用方法解説
Linux 2.4 Packet Filtering HOWTO
(日本語)
Linux 2.4におけるPacket Filteringの解説
Firewall And Proxy Server HOWTO
(日本語)
Firewall And Proxy Serverの解説
Linux IP Masquerade HOWTO
(日本語)
IP Masqueradeの解説
Linux IPCHAINS-HOWTO
(日本語)
IPCHAINSの使用方法解説

更新日:8月11日

日高亜友(ひだか あとむ)
Hidaka, Atomu


戻る→

ホームへ戻る  株式会社デバイスドライバーズ
  TEL: 042-363-8294
  FAX: 042-363-8255