Iptables-Regeln für Ubuntu 16.04-basierte Firewall

Iptables-Regeln für Ubuntu 16.04-basierte Firewall

Ich versuche, iptables-Regeln auf meinem Server einzurichten, um ihn als Firewall auf Basis von Ubuntu 16.04 zu verwenden. Ich habe recht gute Kenntnisse in Ubuntu. Ich habe auf der Ubuntu-Hilfeseite und in Askubuntu gesucht. Dabei bin ich auf die folgenden Regeln gestoßen, die in einer Datei gespeichert und als Root ausgeführt werden können (sudo sh-Datei):

#!/bin/bash

WAN_IF="enp2s0"
WAN_IP=$(/sbin/ip addr show dev "$WAN_IF" | perl -lne 'if(/inet (\S+)/){print$1;last}');
LAN_IF="enp4s9"
LAN_IP=$(/sbin/ip addr show dev "$LAN_IF" | perl -lne 'if(/inet (\S+)/){print$1;last}');
##### Internal network address (in CIDR notation)
LAN_NET="192.168.17.0/24"

echo
echo "[WAN Interface: $WAN_IF] [WAN IP: $WAN_IP]"
echo "[LAN Interface: $LAN_IF] [LAN IP: $LAN_IP] [Network: $LAN_NET]"
echo
echo -n "Enabling IP Forwarding...\n"

##### Enabling IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

echo
echo -n "Loading Firewall Rules...\n"
echo -n "Enabling NAT Rewriting on IN/OUT Packets...\n"

/sbin/iptables-restore <<-EOF;
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

##### INPUT RULES
-A INPUT -i lo -j ACCEPT
-A INPUT -i $LAN_IF -j ACCEPT
-A INPUT -i $WAN_IF -s $LAN_NET -j DROP
-A INPUT -i $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

##### FORWARD RULES
-A FORWARD -i $LAN_IF -o $WAN_IF -j ACCEPT
-A FORWARD -i $WAN_IF -o $LAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

##### OUTPUT RULES
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o $WAN_IF -d $LAN_NET -j DROP
-A OUTPUT -o $LAN_IF -s $LAN_IP -d $LAN_NET -j ACCEPT
-A OUTPUT -o $WAN_IF -s $WAN_IP -j ACCEPT

##### All Other Requests are DROPPED
-A OUTPUT -j DROP
-A INPUT -j DROP
COMMIT


##### NAT Rewriting on IN/OUT Packets
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o $WAN_IF -j MASQUERADE
COMMIT
EOF


echo -n "Bloacking IP6...\n"
/sbin/ip6tables-restore <<-EOF;
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
EOF

echo
echo "Done!"
echo

Meine Fragen sind:

Ich habe folgende Netzwerktopologie:

Internet >>>>> [ WAN <<<>>> SERVER <<<>>> LAN ] <<<<< Lokale Benutzer

  1. Auf meinem Server möchte ich den gesamten eingehenden Verkehr im WAN blockieren (einschließlich Pings und anderer Erkennungs- und/oder Hacking-Anfragen), aber den Internetverkehr für den SERVER und die lokalen Benutzer im LAN zulassen. Ist der obige Code mit solchen Regeln in Ordnung?

  2. Ich habe einige Dienste auf meinem SERVER (wie MySQL und SSH), die ich direkt vom SERVER selbst aus verwalte. Ich möchte lokalen Benutzern im LAN und Internet im WAN den Zugriff auf oder die Verbindung zu Diensten und allem auf meinem SERVER verwehren. Ist der obige Code mit einer solchen Regel in Ordnung?

  3. Gibt es Hinweise oder Sicherheitsmängel, die durch die oben genannten Regeln verursacht werden könnten?

  4. Ist es sicher, den SSH-Port zum Internet im WAN zu öffnen, wenn ich die folgende Regel verwende? (Hinweis: Ich verwende nur die SSH-Authentifizierung mit öffentlichem Schlüssel, keine Passwörter im Klartext.)

    -A INPUT -i $WAN_IF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -d $WAN_IP --dport 22 -j ACCEPT
    

Vielen Dank, Jungs.

verwandte Informationen