Întrebarea era despre UFW, dar acest răspuns folosește iptables direct și ar putea să nu fie ceea ce se dorește.
Puteți bloca pachetele de rețea de ieșire și de intrare, cu excepția celor SSH cu acest script iptables:
#!/bin/sh
FWVER=0,01
#
# ask1393247 Smythies 2022.02.16 Ver:0.01
# Vezi aici:
# https://askubuntu.com/questions/1393247/does-ufw-allow-all-incoming-traffic-in-response-to-outbound-requests?noredirect=1#comment2409932_1393247
# rulați ca sudo pe s19.
# A început de mai jos:
#
# ask1368071 Smythies 2021.10.08 Ver:0.01
# Vezi aici:
# https://askubuntu.com/questions/1368071/iptables-that-only-allow-incoming-traffic-to-openssh-and-block-all-other-traffic
# rulați ca sudo pe s19.
# intrări de jurnal sunt numai pentru fiecare pachet ssh NOU. Pare nerezonabil să înregistrezi fiecare pachet ssh, dar s-ar putea face.
#
echo „Se încarcă versiunea setului de reguli ask1393247 $FWVER..\n”
# Locația programului iptables
#
IPTABLES=/sbin/iptables
#Setarea interfețelor și adreselor EXTERNE și INTERNE pentru rețea
#
# Setat pentru computerul Smythies s19 (pentru testare). Editați pentru computerul lui ask1393247.
EXTIF="br0"
EXTIP="192.168.111.136"
NETWORK="192.168.111.0/24"
UNIVERS="0.0.0.0/0"
# Ștergerea oricărei configurații anterioare
# Fii atent aici. Pot face asta pe s19, dar nu știu
# despre computerul altor utilizatori.
#
echo „Ștergerea oricăror reguli existente și setarea politicilor implicite..”
$IPTABLES -P INTRARE DROP
$IPTABLES -F INTRARE
$IPTABLES -P CĂDERARE IEȘIRE
$IPTABLES -F IEȘIRE
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
# Ștergeți lanțurile definite de utilizator
$IPTABLES -X
# Resetați toate contoarele IPTABLES
$IPTABLES -Z
# Smythies: Deși referințele mele nu îl au, cred că este necesar.
$IPTABLES -t nat -Z
# interfețe loopback sunt valide.
#
$IPTABLES -A INTRARE -i lo -s $UNIVERS -d $UNIVERS -j ACCEPT
# Permiteți orice trafic asociat să revină pe server.
# Din motive necunoscute, ask1393247 nu dorește versiunea generică. Așa a comentat.)
#$IPTABLES -A INTRARE -i $EXTIF -s $UNIVERS -d $EXTIP -m stare --stare ESTABLISHED,RELATED -j ACCEPT
# ask1393247 pare să dorească asta:
ecou „steagul 1”
$IPTABLES -A INTRARE -i $EXTIF -s $UNIVERS -d $EXTIP -m stare --stare ESTABLISHED,RELATED -p tcp --dport 22 -j ACCEPT
ecou „steagul 2”
# Permiteți și înregistrați noile conexiuni SSH. Nu este necesar dacă nu doriți să înregistrați sesiuni, dar apoi trebuie să adăugați NOU mai sus.
# Notă: folosesc portul 22, pentru că nimeni altcineva nu poate ajunge aici oricum. Schimbați-vă în portul dvs.
#
$IPTABLES -A INTRARE -i $EXTIF -m stare --stare NOU -p tcp -s $UNIVERSE -d $EXTIP --dport 22 -j LOG --log-prefix „trafic ssh:” --log-level info
$IPTABLES -A INTRARE -i $EXTIF -m stare --stare NOU -p tcp -s $UNIVERS -d $EXTIP --dport 22 -j ACCEPT
# Acum, de asemenea, eliberează doar ssh:
$IPTABLES -A IEȘIRE -o $EXTIF -p tcp --sport 22 -m stare --state ESTABLISHED,RELATED -j ACCEPT
# Notă: dacă computerul dvs. utilizează DCHP, atunci va trebui să îl permiteți, atât intrarea cât și ieșirea.
# Terminat.
#
echo ask1393247 set de reguli versiunea $FWVER gata.
Și acesta este rezultatul:
doug@s19:~/iptables/misc$ sudo iptables -xvnL
INTRARE în lanț (politica DROP 133 pachete, 11819 octeți)
pkts bytes target prot opt in out source destination
0 0 ACCEPT toate -- lo * 0.0.0.0/0 0.0.0.0/0
202 13689 ACCEPT tcp -- br0 * 0.0.0.0/0 192.168.111.136 stare RELATED,STABLISHED tcp dpt:22
4 280 LOG tcp -- br0 * 0.0.0.0/0 192.168.111.136 stare NOU tcp dpt:22 LOG semnalizatoare 0 nivel 6 prefix „ssh traffic:”
4 280 ACCEPT tcp -- br0 * 0.0.0.0/0 192.168.111.136 stare NOU tcp dpt:22
Lanț FORWARD (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
IEȘIRE în lanț (politica DROP 14 pachete, 3240 octeți)
pkts bytes target prot opt in out source destination
164 25505 ACCEPT tcp -- * br0 0.0.0.0/0 0.0.0.0/0 tcp spt:22 stare RELATED,STABLISHED