#!/bin/sh
### IPアドレス、ネットワークアドレスの定義 ###
# サーバ機のアドレス #
MYHOST='192.168.1.100'
# 家庭内のアドレス(192.168.0.0/24と1.0/24を合わせて指定)#
HOME='192.168.0.0/23'
# NTPサーバのアドレス #
# NTP1: xxx.xxx.xxx.xxx -- プロバイダ
# NTP2: 210.173.160.57 --- MFEED(ntp2.jst.mfeed.ad.jp)
NTP1='xxx.xxx.xxx.xxx'
NTP2='210.173.160.57'
# ip_conntrack_ftpのロード #
modprobe ip_conntrack_ftp
### iptablesのコマンドパスの定義 ###
IPTABLES='/usr/sbin/iptables'
### IPフォワードの停止 ###
echo 0 > /proc/sys/net/ipv4/ip_forward
### iptablesのチェーンの初期化 ###
$IPTABLES -F
### 暗黙のdeny(デフォルトで拒否)とするルールの設定 ###
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
### ループバックアドレスに関するアクセスを全て許可 ###
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
### 家庭内からのDNS問い合わせを許可 ###
$IPTABLES -A INPUT -p udp -s $HOME --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -d $HOME --sport 53 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 53 -j ACCEPT
### DNSサーバからの外部DNS問い合わせを許可 ###
$IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
### 家庭内からのNTP問い合わせを許可 ###
$IPTABLES -A INPUT -p udp -s $HOME --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -o $HOME --sport 123 -j ACCEPT
### NTPサーバからの外部NTP問い合わせを許可 ###
$IPTABLES -A OUTPUT -d $NTP1 -p udp --dport 123 -j ACCEPT
$IPTABLES -A INPUT -s $NTP1 -p udp --sport 123 -j ACCEPT
$IPTABLES -A OUTPUT -d $NTP2 -p udp --dport 123 --sport 123 -j ACCEPT
$IPTABLES -A INPUT -s $NTP2 -p udp --dport 123 --sport 123 -j ACCEPT
### 家庭内でのファイル共有(NetBIOS)を許可 ###
$IPTABLES -A INPUT -p udp -s $HOME --dport 137:138 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -d $HOME --sport 137:138 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 139 -j ACCEPT
### 家庭内からのSWAT(SWAT:901)アクセスを許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 901 -j ACCEPT
### 家庭内からのProxyアクセス(PROXY:8080)を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 8080 -j ACCEPT
### 家庭内でのSSH(22)の使用を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW -d $HOME --dport 22 -j ACCEPT
### WWWサーバへのアクセス(HTTP:80,HTTPS:443)を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT
### 外部WWWサーバへのアクセス(HTTP:80,HTTPS:443)を許可 ###
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT
### FTPサーバへのアクセス(Active/Passive)を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 4000:4029 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT
### 外部FTPサーバへのアクセス(Active/Passive)を許可 ###
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT
### メールサーバへのアクセス(SMTP:25/465)を許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 465 -j ACCEPT
### 外部メールサーバへのアクセス(SMTP:25,POP3:110)を許可 ###
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 25 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 110 -j ACCEPT
### メールサーバへのアクセス(POP3:110/995,IMAP:143/993)を許可 ###
### 非SSL系は家庭内のみ許可 ###
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 110 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW -s $HOME --dport 143 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 993 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 995 -j ACCEPT
### Ident(113)を拒否(DROPするとレスポンスが遅くなるのでReject) ###
$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
### PINGに対する処理 ###
$IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT
### セッション確立後のパケット疎通は許可 ###
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
### IPフォワードの開始 ###
echo 1 > /proc/sys/net/ipv4/ip_forward