Configurarea centos firewall 7 cu exemple de comandă

Centos 7, spre deosebire de CentOS 6, în baza de date are un nou firewall - firewall. Poate fi dezactivat și înlocuit cu iptables-urile vechi, dar dacă nu există condiții prealabile directe, este mai bine să te obișnuiești cu ceva nou și să nu te odihnești pe cel vechi. Acest lucru nu înseamnă că Windows 10 este mai bun decât Windows 7, iar Windows XP este mai bun decât Windows 7;) Un bun exemplu pe această temă este selinux. Dacă la început aproape totul (și eu) a fost oprit și chiar puțin certat, acum aproape nimeni nu îl sfătuiește, numai dacă există o certitudine că este atât de necesar. Dimpotrivă, mulți s-au obișnuit deja (sau sunt obișnuiți cu) folosind semanage. Nu vom face asta, iar noi imediat închidem firewall-ul și încercăm, cum gustă.

Firewall nu este un firewall fundamental diferit. Acesta este un alt add-on pentru netfilter, deci dacă aveți experiență cu iptables, atunci după un timp veți începe să utilizați în mod liniar noul instrument.

Configurarea centos firewall 7 cu exemple de comandă

Pornirea și oprirea firewall-ului

Să vedem dacă rulează firewall:

# systemstat status firewalld

Vor exista informații extinse. Pe scurt, da (de lucru) sau nu, puteți face acest lucru:

# firewall-cmd -state
funcționare

# systemctl stop firewalld

# systemctl dezactivează firewall-ul

# systemctl start firewalld

# systemctl permite activarea firewall-ului

Zone de protecție

În firewall, conceptul de zonă este utilizat pe scară largă. Lista tuturor zonelor valide implicite:

# firewall-cmd -get-zones
bloc dmz drop externe acasă interne de încredere de lucru

Alocarea zonelor (condițional, desigur):

  • drop - toate pachetele primite sunt scoase fără un răspuns. Numai conexiunile de ieșire sunt permise.
  • bloc - conexiunile de intrare sunt respinse cu răspunsul icmp-gazdă-interzis (sau icmp6-adm-interzis). Numai conexiunile inițiate de sistem sunt permise.
  • public este zona implicită. Din titlu este clar că această zonă vizează să lucreze în rețele publice. Nu avem încredere în această rețea și permitem doar anumite conexiuni.
  • zonă externă pentru interfața externă a routerului (așa-numita mascare). Doar conexiunile de intrare definite de noi sunt permise.
  • dmz - zonă DMZ, sunt permise numai anumite conexiuni de intrare.
  • zona de lucru a rețelei de lucru. Încă nu avem încredere în nimeni, dar nu la fel de mult ca înainte :) Sunt permise numai anumite conexiuni primite.
  • home - home zone. Avem încredere în mediul înconjurător, dar sunt permise numai anumite conexiuni
  • zona interioară - interioară. Avem încredere în mediul înconjurător, dar sunt permise numai anumite conexiuni
  • încredere - totul este permis.

Lista tuturor zonelor active:

# firewall-cmd - zone -get-active
public
interfețe: enp1s0

Da, zona publică la care este atașată interfața de rețea enp1so. Alături de zona publică, adăugați un nou port pe care va fi suspendat sshd.

Cunoscând numele interfeței de rețea (de exemplu, enp1s0), puteți afla în ce zonă aparține:

# firewall-cmd -get-zona-interfață = enp1s0
public

Și puteți afla care interfețe aparțin unei anumite zone:

# firewall-cmd - zone = public - interfețe listă
enp1s0

Exemplu: activați ssh pe un port non-standard

Să permitem accesul la server prin ssh pe portul 2234 / tcp, nu la 22 / tcp, ca implicit. În trecere, un simplu touch-selinux.

Mai întâi să vedem ce este permis în orice moment pe serverul nostru:

# firewall-cmd -permanent -list-toate
public (implicit)
interfețe:
surse:
servicii: ssh dhcpv6-client
mascarada: nu
forward-porturi:
icmp-blocuri:
reguli bogate:

Nu folosesc încă ipv6, așa că o voi elimina imediat. regula de la firewall:

# firewall-cmd -permanent -zone = public -remove-service = dhcpv6-client

Să o rezolvăm permanent (astfel încât după repornire nu se pierde) conexiunea la portul 2234 / tcp (vom suspenda sshd pe el):

# Firewall-cmd --permanent --zone = publice --add-port = 2234 / tcp

# firewall-cmd - zone = public - port-list
2234 / tcp

