summaryrefslogtreecommitdiff
path: root/etc/nftables.conf
blob: df34983bbeb5ece909c2e38ecc64d9f477f1cb41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/nft -f

# IPv4/IPv6 Simple & Safe firewall ruleset.
# More examples in /usr/share/nftables/ and /usr/share/doc/nftables/examples/.

# references, some codes from:
# https://wiki.archlinux.org/title/Nftables
# https://www.procustodibus.com/blog/2021/11/wireguard-nftables
# https://wiki.gentoo.org/wiki/Nftables/Examples#Basic_NAT

# needed for reload config using `sudo systemctl restart nftables` or `sudo nft -f /etc/nftables.conf`
flush ruleset

table inet my_table {

	chain my_input {
		type filter hook input priority filter
		policy drop

		ct state invalid drop comment "early drop of invalid connections"
		ct state {established, related} accept comment "allow tracked connections"
		iifname lo accept comment "allow from loopback"
		ip protocol icmp accept
		meta l4proto ipv6-icmp accept

		tcp dport ssh accept
		#tcp dport qbt-nox accept
		tcp dport qbt accept
		udp dport qbt accept
		#tcp dport iperf3 accept
		# for acme.sh standalone mode builtin webserver to renew ssl cert
		tcp dport http accept
		# email related ports
		tcp dport smtp accept
		#tcp dport pop3 accept
		tcp dport imap accept
		tcp dport submissions accept
		tcp dport submission accept
		tcp dport imaps accept
		#tcp dport pop3s accept

		pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited
		counter comment "count any other traffic"
	}

	chain my_forward {
		type filter hook forward priority filter
		policy drop
		# Drop everything forwarded to us. We do not forward. That is routers job.
	}

	chain my_output {
		type filter hook output priority filter
		policy accept
		# Accept every outbound connection
	}
}