wiki:WikiStart

Het iLeiden Project

Internetten via het netwerk van Wireless Leiden kan via diverse proxy-servers. Hiervoor moet de instelling van de browser worden aangepast. Dit wordt door veel gebruikers als lastig ervaren met name door "mobiele" gebruikers (iPhone, iPad e.d.).

In het iLeiden project ontwikkelen en testen we een andere configuratie, waarbij van het internet gebruik gemaakt kan worden zonder een proxy server in te hoeven stellen. Tijdens de testperiode - op een afgezonderd deel van het netwerk - zal onder meer nagegaan worden of de veiligheid van het netwerk niet lijdt onder een internet-toegang zonder proxy server.

Ook met de nieuwe configuratie zullen overigens alleen de http- en https- protocollen ondersteund worden.

Stand van Zaken

In de loop van 2011 is op alle operationele nodes de 'ileiden'-configuratie uitgerold. Er zijn inmiddels vijf ileiden-gateways. De proxies zijn nog steeds operationeel en -afhankelijk van de locatie van de gebruiker- kunnen zelfs betere internetsnelheden geven.

Aanpak

De proxy server krijgt een 'packet filtering firewall' met netwerkadresvertaling (NAT), die alleen webverkeer toestaat. Bovendien wordt er een limiet gesteld aan het maximale aantal verbindingen per gebruiker om misbruik te voorkomen. De proxyserver controleert regelmatig of de internetverbinding nog in de lucht is.

Ook de routering gaat veranderen. De nodes sturen de gebruiker naar de dichtstbijzijnde Internetverbinding. Daarvoor wordt onze routeringssoftware (lvrouted) aangepast. Elke node heeft een lijstje met internetpoortjes en controleert welke beschikbaar zijn en kiest vervolgens de dichtstbijzijnde.

Proxy packet filtering firewall

We gebruiken ipfw (aanzetten in /etc/rc.conf). Script ipfw.sh:

#!/bin/sh -                                                 
# Based on /etc/rc.firewall                                 

allowed2internet="80,443"
maxconnections="10"      

# Suck in the configuration variables.
if [ -z "${source_rc_confs_defined}" ]; then
        if [ -r /etc/defaults/rc.conf ]; then
                . /etc/defaults/rc.conf      
                source_rc_confs              
        elif [ -r /etc/rc.conf ]; then       
                . /etc/rc.conf               
        fi                                   
fi                                           

setup_loopback () {
        ############                                                                                              
        # Only in rare cases do you want to change these rules                                                    
        #                                                                                                         
        ${fwcmd} add 100 pass all from any to any via lo0                                                         
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8                                                         
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any                                                          
}                                                                                                                 

############
# Set quiet mode if requested
#                            
case ${firewall_quiet} in    
[Yy][Ee][Ss])                
        fwcmd="/sbin/ipfw -q"
        ;;                   
*)                           
        fwcmd="/sbin/ipfw"   
        ;;                   
esac                         

###########
# Set Internal/External Interface
#                                
driver=`echo ${internalif} | sed 's/[0-9]*//g'`
seq=`echo ${internalif} | sed 's/[a-zA-Z]*//g'`

if [ ${seq} = 0 ]; then
  seq=`expr ${seq} \+ 1`
else                    
  seq=`expr ${seq} \- 1`
fi                      

externalif="$driver$seq"

# Get public ip
externalip=`ifconfig $externalif | awk '/inet/ { print $2 }'`
############                                                 
# Flush out the list before we begin.                        
#                                                            
${fwcmd} -f flush                                            

setup_loopback


############
# Block the hosters network (and maybe others)

for IP in ${firewall_block}
do                         
  ${fwcmd} add deny ip from any to ${IP} in via $internalif
done                                                       

#############
# Outbound NAT setup

${fwcmd} add nat 100 all from 172.16.0.0/12 to any out via $externalif
${fwcmd} add nat 100 all from any to $externalip in via $externalif
${fwcmd} nat 100 config if $externalif

#############
# WL -> Internet
# Stateful firewalling

${fwcmd} add 3000 check-state
# HTTP
${fwcmd} add 3001 allow tcp from 172.16.0.0/12 to any $allowed2internet in via $internalif setup limit src-addr $maxconnections
# HTTPS

# Allow anything originating from me
${fwcmd} add 4001 allow ip from me to any keep-state

# Allow on any interface
# Allow SSH
${fwcmd} add 5001 allow tcp from any to me 22 keep-state

# Allow on internal interface
# DNS
${fwcmd} add 6001 allow ip from any to me 53 via $internalif keep-state

# NTP
${fwcmd} add 6002 allow udp from any to me 123 via $internalif keep-state

# HTTP-PROXY
${fwcmd} add 6003 allow tcp from any to me 3128 via $internalif keep-state

# lvrouted
${fwcmd} add 6004 allow udp from 172.16.0.0/12 to me 12345 via $internalif keep-state

# SNMP
${fwcmd} add 6005 allow udp from any to me 161 via $internalif keep-state

# Block anything else
${fwcmd} add 65000 deny ip from any to any

lvrouted

Ook op de proxy wordt lvrouted gedraaid.

Voor de nodes is aan lvrouted de -z optie toegevoegd: de default gateway (naar internet). In tegenstelling tot de configuratie met pen en proxies (waarbij de snelste internetverbinding werd gekozen) wordt nu gekozen voor de dichtstbijzijnde gateway (kleinste aantal hops) die beschikbaar is.

Aanpassingen van de standaard proxy-configuratie voor iLeiden

in /cfg/rc.conf.local toevoegen:

# Firewall for iLeiden-type access to Internet
firewall_enable="YES"
firewall_script="/etc/ipfw.sh"
firewall_nat_enable="YES"
gateway_enable="YES"
firewall_block="10.0.0.0/16 "

# lvrouted needed for iLeiden-type internet access
lvrouted_enable="YES"
lvrouted_flags="-u -m 28 -s ........."

N.B. de iLeiden-gateway is ook nog steeds een proxy, dus in /usr/local/etc/tinyproxy.conf de 'Listen' interface expliciet definieren.


Welcome to Trac 0.11.6

As all Wiki pages, this page is editable, this means that you can modify the contents of this page simply by using your web-browser. Simply click on the "Edit this page" link at the bottom of the page. WikiFormatting will give you a detailed description of available Wiki formatting commands.

Starting Points

For a complete list of local wiki pages, see TitleIndex.

Last modified 5 years ago Last modified on Feb 4, 2012, 7:53:31 PM