Essentials Pagina 7: Diferență între versiuni
Admin (discuție | contribuții) Fără descriere a modificării |
Admin (discuție | contribuții) Fără descriere a modificării |
||
Linia 134: | Linia 134: | ||
dig -x 100.42.30.95 | dig -x 100.42.30.95 | ||
Aceasta va căuta adresa (care poate să existe sau nu) și va returna adresa gazdei, de exemplu, dacă aceasta a fost adresa „http://slashdot.org”, atunci ar returna „http://slashdot. org”. | Aceasta va căuta adresa (care poate să existe sau nu) și va returna adresa gazdei, de exemplu, dacă aceasta a fost adresa „http://slashdot.org”, atunci ar returna „http://slashdot. org”. | ||
'''whois''' | '''whois''' | ||
Linia 185: | Linia 184: | ||
ssh | ssh | ||
Shell securizat, conectați-vă de la distanță pe o mașină care rulează | Shell securizat, conectați-vă de la distanță pe o mașină care rulează daemonul sshd. Odată ce v-ați conectat, aveți un shell securizat și puteți executa diverse comenzi pe acel computer, cum ar fi să copiați fișiere, să reporniți computerul, la fel cum ar fi propriul dvs. computer GNU/Linux. | ||
Sau puteți utiliza ssh cu un nume de gazdă complet pentru a vă conecta la o mașină de la distanță (ca pe internet). | Sau puteți utiliza ssh cu un nume de gazdă complet pentru a vă conecta la o mașină de la distanță (ca pe internet). | ||
Linia 371: | Linia 370: | ||
Instrucțiuni de bază pentru iptables | Instrucțiuni de bază pentru iptables | ||
Iptables este un firewall, instalat implicit pe toate distribuțiile oficiale Ubuntu | Iptables este un firewall, instalat implicit pe toate distribuțiile oficiale Ubuntu. Există o mulțime de informații disponibile despre iptables, dar multe dintre ele sunt destul de complexe și, dacă doriți să faceți câteva lucruri de bază, acest How To este pentru dvs. | ||
Există o mulțime de informații disponibile despre iptables, dar multe dintre ele sunt destul de complexe și, dacă doriți să faceți câteva lucruri de bază, acest How To este pentru dvs. | |||
Comenzi de bază | Comenzi de bază | ||
Linia 379: | Linia 377: | ||
listează regulile tale curente în iptables. Dacă tocmai v-ați configurat serverul, nu veți avea reguli și ar trebui să vedeți | listează regulile tale curente în iptables. Dacă tocmai v-ați configurat serverul, nu veți avea reguli și ar trebui să vedeți | ||
INTRARE în lanț (politica ACCEPTĂ) | INTRARE în lanț (politica ACCEPTĂ) | ||
target prot opt sursă destinație | target prot opt sursă destinație | ||
Lanț FORWARD (politica ACCEPT) | Lanț FORWARD (politica ACCEPT) | ||
target prot opt sursă destinație | target prot opt sursă destinație | ||
Ieșire în lanț (politica ACCEPT) | Ieșire în lanț (politica ACCEPT) | ||
target prot opt sursă destinație | target prot opt sursă destinație | ||
Opțiuni de bază pentru Iptables | Opțiuni de bază pentru Iptables | ||
Iată explicații pentru unele dintre opțiunile iptables pe care le veți vedea în acest tutorial. Nu vă faceți griji că înțelegeți totul aici acum, dar amintiți-vă să reveniți și să priviți această listă pe măsură ce întâlniți noi opțiuni mai târziu. | |||
<pre> | <pre> | ||
• -A - Adăugați această regulă la un lanț de reguli. Lanțurile valide pentru ceea ce facem sunt INPUT, FORWARD și OUTPUT, dar în mare parte ne ocupăm de INPUT în acest tutorial, care afectează doar traficul de intrare. | • -A - Adăugați această regulă la un lanț de reguli. Lanțurile valide pentru ceea ce facem sunt INPUT, FORWARD și OUTPUT, dar în mare parte ne ocupăm de INPUT în acest tutorial, care afectează doar traficul de intrare. | ||
• -L - Listează regulile curente de filtrare. | • -L - Listează regulile curente de filtrare. | ||
• -m conntrack - Permite regulilor de filtrare să se potrivească în funcție de starea conexiunii. Permite utilizarea opțiunii --ctstate. | • -m conntrack - Permite regulilor de filtrare să se potrivească în funcție de starea conexiunii. Permite utilizarea opțiunii --ctstate. | ||
• --ctstate - Definiți lista de stări cu care să se potrivească regula. Stările valide sunt: | • --ctstate - Definiți lista de stări cu care să se potrivească regula. Stările valide sunt: | ||
Linia 410: | Linia 408: | ||
• --log-prefix - Când vă conectați, puneți acest text înaintea mesajului de jurnal. Folosiți ghilimele duble în jurul textului de utilizat. | • --log-prefix - Când vă conectați, puneți acest text înaintea mesajului de jurnal. Folosiți ghilimele duble în jurul textului de utilizat. | ||
• --log-level - Log utilizând nivelul syslog specificat. 7 este o alegere bună, cu excepția cazului în care aveți nevoie de altceva. | • --log-level - Log utilizând nivelul syslog specificat. 7 este o alegere bună, cu excepția cazului în care aveți nevoie de altceva. | ||
• -i - Se potrivește numai dacă pachetul vine pe interfața specificată. | • -i - Se potrivește numai dacă pachetul vine pe interfața specificată. | ||
• -I - Inserează o regulă. Este nevoie de două opțiuni, lanțul în care să insereze regula și numărul regulii care ar trebui să fie. | • -I - Inserează o regulă. Este nevoie de două opțiuni, lanțul în care să insereze regula și numărul regulii care ar trebui să fie. | ||
Linia 418: | Linia 415: | ||
• -d --destination - adresa[/mask] specificația destinației | • -d --destination - adresa[/mask] specificația destinației | ||
• -o --out-interface - nume de ieșire[+] nume de interfață de rețea ([+] pentru wildcard) | • -o --out-interface - nume de ieșire[+] nume de interfață de rețea ([+] pentru wildcard) | ||
</pre> | </pre> | ||
Linia 426: | Linia 422: | ||
• Regula de mai sus nu are spații pe fiecare parte a virgulei în ESTABLISHED,RELATED | • Regula de mai sus nu are spații pe fiecare parte a virgulei în ESTABLISHED,RELATED | ||
Dacă linia de mai sus nu funcționează, este posibil să fiți pe un VPS castrat al cărui furnizor nu a pus la dispoziție extensia, caz în care o versiune inferioară poate fi folosită ca ultimă soluție: | Dacă linia de mai sus nu funcționează, este posibil să fiți pe un VPS castrat al cărui furnizor nu a pus la dispoziție extensia, caz în care o versiune inferioară poate fi folosită ca ultimă soluție: | ||
sudo iptables -A INPUT -m stare --state ESTABLISHED,RELATED -j ACCEPT | sudo iptables -A INPUT -m stare --state ESTABLISHED,RELATED -j ACCEPT | ||
Permiterea traficului de intrare pe anumite porturi | Permiterea traficului de intrare pe anumite porturi | ||
Ați putea începe prin a bloca traficul, dar este posibil să lucrați prin SSH, unde ar trebui să permiteți SSH înainte de a bloca orice altceva. | Ați putea începe prin a bloca traficul, dar este posibil să lucrați prin SSH, unde ar trebui să permiteți SSH înainte de a bloca orice altceva. | ||
Pentru a permite traficul de intrare pe portul SSH implicit (22), ați putea spune iptables să permită intrarea întregului trafic TCP de pe acel port. | Pentru a permite traficul de intrare pe portul SSH implicit (22), ați putea spune iptables să permită intrarea întregului trafic TCP de pe acel port. | ||
sudo iptables -A INTRARE -p tcp --dport ssh -j ACCEPT | sudo iptables -A INTRARE -p tcp --dport ssh -j ACCEPT | ||
Referindu-ne la lista de mai sus, puteți vedea că aceasta spune iptables: | Referindu-ne la lista de mai sus, puteți vedea că aceasta spune iptables: | ||
Linia 439: | Linia 435: | ||
• dacă da, acceptați intrarea (-j ACCEPT). | • dacă da, acceptați intrarea (-j ACCEPT). | ||
Să verificăm regulile: (afișate doar primele câteva rânduri, vei vedea mai multe) | Să verificăm regulile: (afișate doar primele câteva rânduri, vei vedea mai multe) | ||
<pre> | <pre> | ||
sudo iptables -L | sudo iptables -L | ||
Linia 455: | Linia 452: | ||
ACCEPT tcp -- anywhere anywhere tcp dpt:www | ACCEPT tcp -- anywhere anywhere tcp dpt:www | ||
</pre> | </pre> | ||
Am permis în mod special traficul tcp către porturile ssh și web, dar, deoarece nu am blocat nimic, tot traficul poate intra în continuare. | Am permis în mod special traficul tcp către porturile ssh și web, dar, deoarece nu am blocat nimic, tot traficul poate intra în continuare. | ||
Blocarea traficului | Blocarea traficului | ||
Odată ce este luată decizia de a accepta un pachet, nu mai există reguli care îl afectează. Întrucât regulile noastre care permit traficul ssh și web sunt pe primul loc, atâta timp cât regula noastră de a bloca tot traficul vine după ele, putem totuși să acceptăm traficul pe care îl dorim. Tot ce trebuie să facem este să punem regula de a bloca tot traficul la sfârșit. | Odată ce este luată decizia de a accepta un pachet, nu mai există reguli care îl afectează. Întrucât regulile noastre care permit traficul ssh și web sunt pe primul loc, atâta timp cât regula noastră de a bloca tot traficul vine după ele, putem totuși să acceptăm traficul pe care îl dorim. Tot ce trebuie să facem este să punem regula de a bloca tot traficul la sfârșit. | ||
<pre> | <pre> | ||
sudo iptables -A INPUT -j DROP | sudo iptables -A INPUT -j DROP | ||
Linia 469: | Linia 468: | ||
DROP all -- anywhere anywhere | DROP all -- anywhere anywhere | ||
</pre> | </pre> | ||
Deoarece nu am specificat o interfață sau un protocol, orice trafic pentru orice port de pe orice interfață este blocat, cu excepția web și ssh. | Deoarece nu am specificat o interfață sau un protocol, orice trafic pentru orice port de pe orice interfață este blocat, cu excepția web și ssh. | ||
Linia 484: | Linia 484: | ||
DROP all -- anywhere anywhere | DROP all -- anywhere anywhere | ||
</pre> | </pre> | ||
Prima și ultima linie arată aproape la fel, așa că vom enumera iptables mai detaliat. | Prima și ultima linie arată aproape la fel, așa că vom enumera iptables mai detaliat. | ||
<pre> | <pre> | ||
sudo iptables -L -v | sudo iptables -L -v | ||
Linia 514: | Linia 516: | ||
Ieșire – Acest lanț este utilizat pentru conexiunile de ieșire. De exemplu, dacă încercați să ping howtogeek.com, iptables își va verifica lanțul de ieșire pentru a vedea care sunt regulile referitoare la ping și howtogeek.com înainte de a lua o decizie de a permite sau de a refuza încercarea de conectare. | Ieșire – Acest lanț este utilizat pentru conexiunile de ieșire. De exemplu, dacă încercați să ping howtogeek.com, iptables își va verifica lanțul de ieșire pentru a vedea care sunt regulile referitoare la ping și howtogeek.com înainte de a lua o decizie de a permite sau de a refuza încercarea de conectare. | ||
Comportamentul implicit al lanțului de politici | Comportamentul implicit al lanțului de politici | ||
Linia 525: | Linia 526: | ||
iptables --policy OUTPUT ACCEPT | iptables --policy OUTPUT ACCEPT | ||
iptables --policy FORWARD ACCEPT | iptables --policy FORWARD ACCEPT | ||
Implicitând regula de acceptare, puteți utiliza apoi iptables pentru a refuza anumite adrese IP sau numere de porturi, continuând să acceptați toate celelalte conexiuni. Vom ajunge la acele comenzi într-un minut. | Implicitând regula de acceptare, puteți utiliza apoi iptables pentru a refuza anumite adrese IP sau numere de porturi, continuând să acceptați toate celelalte conexiuni. Vom ajunge la acele comenzi într-un minut. | ||
Linia 577: | Linia 577: | ||
==nivel 1 - nftables== | ==nivel 1 - nftables== | ||
Tabele: | |||
se refera la unul dintre tipurile de tabele: ip (implicit), arp, ip6, bridge, inet, netdev. | |||
% nft list tables [<family>] | |||
% nft [-n] [-a] list table [<family>] <name> | |||
% nft (add | delete | flush) table [<family>] <name> | |||
The argument -n shows the addresses and other information that use names in numeric format. The -a argument is used to display each rule's handle (i.e., a numerical identifier). | |||
Lanturi: | |||
filter: Supported by arp, bridge, ip, ip6 and inet table families. | |||
route: Mark packets (like mangle for the output hook, for other hooks use the type filter instead), supported by ip and ip6. | |||
nat: In order to perform Network Address Translation, supported by ip and ip6. | |||
Hook: Se refera la stadiul acelui pachet in timp ce este procesat de kernel in Netfilter. | |||
The hooks for ip, ip6 and inet families are: prerouting, input, forward, output, postrouting. | |||
The hooks for arp family are: input, output. | |||
The bridge family handles ethernet packets traversing bridge devices. | |||
The hooks for netdev are: ingress, egress. | |||
policy este verdictul pentru a controla cursul acelui pachet in lant si tabel. Posibile valori: accept (default) si drop. | |||
<pre> | |||
% nft (add | create) chain [<family>] <table> <name> [ \{ type <type> hook <hook> [device <device>] priority <priority> \; [policy <policy> \;] \} ] | |||
% nft (delete | list | flush) chain [<family>] <table> <name> | |||
% nft rename chain [<family>] <table> <name> <newname> | |||
</pre> | |||
Reguli | |||
Inserate la inceputul unui lant | |||
<pre> | |||
% nft add rule [<family>] <table> <chain> <matches> <statements> | |||
% nft insert rule [<family>] <table> <chain> [position <handle>] <matches> <statements> | |||
% nft replace rule [<family>] <table> <chain> [handle <handle>] <matches> <statements> | |||
% nft delete rule [<family>] <table> <chain> [handle <handle>] | |||
</pre> | |||
Listeaza regulile | |||
% nft list ruleset | |||
Sterge regulile | |||
% nft flush ruleset | |||
Incarca reguli | |||
<pre> | |||
Create a command batch file and load it with the nft interpreter, | |||
% echo "flush ruleset" > /etc/nftables.rules | |||
% echo "add table filter" >> /etc/nftables.rules | |||
% echo "add chain filter input" >> /etc/nftables.rules | |||
% echo "add rule filter input meta iifname lo accept" >> /etc/nftables.rules | |||
% nft -f /etc/nftables.rules | |||
or create an executable nft script file, | |||
% cat << EOF > /etc/nftables.rules | |||
> #!/usr/local/sbin/nft -f | |||
> flush ruleset | |||
> add table filter | |||
> add chain filter input | |||
> add rule filter input meta iifname lo accept | |||
> EOF | |||
% chmod u+x /etc/nftables.rules | |||
% /etc/nftables.rules | |||
or create an executable nft script file from an already created ruleset, | |||
% nft list ruleset > /etc/nftables.rules | |||
% nft flush ruleset | |||
% nft -f /etc/nftables.rules | |||
</pre> | |||
Exemple | |||
<pre> | |||
Simple IP/IPv6 Firewall | |||
flush ruleset | |||
table firewall { | |||
chain incoming { | |||
type filter hook input priority 0; policy drop; | |||
# established/related connections | |||
ct state established,related accept | |||
# loopback interface | |||
iifname lo accept | |||
# icmp | |||
icmp type echo-request accept | |||
# open tcp ports: sshd (22), httpd (80) | |||
tcp dport { ssh, http } accept | |||
} | |||
} | |||
table ip6 firewall { | |||
chain incoming { | |||
type filter hook input priority 0; policy drop; | |||
# established/related connections | |||
ct state established,related accept | |||
# invalid connections | |||
ct state invalid drop | |||
# loopback interface | |||
iifname lo accept | |||
# icmp | |||
# routers may also want: mld-listener-query, nd-router-solicit | |||
icmpv6 type { echo-request, nd-neighbor-solicit } accept | |||
# open tcp ports: sshd (22), httpd (80) | |||
tcp dport { ssh, http } accept | |||
} | |||
} | |||
</pre> | |||
==layer 2 - ufw== | ==layer 2 - ufw== | ||
Introducere | |||
UFW (Uncomplicated firewall) este un instrument de configurare firewall care rulează prin iptables/nftables, inclus în mod implicit în distribuțiile Ubuntu. Acesta oferă o interfață simplificată pentru configurarea cazurilor comune de utilizare a firewall-ului prin intermediul liniei de comandă. | |||
Amintiți-vă că puteți verifica regulile actuale UFW cu sudo ufw status/ sudo ufw status verbose. | |||
Verificarea statutului UFW | |||
sudo ufw status | |||
Status: inactive | |||
Activează UFW | |||
sudo ufw enable | |||
Firewall is active and enabled on system startup | |||
Pentru a vedea ce este blocat sau permis în prezent, puteți utiliza verboseParametrul atunci când alergați ufw status, după cum urmează: | |||
sudo ufw status | |||
Status: active | |||
Logging: on (low) | |||
Default: deny (incoming), allow (outgoing), deny (routed) | |||
New profiles: skip | |||
Dezactivarea UFW | |||
sudo ufw disable | |||
Fiți conștienți de faptul că această comandă va dezactiva pe deplin serviciul firewall pe sistemul dvs. | |||
Blocați o adresă IP | |||
Pentru a bloca toate conexiunile de rețea care provin de la o anumită adresă IP, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o blocați: | |||
$ sudo ufw deny from 203.0.113.100 | |||
Rule added | |||
$ ufw status | |||
Status: active | |||
To Action From | |||
-- ------ ---- | |||
Anywhere DENY 203.0.113.100 | |||
Toate conexiunile, care vin sau ies, sunt blocate pentru adresa IP specificată. | |||
Blocarea unui subnet | |||
Dacă trebuie să blocați un subnet complet, puteți utiliza adresa de subnet ca fromParametrul de pe ufw deny- Deţinere. Acest lucru ar bloca toate adresele IP în exemplul subnet 203.0.113.0/24: : | |||
sudo ufw deny from 203.0.113.0/24 | |||
Rule added | |||
Blocarea conexiunilor la o interfață de rețea | |||
Pentru a bloca conexiunile de intrare de la o anumită adresă IP la o anumită interfață de rețea, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o blocați: | |||
sudo ufw deny in on eth0 from 203.0.113.100 | |||
Rule added | |||
Permite o adresă IP | |||
Pentru a permite toate conexiunile de rețea care provin de la o anumită adresă IP, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o permiteți acces: | |||
sudo ufw allow from 203.0.113.101 | |||
Rule added | |||
ufw statusAcum, veți vedea o ieșire similară cu aceasta, arătând cuvântul ALLOWlângă adresa IP tocmai ați adăugat. | |||
Output | |||
Status: active | |||
To Action From | |||
-- ------ ---- | |||
... | |||
Anywhere ALLOW 203.0.113.101 | |||
De asemenea, puteți permite conexiuni de la un întreg subnet prin furnizarea de mască de subnet corespunzătoare pentru o gazdă, cum ar fi 203.0.113.0/24. . | |||
Permiteți conexiunile de intrare la o interfață de rețea | |||
Pentru a permite conexiunile primite de la o anumită adresă IP la o anumită interfață de rețea, rulați următoarea comandă, înlocuiți adresa IP evidențiată cu adresa IP pe care doriți să o permiteți: | |||
sudo ufw allow in on eth0 from 203.0.113.102 | |||
Rule added | |||
Status: active | |||
To Action From | |||
-- ------ ---- | |||
... | |||
Anywhere on eth0 ALLOW 203.0.113.102 | |||
Pentru a șterge o regulă pe care o configurați anterior în UFW, utilizați ufw deleteUrmat de regula ( allowsau deny) și specificația țintă. Următorul exemplu ar șterge o regulă stabilită anterior pentru a permite toate conexiunile de la o adresă IP a 203.0.113.101: : | |||
sudo ufw delete allow from 203.0.113.101 | |||
Rule deleted | |||
Un alt mod de a specifica ce regulă doriți să ștergeți este prin furnizarea de ID-ul de reguli. Aceste informatii pot fi obtinute cu urmatoarea comanda: | |||
sudo ufw status numbered | |||
Status: active | |||
To Action From | |||
-- ------ ---- | |||
[ 1] Anywhere DENY IN 203.0.113.100 | |||
[ 2] Anywhere on eth0 ALLOW IN 203.0.113.102 | |||
Din ieșire, puteți vedea că există două reguli active. Prima regulă, cu valori evidențiate, neagă toate conexiunile care provin de la adresa IP 203.0.113.100. . A doua regulă permite conexiuni pe eth0interfaţă care vine de la adresa IP 203.0.113.102. . | |||
Deoarece în mod implicit UFW blochează deja tot accesul extern, cu excepția cazului în care este permis în mod explicit, prima regulă este redundantă, astfel încât să o puteți elimina. | |||
Listă Profiluri de Aplicatie Disponibile | |||
La instalare, aplicațiile care se bazează pe comunicațiile de rețea vor configura de obicei un profil UFW pe care îl puteți utiliza pentru a permite conectarea de la adresele externe. Acest lucru este adesea la fel ca alergarea ufw allow from, cu avantajul de a furniza o scurtătură care absoarbe numerele specifice de port pe care un serviciu le utilizează și oferă o nomenclatură ușor de utilizat la serviciile de referință. | |||
Pentru a lista profilurile disponibile în prezent, rulați următoarele: | |||
sudo ufw app list | |||
Dacă ați instalat un serviciu, cum ar fi un server web sau alt software dependent de rețea și un profil nu a fost pus la dispoziție în cadrul UFW, asigurați-vă mai întâi că serviciul este activat. Pentru servere de la distanță, veți avea de obicei OpenSSH ușor disponibil: | |||
Available applications: | |||
OpenSSH | |||
În exemplul următor, permitem profilul OpenSSH, care va permite toate conexiunile SSH primite pe portul SSH implicit. | |||
sudo ufw allow “OpenSSH” | |||
Rule added | |||
Rule added (v6) | |||
Amintiți-vă să citați nume de profil care constau din mai multe cuvinte, cum ar fi Nginx HTTPS. . | |||
Dezactivarea Profilului De Aplicare | |||
Pentru a dezactiva un profil de aplicare pe care l-ați configurat anterior în cadrul UFW, va trebui să eliminați regula corespunzătoare. De exemplu, luați în considerare următoarea ieșire din sudo ufw status: : | |||
sudo ufw status | |||
Status: active | |||
To Action From | |||
-- ------ ---- | |||
OpenSSH ALLOW Anywhere | |||
Nginx Full ALLOW Anywhere | |||
OpenSSH (v6) ALLOW Anywhere (v6) | |||
Nginx Full (v6) ALLOW Anywhere (v6) | |||
Această ieșire indică faptul că Nginx FullProfilul de aplicație este activat în prezent, permițând oricare și toate conexiunile la serverul web atât prin HTTP, cât și prin HTTPS. Dacă doriți să permiteți doar solicitări HTTPS de la și la serverul dvs. web, ar trebui să activați mai întâi regula cea mai restrictivă, care în acest caz ar fi Nginx HTTPS, apoi dezactivați activul în prezent Nginx Fullregula: | |||
sudo ufw allow "Nginx HTTPS" | |||
sudo ufw delete allow "Nginx Full" | |||
Amintiți-vă că puteți lista toate profilurile de aplicații disponibile cu sudo ufw app list. . | |||
Permite SSH | |||
Când lucrați cu servere de la distanță, veți dori să vă asigurați că portul SSH este deschis la conexiuni, astfel încât să puteți să vă conectați la serverul dvs. de la distanță. | |||
Următoarea comandă va permite profilul aplicației OpenSSH UFW și va permite toate conexiunile la portul SSH implicit de pe server: | |||
sudo ufw allow OpenSSH | |||
Rule added | |||
Rule added (v6) | |||
Deși mai puțin ușor de utilizat, o sintaxa alternativă este de a specifica numărul portului exact al serviciului SSH, care este de obicei setat la 22În mod implicit: | |||
sudo ufw allow 22 | |||
Rule added | |||
Rule added (v6) | |||
Permiteți Intrarea SSH de la adresa IP specifică sau subnet | |||
Pentru a permite conexiunile de intrare de la o anumită adresă IP sau a subnet, veți include o fromdirectivă de definire a sursei conexiunii. Acest lucru va necesita să specificați și adresa de destinație cu o toUn parametru. Pentru a bloca această regulă numai la SSH, veți limita proto(protocol) la tcpşi apoi să folosească portparametrii și setați-l la 22, portul implicit al SSH. | |||
Următoarea comandă va permite numai conexiunile SSH provenite de la adresa IP 203.0.113.103: : | |||
sudo ufw allow from 203.0.113.103 proto tcp to any port 22 | |||
Rule added | |||
[[Essentials_Pagina_6|Pagina anterioară]] | [[Essentials_Pagina_8|Ultima pagină]] | [[Essentials_Pagina_6|Pagina anterioară]] | [[Essentials_Pagina_8|Ultima pagină]] |
Versiunea de la data 31 octombrie 2024 18:29
Servicii de rețea Linux și securitate
Comenzi generale de rețea
Capitolul comenzi de rețea explică diverse instrumente care pot fi utile atunci când conectați cu alte computere atât în rețea, cât și pe internet, obținând mai multe informații despre alte computere. Acest capitol include, de asemenea, informații despre instrumentele pentru configurarea rețelei, transferul de fișiere și lucrul cu mașini la distanță.
netstat Afișează conținutul fișierelor /proc/net. Funcționează cu subsistemul de rețea Linux, vă va spune care este starea porturilor, adică. legături deschise, închise, în așteptare, mascarade. De asemenea, va afișa diverse alte lucruri. Are multe opțiuni diferite.
tcpdump Acesta este un sniffer, un program care captează pachete dintr-o interfață de rețea și le interpretează pentru tine. Înțelege toate protocoalele de bază ale internetului și poate fi folosit pentru a salva pachete întregi pentru inspecție ulterioară.
Sintaxa de baza:
Filtrarea gazdelor:
- Potriviți orice trafic care implică 192.168.1.1 ca destinație sau sursă
# tcpdump -i eth1 host 192.168.1.1
- Doar sursa, la fel
# tcpdump -i eth1 src host 192.168.1.1
- Doar ca destinație
# tcpdump -i eth1 dst host 192.168.1.1
Porturi de filtrare:
- Potriviți orice trafic care implică portul 25 ca sursă sau destinație
# tcpdump -i eth1 port 25
- Sursa
# tcpdump -i eth1 src port 25
- Destinație
# tcpdump -i eth1 dst port 25
Filtrarea rețelei:
# tcpdump -i eth1 net 192.168 # tcpdump -i eth1 src net 192.168 # tcpdump -i eth1 dst net 192.168
Filtrarea protocolului:
# tcpdump -i eth1 arp # tcpdump -i eth1 ip # tcpdump -i eth1 tcp # tcpdump -i eth1 udp # tcpdump -i eth1 icmp
ping
Comanda ping (numită după sunetul unui sistem sonar activ) trimite cereri de ecou gazdei pe care o specificați pe linia de comandă și enumeră răspunsurile primite, durata călătoriei dus-întors.
Pur și simplu utilizați ping ca:
ping ip_or_host_name
Rețineți că pentru a opri ping-ul (altfel va merge pentru totdeauna) utilizați CTRL-C (break).
Vă rugăm să rețineți: utilizarea ping/smbmount/ssh sau a altor programe de sistem UNIX cu un nume de computer și nu cu o adresă IP va funcționa numai dacă aveți computerul listat în fișierul /etc/hosts. Iată un exemplu:
192.168.1.100 nou
Această linie spune că este un computer numit „nou” cu adresa IP 192.168.1.100. Acum că există în fișierul /etc/hosts, nu mai trebuie să introduc adresa IP, ci doar numele „nou”. nume de gazdă spune utilizatorului numele de gazdă al computerului la care este conectat. Notă: poate fi numit gazdă.
traceroute traceroute va arăta traseul unui pachet. Încearcă să listeze seria de gazde prin care pachetele dvs. călătoresc în drum spre o anumită destinație. Aruncă o privire și la xtraceroute (unul dintre mai multe echivalente grafice ale acestui program).
Sintaxa comenzii:
traceroute nume_sau_ip_mașină:port
nmap
„instrument de explorare a rețelei și scaner de securitate”. nmap este un instrument de rețea foarte avansat folosit pentru a interoga mașinile (locale sau la distanță) dacă sunt active și ce porturi sunt deschise pe aceste mașini.
Un exemplu simplu de utilizare:
nmap nume_mașină
Acest lucru ar interoga propria mașină cu privire la porturile pe care le păstrează deschise. nmap este un instrument foarte puternic, documentația este disponibilă pe site-ul nmapprecum și informațiile din pagina de manual.
Configurarea rețelei
ifconfig
Această comandă este utilizată pentru a configura interfețele de rețea sau pentru a afișa configurația lor curentă. Pe lângă activarea și dezactivarea interfețelor cu setările „sus” și „jos”, această comandă este necesară pentru setarea informațiilor despre adresa unei interfețe dacă nu aveți scriptul ifcfg. Utilizați ifconfig fie ca:
ifconfig
Aceasta va lista pur și simplu toate informațiile de pe toate dispozitivele de rețea aflate în prezent.
ifconfig eth0 down
Acest lucru va opri eth0 (presupunând că dispozitivul există) în jos, nu va putea primi sau trimite nimic până când nu puneți dispozitivul din nou „up”.
În mod clar, există mult mai multe opțiuni pentru acest instrument, va trebui să citiți manualul/pagina de informații pentru a afla mai multe despre ele.
ifup
Utilizați ifup nume-dispozitiv pentru a afișa o interfață urmând un script (care va conține setările dvs. implicite de rețea). Pur și simplu tastați ifup și veți primi ajutor pentru utilizarea scriptului. De exemplu tastarea:
ifup eth0
Va aduce eth0 în sus dacă este în prezent dezactivat. ifdown Utilizați ifdown nume-dispozitiv pentru a reduce o interfață folosind un script (care va conține setările implicite de rețea). Pur și simplu tastați ifdown și veți primi ajutor pentru utilizarea scriptului.
De exemplu tastarea:
ifdown eth0
Va reduce eth0 dacă este în prezent sus.
ifcfg
Utilizați ifcfg pentru a configura o anumită interfață. Pur și simplu tastați ifcfg pentru a obține ajutor cu privire la utilizarea acestui script.
De exemplu, pentru a schimba eth0 de la 192.168.0.1 la 192.168.0.2, puteți face:
ifcfg eth0 del 192.168.0.1 ifcfg eth0 add 192.168.0.2
Prima comandă elimină eth0 și elimină acea adresă IP stocată, iar a doua o aduce înapoi cu noua adresă.
route
Comanda de rutare este instrumentul folosit pentru a afișa sau modifica tabelul de rutare. Pentru a adăuga o poartă ca implicită, ar trebui să tastați:
route add default gw some_computer
Comenzi specifice internetului
Rețineți că, dacă DNS-ul nu este configurat corect pe computer, trebuie să editați „/etc/resolv.conf” pentru a face lucrurile să funcționeze...
host Efectuează o căutare simplă a unei adrese de internet (folosind sistemul de nume de domeniu, DNS). Pur și simplu tastați:
host adresa_ip sau host nume_domeniu
dig Instrumentul „domain information groper”. Mai avansat decât host. Dacă dați un nume de gazdă ca argument pentru a scoate informații despre gazda respectivă, inclusiv adresa IP, numele de gazdă și diverse alte informații.
De exemplu, pentru a căuta informații despre „www.amazon.com” tastați:
dig www.amazon.com
Pentru a găsi numele gazdei pentru o anumită adresă IP (adică o căutare inversă), utilizați dig cu opțiunea „-x”.
dig -x 100.42.30.95
Aceasta va căuta adresa (care poate să existe sau nu) și va returna adresa gazdei, de exemplu, dacă aceasta a fost adresa „http://slashdot.org”, atunci ar returna „http://slashdot. org”.
whois (acum BW whois) este folosit pentru a căuta informațiile de contact din bazele de date „whois”, serverele sunt susceptibile să dețină numai site-uri importante. Rețineți că este posibil ca informațiile de contact să fie ascunse sau restricționate, deoarece sunt adesea abuzate de către crackeri și alții care caută o modalitate de a provoca daune rău intenționate organizației.
wget (GNU Web get) folosit pentru a descărca fișiere de pe World Wide Web.
Pentru a arhiva un singur site web, utilizați opțiunea -m sau --mirror (oglindă).
Utilizați opțiunea -nc (fără clobber) pentru a opri wget să suprascrie un fișier dacă îl aveți deja.
Utilizați opțiunea -c sau --continue pentru a continua un fișier care a fost neterminat de wget sau de un alt program.
Exemplu simplu de utilizare:
wget url_for_file
Acest lucru ar obține pur și simplu un fișier de pe un site. wget poate, de asemenea, să recupereze mai multe fișiere folosind metacaracterele standard, la fel ca tipul folosit în bash, cum ar fi *, [ ], ?. Pur și simplu utilizați wget ca de obicei, dar utilizați ghilimele simple (' ') pe adresa URL pentru a preveni extinderea bash-urilor. Există complicații dacă preluați de pe un site http (vezi mai jos...).
Exemplu de utilizare avansată, (utilizat din pagina de manual wget):
wget --spider --force-html -i bookmarks.html
Aceasta va analiza fișierul bookmarks.html și va verifica dacă toate linkurile există.
Utilizare avansată: acesta este modul în care puteți descărca mai multe fișiere folosind http (folosind un wildcard...). Note: http nu acceptă descărcarea folosind metacaracterele standard, ftp face, așa că puteți folosi metacaracterele cu ftp și va funcționa bine. O soluție pentru această limitare http este prezentată mai jos:
wget -r -l1 --no-parent -A.gif http://www.website.com[1]
Aceasta se va descărca (recursiv), la o adâncime de unu, cu alte cuvinte în directorul curent și nu mai jos. Această comandă va ignora referințele la directorul părinte și va descărca orice se termină în „.gif”. Dacă doriți să descărcați, spuneți orice se termină cu „.pdf” și adăugați un -A.pdf înainte de adresa site-ului web. Pur și simplu schimbați adresa site-ului web și tipul de fișier descărcat pentru a descărca altceva. Rețineți că a face -A.gif este același lucru cu a face -A „*.gif” (doar ghilimele duble, ghilimele simple nu vor funcționa). wget are multe mai multe opțiuni, consultați secțiunea de exemple a paginii de manual, acest instrument este foarte bine documentat.
Poate doriți să încercați alternative precum httrack. Un program complet de descărcare a site-ului GUI scris în python și disponibil pentru GNU/Linux. Aria2 (aria2c), pentru descarcarea unui fisier cu mai multe conexiuni sau dupa un model.
curl curl este un alt program de descărcare de la distanță. Acest program de descărcare de la distanță este proiectat să funcționeze fără interacțiunea utilizatorului și acceptă o varietate de protocoale, poate încărca/descărca și are un număr mare de trucuri/soluții pentru diverse lucruri. Poate accesa servere de dicționar (dict), servere ldap, ftp, http, gopher, consultați pagina de manual pentru detalii complete. Pentru a accesa manualul complet (care este uriaș) pentru acest tip de comandă:
curl -M
Pentru uz general, îl puteți folosi ca wget. De asemenea, vă puteți autentifica folosind un nume de utilizator utilizând opțiunea -u și introducând numele de utilizator și parola astfel:
curl -u nume utilizator:parolă http://www.placetodownload/file
Pentru a încărca folosind ftp opțiunea -T:
curl -T nume_fișier ftp://ftp.uploadsite.com
Pentru a continua descarcarea unui fișier, utilizați opțiunea -C:
curl -C - -o fișier http://www.site.com
Administrarea la distanță
ssh
Shell securizat, conectați-vă de la distanță pe o mașină care rulează daemonul sshd. Odată ce v-ați conectat, aveți un shell securizat și puteți executa diverse comenzi pe acel computer, cum ar fi să copiați fișiere, să reporniți computerul, la fel cum ar fi propriul dvs. computer GNU/Linux. Sau puteți utiliza ssh cu un nume de gazdă complet pentru a vă conecta la o mașină de la distanță (ca pe internet).
Exemple:
ssh user@hostname
Conectați-vă la un sistem de la distanță cu numele dvs. de utilizator actual, evident veți avea nevoie de parola utilizatorului de pe cealaltă mașină. ssh nume utilizator@nume gazd
scp
Copie securizată, parte a pachetului ssh. Vă permite să copiați fișiere de pe un computer pe alt computer, utilizați -r pentru a copia recursiv (copiați directoare și subdirectoare întregi).
Sintaxa lui scp este întotdeauna
scp machineToBeCopiedFrom machineToBeCopiedTo
Unde fiecare mașină poate fi un director local (pe sistemul de fișiere curent /) sau o mașină la distanță. Mașinile de la distanță sunt de obicei machinesFullName:/directory (dacă omiteți partea de director, va presupune doar directorul principal al numelui de utilizator cu care vă conectați).
Exemplul de mai jos copiază toate fișierele din directorul curent (fără a include niciun director), comanda se va autentifica la „nou” folosind numele de utilizator al persoanei conectate în prezent pe computerul local, fișierele vor fi copiate în directorul rădăcină al computer la distanță numit „nou” (care este probabil pe LAN):
scp * nou:/
De asemenea, puteți copia fișiere de pe alt computer pe alt computer. Să presupunem că sunteți pe un computer numit „p100”. Și doriți să copiați fișierele (și directoarele) din „hp166” (în directorul /tmp și orice de mai jos) în „nou” și să puneți fișierele în directorul temporar al lui new. Ai putea face:
scp -r hp166:/tmp nou:/tmp
Presupunând că ați fost conectat ca „fred”, veți avea nevoie de parole pentru utilizatorul „fred” pe computerele hp166 și noi. Adăugați un user_name@ înaintea numelui computerului pentru a vă conecta sub un alt nume de utilizator.
De exemplu, pentru a efectua comanda de mai sus cu utilizatorul „root” pe hp166 și „anon” pe new, ar trebui să tastați:
scp -r root@hp166:/tmp anon@new:/tmp
Pentru a copia de la o mașină la distanță pe un computer local, pur și simplu faceți lucrurile invers:
scp remoteMachine:/mystuff/* .
Acest lucru va copia fișierele de pe mașina de la distanță din directorul „mystuff” pe computerul dvs. local.
Vă rugăm să rețineți că atunci când lucrați cu o mașină la distanță, trebuie să aveți un : (coloană) după numele mașinii, chiar dacă doriți fișierele în directorul lor principal. În caz contrar, comanda va eșua.
sftp
FTP securizat, o altă parte a pachetului ssh. Această comandă este similară cu ftp, dar folosește un tunel criptat pentru a se conecta la un server ftp și, prin urmare, este mai sigură decât simplu ftp.
Utilizarea comenzii este foarte asemănătoare cu ftp (instrumentul din linia de comandă), sftp (odată ce rulează) folosește comenzi precum help (pentru ajutor), put (trimite fișiere la server), get (descărcă fișiere de pe server) și diverse alții, consultați pagina de manual și documentația internă pentru mai multe detalii.
Fișiere de configurare a rețelei TCP/IP Linux:
/etc/resolv.conf Listați serverele DNS pentru rezoluția numelor de domeniu de internet.
/etc/hosts, hosts.allow, hosts.deny Listează gazde care urmează să fie rezolvate local (nu prin DNS).
Red Hat/Fedora/CentOS: /etc/sysconfig/network Specificați configurația rețelei. de ex. IP static, DHCP, NIS etc.
Red Hat/Fedora/CentOS: /etc/sysconfig/network-scripts/ifcfg-device Specificați informațiile de rețea TCP.
Ubuntu/Debian: /etc/network/interfaces Specificați configurația rețelei și dispozitivele. de ex. IP static și informații, DHCP etc.
Alocarea adresei IP statice:
Alegeți una dintre următoarele metode:
• Linia de comandă: /sbin/ifconfig eth0 192.168.10.12 netmask 255.255.255.0 broadcast 192.168.10.255
Adresa de rețea prin convenție ar fi cea mai mică: 192.168.10.0 Adresa de difuzare prin convenție ar fi cea mai mare: 192.168.10.255 Gateway-ul poate fi orice, dar următoarea convenție: 192.168.10.1
Notă: cele mai înalte și cele mai mici adrese sunt bazate pe masca de rețea. Exemplul anterior se bazează pe o mască de rețea de 255.255.255.0
Fișiere de configurare IP Ubuntu / Debian:
Fișier: /etc/network/interfaces Exemplu de IP static: auto lo iface lo inet loopback auto eth0 iface eth0 inet static adresa 208.88.34.106 mască de rețea 255.255.255.248 difuzat 208.88.34.111 reteaua 208.88.34.104 gateway 208.88.34.110 Exemplu de IP dinamic (DHCP): auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Atribuiți mai mult de o adresă IP unei plăci Ethernet:
ifconfig eth0 XXX.XXX.XXX.XXX masca de rețea 255.255.255.0 difuzat XXX.XXX.XXX.255 ifconfig eth0:0 192.168.10.12 netmask 255.255.255.0 difuzare 192.168.10.255 ifconfig eth0:1 192.168.10.14 netmask 255.255.255.0 difuzare 192.168.10.255 route add -host XXX.XXX.XXX.XXX dev eth0 route add -host 192.168.10.12 dev eth0 route add -host 192.168.10.14 dev eth0 În acest exemplu, 0 și 1 sunt aliasuri în plus față de eth0 obișnuit. Rezultatul comenzii ifconfig: eth0 Link encap:Ethernet HWaddr 00:10:4C:25:7A:3F adresa inet:XXX.XXX.XXX.XXX Bcast:XXX.XXX.XXX.255 Masca:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Pachete RX:14218 erori:0 dropped:0 overruns:0 frame:0 Pachete TX:1362 erori:0 dropped:0 overruns:0 carrier:0 coliziuni:1 txqueuelen:100 Întreruperea: 5 Adresa de bază: 0xe400 eth0:0 Link Encap:Ethernet HWaddr 00:10:4C:25:7A:3F inet adresa:192.168.10.12 Bcast:192.168.10.255 Masca:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Întreruperea: 5 Adresa de bază: 0xe400 eth0:1 Link Encap:Ethernet HWaddr 00:10:4C:25:7A:3F inet adresa:192.168.10.14 Bcast:192.168.10.255 Masca:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Întreruperea: 5 Adresa de bază: 0xe400 Fișier de configurare: /etc/sysconfig/network-scripts/ifcfg-eth0:0 DEVICE=eth0:0 ONBOOT=da BOOTPROTO=static Broadcast=192.168.10.255 IPADDR=192.168.10.12 NETMASK=255.255.255.0 NETWORK=192.168.10.0 ONBOOT=da
Aliasurile pot fi, de asemenea, închise independent. adică: ifdown eth0:0
Route: Sistemul de operare Linux gestionează traficul IP de ieșire și de intrare (Internet Protocol). Traficul de intrare este captat pe baza configurației ARP și a adresei IP. Traficul de ieșire este gestionat de rute. Rutarea determină calea pe care o parcurg aceste pachete, astfel încât să fie trimise la destinațiile lor. Acest lucru este necesar pentru tot traficul IP, local și la distanță, inclusiv atunci când sunt disponibile mai multe interfețe de rețea. Rutele sunt deținute de tabelul de rutare a nucleului.
Intrările în tabelul de rutare directă apar atunci când gazdele sursă și destinație sunt în aceeași rețea fizică și pachetele sunt trimise direct de la sursă la destinație.
Intrările în tabelul de rutare indirectă apar atunci când gazdele sursă și destinație sunt pe rețele fizice diferite. Gazda destinație trebuie să fie atinsă prin unul sau mai multe gateway-uri IP. Primul gateway este singurul care este cunoscut de sistemul gazdă.
Rutarea implicită definește un gateway de utilizat atunci când ruta directă a rețelei și rutele gazdă indirecte nu sunt definite pentru o anumită adresă IP.
Rute statice:IP folosește un tabel de rutare pentru a determina unde trebuie trimise pachetele. Mai întâi pachetul este examinat pentru a vedea dacă destinația lui este pentru rețeaua locală sau la distanță. Dacă urmează să fie trimis la o rețea la distanță, tabelul de rutare este consultat pentru a determina calea. Dacă nu există informații în tabelul de rutare, atunci pachetul este trimis către gateway-ul implicit. Rutele statice sunt setate cu comanda ruta.
Comanda ROUTE comanda route afișează și manipulează și tabelul de rutare ip. Pentru a vedea tabelul de rutare implicit în Linux, tastați următoarea comandă.
- traseu
Tabelul de rutare IP al nucleului
Destination Gateway Genmask Flags Metric Ref Utilizare Iface 192.168.50.0 * 255.255.255.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1002 0 0 eth0 default 192.168.50.1 0.0.0.0 UG 0 0 0 eth0
Adăugarea, ștergerea rutelor și Gateway implicit cu următoarele comenzi.
Adăugarea rutei
# route add -net 10.10.10.0/24 gw 192.168.0.1
Ștergerea traseului
# route del -net 10.10.10.0/24 gw 192.168.0.1
Adăugarea gateway-ului implicit
# route add default gw 192.168.0.1
ICMP:
ICMP este protocolul de rețea folosit de comenzile ping și traceroute.
Blocarea ICMP și aspectul invizibil pentru ping:
Următoarele reguli de firewall vor elimina solicitările ICMP.
iptables -A OUTPUT -p icmp -d 0/0 -j DROP
Folosind tcpdump pentru a monitoriza rețeaua:
[root]# ifconfig eth0 promisc - Pune nic în modul promiscuu pentru a mirosi traficul. [root]# tcpdump -n host not XXX.XXX.XXX.XXX | more - Sniff net, dar ignora IP care este sesiunea ta la distanță.
Management retea nivel 1 - NetworkManager
Management retea nivel 2 - Netplan
Tabelele (filtre) de retea
nivel 1 - iptables (legacy)
Instrucțiuni de bază pentru iptables Iptables este un firewall, instalat implicit pe toate distribuțiile oficiale Ubuntu. Există o mulțime de informații disponibile despre iptables, dar multe dintre ele sunt destul de complexe și, dacă doriți să faceți câteva lucruri de bază, acest How To este pentru dvs.
Comenzi de bază Tastarea
sudo iptables -L
listează regulile tale curente în iptables. Dacă tocmai v-ați configurat serverul, nu veți avea reguli și ar trebui să vedeți INTRARE în lanț (politica ACCEPTĂ)
target prot opt sursă destinație
Lanț FORWARD (politica ACCEPT)
target prot opt sursă destinație
Ieșire în lanț (politica ACCEPT)
target prot opt sursă destinație
Opțiuni de bază pentru Iptables Iată explicații pentru unele dintre opțiunile iptables pe care le veți vedea în acest tutorial. Nu vă faceți griji că înțelegeți totul aici acum, dar amintiți-vă să reveniți și să priviți această listă pe măsură ce întâlniți noi opțiuni mai târziu.
• -A - Adăugați această regulă la un lanț de reguli. Lanțurile valide pentru ceea ce facem sunt INPUT, FORWARD și OUTPUT, dar în mare parte ne ocupăm de INPUT în acest tutorial, care afectează doar traficul de intrare. • -L - Listează regulile curente de filtrare. • -m conntrack - Permite regulilor de filtrare să se potrivească în funcție de starea conexiunii. Permite utilizarea opțiunii --ctstate. • --ctstate - Definiți lista de stări cu care să se potrivească regula. Stările valide sunt: ◦ NOU - Conexiunea nu a fost încă văzută. ◦ RELATED - Conexiunea este nouă, dar este legată de o altă conexiune deja permisă. ◦ STABILIT - Conexiunea este deja stabilită. ◦ INVALID - Traficul nu a putut fi identificat dintr-un motiv oarecare. • -m limit - Solicită ca regula să se potrivească doar de un număr limitat de ori. Permite utilizarea opțiunii --limit. Util pentru limitarea regulilor de logare. ◦ --limit - Rata maximă de potrivire, dată ca număr urmat de „/secundă”, „/minut”, „/oră” sau „/zi”, în funcție de cât de des doriți să se potrivească regula. Dacă această opțiune nu este utilizată și este utilizată limita -m, valoarea implicită este „3/oră”. • -p - Protocolul de conectare utilizat. • --dport - Portul (porturile) de destinație necesare pentru această regulă. Poate fi dat un singur port sau poate fi dat un interval ca start:end, care se va potrivi cu toate porturile de la început până la sfârșit, inclusiv. • -j - Salt la ținta specificată. Implicit, iptables permite patru ținte: ◦ ACCEPT - Acceptați pachetul și opriți procesarea regulilor din acest lanț. ◦ REJECT - Respingeți pachetul și notificați expeditorul că am făcut acest lucru și opriți procesarea regulilor din acest lanț. ◦ DROP - Ignorați în tăcere pachetul și opriți procesarea regulilor din acest lanț. ◦ LOG - Înregistrați pachetul și continuați să procesați mai multe reguli în acest lanț. Permite utilizarea opțiunilor --log-prefix și --log-level. • --log-prefix - Când vă conectați, puneți acest text înaintea mesajului de jurnal. Folosiți ghilimele duble în jurul textului de utilizat. • --log-level - Log utilizând nivelul syslog specificat. 7 este o alegere bună, cu excepția cazului în care aveți nevoie de altceva. • -i - Se potrivește numai dacă pachetul vine pe interfața specificată. • -I - Inserează o regulă. Este nevoie de două opțiuni, lanțul în care să insereze regula și numărul regulii care ar trebui să fie. ◦ -I INPUT 5 ar introduce regula în lanțul INPUT și o face a 5-a regulă din listă. • -v - Afișează mai multe informații în rezultat. Util pentru dacă aveți reguli care arată similar fără a utiliza -v. • -s --source - adresa[/mask] specificarea sursei • -d --destination - adresa[/mask] specificația destinației • -o --out-interface - nume de ieșire[+] nume de interfață de rețea ([+] pentru wildcard)
Permiterea sesiunilor stabilite Putem permite sesiunilor stabilite să primească trafic: sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
• Regula de mai sus nu are spații pe fiecare parte a virgulei în ESTABLISHED,RELATED
Dacă linia de mai sus nu funcționează, este posibil să fiți pe un VPS castrat al cărui furnizor nu a pus la dispoziție extensia, caz în care o versiune inferioară poate fi folosită ca ultimă soluție:
sudo iptables -A INPUT -m stare --state ESTABLISHED,RELATED -j ACCEPT
Permiterea traficului de intrare pe anumite porturi Ați putea începe prin a bloca traficul, dar este posibil să lucrați prin SSH, unde ar trebui să permiteți SSH înainte de a bloca orice altceva. Pentru a permite traficul de intrare pe portul SSH implicit (22), ați putea spune iptables să permită intrarea întregului trafic TCP de pe acel port.
sudo iptables -A INTRARE -p tcp --dport ssh -j ACCEPT
Referindu-ne la lista de mai sus, puteți vedea că aceasta spune iptables:
• adăugați această regulă la lanțul de intrare (-A INPUT) astfel încât să ne uităm la traficul de intrare • verificați dacă este TCP (-p tcp). • dacă da, verificați pentru a vedea dacă intrarea merge la portul SSH (--dport ssh). • dacă da, acceptați intrarea (-j ACCEPT).
Să verificăm regulile: (afișate doar primele câteva rânduri, vei vedea mai multe)
sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh Now, let's allow all incoming web traffic sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT Checking our rules, we have sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:www
Am permis în mod special traficul tcp către porturile ssh și web, dar, deoarece nu am blocat nimic, tot traficul poate intra în continuare.
Blocarea traficului Odată ce este luată decizia de a accepta un pachet, nu mai există reguli care îl afectează. Întrucât regulile noastre care permit traficul ssh și web sunt pe primul loc, atâta timp cât regula noastră de a bloca tot traficul vine după ele, putem totuși să acceptăm traficul pe care îl dorim. Tot ce trebuie să facem este să punem regula de a bloca tot traficul la sfârșit.
sudo iptables -A INPUT -j DROP sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:www DROP all -- anywhere anywhere
Deoarece nu am specificat o interfață sau un protocol, orice trafic pentru orice port de pe orice interfață este blocat, cu excepția web și ssh.
Editarea iptables Singura problemă cu configurația noastră de până acum este că chiar și portul loopback este blocat. Am fi putut scrie regula drop doar pentru eth0 specificând -i eth0, dar am putea adăuga și o regulă pentru loopback. Dacă anexăm această regulă, va veni prea târziu - după ce tot traficul a fost eliminat. Trebuie să introducem această regulă înainte de asta. Deoarece acesta este mult trafic, îl vom introduce ca primă regulă, astfel încât să fie procesat mai întâi.
sudo iptables -I INPUT 1 -i lo -j ACCEPT sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:www DROP all -- anywhere anywhere
Prima și ultima linie arată aproape la fel, așa că vom enumera iptables mai detaliat.
sudo iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:www 0 0 DROP all -- any any anywhere anywhere
Acum puteți vedea mult mai multe informații. Această regulă este de fapt foarte importantă, deoarece multe programe folosesc interfața loopback pentru a comunica între ele. Dacă nu le lași să vorbească, ai putea rupe acele programe! Înregistrare În exemplele de mai sus, niciunul din trafic nu va fi înregistrat. Dacă doriți să înregistrați pachetele abandonate în syslog, aceasta ar fi cea mai rapidă modalitate: sudo iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
Tipuri de lanțuri
iptables folosește trei lanțuri diferite: intrare, înainte și ieșire. (INPUT,FORWARD,OUTPUT) Intrare – Acest lanț este folosit pentru a controla comportamentul conexiunilor de intrare. De exemplu, dacă un utilizator încearcă să facă SSH pe PC/server, iptables va încerca să potrivească adresa IP și portul cu o regulă din lanțul de intrare. Redirecționare – Acest lanț este utilizat pentru conexiunile de intrare care nu sunt de fapt livrate local. Gândiți-vă la un router – datele îi sunt întotdeauna trimise, dar rareori sunt destinate ruterului în sine; datele sunt doar redirecționate către ținta sa.
Dacă nu faci un fel de rutare, NATing sau altceva pe sistemul tău care necesită redirecționare, nici măcar nu vei folosi acest lanț. Există o modalitate sigură de a verifica dacă sistemul dvs. utilizează sau nu are nevoie de lanțul înainte.
iptables -L -v
Captura de ecran de mai sus este a unui server care rulează de câteva săptămâni și nu are restricții privind conexiunile de intrare sau de ieșire. După cum puteți vedea, lanțul de intrare a procesat 11 GB de pachete, iar lanțul de ieșire a procesat 17 GB. Lanțul înainte, pe de altă parte, nu a fost nevoie să proceseze un singur pachet. Acest lucru se datorează faptului că serverul nu efectuează niciun fel de redirecționare sau este utilizat ca dispozitiv de trecere.
Ieșire – Acest lanț este utilizat pentru conexiunile de ieșire. De exemplu, dacă încercați să ping howtogeek.com, iptables își va verifica lanțul de ieșire pentru a vedea care sunt regulile referitoare la ping și howtogeek.com înainte de a lua o decizie de a permite sau de a refuza încercarea de conectare.
Comportamentul implicit al lanțului de politici Înainte de a intra și de a configura reguli specifice, veți dori să decideți care doriți să fie comportamentul implicit al celor trei lanțuri. Cu alte cuvinte, ce vrei să facă iptables dacă conexiunea nu se potrivește cu nicio regulă existentă? Pentru a vedea ceea ce lanțurile dvs. de politici sunt configurate în prezent cu traficul nepotrivit, executați comanda iptables -L.
După cum puteți vedea, am folosit și comanda grep pentru a ne oferi rezultate mai curate. În acea captură de ecran, se crede că lanțurile noastre acceptă trafic. De multe ori, veți dori ca sistemul dvs. să accepte conexiuni în mod implicit. Dacă nu ați modificat anterior regulile lanțului de politici, această setare ar trebui să fie deja configurată. În orice caz, iată comanda pentru a accepta conexiunile în mod implicit:
iptables --policy INPUT ACCEPT iptables --policy OUTPUT ACCEPT iptables --policy FORWARD ACCEPT
Implicitând regula de acceptare, puteți utiliza apoi iptables pentru a refuza anumite adrese IP sau numere de porturi, continuând să acceptați toate celelalte conexiuni. Vom ajunge la acele comenzi într-un minut. Dacă preferați să refuzați toate conexiunile și să specificați manual cărora doriți să le permiteți să se conecteze, ar trebui să modificați politica implicită a lanțurilor dvs. pentru a renunța. Acest lucru ar fi probabil util doar pentru serverele care conțin informații sensibile și care au întotdeauna aceleași adrese IP conectate la ele. iptables --policy INPUT DROPiptables --policy OUTPUT DROPiptables --policy FORWARD DROP
Răspunsuri specifice conexiunii Cu politicile implicite de lanț configurate, puteți începe să adăugați reguli la iptables, astfel încât să știe ce să facă atunci când întâlnește o conexiune de la sau către o anumită adresă IP sau port. În acest ghid, vom trece peste cele trei „răspunsuri” cele mai elementare și utilizate în mod obișnuit. Accept – Permite conexiunea. Renunțați – Renunțați la conexiunea, acționați ca și cum nu s-ar fi întâmplat niciodată. Acest lucru este cel mai bine dacă nu doriți ca sursa să realizeze că sistemul dvs. există. Respingere – Nu permiteți conexiunea, dar trimiteți înapoi o eroare. Acest lucru este cel mai bine dacă nu doriți ca o anumită sursă să se conecteze la sistemul dvs., dar doriți ca ei să știe că firewall-ul dvs. le-a blocat. Cel mai bun mod de a arăta diferența dintre aceste trei reguli este să arăți cum arată atunci când un PC încearcă să pună ping la o mașină Linux cu iptables configurat pentru fiecare dintre aceste setări.
Respingerea conexiunii:
Permiterea sau blocarea conexiunilor specifice Cu lanțurile de politici configurate, acum puteți configura iptables pentru a permite sau bloca anumite adrese, intervale de adrese și porturi. În aceste exemple, vom seta conexiunile la DROP, dar le puteți comuta la ACCEPT sau REJECT, în funcție de nevoile dvs. și de modul în care v-ați configurat lanțurile de politici. Notă: În aceste exemple, vom folosi iptables -A pentru a adăuga reguli la lanțul existent. iptables începe din partea de sus a listei sale și parcurge fiecare regulă până când găsește una care se potrivește. Dacă trebuie să inserați o regulă deasupra alteia, puteți utiliza iptables -I [lanț] [număr] pentru a specifica numărul pe care ar trebui să-l figureze în listă. Conexiuni de la o singură adresă IP
Acest exemplu arată cum să blocați toate conexiunile de la adresa IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Conexiuni de la o serie de adrese IP Acest exemplu arată cum să blocați toate adresele IP din intervalul de rețea 10.10.10.0/24. Puteți utiliza o mască de rețea sau o notație standard pentru a specifica intervalul de adrese IP.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
sau
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Conexiuni la un anumit port Acest exemplu arată cum să blocați conexiunile SSH din 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
Puteți înlocui „ssh” cu orice protocol sau număr de port. Partea -p tcp a codului spune iptables ce fel de conexiune folosește protocolul. Dacă ați blocat un protocol care utilizează UDP mai degrabă decât TCP, atunci ar fi necesar -p udp. Acest exemplu arată cum să blocați conexiunile SSH de la orice adresă IP.
iptables -A INPUT -p tcp --dport ssh -j DROP
Statele de conexiune După cum am menționat mai devreme, o mulțime de protocoale vor necesita comunicare în două sensuri. De exemplu, dacă doriți să permiteți conexiuni SSH la sistemul dvs., lanțurile de intrare și ieșire vor avea nevoie de o regulă adăugată la ele. Dar, ce se întâmplă dacă doriți doar ca SSH să intre în sistemul dvs. să fie permis? Adăugarea unei reguli la lanțul de ieșire nu va permite și încercările SSH de ieșire? Aici intervin stările de conexiune, care vă oferă capacitatea de care aveți nevoie pentru a permite comunicarea în două sensuri, dar permite stabilirea conexiunilor într-un singur sens. Uitați-vă la acest exemplu, unde conexiunile SSH DE LA 10.10.10.10 sunt permise, dar conexiunile SSH LA 10.10.10.10 nu sunt. Cu toate acestea, sistemului i se permite să trimită înapoi informații prin SSH atâta timp cât sesiunea a fost deja stabilită, ceea ce face posibilă comunicarea SSH între aceste două gazde.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m stare --state NOU,STABILIT -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m stat --state ESTABLISHED -j ACCEPT
Salvarea modificărilor Modificările pe care le faceți regulilor dvs. iptables vor fi eliminate data viitoare când serviciul iptables va fi repornit, cu excepția cazului în care executați o comandă pentru a salva modificările. Această comandă poate diferi în funcție de distribuția dvs.:
sudo /sbin/iptables-save
Alte Comenzi Listați regulile iptables configurate în prezent: iptables -L Adăugarea opțiunii -v vă va oferi informații despre pachet și octet, iar adăugarea -n va lista totul numeric. Cu alte cuvinte – numele de gazdă, protocoalele și rețelele sunt listate ca numere. Pentru a șterge toate regulile configurate în prezent, puteți lansa comanda de golire. iptables -F
nivel 1 - nftables
Tabele:
se refera la unul dintre tipurile de tabele: ip (implicit), arp, ip6, bridge, inet, netdev.
% nft list tables [<family>] % nft [-n] [-a] list table [<family>] <name> % nft (add | delete | flush) table [<family>] <name>
The argument -n shows the addresses and other information that use names in numeric format. The -a argument is used to display each rule's handle (i.e., a numerical identifier).
Lanturi:
filter: Supported by arp, bridge, ip, ip6 and inet table families. route: Mark packets (like mangle for the output hook, for other hooks use the type filter instead), supported by ip and ip6. nat: In order to perform Network Address Translation, supported by ip and ip6.
Hook: Se refera la stadiul acelui pachet in timp ce este procesat de kernel in Netfilter.
The hooks for ip, ip6 and inet families are: prerouting, input, forward, output, postrouting. The hooks for arp family are: input, output. The bridge family handles ethernet packets traversing bridge devices. The hooks for netdev are: ingress, egress.
policy este verdictul pentru a controla cursul acelui pachet in lant si tabel. Posibile valori: accept (default) si drop.
% nft (add | create) chain [<family>] <table> <name> [ \{ type <type> hook <hook> [device <device>] priority <priority> \; [policy <policy> \;] \} ] % nft (delete | list | flush) chain [<family>] <table> <name> % nft rename chain [<family>] <table> <name> <newname>
Reguli
Inserate la inceputul unui lant
% nft add rule [<family>] <table> <chain> <matches> <statements> % nft insert rule [<family>] <table> <chain> [position <handle>] <matches> <statements> % nft replace rule [<family>] <table> <chain> [handle <handle>] <matches> <statements> % nft delete rule [<family>] <table> <chain> [handle <handle>]
Listeaza regulile
% nft list ruleset
Sterge regulile
% nft flush ruleset
Incarca reguli
Create a command batch file and load it with the nft interpreter, % echo "flush ruleset" > /etc/nftables.rules % echo "add table filter" >> /etc/nftables.rules % echo "add chain filter input" >> /etc/nftables.rules % echo "add rule filter input meta iifname lo accept" >> /etc/nftables.rules % nft -f /etc/nftables.rules or create an executable nft script file, % cat << EOF > /etc/nftables.rules > #!/usr/local/sbin/nft -f > flush ruleset > add table filter > add chain filter input > add rule filter input meta iifname lo accept > EOF % chmod u+x /etc/nftables.rules % /etc/nftables.rules or create an executable nft script file from an already created ruleset, % nft list ruleset > /etc/nftables.rules % nft flush ruleset % nft -f /etc/nftables.rules
Exemple
Simple IP/IPv6 Firewall flush ruleset table firewall { chain incoming { type filter hook input priority 0; policy drop; # established/related connections ct state established,related accept # loopback interface iifname lo accept # icmp icmp type echo-request accept # open tcp ports: sshd (22), httpd (80) tcp dport { ssh, http } accept } } table ip6 firewall { chain incoming { type filter hook input priority 0; policy drop; # established/related connections ct state established,related accept # invalid connections ct state invalid drop # loopback interface iifname lo accept # icmp # routers may also want: mld-listener-query, nd-router-solicit icmpv6 type { echo-request, nd-neighbor-solicit } accept # open tcp ports: sshd (22), httpd (80) tcp dport { ssh, http } accept } }
layer 2 - ufw
Introducere
UFW (Uncomplicated firewall) este un instrument de configurare firewall care rulează prin iptables/nftables, inclus în mod implicit în distribuțiile Ubuntu. Acesta oferă o interfață simplificată pentru configurarea cazurilor comune de utilizare a firewall-ului prin intermediul liniei de comandă.
Amintiți-vă că puteți verifica regulile actuale UFW cu sudo ufw status/ sudo ufw status verbose. Verificarea statutului UFW
sudo ufw status Status: inactive
Activează UFW
sudo ufw enable Firewall is active and enabled on system startup
Pentru a vedea ce este blocat sau permis în prezent, puteți utiliza verboseParametrul atunci când alergați ufw status, după cum urmează:
sudo ufw status Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip
Dezactivarea UFW
sudo ufw disable
Fiți conștienți de faptul că această comandă va dezactiva pe deplin serviciul firewall pe sistemul dvs. Blocați o adresă IP
Pentru a bloca toate conexiunile de rețea care provin de la o anumită adresă IP, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o blocați:
$ sudo ufw deny from 203.0.113.100 Rule added $ ufw status Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100
Toate conexiunile, care vin sau ies, sunt blocate pentru adresa IP specificată.
Blocarea unui subnet
Dacă trebuie să blocați un subnet complet, puteți utiliza adresa de subnet ca fromParametrul de pe ufw deny- Deţinere. Acest lucru ar bloca toate adresele IP în exemplul subnet 203.0.113.0/24: :
sudo ufw deny from 203.0.113.0/24 Rule added
Blocarea conexiunilor la o interfață de rețea
Pentru a bloca conexiunile de intrare de la o anumită adresă IP la o anumită interfață de rețea, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o blocați:
sudo ufw deny in on eth0 from 203.0.113.100 Rule added
Permite o adresă IP
Pentru a permite toate conexiunile de rețea care provin de la o anumită adresă IP, rulați următoarea comandă, înlocuind adresa IP evidențiată cu adresa IP pe care doriți să o permiteți acces:
sudo ufw allow from 203.0.113.101 Rule added ufw statusAcum, veți vedea o ieșire similară cu aceasta, arătând cuvântul ALLOWlângă adresa IP tocmai ați adăugat. Output Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101
De asemenea, puteți permite conexiuni de la un întreg subnet prin furnizarea de mască de subnet corespunzătoare pentru o gazdă, cum ar fi 203.0.113.0/24. . Permiteți conexiunile de intrare la o interfață de rețea
Pentru a permite conexiunile primite de la o anumită adresă IP la o anumită interfață de rețea, rulați următoarea comandă, înlocuiți adresa IP evidențiată cu adresa IP pe care doriți să o permiteți:
sudo ufw allow in on eth0 from 203.0.113.102 Rule added Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102
Pentru a șterge o regulă pe care o configurați anterior în UFW, utilizați ufw deleteUrmat de regula ( allowsau deny) și specificația țintă. Următorul exemplu ar șterge o regulă stabilită anterior pentru a permite toate conexiunile de la o adresă IP a 203.0.113.101: :
sudo ufw delete allow from 203.0.113.101 Rule deleted
Un alt mod de a specifica ce regulă doriți să ștergeți este prin furnizarea de ID-ul de reguli. Aceste informatii pot fi obtinute cu urmatoarea comanda:
sudo ufw status numbered Status: active
To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102
Din ieșire, puteți vedea că există două reguli active. Prima regulă, cu valori evidențiate, neagă toate conexiunile care provin de la adresa IP 203.0.113.100. . A doua regulă permite conexiuni pe eth0interfaţă care vine de la adresa IP 203.0.113.102. .
Deoarece în mod implicit UFW blochează deja tot accesul extern, cu excepția cazului în care este permis în mod explicit, prima regulă este redundantă, astfel încât să o puteți elimina.
Listă Profiluri de Aplicatie Disponibile
La instalare, aplicațiile care se bazează pe comunicațiile de rețea vor configura de obicei un profil UFW pe care îl puteți utiliza pentru a permite conectarea de la adresele externe. Acest lucru este adesea la fel ca alergarea ufw allow from, cu avantajul de a furniza o scurtătură care absoarbe numerele specifice de port pe care un serviciu le utilizează și oferă o nomenclatură ușor de utilizat la serviciile de referință.
Pentru a lista profilurile disponibile în prezent, rulați următoarele:
sudo ufw app list
Dacă ați instalat un serviciu, cum ar fi un server web sau alt software dependent de rețea și un profil nu a fost pus la dispoziție în cadrul UFW, asigurați-vă mai întâi că serviciul este activat. Pentru servere de la distanță, veți avea de obicei OpenSSH ușor disponibil:
Available applications: OpenSSH
În exemplul următor, permitem profilul OpenSSH, care va permite toate conexiunile SSH primite pe portul SSH implicit.
sudo ufw allow “OpenSSH” Rule added Rule added (v6)
Amintiți-vă să citați nume de profil care constau din mai multe cuvinte, cum ar fi Nginx HTTPS. . Dezactivarea Profilului De Aplicare
Pentru a dezactiva un profil de aplicare pe care l-ați configurat anterior în cadrul UFW, va trebui să eliminați regula corespunzătoare. De exemplu, luați în considerare următoarea ieșire din sudo ufw status: :
sudo ufw status
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
Această ieșire indică faptul că Nginx FullProfilul de aplicație este activat în prezent, permițând oricare și toate conexiunile la serverul web atât prin HTTP, cât și prin HTTPS. Dacă doriți să permiteți doar solicitări HTTPS de la și la serverul dvs. web, ar trebui să activați mai întâi regula cea mai restrictivă, care în acest caz ar fi Nginx HTTPS, apoi dezactivați activul în prezent Nginx Fullregula:
sudo ufw allow "Nginx HTTPS" sudo ufw delete allow "Nginx Full"
Amintiți-vă că puteți lista toate profilurile de aplicații disponibile cu sudo ufw app list. . Permite SSH
Când lucrați cu servere de la distanță, veți dori să vă asigurați că portul SSH este deschis la conexiuni, astfel încât să puteți să vă conectați la serverul dvs. de la distanță.
Următoarea comandă va permite profilul aplicației OpenSSH UFW și va permite toate conexiunile la portul SSH implicit de pe server:
sudo ufw allow OpenSSH Rule added Rule added (v6)
Deși mai puțin ușor de utilizat, o sintaxa alternativă este de a specifica numărul portului exact al serviciului SSH, care este de obicei setat la 22În mod implicit:
sudo ufw allow 22 Rule added Rule added (v6)
Permiteți Intrarea SSH de la adresa IP specifică sau subnet
Pentru a permite conexiunile de intrare de la o anumită adresă IP sau a subnet, veți include o fromdirectivă de definire a sursei conexiunii. Acest lucru va necesita să specificați și adresa de destinație cu o toUn parametru. Pentru a bloca această regulă numai la SSH, veți limita proto(protocol) la tcpşi apoi să folosească portparametrii și setați-l la 22, portul implicit al SSH.
Următoarea comandă va permite numai conexiunile SSH provenite de la adresa IP 203.0.113.103: :
sudo ufw allow from 203.0.113.103 proto tcp to any port 22 Rule added