Frage Iptables Regeln für Ubuntu 16.04 basierte Firewall


Ich versuche, Iptables-Regeln in meinem Server zu setzen, um es als Ubuntu 16.04 gegründete Brandmauer zu benutzen. Ich habe gute Kenntnisse in Ubuntu. Ich habe ein wenig auf der Ubuntu-Hilfeseite und in Askubuntu gesucht. Ich habe die folgenden Regeln entwickelt, die in einer Datei gespeichert und als root (sudo sh-Datei) ausgeführt werden können:

#!/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 die folgende Netzwerktopologie:

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

  1. Auf meinem Server möchte ich den gesamten eingehenden Datenverkehr im WAN blockieren (einschließlich Pings und andere Discovery- und / oder Hacking-Anfragen), aber den Internetverkehr für den SERVER und für 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 verwalte, ich möchte verhindern, dass lokale Benutzer im LAN und Internet im WAN auf Dienste und alles auf meinem SERVER zugreifen oder sich damit verbinden. 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önnen?

  4. Ist es sicher, den SSH-Port im WAN auf das Internet zu öffnen, wenn ich die folgende Regel verwende? (Hinweis: Ich verwende nur die Authentifizierung mit ssh Public Key, keine Klartextpasswörter.)

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

Vielen Dank, Jungs.


3
2018-06-14 01:31


Ursprung




Antworten: