FreeSwan + IPTables

Marcel Mazáč mazac na neria.cz
Úterý Červenec 6 15:16:51 CEST 2004


Ipsec.conf :

 

# Zakladni nastaveni

config setup

            interfaces="ipsec0=eth1"

            klipsdebug=none

            plutodebug=none

            plutoload=%search

            plutostart=%search

 

# Zakladni konfigurace

conn %default

            keyingtries=0

 

conn N4_N3

            auto=start

            authby=rsasig

            # Leva jsou Hustopece

            left=195.39.121.177

            leftsubnet=192.168.4.0/24

            leftnexthop=195.39.121.161

            leftid=@mail.neria.cz

            leftrsasigkey=XXX

            # Prava jsou Pohorelice

            right=195.39.120.200

            rightsubnet=192.168.3.0/24

            rightnexthop=195.39.120.193

            rightid=@pohorelice.neria.cz

            rightrsasigkey=XXX

 

firewall mam nastaveny takto:

#!/bin/sh

 

# venek

LAN0_IP="195.39.121.177"

LAN0_IFACE="eth1"

 

# vnitrek1

LAN1_IP="192.168.4.3/32"

LAN1_BCAST="192.168.4.255/32"

LAN1_IFACE="eth0"

 

# vnitrek2

LAN2_IP="192.168.1.3/32"

LAN2_BCAST="192.168.1.255/32"

LAN2_IFACE="eth2"

 

 

# vnitrek2:0

LAN3_IP="10.200.1.1/32"

LAN3_BCAST="10.200.1.255/32"

LAN3_IFACE="eth2"

 

# loopback

LO_IFACE="lo"

LO_IP="127.0.0.1/32"

 

IPTABLES="/sbin/iptables"

/sbin/depmod -a

#/sbin/modprobe ipt_LOG

#/sbin/modprobe ipt_REJECT

#/sbin/modprobe ipt_MASQUERADE

#/sbin/modprobe ip_conntrack_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do

   echo "1" > ${interface}

done

 

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

 

$IPTABLES -t nat -A POSTROUTING -o $LAN0_IFACE -j SNAT --to $LAN0_IP

 

$IPTABLES -N spoofing

$IPTABLES -A spoofing -m limit --limit 5/h --limit-burst 3 \

  -j LOG --log-prefix "Rezervovana IP: "

$IPTABLES -A spoofing -j DROP

 

$IPTABLES -N IN_FW

$IPTABLES -A IN_FW -s 172.16.0.0/12 -j spoofing    

$IPTABLES -A IN_FW -s 96.0.0.0/4 -j spoofing     

 

$IPTABLES -N syn-flood

$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN

$IPTABLES -A syn-flood -j DROP

 

# FORWARD

$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix
"NEW bez SYN: "

$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A FORWARD -i $LAN0_IFACE -j IN_FW

 

$IPTABLES -A FORWARD -i $LAN1_IFACE -j ACCEPT

$IPTABLES -A FORWARD -i $LAN2_IFACE -j ACCEPT

$IPTABLES -A FORWARD -i $LAN3_IFACE -j ACCEPT

$IPTABLES -A FORWARD -i $LAN0_IFACE -o $LAN1_IFACE \

  -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -i $LAN0_IFACE -o $LAN2_IFACE \

  -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -i $LAN0_IFACE -o $LAN3_IFACE \

  -m state --state ESTABLISHED,RELATED -j ACCEPT

 

# VPN

$IPTABLES -A FORWARD -s 192.168.4.0/24 -d 192.168.3.0/24 -j ACCEPT

# END VPN

 

$IPTABLES -A FORWARD -m limit --limit 6/h -j LOG --log-prefix "Forward drop:
"

 

 

# INPUT

$IPTABLES -A INPUT -i $LAN0_IFACE -p tcp ! --syn -m state --state NEW -j
DROP

$IPTABLES -A INPUT -i $LAN0_IFACE -j IN_FW

$IPTABLES -A INPUT -i $LAN0_IFACE -p tcp --syn -j syn-flood

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 22 -j ACCEPT  

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 25 -j ACCEPT  

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 80 -j ACCEPT  

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 110 -j ACCEPT  

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 443 -j ACCEPT  

$IPTABLES -A INPUT -i $LAN0_IFACE -p TCP --dport 113 -j REJECT --reject-with
tcp-reset 

$IPTABLES -A INPUT -i $LAN0_IFACE -p ICMP --icmp-type echo-reply -j ACCEPT

$IPTABLES -A INPUT -i $LAN0_IFACE -p ICMP --icmp-type
destination-unreachable -j ACCEPT

