DNS-Auflösung und Reverse Lookup

$ host www.wikiberd.de
$ host -A www.wikiberd.de
$ host 188.246.6.99

$ nslookup www.wikiberd.de
$ nslookup 188.246.6.99

ICMP Echo-Request

$ ping www.wikiberd.de
$ ping -I l2tp-vpn1 www.wikiberd.de

Flood Ping erfordert Root-Rechte. Für jedes gesendete Packet wird ein Punkt und für jede Antwort wird ein Backspace ausgegeben. Die Anzahl der Punkt zeigt daher die verlorenen Pakete.

$ sudo ping -I l2tp-vpn1 -f www.wikiberd.de
PING www.wikiberd.de (188.246.6.99) 56(84) bytes of data.
....^C
--- www.wikiberd.de ping statistics ---
13850 packets transmitted, 13846 received, 1% packet loss, time 1958ms
rtt min/avg/max/mdev = 0.123/0.129/0.285/0.013 ms, ipg/ewma 0.141/0.131 ms

Einfache Netfilter-Regeln (iptables, ip6tables)

-4, -6
Regel nur für IPv4 oder IPv6
-t table
Auswahl einer Tabelle (Default: filter):
filter, nat, mangle, raw, rsecurity
-N chain
Anlage einer neuen Kette in der Tabelle
-P chain policy
Standardverhalten einer Kette: ACCEPT, REJECT, DROP
-A chain rule
Anhängen einer neuen Regel ans Ende der Kette
-D chain rule
Löschen einer Regel in der Kette
-I chain [nr] rule
Einfügen einer neuen Regel in der Mitte
-R chain nr rule
Ersetzen einer Regel
-L [chain]
Ausliften aller Regeln
-F [chain]
Alle Regeln verwerfen (Flush)
-X
Alle Benutzerdefinierte Ketten löschen
-Z
Alle Zähler zurücksetzen
!
Verneinung der folgenden Option
-i, -o
INPUT und OUTPUT-Interface
-p protocol
Protokoll: tcp, udp, imcp, icmpv6, all, ...
-s ip, -sport nr
Quelladresse, Quellport
-d ip, -dport nr
Zieladresse, Zielport
-m module --parameter
Auswahl eines Moduls mit Modulparametern
-m state --state state
Verbindungsstatus: NEW, ESTABLISHED, RELATED, ...
-p tcp --tcp-flags X,X,X Y,Y,Y
Prüfe TCP-Flags X,X,X, wenn Y,Y,Y gesetzt sind (Maske)
SYN, ACK, FIN, RST, URG, PSH, ALL, NONE
-j chain
Absprung zu Kette ACCEPT, REJECT, RETURN, ...

Firewall zurücksetzen:
$ iptables -P INPUT ACCEPT
$ iptables -F INPUT
$ iptables -P OUTPUT ACCEPT
$ iptables -F OUTPUT
$ iptables -P FORWARD DROP
$ iptables -F FORWARD
$ iptables -t nat -F

Einzelne Ports öffnen, ohne NAT:
$ iptables -F INPUT
$ iptables -P INPUT ACCEPT

$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$ iptables -A INPUT -4 -p icmp -m limit --limit 10/second --limit-burst 2 -j ACCEPT
$ iptables -A INPUT -6 -p icmpv6 -m limit --limit 10/second --limit-burst 2 -j ACCEPT

$ iptables -A INPUT -i eth0 -p tcp --dport tinc -m state --state NEW -j ACCEPT
$ iptables -A INPUT -i eth0 -p udp --dport tinc -m state --state NEW -j ACCEPT
$ iptables -A INPUT -i eth0 -p tcp -m multiport --dports http,https -m state --state NEW -j ACCEPT

$ iptables -A INPUT -j LOG --log-prefix "iptables reject (input): " --log-level 4
$ iptables -A INPUT -j REJECT

NAT und Masquerading

Destination NAT: Portweiterleitung, Anfragen werden an interne Hosts weitergeleitet
Source NAT: Austausch der Quelladresse für ausgehende Anfragen
IP-Masquerade: Versteckt ein internes Netzwerk hinter einer öffentlichen IP-Adresse

Auf ppp0 ins Internet gehende Verbindungen maskieren:
$ iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$ iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
$ iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Portweiterleitung an einen internen Webserver. Durch die zweite Regel können auch interne Hosts die externe IP aufrufen:
$ iptables -t nat -A PREROUTING -p tcp -d 188.246.6.99 --dport 80 -j DNAT --to 192.168.1.99:80
$ iptables -t nat -A POSTROUTING -p tcp -d 188.246.6.99 --dport 80 -s 192.168.1.0/24 -j SNAT --to 192.168.1.99:80

