hokaido
Goto Top

Adguard Server Absicherung

Hallo,

ich möchte mir Adguard Home auf ewinem Server installieren.

Der Server an sich ist bereits abgesichert mit ufw, fail2ban, keine unnötigen Ports offen, anderer SSH Port, SSH Certs, etc.
Adgaurd soll nur als DoT betrieben werden, kein DHCP etc.

Welche Sicherheitsmaßnahmen würdet Ihr ergreifen, damit nicht jeder meine Adguard Instanz mit Anfragen flutet?

Danke

Content-ID: 7628122721

Url: https://administrator.de/contentid/7628122721

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

aqui
aqui 23.06.2023 um 15:29:51 Uhr
Goto Top
Kardinalsfrage: Ist das ein öffentlicher oder ein lokaler Server?

Wenn öffentlich, richtest du dir mit der nftables einen Filter ein der TCP und UDP 53 nur von ganz bestimmten IP Adressen zulässt die nur deine eigenen Clients benutzen.
So könnte eine /etc/nftables.conf damit aussehen:
#!/usr/sbin/nft -f

flush ruleset

define pub_iface = "eth0"  
define ssh_port = 52222
define DNS_NETS = {
        a.b.c.0/24, d.e.0.0/16
        }

table inet drop-bad-ct-states {
	chain prerouting {
		type filter hook prerouting priority -150; policy accept;
		# drop packets in "invalid" connection-tracking state 
		ct state invalid drop
		# drop tcp packets for new connections that aren't syn packets 
		tcp flags & (fin|syn|rst|ack) != syn ct state new counter drop
		# drop XMAS packets.
		tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
		# drop NULL packets.
		tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
		# drop new connections over rate limit
		ct state new limit rate over 1/second burst 10 packets drop
		}
}

table inet filter {
	chain input {
		type filter hook input priority 0; policy drop;
		# accept any localhost traffic
		iif lo accept

		# accept traffic originated from us
		ct state established,related accept

		# accepted ICMP types
		# ip protocol icmp icmp type {echo-request, echo-reply, time-exceeded, parameter-problem, destination-unreachable } accept
		ip protocol icmp icmp type {time-exceeded, parameter-problem, destination-unreachable } accept

		# accept common local TCP services on public interface
		# tcp dport { ssh, http, https } ct state new accept
		iif $pub_iface tcp dport { $ssh_port } ct state new accept

		# accepted DNS on public interface 
		iif $pub_iface udp saddr $DNS_NETS dport { dns } accept 
		iif $pub_iface tcp saddr $DNS_NETS dport { dns } accept 

		# accept neighbour discovery otherwise IPv6 connectivity breaks.
		ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept

		# log and count dropped traffic
		# log prefix "[nftables]Denied: " counter drop 
		# only count dropped traffic
		counter drop
	}
	chain forward {
		type filter hook forward priority 0;
	}
	chain output {
		type filter hook output priority 0;
	}
} 
a.b.c.0/24 und d.e.0.0/16 und ggf. mehr Absender die du erlauben willst lässt du mit den entsprechenden Netz- oder Hostadressen passieren.
hokaido
hokaido 23.06.2023 um 15:39:24 Uhr
Goto Top
Danke erst mal für die Antwort.
Um es zu präzisieren:
Öffentlicher VPS Inder Oracle Cloud. Die hat ja nochmal eine Art Firewall vorher .
Ubuntu
UFW im Einsatz kein nftables.
aqui
aqui 23.06.2023 aktualisiert um 16:15:35 Uhr
Goto Top
UFW im Einsatz kein nftables.
Leider recht sinnfreie Antwort! ☹️
ufw
Es bleibt also bei der Firewall und dem o.a. Regelwerk. Ob du das per UFW, KlickiBunti oder Konf Datei eingibst ist doch völlig Wumpe. iptables werden kaum noch verwendet da der Nachfolger bekanntlich nftables sind!
Alle Debian basierten Distros (zu denen auch Ubuntu gehört) nutzen seit Bullseye nur noch nftables!
Dani
Dani 23.06.2023 um 22:00:54 Uhr
Goto Top
Moin,
Welche Sicherheitsmaßnahmen würdet Ihr ergreifen, damit nicht jeder meine Adguard Instanz mit Anfragen flutet?
ich kann mir nicht vorstellen, dass der Service auf Port 853/tcp (DoT) geflutet wird.

