Iptables Grundgerüst Firewall

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Eigenschaften der Firewall

  • Der Host darf mit sich selbst kommunizieren
  • Pings werden vom Host beantwortet
  • Remotezugriff über den SSH Port aus dem LAN (192.168.178.0/24) ist freigeschaltet
  • Bereits etablierte und verwandte Verbindungen werden zugelassen
  • Auf Pakete, die das WAN-Interface (enp0s8) verlassen, wird Masquerading angewendet
  • Verworfene Pakete werden ins Kernel-log geschrieben

Shell-Skript

  • Das Skript sollte als Nutzer root erstellt werden, da iptables erhöhte Rechte zu ausführen benötigt
  • vim /usr/local/sbin/basic-firewall
#!/bin/bash

WANDEV="enp0s3"  # Wan-Interface
LANDEV="enp0s8"  # Lan-Interface

iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -i $WANDEV -s 192.168.3.0/24 -p tcp --dport 2222 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

iptables -A INPUT -j LOG --log-prefix "iptables drop INPUT: "
iptables -A OUTPUT -j LOG --log-prefix "iptables drop OUTPUT: "
iptables -A FORWARD -j LOG --log-prefix "iptables drop FORWARD: "

iptables -t nat -A POSTROUTING -o $WANDEV -j MASQUERADE
  • chmod +x /usr/local/sbin/basic-firewall
  • basic-firewall
  • Diese Einstellungen sind nur temporär und Verschwinden nach einem Neustart des Hosts

Regeln anzeigen

  • Die Optionen -nvL zeigen die Regeln der filter-Tabelle möglichst genau mit Statistiken an
  • iptables -nvL
Chain INPUT (policy DROP 1 packets, 36 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  lo     *       0.0.0.0/0            0.0.0.0/0
  219 14752 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     6    --  enp0s3 *       192.168.178.0/24     0.0.0.0/0            tcp dpt:22
    1    36 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "iptables drop INPUT:"

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "iptables drop FORWARD:"

Chain OUTPUT (policy DROP 2 packets, 144 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  *      lo      0.0.0.0/0            0.0.0.0/0
  129 22484 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    2   144 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "iptables drop OUTPUT:"
  • Für NAT-Regeln muss die Tabelle nat zusätzlich angegeben werden
  • iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  0    --  *      enp0s8  0.0.0.0/0            0.0.0.0/0