|
#!/bin/sh
#################################################################
## 環境設定
##
## iptablesのパス
IPTABLES="/sbin/iptables"
##
##
##FW_OUT="192.168.44.11"
##FW_IN="192.168.0.11"
##MAINT="192.168.0.100"
##ANY="0.0.0.0"
##
## 内部ネットワークにつながるネットワークインターフェイス
FW_IN="eth0"
##
## 外部ネットワーク(インターネット)につながるインターフェイス
## 環境に合わせてPPP,eth?などと書き換えます。
FW_OUT="eth1"
##
## 家庭内ネットワークのIPアドレス
## "ネットワークアドレス/サブネットマスク"の形式で指定
INT_NET="192.168.0.0/24"
#################################################################
## モジュールの組み込み
## カーネル構築時にnetfiler関連をモジュールにしている場合はここで組み
## 込んでください(コメントアウトしてあるので、必要に応じて行の最初に
## あるコメントマーク“#”を外します)。
# /sbin/modprobe
ip_tables
# /sbin/modprobe iptable_filter
# /sbin/modprobe iptable_nat
# /sbin/modprobe iptable_mangle
# /sbin/modprobe ip_conntrack_ftp
# /sbin/modprobe ip_nat_ftp
#################################################################
## チェーンの初期化
#
$IPTABLES -F
#
$IPTABLES -X
#################################################################
## デフォルトポリシーの定義
## INPUTチェーン(このLinuxマシンあてパケット)→破棄
## OUTPUTチェーン(このLinuxマシンから発信するパケット)→受け入れる
## FORWARDチェーン(このLinuxマシンを通って転送するパケット)→破棄
#
$IPTABLES -P INPUT DROP
#
$IPTABLES -P OUTPUT ACCEPT
#
$IPTABLES -P FORWARD DROP
#################################################################
## ローカルループバックからのパケットはすべて受け入れる
#
$IPTABLES -A INPUT -i
lo -j ACCEPT
## 内部ネットワークから内部向けインターフェイスへのパケットを受け入れる
#
$IPTABLES -A INPUT -i
$FW_IN -s $INT_NET -j
ACCEPT
#################################################################
## 外部からの接続を許さないIPアドレスを定義
## ここでは、外部ネットワーク向けのインターフェイスから入って来るべきでないパ
## ケットを破棄しています。CATVインターネットなどでは、プライベートアドレスを
## 利用しているところもありますので、その場合は必要なアドレスが破棄されないよ
## うに書き換えてください。
## 内部ネットワークのIPアドレスを騙るパケットを破棄
# $IPTABLES -A INPUT -i
$FW_OUT -s $INT_NET -j
DROP
## 発信元がループバックアドレス、プライベートアドレスのパケットを破棄
#
$IPTABLES -A INPUT -i
$FW_OUT -s 127.0.0.0/8
-j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -s 127.0.0.0/8
-j DROP
#
$IPTABLES -A INPUT -i
$FW_OUT -s 10.0.0.0/8
-j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -s 10.0.0.0/8
-j DROP
#
$IPTABLES -A INPUT -i
$FW_OUT -s 172.16.0.0/12
-j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -s 172.16.0.0/12
-j DROP
# $IPTABLES -A INPUT -i
$FW_OUT -s 192.168.0.0/16
-j DROP
# $IPTABLES -A OUTPUT
-o $FW_OUT -s 192.168.0.0/16
-j DROP
## 宛先がループバックアドレス、プライベートアドレスのパケットを破棄
#
$IPTABLES -A INPUT -i
$FW_OUT -d 127.0.0.0/8
-j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -d 127.0.0.0/8
-j DROP
#
$IPTABLES -A INPUT -i
$FW_OUT -d 10.0.0.0/8
-j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -d 10.0.0.0/8
-j DROP
#
$IPTABLES -A INPUT -i
$FW_OUT -d 172.16.0.0/12
-j DROP
# $IPTABLES -A OUTPUT
-o $FW_OUT -d 172.16.0.0/12
-j DROP
# $IPTABLES
-A INPUT -i $FW_OUT -d
192.168.0.0/16 -j DROP
# $IPTABLES -A OUTPUT
-o $FW_OUT -d 192.168.0.0/16
-j DROP
#################################################################
## Windowsネットワーク(NetBIOS
over TCP/IP)の送信パケットを破棄
#
$IPTABLES -A OUTPUT -o
$FW_OUT -p tcp --dport
137:139 -j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -p udp --dport
137:139 -j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -p tcp --dport
445 -j DROP
#
$IPTABLES -A OUTPUT -o
$FW_OUT -p udp --dport
445 -j DROP
#################################################################
## このLinuxマシンへの接続を受け入れるサービスを定義
## 外部ネットワーク向けのインターフェイスへの接続を許可するサービスを指定します
## このLinuxマシンで外部ネットワークに公開するサービスだけを書きましょう。
## ここで指定されていないポートは閉じられます。
## FTP、SSH、SMTP、DNS、WWWを公開する例
# FTP
# $IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
20 -j ACCEPT
# $IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
21 -j ACCEPT
# SSH
# $IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
22 -j ACCEPT
# SMTP
# $IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
25 -j ACCEPT
# DNS
#
$IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
53 -j ACCEPT
#
$IPTABLES -A INPUT -i
$FW_OUT -p udp --dport
53 -j ACCEPT
# WWW
#
$IPTABLES -A INPUT -i
$FW_OUT -p tcp --dport
80 -j ACCEPT
#################################################################
## ICMPのパケットは受け入れる
# $IPTABLES -A INPUT -p
icmp -j ACCEPT
# $IPTABLES -A OUTPUT
-p icmp -s $FW_OUT --icmp-type
0 -d $MAINT -j ACCEPT
# $IPTABLES -A INPUT -p
icmp -s $MAINT --icmp-type
8 -d $FW_OUT -j ACCEPT
## すでに接続されているものは受け入れる
#
$IPTABLES -A INPUT -m
state --state ESTABLISHED,RELATED
-j ACCEPT
#################################################################
## IPマスカレードの設定
## natテーブルの初期化
#
$IPTABLES -F -t nat
#
$IPTABLES -X -t nat
## 外部ネットワーク向けインターフェイスから出ていくパケットに対し、
## IPマスカレードを適用
#
$IPTABLES -t nat -A POSTROUTING
-o $FW_OUT -s $INT_NET
-j MASQUERADE
## 発信元または宛先が内部ネットワークのパケットはFORWARDを許可する
#
$IPTABLES -A FORWARD -s
$INT_NET -j ACCEPT
#
$IPTABLES -A FORWARD -d
$INT_NET -j ACCEPT
## IP転送を有効にする
#
echo 1 > /proc/sys/net/ipv4/ip_forward |