Laboratorium Sieci Komputerowych - 4 Trasowanie i konfiguracja serwerów sieciowych Górniak Jakub Kosiński Maciej 1 czerwca 2010 1 Wstęp Na zajęciach wykonywaliśmy zadania dwojakiego rodzaju. W trakcie pierwszej części zajmowaliśmy się trasowaniem ruchu sieciowego. W trakcie drugiej - uczyliśmy się konfigurować serwery podstawowych usług - SSH, NFS, FTP i DHCP. 2 Trasowanie 2.1 Zadanie 1 W pierwszym zadaniu zmieniliśmy bramę domyślną maszyny v9 na v1. 1
Najpierw zalogowaliśmy się na v1 i upewniliśmy się, że maszyna pozwoli nam na przekierowanie ruchu. v1% # sysctl -w net.inet.ip.forwarding=1 Na v9 usunęliśmy bramę domyślną a następnie ustawiliśmy ją na adres v1. v9% # route delete default delete net default v9% # route add default 194.29.146.247 add net default: gateway 194.29.146.247 Sprawdziliśmy czy tablica tras została zaktualizowana i czy ruch faktycznie zostaje przekierowywany przez v1. v9% netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 194.29.146.247 UGS 0 0 fxp0 127.0.0.1 link#4 UH 0 0 lo0 194.29.146.0/24 link#2 U 0 72385 fxp0 194.29.146.189 link#2 UHS 0 3 lo0 v9% traceroute www.google.pl traceroute: Warning: www.google.pl has multiple addresses; using 72.14.221.99 traceroute to www.l.google.com (72.14.221.99), 64 hops max, 40 byte packets 1 v1 (194.29.146.247) 0.503 ms 0.329 ms 0.248 ms 2 gate (194.29.146.1) 1.272 ms 1.570 ms 2.071 ms 3 coi-ee.ee.pw.edu.pl (194.29.132.241) 0.672 ms 0.557 ms 0.583 ms [...] Upewniwszy się, że trasowanie działa, powróciliśmy do pierwotnej konfiguracji. v9% # route delete default delete net default v9% # route add default 194.29.146.1 add net default: gateway 194.29.146.1 2
2.2 Zadanie 2 W tym zadaniu skonfigurowaliśmy tablice tras maszyny v9 tak, żeby ruch do interfejsu lagg0 na volcie przechodził przez maszynę v1. Do tablicy tras dodaliśmy odpowiednią regułę. v9% # route add -host 10.146.7.3 v1 add host 10.146.7.3: gateway v1 Sprawdziliśmy czy tylko ruch do lagg0 jest trasowany przez v1. v9% traceroute 10.146.7.3 traceroute to 10.146.7.3 (10.146.7.3), 64 hops max, 40 byte packets 1 v1 (194.29.146.247) 0.411 ms 0.336 ms 0.327 ms 2 10.146.7.3 (10.146.7.3) 0.457 ms 0.492 ms 0.444 ms v9% traceroute www.google.pl traceroute: Warning: www.google.pl has multiple addresses; using 72.14.221.104 traceroute to www.l.google.com (72.14.221.104), 64 hops max, 40 byte packets 1 gate (194.29.146.1) 2.491 ms 2.595 ms 1.783 ms 2 coi-ee.ee.pw.edu.pl (194.29.132.241) 1.405 ms 0.504 ms 0.378 ms 3 coi-ee.ee.pw.edu.pl (194.29.132.225) 2.385 ms 2.606 ms 2.006 ms [...] Jak widać, ruch do innych interfejsów niż voltowy lagg0 szedł bezpośrednio przez bramę domyślną. 3
2.3 Wnioski Tablica tras to bardzo wygodny mechanizm monitorowania i diagnostyki ruchu sieciowego. Na słabo zabezpieczonych maszynach stanowią one jednak potencjalne źródło zagrożenia. Intruz przekierowując ruch na swoją maszynę może podsłuchiwać co robimy w sieci. 3 Konfiguracja serwisów usług 3.1 SSH - konfiguracja usługi Demon SSH działał w momencie postawienia systemu. Aby przećwiczyć jego konfigurowanie, zablokowaliśmy użytkownikowi kosinsm1 możliwość zdalnego logowania się na v9. W pliku /etc/ssh/sshd_config dopisaliśmy: DenyUsers kosinsm1 Następnie przeładowaliśmy ustawienia serwera. v9% # /etc/rc.d/sshd reload Kolega bezskutecznie próbował się zalogować. v9% ssh kosinsm1@v9 Permission denied (publickey,keyboard-interactive). 3.2 SSH - logowanie za pomocą kluczy Po przywróceniu koledze Kosińskiemu praw do logowania na v9, zajęliśmy się logowaniem za pomocą szyfrowania asymetrycznego. Na maszynie v9 utworzyliśmy parę kluczy. v9% ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/stud/gorniakj/.ssh/id_rsa): /home/stud/gorniakj/kluczyk Enter passphrase (empty for no passphrase): Enter same passphrase again: 4
Your identification has been saved in /home/stud/gorniakj/kluczyk. Your public key has been saved in /home/stud/gorniakj/kluczyk.pub. The key fingerprint is: 50:1b:3c:4d:39:a2:a5:8d:ad:71:61:fd:db:17:72:8a gorniakj@v9 The key s randomart image is: +--[ RSA 2048]----+.o+...Bo=.O.+ o =.+.. o +S.o+.. E..... +-----------------+ Plik kluczyk skopiowaliśmy do /home/stud/gorniakj/.ssh/id_rsa. Następnie zalogowaliśmy się na volta i do pliku /home/stud/gorniakj/.ssh/authorized_keys dopisaliśmy treść pliku kluczyk.pub. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4mwkrDQU//9U+5SgZeWL2KYSv29oqYCIT7Se7h3np orrquas/elkepbgymr3nrkczznghi/jbjunxokvty7mtzr09/ghilmi6hzdzsitdng7azh6gyohedg6v j58stdppze5s4bupxctazm+wpuud5pbucp6iw6fweta5cqfkkys5g1w5meiajjdwrkgw0j0ijwr66bnq LCGOzyWSj7cVOxAlxbN8E1z4DK8I3G0KKGeCMTn53pq/T7Qoc5P794V1CGCH/xl40B+xlfTg1eHpwsc9 NRyTzpVHq1YriFzbPsph1QamogJgA02jRl/wUMac9TQ9V7gRuZLQOWvXftMB gorniakj@v9 Po wyjściu i ponownym zalogowaniu się na volta, nie proszono nas więcej o hasło. Tak samo przy używaniu scp i sftp: v9% scp kluczyk volt: kluczyk v9% sftp volt Connected to volt. sftp>put kluczyk Uploading kluczyk to /home/stud/gorniakj/kluczyk kluczyk 100% 1675 1.8KB/s 00:00 sftp> bye Przećwiczyliśmy też kopiowanie rekursywne katalogów. Na volcie utworzyliśmy katalog /home/stud/gorniakj/katalog, i skopiowaliśmy do niego zawartość v9:/home/stud/gorniakj/.ssh. 5
v9% scp -r.ssh volt:katalog/ known_hosts 100% 611 0.6KB/s 00:00 id_rsa 100% 1675 1.6KB/s 00:00 id_rsa.pub 100% 393 0.4KB/s 00:00 v9% 3.3 FTP - uruchomienie w trybie stand-alone Aby uruchomić demona FTP wpisaliśmy polecenie: # /etc/rc.d/ftpd onestart Starting ftpd. A następnie sprawdziliśmy czy możemy się z nim połączyć. v9% ftp localhost Connected to localhost. 220 v9 FTP server (Version 6.00LS) ready. Name (localhost:gorniakj): stud 331 Password required for stud. 230 User stud logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> bye Na koniec wyłączyliśmy demona. v9% # /etc/rc.d/ftpd onestop Stopping ftpd. 3.4 FTP - uruchomienie przez INETD Cwiczenie kontynuowaliśmy na maszynie v1. Najpierw upewniliśmy się że demon INET działa. v1% # /etc/rc.d/inetd rcvar # inetd # inetd_enable="yes" # (default: "") Następnie w pliku /etc/inetd.conf odkomentowaliśmy linię: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l 6
Przeładowaliśmy ustawienia demona. # /etc/rc.d/inetd reload Spróbowaliśmy wgrać plik za pomocą ftp. Połączyliśmy się przez SSH z voltem, po czym nawiązaliśmy komunikację z serwerem na v1. volt% ftp stud@v1 Connected to v1.iem.pw.ed.pl. 220 v1 FTP server (Version 6.00LS) ready. 331 Password required for stud. 230 User stud logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> put f.c local: f.c remote: f.c 227 Entering Passive Mode (194,29,146,247,249,103) 150 Opening BINARY mode data connection for f.c. 100% ************************************* 890 1.60 MB/s 00:00 ETA 226 Transfer complete. 890 bytes sent in 00:00 (664.48 KB/s) ftp> bye 221 Goodbye. 3.5 NFS Zadanie związane z NFSem polegało na udostępnieniu komputerom w sieci zasobu /etc. Aby to uczynić, do pliku /etc/exports na v1 dopisaliśmy linię: /etc -ro -alldirs -maproot=root -network 194.29.146.0/24 I uruchomiliśmy serwer NFS: v1% # rpcbind v1%# nfsd -u -t -n 4 v1%# mountd -r v1%# /etc/rc.d/mountd onereload Następnie zalogowaliśmy się na v2 i sprawdziliśmy czy eksportowany zasób jest widoczny. 7
v2% showmount -e v1 Exports list on v1: /etc 194.29.146.0 Utworzyliśmy więc katalog zasob i podmontowaliśmy do niego katalog udostępniany przez nasz serwer na v1. v2% cd v2% mkdir zasob v2% # mount v1:/etc zasob Następnie sprawdziliśmy czy zasób został zamontowany i sprawdzamy jego zawartość: v2% mount 194.29.146.3:/R on / (nfs, read-only) devfs on /dev (devfs, local) /dev/md0 on /etc (ufs, local) [...] v1:/etc on /home/stud/gorniakj/zasob (nfs, read-only) v2% cd zasob v2% ls X11 login.conf rc.begin aliases mac.conf rc.bsdextended amd.map mail rc.conf apmd.conf mail.rc rc.conf-examples auth.conf make.conf rc.conf.d [...] Po wykonaniu ćwiczenia sprawdziliśmy jakie zasoby udostępnia volt. v1% showmount -e volt Exports list on volt: /tmp/ports ZETIS /tmp/obj ZETIS 217.96.20.189 wil /home/stud vol2 amper amp2 ohm / ZETIS amper amp2 /usr/src Everyone /nfs z1.iem.pw.edu.pl s103.iem.pw.edu.pl Postanowiliśmy podmonotować katalog /usr/src. v1% mkdir usrsrc v1% # mount volt:/etc/src usrsrc 8
v1% cd cos v1% ls COPYRIGHT contrib rescue LOCKS crypto sbin MAINTAINERS etc secure Makefile games share Makefile.inc1 gnu sys ObsoleteFiles.inc include tools README kerberos5 usr.bin UPDATING lib usr.sbin bin libexec cddl release 3.6 Wnioski Dzięki ćwiczeniu nauczyliśmy się jak uruchamiać i konfigurować podstawowe usługi sieciowe systemów BSD. 9