Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Ubuntu Server 15.x --> Systemd Firewall Script / OpenVPN Routing

Registriert
11. Juni 2010
Beiträge
4.080
Reaktionspunkte
2.847
Punkte
373
Hallo Zusammen,

da ich schon mehrfach gefragt worden bin bzgl. des Firewallscripts und dem Umstand das Ubuntu ab 15.10 Systemd statt Upstart nutzt, habe ich hier ein kleines HowTo.

Alle Informationen zu Systemd findet Ihr

Zu allererst muss der Firewall Service unter /etc/systemd/system/firewall.service mit folgendem Inhalt erstellt werden:
Code:
[Unit]
Description=firewall
After=network.target

[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/firewall start
ExecStop=/usr/bin/firewall stop
ExecReload=/usr/bin/firewall restart
User=root
#Da die Firewall im Systemkontext gestartet werden soll, muss als User root angegeben werden!

[Install]
WantedBy=multi-user.target

Als nächstes erstellen wir das Firewall Script unter /usr/bin:
Code:
#!/bin/bash
sleep 5
iptables=`which iptables`
iptablesv6=`which ip6tables`
#User Definition mit Zugriffen auf spezielle Services
user="user.dyndns.org,deinedyn.homedns.com"

# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0

case "$1" in
start)
echo "Starte Firewall..."
# alle Regeln löschen
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
#$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptablesv6 -P FORWARD DROP
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
$iptablesv6 -A INPUT -i lo -j ACCEPT
$iptablesv6 -A OUTPUT -o lo -j ACCEPT
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptablesv6 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#$iptablesv6 -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -P OUTPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT

#Wenn euer Server per Ping erreichbar sein soll, dann bitte entsprechend die IP ändern und die # entfernen!
#Standardmäßig ist der Server nicht anpingbar!
#$iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d 10.20.30.40 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$iptables -A OUTPUT -p icmp --icmp-type 0 -s 10.20.30.40 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#SSH Zugriff
#SSH Zugriff für ALLE Standardmäßig aktiv
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -j ACCEPT
#ODER:
#Zugriff haben nur Clients die für spezielle Services in der Variable user hinterlegt sind (Vorher bitte die # vor der nächsten Zeile entfernen und obrigen Zugriff für Alle deaktivieren!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $user -p tcp --dport 22 -j ACCEPT

#Oscam Webif Zugriff nicht beschränkt (Port ggf. anpassen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 8888 -j ACCEPT

#Oscam Webif Zugriff beschränkt (Port ggf. anpassen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $user -p tcp --dport 8888 -j ACCEPT

#CS378x Share (Camd3 TCP) (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 33399 -j ACCEPT

#CCcam Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22444 -j ACCEPT

#CS357x Share (Camd3 UDP) (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 11002 -j ACCEPT

#Block APNIC LACNIC
#Hinweis: Blockiert Asien, Südamerika, Mittelamerika, beschränkt Russland bzw. Osteuropa!
APNIC=(
        "1.0.0.0/8"
        "14.0.0.0/8"
        "27.0.0.0/8"
        "36.0.0.0/8"
        "39.0.0.0/8"
        "42.0.0.0/8"
        "49.0.0.0/8"
        "58.0.0.0/8"
        "59.0.0.0/8"
        "60.0.0.0/8"
        "61.0.0.0/8"
        "101.0.0.0/8"
        "103.0.0.0/8"
        "106.0.0.0/8"
        "110.0.0.0/8"
        "111.0.0.0/8"
        "112.0.0.0/8"
        "113.0.0.0/8"
        "114.0.0.0/8"
        "115.0.0.0/8"
        "116.0.0.0/8"
        "117.0.0.0/8"
        "118.0.0.0/8"
        "119.0.0.0/8"
        "120.0.0.0/8"
        "121.0.0.0/8"
        "122.0.0.0/8"
        "123.0.0.0/8"
        "124.0.0.0/8"
        "125.0.0.0/8"
        "126.0.0.0/8"
        "175.0.0.0/8"
        "180.0.0.0/8"
        "182.0.0.0/8"
        "183.0.0.0/8"
        "202.0.0.0/8"
        "203.0.0.0/8"
        "210.0.0.0/8"
        "211.0.0.0/8"
        "218.0.0.0/8"
        "219.0.0.0/8"
        "220.0.0.0/8"
        "221.0.0.0/8"
        "222.0.0.0/8"
        "223.0.0.0/8"
        "43.0.0.0/8"
        "133.0.0.0/8"
        "150.0.0.0/8"
        "153.0.0.0/8"
        "163.0.0.0/8"
        "171.0.0.0/8"
        "177.0.0.0/8"
        "179.0.0.0/8"
        "181.0.0.0/8"
        "186.0.0.0/8"
        "187.0.0.0/8"
        "189.0.0.0/8"
        "190.0.0.0/8"
        "200.0.0.0/8"
        "201.0.0.0/8"
        )
