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-Key: 7628122721

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

Printed on: April 27, 2024 at 09:04 o'clock

Member: aqui
aqui Jun 23, 2023 at 13:29:51 (UTC)
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.
Member: hokaido
hokaido Jun 23, 2023 at 13:39:24 (UTC)
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.
Member: aqui
aqui Jun 23, 2023 updated at 14:15:35 (UTC)
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!
Member: Dani
Dani Jun 23, 2023 at 20:00:54 (UTC)
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
Member: hokaido
hokaido Jun 23, 2023 at 22:19:52 (UTC)
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
Member: aqui
aqui Jun 24, 2023 updated at 07:32:46 (UTC)
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
Member: aqui
aqui Jul 02, 2023 at 13:57:45 (UTC)
Goto Top
Wenn es das denn nun war bitte deinen Thread auch als erledigt schliessen!
Member: hokaido
hokaido Jul 04, 2023 at 07:26:34 (UTC)
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...
Member: Dani
Dani Jul 04, 2023 updated at 07:47:49 (UTC)
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
Member: aqui
aqui Jul 04, 2023 updated at 07:57:12 (UTC)
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.
Member: hokaido
hokaido Jul 04, 2023 at 08:39:26 (UTC)
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
Member: aqui
aqui Jul 04, 2023 at 09:49:51 (UTC)
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
Member: aqui
aqui Jul 23, 2023 at 09:15:51 (UTC)
Goto Top
Wenn es das denn nun war bitte deinen Thread hier dann auch als erledigt schliessen!