Unabhängig davon habe ich meine privaten Instanzen mit einem Geo IP Filter versehen. Permanent ist der Zugriff aus Deutschland möglich. Temporär nehme ich zusätzlich das Land auf, in dem ich geschäftlich oder im Urlaub bin.


Gruß,
Dani
hokaido
hokaido 24.06.2023 um 00:19:52 Uhr
Goto Top
@aqui: Schwierig umzusetzten, wenn man keine feste IP hat

@Dani: Kannst Du näheres dazu beschreiben? Wonach bist du vorgegangen? J, ich hab nach GEO IP Blocking gesucht, aber es gibt unzählige Ansätze
aqui
aqui 24.06.2023 aktualisiert um 09:32:46 Uhr
Goto Top
Schwierig umzusetzten, wenn man keine feste IP hat
Die bewegt sich ja aber immer in einem größeren Bereich also machst du die Maske halt entsprechend groß. Oder blockst zumindestens mit GeoIPs nur die Länder wo du Requests haben willst.
https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching
Es gibt ja viele Wege nach Rom.... Ansonsten bleibt dir ja nur offen lassen. face-sad
aqui
aqui 02.07.2023 um 15:57:45 Uhr
Goto Top
Wenn es das denn nun war bitte deinen Thread auch als erledigt schliessen!
hokaido
hokaido 04.07.2023 um 09:26:34 Uhr
Goto Top
Ob es das schon war, kann ich noch nciht sagen, da ich noch nicht die Zeit hatte, mich ausführlich mit den genannten Tipps zu beschäftigen.

Aber eine Frage hätte ich vorab noch:

Wenn ich Adguard nur über DoT nutzen will, das Adminmenü nicht dauern auffrufen will, kann ich doch alle Ports (also 53 TCP & UDP, 80, 443, und 3000) bis auf 853 TCP dicht machen, oder? Bei Bedarf mach ich den Port fürs Adminmenü auf...
Dani
Dani 04.07.2023 aktualisiert um 09:47:49 Uhr
Goto Top
Moin,
Wenn ich Adguard nur über DoT nutzen will, das Adminmenü nicht dauern auffrufen will, kann ich doch alle Ports (also 53 TCP & UDP, 80, 443, und 3000) bis auf 853 TCP dicht machen, oder
Die erste Antwort lautet Ja, wenn du das SSL-Zertifikat über DNS Challenge abrufst. Wenn du dagegen HTTP Challenge nutzt, muss auch der Port 80 offen ein.


Gruß,
Dani
aqui
aqui 04.07.2023 aktualisiert um 09:57:12 Uhr
Goto Top
Kollege @Dani hat es schon gesagt. Das ist richtig, die kannst du dann dichtmachen und brauchst nur noch TCP 853. Zumindestens für den Adguard wenn er seinen DoT Upstream DNS befragt. Die lokalen Clients kommen natürlich weiter mit TCP/UDP 53 auf den Adguard zu.
Nimmt dir immer deinen besten Freund für sowas den Wireshark oder auch tcpdump (apt install tcpdump) zur Hand dann kannst du das selber ganz wunderbar sehen ohne Foren befragen zu müssen... 😉

Was allerdings der HBCI Port fürs Banking dort zu suchen hast weisst vermutlich wohl nur du selber?! 🤔
https://www.iana.org/assignments/service-names-port-numbers/service-name ...
Ebenso 80, denn DoH nutzt nur 443.
hokaido
hokaido 04.07.2023 um 10:39:26 Uhr
Goto Top
Na ganz einfach: Zur Einrichtung von Adguard wird das Menü über Port 3000 angezeigtface-smile Drum will ich es ja schließen, wenn eingerichtet
aqui
aqui 04.07.2023 um 11:49:51 Uhr
Goto Top
Na ja wird ja lediglich nur zur Einrichtung benutzt aber später ja nicht mehr. Folglich muss man 3000 dann auch nicht freigeben, denn den Adguard richtet man vorab ja in einem offenen Netz ein bevor man ihn produktiv betreibt. face-wink
aqui
aqui 23.07.2023 um 11:15:51 Uhr
Goto Top
Wenn es das denn nun war bitte deinen Thread hier dann auch als erledigt schliessen!