for blockapnic in ${APNIC[*]}
do
        $iptables -A INPUT --source $blockapnic -j DROP
done

#$iptables -N LOGGING
#$iptables -A INPUT -j LOGGING
#$iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
#$iptables -A LOGGING -j DROP
#$iptables -A LOGGING -j REJECT

#$iptables -A INPUT -i eth0 -j REJECT
;;
stop)
echo "Stoppe Firewall..."
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptablesv6 -P INPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT
$iptablesv6 -P FORWARD ACCEPT
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/firewall (start|stop)"
exit 1
#;;
esac
exit 0

Anschließend muss das Script ausführbar gemacht werden:
Code:
chmod 755 /usr/bin/firewall
Um die Konfiguration abzuschließen, muss der Service aktiviert werden:
Code:
systemctl enable firewall.service
Jetzt kann die Firewall aktiviert werden:
Code:
systemctl start firewall

Als Optionen funktieren folgende Eingaben:
Start der Firewall: systemctl start firewall
Stop der Firewall: systemctl stop firewall
Restart / Reload der Firewall: systemctl reload firewall
 
Zuletzt bearbeitet von einem Moderator:
AW: Ubuntu Server 15.x --> Systemd Firewall Script / OpenVPN Routing

Hallo Zusammen,

hier noch ein Update um OpenVPN Kommunikation durch die Firewall zu zulassen.

Code:
#!/bin/bash
sleep 5
iptables=`which iptables`
iptablesv6=`which ip6tables`
#User Definition mit Zugriffen auf spezielle Services
user="user.dyndns.org,deinedyn.homedns.com"

# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0

case "$1" in
start)
echo "Starte Firewall..."
# alle Regeln löschen
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
#$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptablesv6 -P FORWARD DROP
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
$iptablesv6 -A INPUT -i lo -j ACCEPT
$iptablesv6 -A OUTPUT -o lo -j ACCEPT
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptablesv6 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#$iptablesv6 -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -P OUTPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT

#Wenn euer Server per Ping erreichbar sein soll, dann bitte entsprechend die IP ändern und die # entfernen!
#Standardmäßig ist der Server nicht anpingbar!
#$iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d 10.20.30.40 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$iptables -A OUTPUT -p icmp --icmp-type 0 -s 10.20.30.40 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#SSH Zugriff
#SSH Zugriff für ALLE Standardmäßig aktiv
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -j ACCEPT
#ODER:
#Zugriff haben nur Clients die für spezielle Services in der Variable user hinterlegt sind (Vorher bitte die # vor der nächsten Zeile entfernen und obrigen Zugriff für Alle deaktivieren!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $user -p tcp --dport 22 -j ACCEPT

#Oscam Webif Zugriff nicht beschränkt (Port ggf. anpassen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 8888 -j ACCEPT

#Oscam Webif Zugriff beschränkt (Port ggf. anpassen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $user -p tcp --dport 8888 -j ACCEPT

#CS378x Share (Camd3 TCP) (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 33399 -j ACCEPT

