Puncte:0

firewalld: conexiunea NTP de ieșire va fi înregistrată ca blocată, dar nu este blocată

drapel in

Am configurat firewalld pe CentOS7, astfel încât să blocheze toate conexiunile de ieșire. Doar conexiunile necesare sunt pe lista albă prin adăugarea unor reguli. De asemenea, am adăuga reguli pentru a permite înregistrarea conexiunilor blocate (direcția de ieșire).

Regulile actuale pentru firewalld sunt (unele IP-uri pe care le am masquarade cu „xxx”):

/> firewall-cmd --permanent --direct --get-all-rules
filtru ipv4 IEȘIRE 1 -p udp -m udp --dport=53 -d 185.12.64.1 -j ACCEPT
filtru ipv4 IEȘIRE 1 -p udp -m udp --dport=53 -d 185.12.64.2 -j ACCEPT
filtru ipv4 IEȘIRE 1 -p udp -m proprietar --uid-owner root --dport 67:68 -j ACCEPT
filtru ipv4 IEȘIRE 1 -p icmp --icmp-type 8 -m stare --state NOU,ESTABLIS -m proprietar -- uid-owner root -j ACCEPT
filtru ipv4 IEȘIRE 1 -p tcp -m tcp --dport=25 -d 193.111.XXX.XXX -j ACCEPT
filtru ipv4 IEȘIRE 1 -p tcp --dport=58443 -d 10.254.XXX.XXX -j ACCEPT
filtru ipv4 IEȘIRE 1 -p tcp --dport=58443 -d 193.111.XXX.XXX -j ACCEPT
filtru ipv4 IEȘIRE 1 -p tcp --dport=5667 -d 10.254.XXX.XXX -j ACCEPT
filtru ipv4 IEȘIRE 1 -p udp -m udp --dport=1194 -d 193.111.XXX.XXX -j ACCEPT
filtru ipv4 IEȘIRE 1 -m proprietar --uid-owner root -p tcp -m tcp --dport=443 -j ACCEPT
filtru ipv4 IEȘIRE 1 -m proprietar --uid-owner root -p tcp -m tcp --dport=80 -j ACCEPT
filtru ipv4 IEȘIRE 0 -m stare --state ESTABLISHED, RELATED -j ACCEPT
filtru ipv4 IEȘIRE 1 -m proprietar --uid-owner clamupdate -p tcp -m tcp --dport=443 -j ACCEPT
filtru ipv4 OUTPUT 2 -j DROP
filtru ipv4 OUTPUT 1 -j LOG_OUTPUT
filtru ipv4 IEȘIRE 1 -m proprietar --uid-owner chrony -p udp -m udp --dport=123 -j ACCEPT
filtru ipv6 IEȘIRE 1 -p udp -m proprietar --uid-owner root --dport 67:68 -j ACCEPT
filtru ipv6 IEȘIRE 1 -p icmpv6 --icmpv6-type 8 -m stare --state NEW,ESTABLIS -m proprietar --uid-owner root -j ACCEPT
filtru ipv6 IEȘIRE 1 -p tcp -m tcp --dport=25 -d 2001:4ba0:XXXX:XX::X -j ACCEPT
filtru ipv6 IEȘIRE 1 -p tcp -m tcp --dport=58443 -d 2001:4ba0:XXXX:XX::X -j ACCEPT
filtru ipv6 IEȘIRE 1 -p tcp --dport=5667 -d fe80::bf18:c142:XXXX:XXXX -j ACCEPT
filtru ipv6 IEȘIRE 1 -p udp -m udp --dport=1194 -d 2001:4ba0:XXXX:XX::X -j ACCEPT
filtru ipv6 IEȘIRE 1 -m proprietar --uid-owner root -p tcp -m tcp --dport=443 -j ACCEPT
filtru ipv6 IEȘIRE 1 -m proprietar --uid-owner root -p tcp -m tcp --dport=80 -j ACCEPT
filtru ipv6 IEȘIRE 0 -m stare --state ESTABLISHED, RELATED -j ACCEPT
filtru ipv6 IEȘIRE 1 -m proprietar --uid-owner clamupdate -p tcp -m tcp --dport=443 -j ACCEPT
filtru ipv6 OUTPUT 2 -j DROP
filtru ipv6 IEȘIRE 1 -m proprietar --uid-owner chrony -p udp -m udp --dport=123 -j ACCEPT
filtru ipv4 LOG_OUTPUT 1 -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix 'FINAL_REJECT: '

Regulile iptable corespondente sunt (cuiva îi place mai mult iptable ca firewalld...):