Wenn die externe IP dynamisch ist, müssen die Firewall-Regeln bei jedem IP-Wechsel neugeladen werden!

Statische Routen

xxx

Auflisten der Routing-Tabelle:
$ netstat -r
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         router-extern.l 0.0.0.0         UG        0 0          0 eth1
188.246.0.50    router-extern.l 255.255.255.255 UGH       0 0          0 eth1
188.246.4.1     *               255.255.255.255 UH        0 0          0 l2tp-vpn1
192.168.0.0     *               255.255.255.0   U         0 0          0 eth1
192.168.0.0     *               255.255.0.0     U         0 0          0 vpn0
192.168.1.0     *               255.255.255.0   U         0 0          0 br-lan

$ ip route list
default via 192.168.0.1 dev eth1  proto static
188.246.0.50 via 192.168.0.1 dev eth1  proto static
188.246.4.1 dev l2tp-vpn1  proto kernel  scope link  src 188.246.6.99
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.11
192.168.0.0/16 dev vpn0  proto kernel  scope link  src 192.168.1.1
192.168.1.0/24 dev br-lan  proto kernel  scope link  src 192.168.1.1 

Auflisten einer anderen als der Standard Routing-Tabelle:
$ ip route list table VPN1

xxx

Policy Routing

xxx

Mehrere Ethernet-Interfaces bridgen

Unterschied zum Routing: Es werden mehrere Ethernet-Segmente zusammengeschlossen. Daher existiert nur eine IP-Adresse und auch Broadcast- oder ARP-Nachrichten können die Bridge passieren. Auch LAN und WLAN lassen sich bridgen, sofern es der WiFi?-Treiber unterstützt. Die meisten Access Points lehnen aber Frames von unbekannten MAC-Adressen ab. HIerfür müsste dann mit eptables ein "NAT auf Ethernet-Ebene" eingerichtet werden.

$ brctl addbr br0
$ brctl delbr br0

$ brctl show
bridge name    bridge id        STP enabled    interfaces
br-lan        8000.2eb05d93b617?    no        eth0.1
                            wlan0

$ brtctl adddif br0 eth0 eth1 eth2
$ brctl delif br0 eth2
$ brctl show br0

Verschiedene Netzwerkinformationen

Auflistung aller Socketverbindungen (intern und extern):
$ netstat -a
$ netstat -an

Auflistung aller eingehenden Verbindungen:
$ netstat -al

Eingrezung auf TCP oder UDP:
$ netstat -alt
$ netstat -alu
$ netstat -atu
$ netstat -altu

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN    
tcp        0      0 localhost.local:privoxy 0.0.0.0:*               LISTEN    
tcp        0      0 localhost.localdoma:ipp 0.0.0.0:*               LISTEN    
tcp        0      0 metropolis.lan:33103    snt-re4-8c.sjc.dro:http ESTABLISHED
tcp        1      0 metropolis.lan:44927    6-55-236-85.rev.cu:http CLOSE_WAIT
tcp        0      0 metropolis.lan:39384    router-intern.lan:ssh   ESTABLISHED
tcp       32      0 metropolis.lan:37439    6-55-236-85.rev.c:https CLOSE_WAIT
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN    
tcp6       0      0 localhost6.localdom:ipp [::]:*                  LISTEN    

Netzwerkverbindungen mit lsof auflisten:
$ lsof -i TCP
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dropbox 2278 dennis   18u  IPv4  95849      0t0  TCP metropolis.lan:33103->snt-re4-8c.sjc.dropbox.com:http (ESTABLISHED)
ssh     7204 dennis    3u  IPv4  63858      0t0  TCP metropolis.lan:39384->router-intern.lan:ssh (ESTABLISHED)

Informationen über ein Netzwerkinterface:
$ ifconfig l2tp-vpn1
l2tp-vpn1 Link encap:Point-to-Point Protocol 
          inet addr:188.246.6.99  P-t-P:188.246.4.1  Mask:255.255.255.255
          inet6 addr: fe80::449b:1a7b:df7c:8cb7/10 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:24697 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:1557600 (1.4 MiB)  TX bytes:234 (234.0 B)

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 2e:b0:5d:93:b6:17 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2cb0:5dff:fe93:b617/64 scope link
       valid_lft forever preferred_lft forever

Auflistung des ARP-Caches:
$ arp -an
? (192.168.1.1) at 2e:b0:5d:93:b6:17 [ether] on p2p1
? (192.168.1.14) at ca:fe:ba:be:00:03 [ether] on p2p1
? (192.168.1.12) at ca:fe:ba:be:00:01 [ether] on p2p1

Pakete mitschneiden (Sniffing)

$ tcpdump -i l2tp-vpn1
$ tcpdump -Xvv -i l2tp-vpn1


attachments

imageappend Append an Image
>