Microdistribution Slitaz-Linux ############################## Erste Schritte ============== Vorarbeiten: - Downloaden von http://pemmann.de/cc/VM/Slitaz-Linux.ova - Doppelklick auf die Datei 'Slitaz-Linux.ova', dabei die Netzwerk-Adapter nicht mit übernehmen. - Änderen der VitualBox-Konfiguration auf folgende Werte: - Name: "Slitaz-Linux (Router 1)" - Netzwerkadapter: Adapter 1 auf Netzwerkbrücke legen, Adapter zwei mit neuem, internen Netzwerk namens 'iso_net1' verbinden - Gastsystem starten - Login als 'tux' (Passwort: 'tux'), in Konsole 'root' werden (Passwort: 'root') Erkunden, welcher ssh-Daemon läuft: :: root@slitaz:~# ps aux | grep ssh 1573 root 0:00 grep ssh root@slitaz:~# root@slitaz:~# ps aux | grep drop 1358 root 0:00 /usr/sbin/dropbear -w -g -b /etc/dropbear/banner 1575 root 0:00 grep drop root@slitaz:~# Vorsicht, die Netzwerktools sind einfacher gestrickt; man sieht es an den Symlinks auf das Allroundprogramm 'busybox': :: root@slitaz:~# ls -l /usr/bin/lsof lrwxrwxrwx 1 root root 17 May 26 11:15 /usr/bin/lsof -> ../../bin/busybox root@slitaz:~# root@slitaz:~# ls -l /bin/netstat lrwxrwxrwx 1 root root 7 May 26 11:15 /bin/netstat -> busybox root@slitaz:~# root@slitaz:~# ls -l /bin/ping ping ping6 root@slitaz:~# ls -l /bin/ping lrwxrwxrwx 1 root root 7 May 26 11:15 /bin/ping -> busybox root@slitaz:~# Kontrolle, ob der Port 22 geöffnet ist, den SSH-Fingerprint des Servers ausgeben: :: root@slitaz:~# netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:7 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 :::6000 :::* LISTEN tcp 0 0 :::82 :::* LISTEN tcp 0 0 :::22 :::* LISTEN root@slitaz:~# root@slitaz:~# dropbearkey -t ecdsa -y -f /etc/dropbear/dropbear_ecdsa_host_key Public key portion is: ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGwVN6GUcNSHJ32HiitwhbuKlva7jTmzxKkFF hGpO2nNatRT2Kje+kDqN5Su7I66Utk1Si9Rx5wlA6PE6YIEtOOGQHlfIIrP6jeOq4ytEEYd2ee/bPMmvyWfThbCM2Se0YP8mMB1UF46ORwG8Yy 3pahQA2OmuFwkArxErXpCf7xImU2QA== root@slitaz Fingerprint: md5 5d:8f:ed:7b:76:42:a3:93:b5:ff:81:30:ce:72:fb:20 root@slitaz:~# Wir verbinden uns nun von unserem Arbeitsrechner aus auf das neue Gastsystem und kontrollieren die IP-Adressierung: :: $> ssh tux@10.44.30.119 The authenticity of host '10.44.30.119 (10.44.30.119)' can't be established. ECDSA key fingerprint is 5d:8f:ed:7b:76:42:a3:93:b5:ff:81:30:ce:72:fb:20. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.44.30.119' (ECDSA) to the list of known hosts. Connection closed by 10.44.30.119 $> $> ssh tux@10.44.30.119 Secure login on SliTaz GNU/Linux powered by Dropbear SSH server. tux@10.44.30.119's password: Welcome to the Open Source World! SliTaz GNU/Linux is distributed in the hope that it will be useful, but with ABSOLUTELY NO WARRANTY. tux@slitaz:~$ tux@slitaz:~$ ip addr 1: lo: mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: dummy0: mtu 1500 qdisc noop link/ether 72:d8:09:a2:a0:85 brd ff:ff:ff:ff:ff:ff 3: tunl0: mtu 1480 qdisc noop link/ipip 0.0.0.0 brd 0.0.0.0 4: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:27:90:4d:88 brd ff:ff:ff:ff:ff:ff inet 10.44.30.119/24 brd 10.44.30.255 scope global eth0 inet6 fe80::a00:27ff:fe90:4d88/64 scope link valid_lft forever preferred_lft forever 5: eth1: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:27:ae:11:9d brd ff:ff:ff:ff:ff:ff inet 10.20.30.1/24 brd 10.20.30.255 scope global eth1 inet6 fe80::a00:27ff:feae:119d/64 scope link valid_lft forever preferred_lft forever tux@slitaz:~$ Slitaz als NAT-Router ===================== Im Prinzip ist bereits alles vorkonfiguriert. Wir kontrollieren als 'root' die wichtigesten Einstellungen, damit die VM als NAT-Router fungieren kann. a) IP-Forwarding: :: root@slitaz:~# cat /proc/sys/net/ipv4/ip_forward 1 root@slitaz:~# b) Network Address Translation: :: root@slitaz:~# iptables -t nat -vnL POSTROUTING Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes) pkts bytes target prot opt in out source destination 30 2262 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 root@slitaz:~# Prüfen, ob es einen tcpd gibt, der Probleme machen könnte: :: root@slitaz:~# find / -name "*tcpd*" /var/lib/tazpkg/installed/tcpdump /var/cache/tazpkg/5.0/packages/tcpdump-4.4.0.tazpkg /usr/sbin/tcpdump.4.4.0 /usr/sbin/tcpdump /usr/share/mime/application/vnd.tcpdump.pcap.xml find: /home/tux/.gvfs: Permission denied root@slitaz:~# root@slitaz:~# ls -l /etc/host* -rw-r--r-- 1 root root 26 May 26 11:15 /etc/host.conf -rw-r--r-- 1 root root 7 May 26 11:15 /etc/hostname -rw-r--r-- 1 root root 36 May 26 11:15 /etc/hosts Nein, kein TCP-Wrapper gefunden. Prüfen, ob evl. schon ein Weg von außen nach innen via TCP-Portforwarding in die DMZ vorbereitet ist: :: root@slitaz:~# iptables -t nat -vnL PREROUTING Chain PREROUTING (policy ACCEPT 186 packets, 33521 bytes) pkts bytes target prot opt in out source destination root@slitaz:~# root@slitaz:~# Nein, auch das nicht. Sicher ist sicher. Konfigurationsdateien --------------------- Wichtige Konfigurationsdateien unter Slitaz 5.0 sind: - Netzwerkeinstellungen (für erste NIC): **/etc/network.conf** - Netzwerkeinstellungen usw. (für zweite NIC): **/etc/init.d/local.sh** (Hier wurde die Zeile 'ifconfig eth1 10.20.30.1 netmask 255.255.255.0' manuell hinzugefügt.) - Firewall, allgemeine Voreinstellungen: **/etc/slitaz/firewall.conf** (Z.B. über das betreffende LAN; die Datei /etc/firewall.conf existiert im Original nicht und kann gelöscht werden) - Firewall-Parameter, Kernel-Security: **/etc/init.d/firewall** (Startoptionen, Härtung via /proc-Einstellungen) - Firewall-Regelwerk, NAT: **/etc/slitaz/firewall.sh** (Wurde manuell angepasst, kann um weitere Regeln ergänzt werden.) Router 2 mit Slitaz Linux ========================= Wir klonen einfach den vorhandenen Router 1, wobei neue MAC-Adressen generiert werden sollen. Angeschlossen wird die neue VM allerdings folgendermaßen: - ADAPTER 1: Internes Netzwerk namens "iso_net1" (aus der Drop-Down Liste heraussuchen) - ADAPTER 2: Internes Netzwerk namens "iso_net2" (als Namen für einen neuen, virtuellen Switch ins Textfeld eintragen) Danach booten wir die Maschine und löschen als 'root' die Datei '/etc/firewall.conf' mit dem Kommando 'rm'. Es handelt sich hierbei nur um ein Backup; die eigentliche Datei ist die '/etc/slitaz/firewall.conf'. Sie existiert weiterhin. Netzwerkkonfiguration --------------------- **MAC-Adressbindung aufheben:** Bei einer Kontrolle mit 'ip addr' stellen wir fest, dass der Adapter 1 nicht mehr 'eth0' heißt und dass evl. auch eth1 nicht mehr auftaucht. Das hängt mit dem User Space Device Manager ('udev') zusammen, der die alten Bezeichnungen für die damaligen MAC-Adressen weiterhin vermerkt hat. Deshalb verschieben wir die verantwortliche Datei: :: $> mv /etc/udev/rules.d/70-persistent-net.rules /root **Adapter 1 konfigurieren:** Nun passen wir die Konfiguration der ersten Netzwerkkarte an. Die zentrale Datei ist die '/etc/network.conf', die allerdings jeweils nur eine Netzwerkkarte aufnehemen kann (Wahrscheinlich wegen der eingeschränkten Möglichkeiten des grafischen Konfigurationswerkzeugs 'TazPanel'.) Dazu bearbeiten wir diese Datei, so dass die relevanten Zeilen im Endeffekt so ausschauen: :: $> grep -v '^\s*#\|^$' /etc/network.conf | head NETWORK_CONF_VERSION="2" INTERFACE="eth0" DHCP="no" STATIC="yes" IP="10.20.30.2" NETMASK="255.255.255.0" BROADCAST="10.20.30.255" GATEWAY="10.20.30.1" DOMAIN="dom1.test" DNS_SERVER="10.20.30.3" $> **Adapter 2 konfigurieren:** Leider kann man in der '/etc/network.conf' nur eine Karte konfigurieren, weswegen wir nun einen anderen Weg zum Festlegen der Adressierung weiterer Karten einschlagen müssen. Zuerst löschen wir aus der Datei '/etc/init.d/network.sh' die folgende Zeile: :: ifconfig eth1 10.20.30.1 netmask 255.255.255.0 Dazu einfach die Suchfunktion des Editors benutzen. Grund ist, dass diese Datei durch Systemupdates früher oder später überschrieben wird! Die richtige Stelle, wo wir eine ähnliche Zeile hineinschreiben können, ist die Datei '/etc/init.d/local.sh', die u.a. für Netzwerkeinstellungen weiterer Adapter herhalten kann: :: $> echo 'ifconfig eth1 10.0.0.1 netmask 255.255.255.240' >> /etc/init.d/local.sh Lokalisierung anpassen ---------------------- Damit das System eine entsprechende Lokalisierung erhält, muss bei dieser schlanken Distribution dem Kernel beim booten 'lang=de_DE' mitgegeben werden. Das erledigen wir in der Konfigurationsdatei für GRUB legacy direkt: :: $> vi /boot/grub/menu.lst Die betreffende Zeile sieht schlussendlich so aus: :: kernel /boot/vmlinuz-3.2.71-slitaz root=/dev/sda2 video=-32 quiet lang=de_DE HINWEIS: Ein direktes Bearbeiten ist explizit möglich: "The menu.lst file can be edited with your favourite text editor" http://doc.slitaz.org/en:handbook:installation Nach einem ``reboot`` sollte im Wesentlichen alles funktionieren.