Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2023-02-12 13:18:01

  qs - Nowy użytkownik

qs
Nowy użytkownik
Zarejestrowany: 2023-02-12

Polecana konfiguracja nftables dla VPS

Hej, używam sobie VPS i zauważyłem że jak loguje wszystko to mam niezły szum w logach.
Załóżmy że na świat wystawiony jest tylko serwer HTTP wraz z let's encrypt to jak powinien wyglądać poprawny config firewalla?

Offline

 

#2  2023-02-12 13:52:09

  megabajt - Użytkownik

megabajt
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2012-03-07

Re: Polecana konfiguracja nftables dla VPS

Kod:

#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;

                # accept any localhost traffic
                iif lo accept

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

                # activate the following line to accept common local services
                tcp dport { 80, 443 } ct state new accept

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

                # count and drop any other traffic
                counter drop
        }
}

Offline

 

#3  2023-02-12 17:55:14

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Polecana konfiguracja nftables dla VPS

@qs
Nftables w porównaniu z iptables i ipset  na razie wypada blabo.
Dlatego nie ma się co spieszyć z wdrażaniem nftables, póki stary iptables działa stabilnie.

Sam na serwerach używam coś w tym guście:

Kod:

### cat /etc/network/if-pre-up.d/firewallv4
#!/bin/bash
ipset create brama hash:net maxelem 65535 timeout 604800 2>/dev/null
ipset create wypad hash:net maxelem 65535 timeout 3600 2>/dev/null

iptables -t raw -F
iptables -t raw -X
iptables -t raw -A PREROUTING -m set --match-set brama src -j ACCEPT
iptables -t raw -I PREROUTING -i lo -j ACCEPT
iptables -t raw -A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400
iptables -t raw -A PREROUTING ! -i lo -p tcp -m multiport --dports 20,21,22,25,113,143,445,587 -j SET --add-set wypad src --timeout 3600
iptables -t raw -A PREROUTING ! -i lo -p tcp -m multiport --dports 1433,1512,2175,2176,3306,4899,5432  -j SET --add-set wypad src --timeout 3600
iptables -t raw -A PREROUTING ! -i lo -p tcp -m multiport --dports  6211,8080,10000 -j SET --add-set wypad src --timeout 3600
iptables -t raw -A PREROUTING -p tcp -m multiport ! --dport 80,443,9739,5222,5269,19017,19391  -m set --match-set wypad src -j DROP
iptables -t raw -I OUTPUT -o lo -j ACCEPT

iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP
iptables -A INPUT -i lo  -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
## iptables -A INPUT -p tcp  -m multiport ! --dport 80,443 -j ACCEPT
## iptables -A INPUT -m set --match-set inputallow src -j ACCEPT
iptables -A INPUT -m set --match-set brama src -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT  -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT

iptables -N XMPP
iptables -A INPUT -p tcp -m multiport --dports 5222,5223 -j XMPP
iptables -A INPUT -p tcp -m tcp --dport 5269 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -j XMPP
iptables -A XMPP -m hashlimit --hashlimit-upto 30/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name xmpp -j ACCEPT
iptables -A XMPP -j LOG --log-prefix "XMPP - zablokowany "
iptables -A XMPP -p tcp  -j REJECT --reject-with tcp-reset
iptables -I OUTPUT -m owner --uid-owner prosody -j ACCEPT


echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
iptables -t raw -I PREROUTING  ! -i lo -p tcp  -m multiport --dports 80,443  --syn -j NOTRACK 
iptables -A INPUT ! -i lo -p tcp  -m multiport --dports 80,443  -m conntrack --ctstate UNTRACKED,INVALID -j SYNPROXY --sack-perm --timestamp --mss 1480 --wscale 7 --ecn
### iptables -A OUTPUT -p tcp -m owner --uid-owner www-data  -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p tcp  -m multiport --sports 80,443  -j ACCEPT
### iptables -A OUTPUT -p tcp  -m multiport --sports 80,443  -j LOG --log-prefix "HTTP - zablokowany "

iptables -N SMTP
iptables -A INPUT -p tcp -m multiport --dports 465 -j SMTP
iptables -A INPUT -p tcp -m tcp --dport 25 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -j SMTP
iptables -A SMTP -m hashlimit --hashlimit-upto 4/min --hashlimit-burst 4 --hashlimit-mode srcip --hashlimit-name smtp -j ACCEPT
iptables -A SMTP -j LOG --log-prefix "SMTP - zablokowany"
iptables -A SMTP -j RETURN

iptables -N SSH
iptables -A INPUT -p tcp -m tcp -m multiport --dports 9739,19391  -m connlimit --connlimit-upto 10 --connlimit-mask 0  --connlimit-saddr -j SSH
iptables -A SSH  -m hashlimit --hashlimit-upto 5/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name ssh -j ACCEPT
iptables -A SSH -j LOG --log-prefix "SSH - zablokowany "
iptables -A SSH  -p tcp  -j REJECT --reject-with tcp-reset

iptables -A INPUT  -p icmp -m limit --limit 3/sec -j ACCEPT
iptables -A OUTPUT -p icmp -m limit --limit 3/sec -j ACCEPT

iptables -A OUTPUT -m cgroup --cgroup  3  -j ACCEPT
iptables -A OUTPUT -m cgroup --cgroup  4  -j ACCEPT
iptables -A OUTPUT -m cgroup --cgroup 11  -j ACCEPT
iptables -A OUTPUT -p tcp  -m owner --uid-owner  postfix -m multiport --dports 25,465,587 -j ACCEPT


iptables -A OUTPUT  -p tcp  -j REJECT --reject-with tcp-reset

Ruch http i https idzie przez SYNPROXY do Nginxa.
W Nftables na razie nie podejmuję się zakodować podobnej konfiguracji,
chociaż to podobno już wykonalne w około 80%.
:P

SSH w tym przykładzie jest na portach 9739,19391 (dwa różne serwery), ale nie na domyślnym porcie 22.

Pozdro

Ostatnio edytowany przez Jacekalex (2023-02-12 18:16:13)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2023-02-12 17:57:18

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Polecana konfiguracja nftables dla VPS

megabajt napisał(-a):

Kod:

#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;

                # accept any localhost traffic
                iif lo accept

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

                # activate the following line to accept common local services
                tcp dport { 80, 443 } ct state new accept

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

                # count and drop any other traffic
                counter drop
        }
}

Zapomniałeś chyba o dostępie SSH, który na VPS bywa trudny do zastąpienia.
Output też warto filtrować.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)