#CCcam Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22444 -j ACCEPT

#CS357x Share (Camd3 UDP) (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 11002 -j ACCEPT

#VPN
#HINWEIS: Es kann sein das Ihr das Output Device -o venet0 auf eth0 oder ähnlich geändert werden muss!
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 1194 -j ACCEPT
#$iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED  -p udp --dport 1194 -j ACCEPT
$iptables -A INPUT -i tun+ -j ACCEPT
$iptables -A FORWARD -i tun+ -j ACCEPT
$iptables -A FORWARD -i tun+ -o venet0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$iptables -A FORWARD -i venet0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
$iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

#Somit besteht eine VPN Verbindung zwischen Client und Server. Der Gesamtedatenverkehr vom Client wird per VPN über den Server geroutet

#Block APNIC LACNIC
APNIC=(
        "1.0.0.0/8"
        "14.0.0.0/8"
        "27.0.0.0/8"
        "36.0.0.0/8"
        "39.0.0.0/8"
        "42.0.0.0/8"
        "49.0.0.0/8"
        "58.0.0.0/8"
        "59.0.0.0/8"
        "60.0.0.0/8"
        "61.0.0.0/8"
        "101.0.0.0/8"
        "103.0.0.0/8"
        "106.0.0.0/8"
        "110.0.0.0/8"
        "111.0.0.0/8"
        "112.0.0.0/8"
        "113.0.0.0/8"
        "114.0.0.0/8"
        "115.0.0.0/8"
        "116.0.0.0/8"
        "117.0.0.0/8"
        "118.0.0.0/8"
        "119.0.0.0/8"
        "120.0.0.0/8"
        "121.0.0.0/8"
        "122.0.0.0/8"
        "123.0.0.0/8"
        "124.0.0.0/8"
        "125.0.0.0/8"
        "126.0.0.0/8"
        "175.0.0.0/8"
        "180.0.0.0/8"
        "182.0.0.0/8"
        "183.0.0.0/8"
        "202.0.0.0/8"
        "203.0.0.0/8"
        "210.0.0.0/8"
        "211.0.0.0/8"
        "218.0.0.0/8"
        "219.0.0.0/8"
        "220.0.0.0/8"
        "221.0.0.0/8"
        "222.0.0.0/8"
        "223.0.0.0/8"
        "43.0.0.0/8"
        "133.0.0.0/8"
        "150.0.0.0/8"
        "153.0.0.0/8"
        "163.0.0.0/8"
        "171.0.0.0/8"
        "177.0.0.0/8"
        "179.0.0.0/8"
        "181.0.0.0/8"
        "186.0.0.0/8"
        "187.0.0.0/8"
        "189.0.0.0/8"
        "190.0.0.0/8"
        "200.0.0.0/8"
        "201.0.0.0/8"
        )
for blockapnic in ${APNIC
[*]}
do
        $iptables -A INPUT --source $blockapnic -j DROP
done

#$iptables -N LOGGING
#$iptables -A INPUT -j LOGGING
#$iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
#$iptables -A LOGGING -j DROP
#$iptables -A LOGGING -j REJECT

#$iptables -A INPUT -i eth0 -j REJECT
;;
stop)
echo "Stoppe Firewall..."
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD ACCEPT
#$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptablesv6 -P INPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT
$iptablesv6 -P FORWARD ACCEPT
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/firewall (start|stop)"
exit 1
#;;
esac
exit 0
 
AW: Ubuntu Server 15.x --> Systemd Firewall Script / OpenVPN Routing

Hi,

super Anleitung, danke!

Kann ich diesen Teil hier in mein bestehendes iptables-Skript einfach einfügen?

Ist die Stelle in der Verkettung wichtig?

