htt.tito
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Hallo! Wieder einmal ein iptables Problem. Internet = ppp0 WLAN/LAN = br0 (eno1/wlp1s0) Apache Webserver = 192.168.0.100:80 , 192.168.0.100:443 Mein Webserver ist via LTE USB Stick und wvdial über ppp0 mit dem Internet verbunden. Mit meinem iptables Kenntnissen bin ich am Ende... ☹ - Ich kann entweder meine Clienten im LAN mit dem Internet verbinden ODER - Nur zu meinem Webserver verbinden Je nach dem, welche Regeln ich setzte....aber ich will beides..... Hier meine Regeln... #!/bin/bash
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
INET=ppp0
LOCAL=br0
LO=lo
LOCAL_NET="192.168.0.0/24"
VPN_NET="10.8.0.0/24"
#echo "Schalte Fail2ban aus"
#service fail2ban stop
echo "Schalte Router aus..."
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "Loesche iptables"
$IPT -F
$IPT -X
$IPT -t nat -X
$IPT -t nat -F
$IPT -t mangle -X
$IPT -t mangle -F
echo "Loesche ip6tables"
$IPT6 -F
$IPT6 -X
$IPT6 -t nat -X
$IPT6 -t nat -F
$IPT6 -t mangle -X
$IPT6 -t mangle -F
echo "Default policy drop ip6tables"
$IPT6 -P INPUT DROP
$IPT6 -P OUTPUT DROP
$IPT6 -P FORWARD DROP
echo "Default policy drop"
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
echo "MEINE Chains"
$IPT -N MYDROP
$IPT -N MYACCEPT
echo "Logging..."
$IPT -A MYDROP -j LOG --log-prefix "FW-DROP: "
$IPT -A MYDROP -j DROP
$IPT -A MYACCEPT -j LOG --log-prefix "FW-ACCEPT: "
$IPT -A MYACCEPT -j ACCEPT
echo "Kamera Internet sperren..."
$IPT -I FORWARD -p tcp -s 192.168.0.15 ! -d 192.168.0.0/24 -j MYDROP
echo "Schalte connection tracking ein..."
$IPT -A FORWARD -m conntrack --ctstate=RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m conntrack --ctstate=INVALID -j MYDROP
$IPT -A INPUT -m conntrack --ctstate=RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -m conntrack --ctstate=INVALID -j MYDROP
$IPT -A OUTPUT -m conntrack --ctstate=RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate=INVALID -j MYDROP
echo "SSH erlauben..."
$IPT -A INPUT -p tcp --dport 30022 -m conntrack --ctstate=NEW -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p tcp --dport 30022 -j ACCEPT
echo "Schnittstelle maskieren..."
$IPT -t nat -A POSTROUTING -j MASQUERADE
echo "Loopback freischalten"
$IPT -A INPUT -i $LO -j ACCEPT
$IPT -A OUTPUT -o $LO -j ACCEPT
echo "DNS Anfragen..."
$IPT -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
echo "ping..."
$IPT -A INPUT -p icmp -j MYACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT
$IPT -A FORWARD -p icmp -j ACCEPT
echo "Samba LOKAL Freigabe..."
$IPT -A INPUT -p TCP -i $LOCAL -s $LOCAL_NET -d $LOCAL_NET --dport=139 -j ACCEPT
$IPT -A INPUT -p TCP -i $LOCAL -s $LOCAL_NET -d $LOCAL_NET --dport=445 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 139 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 445 -j ACCEPT
$IPT -A INPUT -p UDP -i $LOCAL -s $LOCAL_NET -d $LOCAL_NET --dport=137 -j ACCEPT
$IPT -A INPUT -p UDP -i $LOCAL -s $LOCAL_NET -d $LOCAL_NET --dport=138 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p UDP --dport 137 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p UDP --dport 138 -j ACCEPT
echo "Zoneminder..."
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 8080 -j ACCEPT
echo "DHCP..."
$IPT -A INPUT -p UDP --dport 67 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p UDP --dport 67 -j ACCEPT
echo "http und https port Server..."
$IPT -A INPUT -p TCP --dport=80 -j ACCEPT
$IPT -A INPUT -p TCP --dport=443 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
echo "MIT DIESE ERREICHE ICH NUR DEN WEBSERVER - KEIN INTERNET AM CLIENTEN"
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.100
echo "MIT DIESE ERREICHE ICH DEN WEBSERVER VON AUSSEN - HABE INTERNET AM CLIENTEN"
$IPT -t nat -A PREROUTING -i $INET -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:80
$IPT -t nat -A PREROUTING -i $INET -p tcp --dport 443 -j DNAT --to-destination 192.168.0.100:443
echo "MIT DIESE ERREICHE ICH DAS INTERNET - ABER NICHT MEINEN WEBSERVER VOM CLIENTEN AUS"
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=80 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=443 -j ACCEPT
echo "webmin port Server..."
$IPT -A INPUT -p TCP -i $LOCAL -s $LOCAL_NET --dport=10000 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p TCP --dport 10000 -j ACCEPT
echo "squid proxy port Server..."
$IPT -A INPUT -p TCP --dport=3128 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 3128 -j ACCEPT
echo "smtp ports 25/TCP 465/SSL-TLS 587/STARTTLS Server..."
$IPT -A INPUT -p TCP --dport=587 -j ACCEPT
$IPT -A INPUT -p TCP --dport=25 -j ACCEPT
$IPT -A INPUT -p TCP --dport=465 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 587 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 25 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 465 -j ACCEPT
echo "imap/143 imaps/993 port Server..."
$IPT -A INPUT -p TCP --dport=993 -j ACCEPT
$IPT -A INPUT -p TCP --dport=143 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 993 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p TCP --dport 143 -j ACCEPT
echo "jellyfin port Server..."
$IPT -A INPUT -p TCP -i $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m multiport --dports=8096,8920 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 8096 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 8920 -j ACCEPT
echo "tvheadend port Server..."
$IPT -A INPUT -p TCP -i $LOCAL -s $LOCAL_NET -m multiport --dports=9981,9982 -j ACCEPT
$IPT -A INPUT -p UDP -i $LOCAL -s $LOCAL_NET -m multiport --dports=32787,65001 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p TCP --dport 9981 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p TCP --dport 9982 -j ACCEPT
$IPT -A OUTPUT -o $LO -s $LOCAL_NET -d $LOCAL_NET -m state --state NEW -p TCP --dport 9982 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p UDP --dport 32787 -j ACCEPT
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p UDP --dport 65001 -j ACCEPT
echo "MYSQL öffnen..."
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p TCP --dport 3306 -j ACCEPT
echo "SMA Speedwire/SBFspot..."
$IPT -A OUTPUT -o $LOCAL -s $LOCAL_NET -m state --state NEW -p UDP --dport 9522 -j ACCEPT
echo "minidlnad port Server..."
$IPT -A INPUT -p UDP -s $LOCAL_NET --dport=1900 -j ACCEPT
echo "Internet Clienten..."
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=993 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=587 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=25 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=143 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LOCAL -o $INET -s $LOCAL_NET --dport=465 -j ACCEPT
echo "OPENVPN Regeln..."
$IPT -A INPUT -i tun0 -s $VPN_NET -j ACCEPT
$IPT -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
$IPT -A FORWARD -s $VPN_NET -j ACCEPT
$IPT -A FORWARD -p UDP --dport=1194 -j ACCEPT
$IPT -A INPUT -m state --state NEW -m udp -p udp --dport=1194 -j ACCEPT
$IPT -A OUTPUT -m state --state NEW -p UDP --dport 1194 -j ACCEPT
$IPT -A OUTPUT -o tun0 -s $VPN_NET -j ACCEPT
echo "Multicast..."
$IPT -A INPUT -s 224.0.0.0/4 -j ACCEPT
$IPT -A FORWARD -s 224.0.0.0/4 -d 224.0.0.0/4 -j ACCEPT
$IPT -A OUTPUT -d 224.0.0.0/4 -j ACCEPT
echo "Droplog..."
$IPT -A INPUT -j LOG --log-prefix "FW-LAST-IN-DROP: "
$IPT -A OUTPUT -j LOG --log-prefix "FW-LAST-OUT-DROP: "
#echo "Firewall OUTPUT darf ALLES..."
#$IPT -A OUTPUT -j ACCEPT
echo "Schalte Router ein"
echo 1 > /proc/sys/net/ipv4/ip_forward
#echo "Schalte Fail2ban ein"
#service fail2ban start Moderiert von kB: Aus dem Forum „Sicherheit“ in besser passendes Forum verschoben.
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9627
Wohnort: Münster
|
Grundregel: Netfilter kann keine Verbindungsmöglichkeiten erschaffen. Es kann lediglich grundsätzlich mögliche Verbindungen verbieten. Prüfe daher: Entferne alle Netfilter-Regeln. Zeige dann: sudo iptables-save Zeige die eingericteten Routen: ip -4 route Kannst Du in diesem Zustand alles erreichen, was Du erreichen willst? Ist alles, was erreichbar sein soll, auch erreichbar?
Erst wenn dieser Test uneingeschränkt positiv ausfällt, dann erst füge schrittweise Netfilter-Regeln hinzu, welche die Konnektivität einschränken.
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
OK, wenn ich das mache geht gar nichts mehr....
Kein Internet, Kein Webserver..... Die Ausgabe von ip -4 route lautet: default via 10.64.64.64 dev ppp0
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.64.64.64 dev ppp0 proto kernel scope link src 178.112.187.58
192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.100
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Und jetzt? KANNST DU MIR HELFEN???
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9627
Wohnort: Münster
|
htt.tito schrieb: […]
Die Ausgabe von ip -4 route lautet: default via 10.64.64.64 dev ppp0
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.64.64.64 dev ppp0 proto kernel scope link src 178.112.187.58
192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.100
Dieser Rechner ist also über eine PPP-Verbindung mit einer Gegenstelle verbunden. Seine lokale Adresse lautet 178.112.187.58 , das ist eine öffentliche IP-Adresse und sollte (ist aber nicht) somit weltweit erreichbar sein. Die Adresse der Gegenstelle lautet 10.64.64.64 , und die ist auch das Gateway zur Welt. Außerdem gibt es noch weitere lokale Schnittstellen, wofür gebrauchst Du diese? Zeige bitte: ip -br link ; ip -4 addr Teste erst einmal, ob Du von diesem Rechner nach draußen telefonieren kannst: ping -c1 178.112.187.58
ping -c1 10.64.64.64
ping -c1 213.95.41.4
host ubuntuusers.de
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Hallo noch mal ☺
Ja, ich kann vom Server aus pingen ins Internet und alles, aber darum gehts doch gar nicht! Ich brauche Hilfe bei den IPTABLES, denn da stimmt was nicht! IST GELB markiert! OHNE IPTABLES wer sagt dem Kernel dass er ppp0 auf br0 weiterleiten soll?! Erklär das mal bitte. Bearbeitet von kB: Zur Verbesserung der Lesbarkeit die Aufzählung repariert.
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9627
Wohnort: Münster
|
htt.tito schrieb: […]
br0 ist jedenfalls kein üblicher Name für eine LAN-Schnittstelle. Vermutlich hast Du da eine Netzwerkbrücke konfiguriert.
[…]
OHNE IPTABLES wer sagt dem Kernel dass er ppp0 auf br0 weiterleiten soll
Für die Weiterleitung von IP-Paketen ist, wie schon erklärt, einzig das Routing-System des Kernels zuständig. Das hat mit Netfilter nichts zu tun. Die Routen hast Du aber – wie auch immer, Du schreibst dazu ja nichts – schon eingerichtet. Ein an br0 angeschlossener Rechner sollte die Gegenstelle Deines Providers unter deren Adresse 10.64.64.64 per ping erreichen können, ob die Gegenstelle auch antwortet, hat nur der Provider in der Hand. Wenn ein an br0 angeschlossener Rechner allerdings das freie Internet erreichen können soll, dann muss man 10.64.64.64 über die Absenderadresse täuschen, indem Dein Server die Absender-Adressen aus dem Bereich 192.168.0/24 per NAT/PT umsetzt auf die öffentliche Adresse 178.112.187.58/32 . Dazu und nur dazu benötigst Du Netfilter mit dem Target MASQUERADE von iptables: iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE Du musst natürlich sicherstellen:
IP-Forwarding ist grundsätzlich eingeschaltet. Die FORWARD-Tabelle von Netfilter darf den Verkehr zwischen br0 und ppp0 nicht herausfiltern. Die MASQUERADE-Regel steht an richtiger Stelle in der POSTROUTING-Tabelle.
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Ja Danke! - br0 ist eine Netzwerkbrücke (steht schon ganz am Anfang meiner Frage - und zwar von eno1 & wlp1s0) Ja, da hast du vollkommen recht mit den Netfiltern.... Habe in meinen Regeln das "-o ppp0" in MASQUERADE vergessen ☹ Es funktioniert auch alles, nur das Erreichen meiner Webseiten aus dem lokalen LAN funktioniert nicht... Das ist die eigentliche Frage! Schau mal bitte auf die gelben Markierungen im File ganz oben.... Da ist irgendwas falsch, finde nur nicht heraus was....
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9627
Wohnort: Münster
|
Du musst den Webserver natürlich unter der Adresse 178.112.187.58 laufen lassen und ihn auch darüber ansprechen.
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Ok, nur wie Ich habe eine Wechsel IP ?! Ich erkläre das noch mal ganz einfach: - Wenn ich vor meinem PC sitze und www.meinedomain.xy eintippe, komme ich nicht auf meine Webseiten... - Wenn ich auf einem PC irgendwo auf der Welt sitze und das selbe mache, komme ich auf meine Webseiten...
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14314
|
htt.tito schrieb: - Wenn ich vor meinem PC sitze und www.meinedomain.xy eintippe, komme ich nicht auf meine Webseiten...
Das liegt daran, dass dein Router (oder gleichwertig) kein NAT-Loopback (... auch bekannt als Hairpinning oder als NAT-Reflection) machen kann. Konfiguriere auf deinem PC die lokale Namensauflösung so, dass nur dort "www.meinedomain.xy" auf die lokale IP-Adresse des Servers aufgelöst wird (d. h. als workaround).
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
#lubux Hallo! Warum erreiche ich meinem Webserver mit der Regel: echo "MIT DIESE ERREICHE ICH NUR DEN WEBSERVER - KEIN INTERNET AM CLIENTEN"
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.100 ??? Da werden dann alle Verbindungen von br0 von port 80/443 auf 192.168.0.100 umgeleitet... deshalb habe ich dann kein Internet am Clienten.... Lässt sich das nicht irgendwie umformulieren?? NAT-Loopback = Bahnhof ???!!!
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14314
|
htt.tito schrieb: Warum erreiche ich meinem Webserver mit der Regel: echo "MIT DIESE ERREICHE ICH NUR DEN WEBSERVER - KEIN INTERNET AM CLIENTEN"
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100
#$IPT -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.100
Da werden dann alle Verbindungen von br0 von port 80/443 auf 192.168.0.100 umgeleitet...
Na weil diese iptables-Regeln für alle Ziel-IP-Adressen (destination-IP-address) gültig sind. htt.tito schrieb: deshalb habe ich dann kein Internet am Clienten....
Internet solltest Du schon haben, nur die TCP-Port 80 und 443 kannst Du nicht im Internet erreichen.
Teste mal:
nc -zv 1.1.1.1 53
ping -c 3 1.1.1.1
auf deinem Client. htt.tito schrieb: Lässt sich das nicht irgendwie umformulieren??
Ohne feste/statische externe IPv4-Adresse für deinen Server, geht das nicht. htt.tito schrieb: NAT-Loopback = Bahnhof ???!!!
BTW: Im Internet findet man viel Info zu "NAT-Loopback/Hairpinning/NAT-Reflecion".
|
htt.tito
(Themenstarter)
Anmeldungsdatum: 7. Dezember 2014
Beiträge: 87
|
Ja stimmt, falsche Formulierung...komme eben nur nicht auf port 80/443. Ich hab was gelesen, wo man seine externe IP über einen cronejob auslesen kann und dann in ip tables einträgt... Wäre das eine Möglichkeit? Wie würde dann die iptables lauten?
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14314
|
htt.tito schrieb: Ich hab was gelesen, wo man seine externe IP über einen cronejob auslesen kann und dann in ip tables einträgt... Wäre das eine Möglichkeit? Wie würde dann die iptables lauten?
Funktioniert z. Zt. (d. h. nach dem Du die nicht brauchbaren iptables-Regeln gelöscht hast) z. B. folgende iptables-Regel auf deinem Client:
sudo iptables -t nat -I OUTPUT 1 -o <output-Interface> -p tcp -m multiport --dports 80,443 -d <externe-IPv4-Adresse-server> -j DNAT --to-destination 192.168.0.100
(output-Interface und externe-IPv4-Adresse-server anpassen und ohne spitze Klammern)?
|