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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
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
#!/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
@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:
### 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)
Offline
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ć.
Offline