Ein richtiger Server sollte auch eine Firewall haben :-). Naja, es mag Leute geben die meinen das eine Firewall völliger Blödsinn ist aber immerhin ist man damit in der Lage einige zusätzliche Checks zu machen wie z.B. einen sogennanten ‘Nullscan’ zu erkennen oder andere fiese Tricks der bösen Buben da draussen.
Arnos IP-Tables Firewall ist in den Debian 10 Repositories enthalten und kann mit dem Installationsprogramm der Wahl – aptitude oder synaptic – installiert werden.
Im Grunde muß dann nur noch die Konfigurationsdatei firewall.conf entsprechend angepasst werden um brauchbare Ergebnisse zu erzielen. Ich habe demnach folgendes eingestellt und hier habe ich nur die Einstellungen aufgeführt an denen ich auch tatsächlich Änderungen vorgenommen habe:
# The external interface(s) that will be protected (and used as internet # connection). This is probably ppp+ or dsl+ for non-transparent(!) (A)DSL # modems otherwise it's probably "ethX" (eg. eth0). Multiple interfaces should # be space separated. # ------------------------------------------------------------------------------ EXT_IF="enp1s0"
Auf meiner Platform heisst das externe Interface “enp1s0”.
# Enable if THIS machines (dynamically) obtains its IP through (IPv4) DHCP # and possibly (IPv6) DHCPv6 (from your ISP) # ------------------------------------------------------------------------------ EXT_IF_DHCP_IP=0
Der Server hat eine feste IPv4 Adresse. Er wird nicht über einen übergeordneten DHCP-Server mit einer IP-Addresse versorgt.
# Enable if THIS machines (dynamically) obtains its IP through (IPv6) DHCPv6 # and not (IPv4) DHCP. Applies only when EXT_IF_DHCP_IP is set to "0". # (IPv6 Only) # ------------------------------------------------------------------------------ EXT_IF_DHCPV6_IPV6=0
Der Server unterstützt kein IPv6.
# # Internal (LAN) interface settings # # Specify here your internal network (LAN) interface(s). Multiple(!) interfaces # should be space separated. Remark this if you don't have any internal network # interfaces. Note that by default ALL traffic is accepted from these # interfaces. Traffic between multiple (seperate) internal interfaces is # blocked by default. Use the IF_TRUSTS setting (below) to enable traffic for # those. # ------------------------------------------------------------------------------ INT_IF="enp2s0"
Auf meiner Platform heisst das interne Interface “enp2s0”.
# Specify here the internal IPv4 subnet(s) which is/are connected to the # interface(s). For multiple interfaces(!) you can either specify # multiple subnets here or specify one big subnet for all internal interfaces. # Note that this variable is mainly used for antispoofing. # ------------------------------------------------------------------------------ INTERNAL_NET="192.168.2.0/24"
Das interne Netz hat die Adresse 192.168.2.0/24.
# # NAT (Masquerade, SNAT, DNAT) settings (IPv4 only!) # # Enable this if you want to perform NAT (masquerading) for your internal # network (LAN) (eg. share your internet connection with your internal # net(s) connected to eg. INT_IF) # ------------------------------------------------------------------------------ NAT=1
Dies ist eine der wichtigsten Einstellungen. Sie sorgt dafür dass Datenpakete, die nicht für den Server selbst bestimmt sind, durch den Server hindurch geroutet werden.
Bei Network Address Translation (NAT) wird in beide Richtungen – ein- und ausgehend – die Quelladresse bzw. die Zieladdresse in jedem einzelnen Paket entsprechend umgeschrieben.
# NAT TCP/UDP/IP forwards. Forward ports or protocols from the gateway to # an internal client through (D)NAT. Note that you can also use these # variables to forward ports to DMZ hosts. # .... # ------------------------------------------------------------------------------ NAT_FORWARD_TCP="81>192.168.2.15~80" NAT_FORWARD_UDP="" NAT_FORWARD_IP=""
Dies ist eine spezielle Port-Forwarding Einstellung um ein Gerät im internen Netz von extern erreichen zu können.
Hier werden alle externen Datenpakete die an den Port 81 gerichtet sind an die interne Addresse 192.168.2.15 an den Port 80 weiter geleitet.
In diesem Fall ist das ein simpler Videorecorder der von extern programmiert werden können soll.
# Enable this to allow for ICMP-requests(ping) from your LAN # ------------------------------------------------------------------------------ LAN_OPEN_ICMP=1
Hier erlaube ich ICMP am externen Interface. Dies könnte z.B. ein PING sein.
# Put in the following variables which ports or IP protocols you want to leave # open to the whole world. # ------------------------------------------------------------------------------ OPEN_TCP="2222 25 80 81" OPEN_UDP="" OPEN_IP=""
Diese Einstellung ist im Prinzip die wichtigste Einstellung. Hier werden die Ports festgelegt die nach außen hin prinzipiell geöffnet sind.
Der Server unterstützt die Services SSH, SMPT HTTP und einen anderen HTTP Server an Port 81 (s.o. Port Forwarding)