Ok, portul este deschis. Editarea configului sshd:

# nano / etc / ssh / sshd_config
.
port 2234
.

# systemctl reporni sshd.service

Dar SELinux, pe care sper că nu l-ați deconectat, nu vă va permite să vă conectați la ssh pe un port non-standard (portul 2234 / tcp pentru sshd - non-standard). Puteți sări peste acest pas și verificați cum funcționează protecția SELinux sau puteți seta totul imediat:

# yum oferă semanage
# instalați yum policycoreutils-python
# portul semanage -a -t ssh_port_t -p tcp 2234

Acum totul este ok. Verificați conexiunea pe ssh pe noul port. Dacă totul este în regulă, nu vom putea accesa portul 22:

# firewall-cmd -permanent --zone = public --remove-service = ssh
# firewall-cmd - reîncărcare

Uite, sa dovedit:

# firewall-cmd - lista-toate
public (implicit, activ)
interfețe:
surse:
servicii:
porturi: 2234 / tcp
mascarada: nu
forward-porturi:
icmp-blocuri:
reguli bogate:

Alte comenzi utile:

Activați modul de blocare pentru toate pachetele de ieșire și de intrare:

Dezactivați modul de blocare pentru toate pachetele de ieșire și de intrare:

Aflați dacă modul de blocare al tuturor pachetelor de ieșire și de intrare este activat:

Reîncărcați regulile firewall fără a pierde conexiunile curente:

Reporniți regulile firewall și resetați conexiunile curente (recomandată numai în caz de probleme):

Adăugați o interfață de rețea la zonă:

# firewall-cmd -zone = public --add-interface = em1

Adăugați o interfață de rețea în zonă (aceasta va fi salvată după repornirea paravanului de protecție):

# firewall-cmd - zone = public - permanent - add-interface = em1

Este posibil ca config-ul ifcfg-enp1s0 să precizeze în ce zonă aparține această interfață. Pentru a face acest lucru, adăugați ZONE = work la fișierul / etc / sysconfig / network-scripts / ifcfg-enp1s0. Dacă nu este specificată ZONE, va fi alocată o zonă implicită (parametrul DefaultZone din /etc/firewalld/firewalld.conf.

Permiteți intervalul de porturi:

# firewall-cmd -zone = public -add-port = 5059-5061 / udp

Mascarada (mascarada, el este nat, el este la fel.):

# firewall-cmd - zone = extern - căutare-mascare

# firewall-cmd - zone = externe - add-masquerade

Aici trebuie menționat faptul că puteți include, de exemplu, mascarada pentru zona publică.

Redirecționați intrarea către portul 22 către o altă gazdă:

# firewall-cmd - zone = extern - add-forward-port = port = 22: proto = tcp: toaddr = 192.168.1.23

Redirecționați intrarea către portul 22 către o altă gazdă, cu o modificare a portului de destinație (de la 22 la 192.168.1.23:2055):

# firewall-cmd --zone = extern /
--add-forward-port = port = 22: proto = tcp: toport = 2055: toaddr = 192.168.1.23

Pe aceasta voi termina, tk. exemplele pot fi infinit de multe. Voi adăuga doar că eu personal nu mi-am formulat opinia cu privire la inovația firewall-ului. vă veți obișnui cu sintaxa pentru o lungă perioadă de timp și dacă există diferite sisteme de operare Linux în grădina dvs. zoologică, atunci problemele pot fi probleme cu un obicei. Dar stăpânirea firewall-ului, extindeți orizontul - mai des, merită efortul.

Nu vreau firewall! Dă-mi înapoi vechile iptables!

Dacă totuși doriți să reveniți la trecut și să înlocuiți firewall-ul cu iptables, atunci nu este deloc dificil:

Cei nou veniti aici nu apartin:

# systemctl dezactivează firewall-ul
# systemctl stop firewalld

Am pus vechile iptables vechi:

# yum instalează iptables-services

# systemctl începe iptables
# systemctl începe ip6tables

Autorun la putere:

# systemctl permite iptables
# systemctl permite ip6tables

Pentru a salva regulile iptables după repornire:

# / sbin / iptables-save> / etc / sysconfig / iptables
# / Sbin / ip6tables-save> / etc / sysconfig / ip6tables

# service iptables save

Regulile actuale se găsesc în următoarele fișiere:
/ etc / sysconfig / iptables
/ etc / sysconfig / ip6tables

Reporniți iptables (de exemplu, după efectuarea oricăror modificări):

# systemctl reporni iptables.service