$IPTABLES -A INPUT -i $LAN0_IFACE -p ICMP --icmp-type echo-request -j ACCEPT

$IPTABLES -A INPUT -i $LAN0_IFACE -p ICMP --icmp-type time-exceeded -j
ACCEPT

$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT

 

$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN0_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT

$IPTABLES -A INPUT -i $LAN2_IFACE -d $LAN2_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN2_IFACE -d $LAN0_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN2_IFACE -d $LAN2_BCAST -j ACCEPT

$IPTABLES -A INPUT -i $LAN3_IFACE -d $LAN3_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN3_IFACE -d $LAN0_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN3_IFACE -d $LAN3_BCAST -j ACCEPT

$IPTABLES -A INPUT -i $LAN2_IFACE -d $LAN1_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN3_IFACE -d $LAN1_IP -j ACCEPT

$IPTABLES -A INPUT -i $LAN3_IFACE -d $LAN2_IP -j ACCEPT

 

# VPN

$IPTABLES -A INPUT -p UDP --dport 500 -j ACCEPT

$IPTABLES -A INPUT -p 50 -j ACCEPT

$IPTABLES -A INPUT -p 51 -j ACCEPT

# END VPN

 

$IPTABLES -A INPUT -d $LAN0_IP -m state --state ESTABLISHED,RELATED -j
ACCEPT

$IPTABLES -A INPUT -m limit --limit 6/h -j LOG --log-prefix "Input drop: "

 

# OUTPUT

$IPTABLES -t mangle -A OUTPUT -o $LAN0_IFACE -p tcp --sport ssh -j TOS
--set-tos Minimize-Delay

$IPTABLES -t mangle -A OUTPUT -o $LAN0_IFACE -p tcp --dport ssh -j TOS
--set-tos Minimize-Delay

$IPTABLES -t mangle -A OUTPUT -o $LAN0_IFACE -p tcp --sport ftp -j TOS
--set-tos Minimize-Delay

$IPTABLES -t mangle -A OUTPUT -o $LAN0_IFACE -p tcp --dport ftp -j TOS
--set-tos Minimize-Delay

$IPTABLES -t mangle -A OUTPUT -o $LAN0_IFACE -p tcp --sport ftp-data -j TOS
--set-tos Maximize-Throughput

$IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT

$IPTABLES -A OUTPUT -s $LAN3_IP -j ACCEPT

$IPTABLES -A OUTPUT -s $LAN2_IP -j ACCEPT

$IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT

$IPTABLES -A OUTPUT -s $LAN0_IP -j ACCEPT

$IPTABLES -A OUTPUT -j LOG --log-prefix "Output drop: "

 

# VPN

$IPTABLES -A OUTPUT -p UDP --sport 500 --dport 500 -j ACCEPT

$IPTABLES -A OUTPUT -p 50 -j ACCEPT

$IPTABLES -A OUTPUT -p 51 -j ACCEPT

# END VPN

 

V logu se po startu IPSEC objevi

 

Jul  5 13:52:59 mail ipsec_setup: Starting FreeS/WAN IPsec 1.96...

Jul  5 13:52:59 mail ipsec_setup: KLIPS debug `none'

Jul  5 13:52:59 mail ipsec_setup: KLIPS ipsec0 on eth1
195.39.121.177/255.255.255.224 broadcast 195.39.121.191 

Jul  5 13:52:59 mail ipsec_setup: ...FreeS/WAN IPsec started

Jul  5 13:53:10 mail ipsec__plutorun: 104 "N4_N3" #1: STATE_MAIN_I1:
initiate

Jul  5 13:53:10 mail ipsec__plutorun: 010 "N4_N3" #1: STATE_MAIN_I1:
retransmission; will wait 20s for response

Jul  5 13:53:10 mail ipsec__plutorun: 106 "N4_N3" #1: STATE_MAIN_I2: sent
MI2, expecting MR2

Jul  5 13:53:10 mail ipsec__plutorun: 108 "N4_N3" #1: STATE_MAIN_I3: sent
MI3, expecting MR3

Jul  5 13:53:10 mail ipsec__plutorun: 004 "N4_N3" #1: STATE_MAIN_I4: ISAKMP
SA established

Jul  5 13:53:10 mail ipsec__plutorun: 112 "N4_N3" #4: STATE_QUICK_I1:
initiate

Jul  5 13:53:10 mail ipsec__plutorun: 004 "N4_N3" #4: STATE_QUICK_I2: sent
QI2, IPsec SA established

 

Marcel Mazáč

NERIA a.s.

E-mail : mazac <mailto:mazac na neria.cz> @neria.cz

 

 



Další informace o konferenci Linux