Je kunt een hoop (leuke ?) dingen doen met met het ``/etc/ppp/ip-up'' en ``/etc/ppp/ip-down'' scripts.
Dit zet je in je /etc/ppp/ip-up script erbij:
# Hou een log file bij met connectie gegevens. echo "$(date) \ $IFNAME $IFTTY \ speed $IFSPEED \ local:$LOCALIP \ remote:$REMOTEIP \ Started." >>/var/log/dial.log
Dit zet je vervolgens in het /etc/ppp/ip-down script erbij:
# Hou een log file bij met connectie gegevens. echo "$(date) \ $IFNAME $IFTTY \ speed $IFSPEED \ local:$LOCALIP \ remote:$REMOTEIP \ Stopped." >>/var/log/dial.log
Je krijgt dan zo'n soort ``/var/log/dial.log'' file:
Tue Feb 2 11:49:07 CET 1999 ppp0 /dev/ttyS1 speed 115200 local:194.159.231.103 remote:194.159.73.222 Started. Tue Feb 2 11:57:55 CET 1999 ppp0 /dev/ttyS1 speed 115200 local:194.159.231.103 remote:194.159.73.222 Stopped.
Helaas shijnt het nodig te zijn om sommige vervelende figuren buiten ons eigen vertrouwde thuisnetwerk te houden...
Je zou dit bijvoorbeeld alleen willen doen als je online bent, dan zou je zo'n soort IP-chains combinatie in het ``/etc/ppp/ip-up'' script kunnen zetten.
# Pas dit aan je eigen netwerk MYLAN=10.76.12.0/24 ipchains -F ipchains -N ppp-in ipchains -A input -i $IFNAME -j ppp-in # Geen IP spoofing op mijn LAN... ipchains -A ppp-in -s $MYLAN -l -j DENY ipchains -A ppp-in -d $MYLAN -l -j DENY etc...etc...
In je ``/etc/ppp/ip-down'' script kun je dan alle firewall rules weer verwijderen.
ipchains -F
Zie voor gebruik van IP-chains de IPCHAINS-HOWTO.
Met het programma ``sudo'' kun je gewone users bepaalde commando's als de root user laten uitvoeren. Hieronder staat een voorbeeld hoe je dat zou kunnen doen. Voeg aan de regel ``PPPERS = jw-smaal,...'' de users toe welke ``ppp-on'' en ``ppp-off'' mogen starten. ``helium'' is mijn lokale hostname, deze naam moet je aanpassen aan je eigen sitatie, type ``hostname'' in om te zien wat je in je eigen situatie moet invullen.
Aanpassen van de configuratie file van sudo kan alleen met het commando ``visudo''. Voor het formaat van het programma sudo zie ``man sudoers''.
# This file MUST be edited with the 'visudo' command as root. # # See the man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification User_Alias PPPERS = jw-smaal,smaal,marcel,willem # Cmnd alias specification Cmnd_Alias PPP=/usr/local/sbin/ppp-on,/usr/local/sbin/ppp-off # User privilege specification root ALL=(ALL) ALL PPPERS helium = NOPASSWD: PPP
De kernel weigert om zogenaamde SUID (Set User ID) shell-scripts te runnen. Je kunt hieromheen werken door een klein C programma te schrijven welke wel SUID gezet mag worden en vervolgens het ppp-on/ppp-off script runt. Let op deze programma's kunnen onveilig zijn, gebruik bij voorkeur de ``sudo'' methode. Op eigen risico de C source:
``suid-ppp-on.c''
#include <unistd.h> void main() { setreuid(0, 0); execl("/usr/local/sbin/ppp-on", "", ""); }
``suid-ppp-off.c''
#include <unistd.h> void main() { setreuid(0, 0); execl("/usr/local/sbin/ppp-off", "", ""); }
Compilen van beide programma's:
gcc -o suid-ppp-on suid-ppp-on.c gcc -o suid-ppp-off suid-ppp-off.c
Copieer ``suid-ppp-on'' en ``suid-ppp-off'' naar ``/usr/local/bin'' en geef deze commando's om deze SUID te maken:
[root@koala ~]# cd /usr/local/bin/ [root@koala /usr/local/bin]# chown root:jw-smaal suid-ppp-on suid-ppp-off [root@koala /usr/local/bin]# chmod u=srx,g=rx,o-srwx suid-ppp-on suid-ppp-off
Als je nu ``suid-ppp-on'' als user ``jw-smaal'' typt dan wordt als het goed is de verbinding gestart.
PPP-HOWTO ISP-Hookup-HOWTO ISP-Connectivity (mini-HOWTO)
Aanvullingen en verbeteringen van dit document zijn van harte welkom graag opsturen naar J-W Smaal < J-W@Smaal.Demon.NL> .