ipchains (packet filtering)

 
Web sputnik.sakura.ne.jp

適当にsh.ipchains等とファイルを作ってルールを作る。

sh.ipchains


#! /bin/sh

IPCHAINS="/sbin/ipchains"
LOCAL="192.168.1.0/24"
ETH0="eth0"
PPP0="ppp0"
PPP_IN="ppp-in"
PPP_OUT="ppp-out"
IP_PPP_IN="$IPCHAINS -A $PPP_IN"
IP_PPP_OUT="$IPCHAINS -A $PPP_OUT"

$IPCHAINS -F

$IPCHAINS -P input   DENY
$IPCHAINS -P output  ACCEPT
$IPCHAINS -P forward DENY

$IPCHAINS -N $PPP_IN
$IPCHAINS -N $PPP_OUT

$IPCHAINS -A input  -i $PPP0 -j $PPP_IN
$IPCHAINS -A output -i $PPP0 -j $PPP_OUT


# Allow Local Loopback
$IPCHAINS -A input -i lo -j ACCEPT
# Allow Input Of $ETH0 ($LOCAL)
$IPCHAINS -A input -i $ETH0 -s $LOCAL -j ACCEPT
# Allow All Of ICMP
$IPCHAINS -A input -p icmp -j ACCEPT

# $PPP_IN
# http (www)
$IP_PPP_IN -p tcp --dport 80 -j ACCEPT
$IP_PPP_IN -p udp --dport 80 -j ACCEPT
# https
$IP_PPP_IN -p tcp --dport 443 -j ACCEPT
$IP_PPP_IN -p udp --dport 443 -j ACCEPT
# smtp
$IP_PPP_IN -p tcp --dport 25 -j ACCEPT
# pop3
$IP_PPP_IN -p tcp --dport 110 -j ACCEPT
$IP_PPP_IN -p udp --dport 110 -j ACCEPT
# imap
# ftp
$IP_PPP_IN -p tcp --dport 21 -j ACCEPT
# ssh
$IP_PPP_IN -p tcp --dport 22 -j ACCEPT
$IP_PPP_IN -p udp --dport 22 -j ACCEPT
# telnet
$IP_PPP_IN -p tcp --dport 23 -j ACCEPT
# domain
# $IP_PPP_IN -p tcp --dport 53 -j ACCEPT
# $IP_PPP_IN -p udp --dport 53 -j ACCEPT
# auth
$IP_PPP_IN -p tcp --dport 113 -j ACCEPT
# For many clients
# if ftp passive mode
#$IP_PPP_IN -p tcp ! -y --dport 1024: -j ACCEPT
# if ftp active mode
$IP_PPP_IN -p tcp --dport 1024: -j ACCEPT
$IP_PPP_IN -p udp --dport 1024: -j ACCEPT
$IP_PPP_IN -y -p tcp --dport 6000 -j DENY

$IP_PPP_IN -l -s $LOCAL -j DENY


# $PPP_OUT
$IP_PPP_OUT -p tcp --sport 137:139 -j DENY
$IP_PPP_OUT -p udp --sport 137:139 -j DENY
$IP_PPP_OUT -l -s $LOCAL -j DENY
$IP_PPP_OUT -l -d $LOCAL -j DENY

# FORWARD
$IPCHAINS -A forward -s $LOCAL -j MASQ

で、よければ、

# /etc/rc.d/init.d/ipchains save
あとは、chkconfigや、ntsysvで自分のrun levelでブート時にipchainsを起動させるようにしておく。








 ←back