Code:
#Block APNIC LACNIC
APNIC=(
        "1.0.0.0/8"
        "14.0.0.0/8"
        "27.0.0.0/8"
        "36.0.0.0/8"
        "39.0.0.0/8"
        "42.0.0.0/8"
        "49.0.0.0/8"
        "58.0.0.0/8"
        "59.0.0.0/8"
        "60.0.0.0/8"
        "61.0.0.0/8"
        "101.0.0.0/8"
        "103.0.0.0/8"
        "106.0.0.0/8"
        "110.0.0.0/8"
        "111.0.0.0/8"
        "112.0.0.0/8"
        "113.0.0.0/8"
        "114.0.0.0/8"
        "115.0.0.0/8"
        "116.0.0.0/8"
        "117.0.0.0/8"
        "118.0.0.0/8"
        "119.0.0.0/8"
        "120.0.0.0/8"
        "121.0.0.0/8"
        "122.0.0.0/8"
        "123.0.0.0/8"
        "124.0.0.0/8"
        "125.0.0.0/8"
        "126.0.0.0/8"
        "175.0.0.0/8"
        "180.0.0.0/8"
        "182.0.0.0/8"
        "183.0.0.0/8"
        "202.0.0.0/8"
        "203.0.0.0/8"
        "210.0.0.0/8"
        "211.0.0.0/8"
        "218.0.0.0/8"
        "219.0.0.0/8"
        "220.0.0.0/8"
        "221.0.0.0/8"
        "222.0.0.0/8"
        "223.0.0.0/8"
        "43.0.0.0/8"
        "133.0.0.0/8"
        "150.0.0.0/8"
        "153.0.0.0/8"
        "163.0.0.0/8"
        "171.0.0.0/8"
        "177.0.0.0/8"
        "179.0.0.0/8"
        "181.0.0.0/8"
        "186.0.0.0/8"
        "187.0.0.0/8"
        "189.0.0.0/8"
        "190.0.0.0/8"
        "200.0.0.0/8"
        "201.0.0.0/8"
        )
for blockapnic in ${APNIC
[*]}
do
        $iptables -A INPUT --source $blockapnic -j DROP
done
 
AW: Ubuntu Server 15.x --> Systemd Firewall Script / OpenVPN Routing

Hi,

Wo du es setzt ist prinzipiell egal...wird nur problematisch wenn du eine Regel hast die dann möglicherweise die Chain wieder rückgangig machst.
Aber generell würde ich das immer zum Schluss setzen lassen.

Nachtrag:
Nach dem iptables -L sollte die Input Chain wie folgt aussehen:
DROP all -- 1.0.0.0/8 anywhere
DROP all -- 14.0.0.0/8 anywhere
DROP all -- 27.0.0.0/8 anywhere
DROP all -- 36.0.0.0/8 anywhere
DROP all -- 39.0.0.0/8 anywhere
DROP all -- 42.0.0.0/8 anywhere
DROP all -- 49.0.0.0/8 anywhere
.
.
.
.
 
Zuletzt bearbeitet:
Guten Abend,
Ich habe nach deiner Anleitung die Firewall eingerichtet. opvenvpn läuft auch. Mein Problem ist das
ich einen bestimmten Port nicht erreichen kann . ich gebe die ip des Vps servers ein und leider passiert nichts.

habe das noch ins firewall script eingefügt
#port forwarding
$iptables -A FORWARD -j ACCEPT -p udp --dport 55545 --sport 1024:65535 -d 10.8.0.3 -m state --state NEW
$iptables -A FORWARD -j ACCEPT -p tcp --dport 55545 --sport 1024:65535 -d 10.8.0.3 -m state --state NEW
$iptables -t nat -A PREROUTING -i pppoe_dsl -p udp --dport 55545 -j DNAT --to-destination 10.8.0.3:55545
$iptables -t nat -A PREROUTING -i pppoe_dsl -p tcp --dport 55545 -j DNAT --to-destination 10.8.0.3:55545

leider geht es nicht und ich weisss nicht mehr weiter .

Mein System ist so aufgebaut Vps server mit openvpn server verbunden mit einem rasppi der als Client fungiert.
würde mich freuen wenn ihr mir helfen könnt.
lg
 
Zurück
Oben