/> iptables -S
-P ACCEPT INTRARE
-P ACCEPTĂ ÎN ÎNTÂMPRE
-P ACCEPT IEȘIRE
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_public
-N FWDI_public_allow
-N FWDI_public_deny
-N FWDI_public_log
-N FWDI_XXXX
-N FWDI_XXXX_allow
-N FWDI_XXXX_deny
-N FWDI_XXXX_log
-N FWDO_public
-N FWDO_public_allow
-N FWDO_public_deny
-N FWDO_public_log
-N FWDO_XXXX
-N FWDO_XXXX_permite
-N FWDO_XXXX_nega
-N FWDO_XXXX_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_public
-N IN_public_allow
-N IN_public_deny
-N IN_public_log
-N IN_XXXX
-N IN_XXXX_permite
-N IN_XXXX_nega
-N IN_XXXX_log
-N LOG_OUTPUT
-N OUTPUT_direct
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INTRARE -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INTRARE -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A INTRARE -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INTRARE -j INPUT_ZONES_SOURCE
-A INTRARE -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix „STATE_INVALID_DROP:”
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j LOG --log-prefix "FINAL_REJECT: "
-A INPUT -j REJECT --reject-cu icmp-gazdă-interzis
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A ÎNAINTE -j ÎNAINTE_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A ÎNTĂRĂRII -j ÎNVĂŢĂRII_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j LOG --log-prefix "STATE_INVALID_DROP: "
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j LOG --log-prefix "FINAL_REJECT: "
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A IEȘIRE -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A IEȘIRE -o lo -j ACCEPT
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -i enp0s31f6 -g FWDI_public
-A FORWARD_IN_ZONES -i tun0 -g FWDI_XXXX
-A FORWARD_IN_ZONES -g FWDI_public
-A FORWARD_OUT_ZONES -o enp0s31f6 -g FWDO_public
-A FORWARD_OUT_ZONES -o tun0 -g FWDO_XXXX
-A FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j ACCEPT
-A FWDI_XXXX -j FWDI_XXXX_log
-A FWDI_XXXX -j FWDI_XXXX_deny
-A FWDI_XXXX -j FWDI_XXXX_allow
-A FWDI_XXXX -p icmp -j ACCEPT
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A FWDO_XXXX -j FWDO_XXXX_log
-A FWDO_XXXX -j FWDO_XXXX_deny
-A FWDO_XXXX -j FWDO_XXXX_allow
-A INPUT_ZONES -i enp0s31f6 -g IN_public
-A INPUT_ZONES -i tun0 -g IN_XXXX
-A INPUT_ZONES -g IN_public
-A INPUT_direct -p tcp -m set --match-set f2b-sshd src -j REJECT --reject-with icmp-port-unreachable
-A INPUT_direct -p tcp -m set --match-set f2b-f2bLongList src -j REJECT --reject-with icmp-port-inaccessible
-A INPUT_direct -p tcp -m set --match-set f2b-blocklist_de src -j REJECT --reject-with icmp-port-unreachable
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 58443 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 444 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_public_deny -m set --match-set badIPsSet src -j DROP
-A IN_XXXX -j IN_XXXX_log
-A IN_XXXX -j IN_XXXX_nega
-A IN_XXXX -j IN_XXXX_permite
-A IN_XXXX -p icmp -j ACCEPT
-A IN_XXXX_allow -p tcp -m tcp --dport 59943 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A IN_XXXX_allow -p tcp -m tcp --dport 9945 -m conntrack --ctstate NOU, UNTRACKED -j ACCEPT
-A IN_XXXX_allow -p tcp -m tcp --dport 9944 -m conntrack --ctstate NOU, UNTRACKED -j ACCEPT
-A IN_XXXX_allow -p tcp -m tcp --dport 9943 -m conntrack --ctstate NOU, UNTRACKED -j ACCEPT
-A IN_XXXX_allow -p tcp -m tcp --dport 9947 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
-A LOG_OUTPUT -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "FINAL_REJECT: "
-A OUTPUT_direct -m stare --stare RELATED,STABLISHED -j ACCEPT
-A OUTPUT_direct -d 185.12.64.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT_direct -d 185.12.64.2/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT_direct -p udp -m proprietar --uid-owner 0 -m udp --dport 67:68 -j ACCEPT
-A OUTPUT_direct -p icmp -m icmp --icmp-type 8 -m stare --state NEW,STABLISHED -m proprietar --uid-owner 0 -j ACCEPT
-A OUTPUT_direct -d 193.111.XXX.XXX/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT_direct -d 10.254.XXX.XXX/32 -p tcp -m tcp --dport 58443 -j ACCEPT
-A OUTPUT_direct -d 193.111.XXX.XXX/32 -p tcp -m tcp --dport 58443 -j ACCEPT
-A OUTPUT_direct -d 10.254.XXX.XXX/32 -p tcp -m tcp --dport 5667 -j ACCEPT
-A OUTPUT_direct -d 193.111.XXX.XXX/32 -p udp -m udp --dport 1194 -j ACCEPT
-A OUTPUT_direct -p tcp -m proprietar --uid-owner 0 -m tcp --dport 443 -j ACCEPT
-A OUTPUT_direct -p tcp -m proprietar --uid-owner 0 -m tcp --dport 80 -j ACCEPT
-A OUTPUT_direct -p tcp -m proprietar --uid-owner 986 -m tcp --dport 443 -j ACCEPT
-A OUTPUT_direct -j LOG_OUTPUT
-A OUTPUT_direct -p udp -m proprietar --uid-owner 993 -m udp --dport 123 -j ACCEPT
-A OUTPUT_direct -j DROP

Portul UDP 123 (protocol NTP) este deschis pentru conexiunile de ieșire pentru utilizatorul „''chrony''”. Dacă apelez manual la chrony din linia de comandă, primesc:

/> chronyd -q 'server 178.63.52.31 iburst'
2022-03-07T09:09:45Z chronyd versiunea 3.4 care începe (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2022-03-07T09:09:45Z Frecvența inițială -13.925 ppm
2022-03-07T09:09:49Z Ceasul sistemului este greșit cu 0,000131 secunde (pas)
2022-03-07T09:09:49Z chronyd se iese

Ok, se pare că funcționează (cum era de așteptat). Dar firewall-ul înregistrează următoarele:

7 mar 10:09:45 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPT455UD4 SRC=178.63.52.31 =123 LEN=56 
Mar 7 10:09:47 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=243.139.67 SRC=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=243.139.64 =123 LEN=56 
7 martie 10:09:49 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=694 IDPDF=DPPTO57UD=694 ID=178.63.52.31 =123 LEN=56 

Dacă eliminați regulile pentru portul „123”:

/> firewall-cmd --permanent --direct --remove-rule filtru ipv4 IEȘIRE 1 -m proprietar --uid-owner chrony -p udp -m udp --dport=123 -j ACCEPT
succes
/> firewall-cmd --permanent --direct --remove-rule filtru ipv6 IEȘIRE 1 -m proprietar --uid-owner chrony -p udp -m udp --dport=123 -j ACCEPT
succes
/> firewall-cmd --reload
succes

și sună din nou chrony:

chronyd -q „server 178.63.52.31 iburst”
2022-03-07T09:12:46Z chronyd versiunea 3.4 care începe (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2022-03-07T09:12:46Z Frecvența inițială -13.925 ppm
2022-03-07T09:12:56Z Nicio sursă adecvată pentru sincronizare
2022-03-07T09:12:56Z chronyd se iese

(care eșuează așa cum era de așteptat) Primesc 6 linii în fișierul jurnal de firewall (în loc de 3 linii de mai sus):

7 mar 10:12:46 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPTDF PROTL=645 =123 LEN=56 
Mar 7 10:12:48 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPTDF PROTL=63UD=678.63.52.31 =123 LEN=56 
7 martie 10:12:50 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPT352.67 =123 LEN=56 
7 martie 10:12:52 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPTDF PROTL=639.67 SRC=178.63.52.31 =123 LEN=56 
7 mar 10:12:54 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=36.243.139.67 DST=178.63.52.31 =123 LEN=56 
7 martie 10:12:56 nucleu static: FINAL_REJECT: IN= OUT=enp0s31f6 SRC=136.243.139.67 DST=178.63.52.31 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=SPT370UD=64 SRC=178.63.52.31 =123 LEN=56 

Acest comportament îl am doar cu conexiuni NTP. De exemplu, dacă deschid o conexiune SMTP pe portul 25 la 193.111.xxx.xxx (care este permis în mod explicit de regula firewall) nu primesc (cum era de așteptat) niciun mesaj de jurnal de firewall.

De ce primesc mesaje de jurnal de firewall ale conexiunilor blocate UDP Port 123 când portul este permis în mod explicit și chrony funcționează conform așteptărilor?

mlichvar avatar
drapel cn
Cred că ar putea fi necesar să reordonați regulile paravanului de protecție pentru a avea LOG_OUTPUT înaintea regulii specifice cronologiei.
drapel in
@mlichvar: Ai dreptate! Prioritatea corectă este 2 pentru regula LOG și 3 pentru rolul DROP! Dacă postezi comentariul tău ca răspuns, îl voi accepta. Mersi

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.