Otvaranje porta centos 7. Trajna promjena zone sučelja

Danas ću vas upoznati sa svojom vizijom početne konfiguracije univerzalnog poslužitelja na popularnom OS-u. Govorit ću o tome kako izvršiti osnovno postavljanje centos poslužitelja odmah nakon instalacije kako biste ga koristili u bilo kojem svojstvu prema vlastitom nahođenju. Dani praktični savjeti povećavaju sigurnost i udobnost rada s poslužiteljem. Članak će biti relevantan za dva najnovija izdanja Centos - 7 i 8.

  1. Navedite početne centos postavke koje izvodim na svježe instaliranom poslužitelju.
  2. Pokažite primjere konfiguracija koje koristim u tipičnom postavljanju.
  3. Dajte savjet o postavljanju centos na temelju vašeg iskustva sa sustavom.
  4. Navedite popis tipičnih programa i uslužnih programa koji pomažu u administriranju poslužitelja.

Ovaj je članak dio jedne serije članaka o poslužitelju.

Uvod

Nakon izlaska novog izdanja Centos 8 postalo je teško opisati ga u jednom članku početno postavljanje oba poslužitelja, ali nisam htio razdvojiti članak jer ima puno dolaznih poveznica s različitih mjesta. Praktičnije je održavati opći materijal na oba izdanja, što ću i učiniti. Istovremeno, razlike između ove dvije verzije bit će jasno vidljive; nekoliko godina nakon izlaska centos 8 obje će biti relevantne i morat ćete koristiti obje verzije, ovisno o situaciji.

Centos 7 koristi upravitelj paketa njam, au Centosu 8 - dnf. Pritom su ostavili simboličan link od yum do dnf, tako da možete napisati i ime i drugo. Radi dosljednosti, cijelo vrijeme ću koristiti yum, ali upozoravam vas, samo da razumijete zašto to radim na ovaj način. Zapravo, CentOS 8 koristi dnf, ovo je još jedan, moderniji upravitelj paketa koji vam omogućuje rad s različite verzije isti softver. U tu svrhu koriste se zasebni repozitoriji koji su se pojavili za centos 8.

Početno postavljanje CentOS-a

Osobno, bilo koje postavljanje sustava, bio to centos ili neki drugi, započinjem nakon instalacije potpunim ažuriranjem sustava. Ako je instalacijska slika bila svježa ili je instalacija izvršena preko mreže, najvjerojatnije neće biti ažuriranja. Najčešće postoje jer se instalacijske slike ne ažuriraju uvijek redovito.

Ažuriranje sustava

# njam ažuriranje

Radi lakše administracije uvijek instaliram Midnight Commander ili samo mc:

# yum instalirajte mc

I odmah za njega uključujem označavanje sintakse za sve datoteke koje nisu eksplicitno označene u datoteci /usr/share/mc/syntax/Sintaksa sintaksa za sh i bash skripte. Ova univerzalna sintaksa je dobra za konfiguracijske datoteke s kojima najčešće morate raditi na poslužitelju. Prepisivanje datoteke nepoznato.sintaksa. Ovo je uzorak koji će se primijeniti na .conf i .cf datoteke, budući da njima nije pridružena eksplicitna sintaksa.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Sljedeći će vam dobro doći mrežni uslužni programi. Ovisno o skupu početnih paketa koje odaberete prilikom instaliranja sustava, imat ćete jedan ili onaj skup mrežnih uslužnih programa. Ovdje je popis onih na koje sam osobno navikao - ifconfig, netstat, nslookup i neki drugi. Ako vam treba, baš kao i meni, predlažem da ih instalirate zasebno ako već nisu instalirani. Ako vam nisu posebno potrebni i ne koristite ih, možete preskočiti njihovu instalaciju. Provjerimo što trenutno imamo u sustavu

# ifconfig

Ako vidite odgovor:

Bash: ifconfig: naredba nije pronađena

To znači da uslužni program nije instaliran. Umjesto ifconfig-a u CentOS-u sada postoji uslužni program ip. Ovo se ne odnosi samo na cento. Ovo je slika u gotovo svim popularnim modernim distribucijama Linuxa. Dugo sam navikao na ifconfig, iako ga u zadnje vrijeme nisam puno koristio. Uvijek mi se sviđalo što je u različitim distribucijama Linuxa sve približno isto. Koristeći ifconfig možete konfigurirati mrežu ne samo u Linuxu, već iu freebsd-u. Udobno je. A kada svaka distribucija ima svoj alat, to nije zgodno. Iako sada to više nije toliko relevantno, budući da više ne radim s Freebsd-om, a uslužni program ip dostupan je u svim distribucijama Linuxa. Međutim, ako trebate ifconfig, možete instalirati paket net-alati, koje uključuje:

# yum instalirajte net-tools

Da bi nslookup ili npr. host naredbe radile, moramo instalirati paket bind-utils. Ako to nije učinjeno, upotrijebite naredbu:

#nslookup

Izlaz će biti:

Bash: nslookup: naredba nije pronađena

Dakle, instalirajmo bind-utils:

# yum instaliraj bind-utils

Onemogući SELinux

Onemogući SELinux. Njegova uporaba i konfiguracija je posebna stvar. Neću to sada učiniti. Pa hajde da ga isključimo:

# mcedit /etc/sysconfig/selinux

promijeniti vrijednost

SELINUX=onemogućeno

Možete ponovno pokrenuti sustav kako bi promjene stupile na snagu:

# ponovno podizanje sustava

A ako želite onemogućiti SELinux bez ponovnog pokretanja, pokrenite naredbu:

#setenforce 0

Stalno dobivam mnogo kritika o onemogućavanju SELinuxa. Znam kako radi, znam kako to konfigurirati. Zaista nije komplicirano i nije ga teško svladati. Ovo je moj svjestan izbor, iako ga ponekad mijenjam. Način na koji radim sa sustavom je takav da mi SELinux najčešće ne treba, pa ne gubim vrijeme na njega i onemogućujem centos u osnovnim postavkama. Sigurnost sustava složen je pothvat, posebno u moderni svijet web razvoj, gdje vladaju mikroservisi i spremnici. SELinux je nišni alat koji nije potreban uvijek i ne svugdje. Stoga mu nije mjesto u ovom članku. Oni kojima je to potrebno zasebno će omogućiti SELinux i konfigurirati ga.

Određivanje mrežnih parametara

Nastavljamo s osnovnim postavljanjem centosa nakon instalacije. Sada ćemo to učiniti ako iz nekog razloga to nismo učinili tijekom instalacije ili ako ih trebate promijeniti. Općenito, mreža u Centosu je konfigurirana pomoću NetworkManager i njega uslužni program konzole nmtui. Dolazi s osnovnom instalacijom sustava. Postoji jednostavno i jasno grafičko sučelje, tako da se nema što reći. Više sam navikao konfigurirati mrežu putem konfiguracijskih datoteka mrežnih skripti. U verziji 7 centos-a oni su prisutni izvan kutije, u verziji 8 su uklonjeni. Da biste ih koristili za konfiguriranje mreže, morate zasebno instalirati paket mrežne skripte.

# yum instalirajte mrežne skripte

Sada možete konfigurirati mrežu. Da biste to učinili, otvorite datoteku /etc/sysconfig/network-scripts/ifcfg-eth0

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

Ako primite mrežne postavke putem dhcp-a, tada će minimalni skup postavki u konfiguracijskoj datoteci biti sljedeći.

TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="da" IPV4_FAILURE_FATAL="ne" NAME="eth0" DEVICE="eth0" ONBOOT="da"

Za konfiguriranje statičke IP adrese, postavke će biti sljedeće.

TYPE="Ethernet" BOOTPROTO="nema" DEFROUTE="da" IPV4_FAILURE_FATAL="ne" NAME="eth0" DEVICE="eth0" ONBOOT="da" IPADDR=192.168.167.117 DNS1=192.168.167.113 PREFIX=28 GATEWAY= 192.168.167.113

U polje IPADDR upisujemo vašu adresu, u PREFIX masku mreže, u GATEWAY gateway, DNS adresu dns servera. Spremite datoteku i ponovno pokrenite mrežu za primjenu postavki:

# systemctl ponovno pokrenite mrežu

Postavljanje vatrozida

Dodavanje spremišta

Prilikom postavljanja Centosa često vam je potreban softver koji nije uključen u standardnu ​​repu. Za instaliranje dodatnih paketa potrebno je. Najpopularniji je EPEL. Nekada je postojao rpmforge, ali je zatvoren već nekoliko godina. Svi su ga zaboravili. Povezujemo EPEL spremište. S njim je sve jednostavno, dodaje se iz standardne repe:

# yum instalirajte epel-release

Također za CentOS 7, REMI repozitorij je izuzetno koristan, koji vam omogućuje da instalirate novije verzije php-a, za razliku od onih u standardnom repozitoriju. Podsjetit ću vas da se radi o verziji PHP 5.4 koja više ne valja i skinuta je s podrške.

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Za Centos 8 remi još nije relevantan, ali mislim da je privremen. U principu, ova dva repozitorija u centosima su mi obično dovoljna u općem slučaju. Drugi se spajaju za specifične potrebe instaliranja različitog softvera.

Postavljanje pohrane povijesti u bash_history

Prijeđimo na postavljanje centos sustava na poslužitelju. Bit će korisno napraviti neke promjene u standardnom mehanizmu za spremanje povijesti naredbi. Često pomaže kada se morate sjetiti neke od prethodno unesenih naredbi. Standardne postavke imaju neka ograničenja koja su nezgodna. Evo njihovog popisa:

  1. Prema zadanim postavkama sprema se samo zadnjih 1000 naredbi. Ako ih ima više, stariji će biti izbrisani i zamijenjeni novima.
  2. Ne postoje datumi izvršenja za naredbe, samo njihov popis po redoslijedu izvršenja.
  3. Datoteka popisa naredbi se ažurira nakon završetka sesije. Tijekom paralelnih sesija, neke se naredbe mogu izgubiti.
  4. Apsolutno sve naredbe su spremljene, iako neke nema smisla pohranjivati.

Popis nedavno izvedenih naredbi pohranjuje se u korisničkom početnom direktoriju u datoteci .bash_povijest(točka na početku). Možete ga otvoriti bilo kojim uređivačem i pregledati. Za praktičniji prikaz popisa možete unijeti naredbu u konzolu:

#povijest

i pogledajte numerirani popis. Određenu naredbu možete brzo pronaći filtriranjem samo potrebnih redaka, na primjer ovako:

#povijest | grep njam

Na taj način ćemo vidjeti sve opcije za pokretanje naredbe yum, koje su pohranjene u povijesti. Ispravit ćemo navedene nedostatke standardne postavke pohranjivanje povijesti naredbi u CentOS. Da biste to učinili, morate urediti datoteku .bashrc, koji se nalazi u istom direktoriju kao i datoteka povijesti. Dodajte mu sljedeće retke:

Izvoz HISTSIZE=10000 izvoz HISTTIMEFORMAT="%h %d %H:%M:%S " PROMPT_COMMAND="povijest -a" izvoz HISTIGNORE="ls:ll:history:w:htop"

Prva opcija povećava veličinu datoteke na 10 000 redaka. Možete napraviti više, iako je ova veličina obično dovoljna. Drugi parametar određuje da datum i vrijeme izvršenja naredbe trebaju biti pohranjeni. Treći red prisiljava na spremanje u povijest odmah nakon izvršenja naredbe. U zadnjem retku kreiramo popis iznimaka za one naredbe koje ne moraju biti zabilježene u povijesti. Dao sam primjer najjednostavnije liste. Možete ga dodati po vlastitom nahođenju.

Za primjenu promjena potrebno se odjaviti i ponovno spojiti ili pokrenuti naredbu:

# izvor ~/.bashrc

To je sve o postavljanju pohrane povijesti naredbi. Postoji mnogo zanimljivih stvari koje možete konfigurirati u .bashrc datoteci. Jedno vrijeme sam se zanio i eksperimentirao, ali onda sam sve napustio jer nije imalo smisla. Kada radim s korisničkim poslužiteljima, najčešće vidim zadani bash, pa je bolje naviknuti se na njega i raditi u njemu. I individualne postavke i ukrasi su puno osobnih računala i poslužitelji. Ne radnici. Stoga ne konfiguriram ništa drugo prema standardu u centos poslužitelju u tom pogledu.

Automatsko ažuriranje sustava

Da biste održali sigurnost poslužitelja na odgovarajućoj razini, potrebno ga je barem pravovremeno ažurirati - i samu jezgru s uslužnim programima sustava i druge pakete. To možete učiniti ručno, ali za učinkovitiji rad bolje je konfigurirati automatsko izvršenje. Nije potrebno automatski instalirati ažuriranja, ali barem provjerite njihov izgled. Obično slijedim ovu strategiju.

Njam-cron

Pomoći će nam uslužni program za automatsku provjeru ažuriranja u Centosu 7 njam-cron. Tradicionalno se instalira putem yum-a iz standardnog repozitorija.

# yum instalirajte yum-cron

Nakon instaliranja yum-crona, automatski se stvara zadatak za pokretanje uslužnog programa /etc/cron.daily I /etc/cron.svaki sat. Prema zadanim postavkama, uslužni program preuzima pronađena ažuriranja, ali ih ne primjenjuje. Umjesto toga, administrator na lokalu poštanski sandučić obavijest o ažuriranjima šalje se rootu. Onda ste već unutra ručni mod uđite i odlučite hoćete li instalirati ažuriranja ili ne u vrijeme koje vama odgovara. Smatram da je ovaj način rada najprikladniji, pa ne mijenjam te postavke.

Možete konfigurirati yum-cron putem konfiguracijskih datoteka koje se nalaze na /etc/yum/yum-cron.conf I yum-cron-po satu.konf. Dobro su komentirani, pa im ne trebaju detaljna objašnjenja. Skrećem vam pozornost na odjeljak , gdje možete odrediti parametre za slanje poruka. Prema zadanim postavkama, pošta se šalje putem lokalnog hosta. Ovdje možete promijeniti postavke i slati poruke putem treće strane poslužitelj pošte. No umjesto toga, osobno radije globalno konfiguriram cijeli poslužitelj da proslijedi lokalnu korijensku poštu u vanjski poštanski sandučić putem autorizacije na drugom SMTP poslužitelju.

Dnf-automatski

Kao što sam ranije rekao, Centos 8 koristi drugačiji upravitelj paketa - dnf. Konfiguriranje ažuriranja paketa tamo se vrši putem uslužnog programa dnf-automatski. Instalirajmo ga i konfigurirajmo.

# yum instaliraj dnf-automatic

Više nije cron taj koji upravlja planiranim pokretanjima, već systemd sa svojim ugrađenim planerom. Pogledajte mjerače vremena automatsko pokretanje možete koristiti naredbu:

# systemctl popis vremena *dnf-*

Ako tamo nema zadataka, možete ručno dodati mjerač vremena:

# systemctl enable --now dnf-automatic.timer

Zadani mjerač vremena postavljen je na pokretanje dnf-automatic sat vremena nakon podizanja poslužitelja i ponavlja se svakodnevno. Konfiguracija tajmera nalazi se ovdje - /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

Konfiguracija za dnf-automatic postoji /etc/dnf/automatic.conf. Prema zadanim postavkama samo preuzima ažuriranja, ali ih ne primjenjuje. Konfiguracija je dobro komentirana, tako da je možete prilagoditi kako želite. Nije potrebno nikakvo posebno objašnjenje. Konfigurirajte ažuriranje paketa sustava prema vlastitom nahođenju. Kao što sam već rekao, samo ih preuzimam automatski. Instalaciju uvijek držim pod kontrolom s ručnim upravljanjem.

Onemogući preplavljivanje poruka u /var/log/messages

Nastavljajući konfigurirati centos, ispravit ćemo jednu malu neugodnost. U zadanoj instalaciji 7. verzije sustava, cijeli dnevnik vašeg sustava /var/log/messages Nakon nekog vremena poslužitelj će biti zakrčen sljedećim zapisima.

16. listopad 14:01:01 xs-files systemd: kreiran isječak user-0.slice. 16. listopada 14:01:01 xs-files systemd: Pokretanje user-0.slice. 16. listopad 14:01:01 xs-files systemd: Pokrenuta sesija 14440 root korisnika. 16. listopada 14:01:01 xs-files systemd: Pokretanje sesije 14440 root korisnika. 16. listopada 14:01:01 xs-files systemd: Uklonjen isječak user-0.slice. 16. listopada 14:01:01 xs-files systemd: Zaustavljanje user-0.slice. 16. listopad 15:01:01 xs-files systemd: kreiran isječak user-0.slice. 16. listopada 15:01:01 xs-files systemd: Pokretanje user-0.slice. 16. listopada 15:01:01 xs-files systemd: Pokrenuta sesija 14441 root korisnika. 16. listopada 15:01:01 xs-files systemd: Pokretanje sesije 14441 root korisnika. 16. listopad 15:01:01 xs-files systemd: Pokrenuta sesija 14442 korisnika root. 16. listopada 15:01:01 xs-files systemd: Pokretanje sesije 14442 root korisnika. 16. listopada 15:01:01 xs-files systemd: Uklonjen isječak user-0.slice. 16. listopada 15:01:01 xs-files systemd: Zaustavljanje user-0.slice. 16. listopad 16:01:01 xs-files systemd: kreiran isječak user-0.slice. 16. listopada 16:01:01 xs-files systemd: Pokretanje user-0.slice. 16. listopad 16:01:01 xs-files systemd: Pokrenuta sesija 14443 root korisnika. 16. listopad 16:01:01 xs-files systemd: Pokretanje sesije 14443 korijenskog korisnika. 16. listopada 16:01:01 xs-files systemd: Uklonjen isječak user-0.slice.

Nisam ih primijetio u Centosu 8, pa tamo ne moram ništa raditi. Poruke ne donose nikakvu praktičnu korist, pa ćemo ih isključiti. Da bismo to učinili, stvorit ćemo zasebno pravilo za rsyslog, gdje ćemo navesti sve predloške poruka koje ćemo izrezati. Smjestimo ovo pravilo zasebna datoteka /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf ako $programname == "systemd" i ($msg sadrži "Pokretanje sesije" ili $msg sadrži "Pokrenuta sesija" ili $msg sadrži "Stvoreno odsječak" ili $msg sadrži "Pokretanje korisnika-" ili $msg sadrži "Pokretanje korisničkog odsječka od" ili $msg sadrži "Uklonjena sesija" ili $msg sadrži "Uklonjeni odsječak korisnika odsječak od" ili $msg sadrži "Zaustavljanje korisničkog odsječka od" ) zatim prestanite

Spremite datoteku i ponovno pokrenite rsyslog za primjenu postavki.

# systemctl ponovno pokrenite rsyslog

Potrebno je shvatiti da u u ovom slučaju Onemogućujemo flood u log datoteku samo na lokalnom poslužitelju. Ako zapise pohranjujete na , tada će ovo pravilo morati biti konfigurirano na njemu.

Instaliranje iftop, atop, htop, lsof na CentOS

I na kraju, da bismo dovršili postavljanje, dodat ćemo nekoliko korisnih uslužnih programa koji bi mogli dobro doći tijekom rada poslužitelja.

iftop pokazuje učitavanje mrežnog sučelja u stvarnom vremenu, može se pokrenuti raznim tipkama, neću se detaljno zadržavati na ovome, na Internetu postoje informacije o ovoj temi. Stavljamo:

# yum instalirajte iftop

I dva zanimljiva task managera, najčešće koristim htop, ali ponekad mi dobro dođe atop. Instalirajmo oboje, uvjerite se sami, shvatite što vam se najviše sviđa, što vam odgovara:

# yum instaliraj htop # yum instaliraj na vrh

Za prikaz informacija o tome koje datoteke koriste koji procesi, savjetujem vam da instalirate uslužni program lsof. Najvjerojatnije će vam dobro doći prije ili kasnije kada budete dijagnosticirali poslužitelj.

# yum instalirajte wget bzip2 traceroute gdisk

To je sve za mene. Osnovni, temeljni Postavljanje CentOS-a završeno, možete započeti instaliranje i konfiguriranje glavne funkcije.

Postavljanje sistemske pošte

Za dovršetak postavljanja CentOS poslužitelja, pobrinimo se da se pošta upućena lokalnom korijenu šalje preko vanjskog poslužitelja pošte u odabrani poštanski sandučić. Ako se to ne učini, bit će lokalno prevedeno u datoteku /var/spool/mail/root. A možda postoji i važan korisne informacije. Konfigurirajmo ga za slanje u poštanski sandučić administratora sustava.

O tome sam detaljno govorio u zasebnom članku -. Ovdje su samo naredbe i brzo postavljanje. Instalirajte potrebne pakete:

# yum instaliraj mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain postfix

Nacrtajmo nešto poput ove konfiguracije za postfix.

Cat /etc/postfix/main.cf ## DEFAULT CONFIG BEGIN ####################### queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_le vel = 2 debugg er_command = PATH =/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin / newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share / doc/postfix-2.10.1/README_FILES ## DEFAULT CONFIG END ######################## # Naziv poslužitelja kao izlaz naredbe hostname myhostname = centos- test.xs.local # Ovdje, logično, trebate ostaviti samo domenu, ali u ovom slučaju bolje je ostaviti puno ime poslužitelja tako da polje pošiljatelja # sadrži puno ime poslužitelja, to čini praktičniji za analiziranje servisnih poruka mydomain = centos-test.xs.local mydestination = $myhostname myorigin = $mydomain # Adresa poslužitelja preko kojeg ćemo slati poštu relayhost = mailsrv.mymail.ru:25 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash :/etc/postfix/sasl_passwd smtp_sasl_security_options = neanonimni smtp _tls_security_level = može

Izrađujemo datoteku s podacima o korisničkom imenu i lozinci za autorizaciju.

# mcedit /etc/postfix/sasl_passwd mailsrv.mymail.ru:25 [e-mail zaštićen]:lozinka

Stvorite db datoteku.

# postmap /etc/postfix/sasl_passwd

Sada možete ponovno pokrenuti postfix i provjeriti radi li.

# systemctl restart postfix

Na standardni alias za root in /etc/aliases, dodajte vanjsku adresu na kojoj će se duplicirati pošta upućena rootu. Da biste to učinili, uredite navedenu datoteku, mijenjajući zadnji redak.

#korijen: marc

Korijen: korijen, [e-mail zaštićen]

Ažuriranje baze certifikata:

#novizapisi

Pošaljimo pismo putem konzole lokalnom korijenu:

# df -h | mail -s "Upotreba diska" root

Pismo treba ići u vanjski poštanski sandučić. Ako koristite poštanski sandučić iz Yandexa, najvjerojatnije ćete dobiti pogrešku u dnevniku poslužitelja e-pošte i pismo neće biti poslano.

Relay=smtp.yandex.ru:25, delay=0.25, delays=0/0/0.24/0.01, dsn=5.7.1, status=bounced (host smtp.yandex.ru je rekao: 553 5.7.1 Adresa pošiljatelja odbijena: nije u vlasništvu auth korisnika. (kao odgovor na naredbu MAIL FROM))

Ova pogreška znači da vaš pošiljatelj e-pošte nije isti poštanski sandučić koji koristite za autorizaciju. Reći ću vam kako to popraviti u zasebnom članku -. S drugima poštanski sustavi, tamo gdje nema te provjere, sve bi trebalo biti u redu kako jest.

Ovo dovršava postavljanje lokalne pošte. Sada će sva pisma upućena lokalnom korijenu, na primjer, izvješća crona, biti duplicirana u vanjski poštanski sandučić i poslana putem punopravnog poslužitelja pošte. Tako će pisma biti isporučena normalno, bez da završe u spamu (iako ne nužno, postoje i heuristički filteri).

Zaključak

Prošli smo kroz neke početne korake za postavljanje CentOS poslužitelja, što je ono što obično radim kada pripremam poslužitelj odmah nakon instalacije. Ne pretvaram se da sam apsolutna istina; možda nešto propuštam ili radim nešto što nije sasvim ispravno. Bit će mi drago razumnim i smislenim komentarima i prijedlozima.

..
  • Razumijevanje specifičnosti postavljanja, konfiguriranja i održavanja mreža izgrađenih na Linuxu.
  • Sposobnost brzog rješavanja novonastalih problema i osiguravanja stabilnog i nesmetanog rada sustava.
  • Testirajte se na prijemnom ispitu i pogledajte program za više detalja.

    Instaliran u operacijski sustav Vatrozid se koristi za sprječavanje neovlaštenog prometa između računalne mreže. Posebna pravila za vatrozid kreiraju se ručno ili automatski, koja su odgovorna za kontrolu pristupa. OS razvijen na Linux jezgri, CentOS 7 ima ugrađen vatrozid, a njime se upravlja pomoću vatrozida. FirewallD je omogućen prema zadanim postavkama i željeli bismo razgovarati o njegovom postavljanju danas.

    Kao što je gore spomenuto, standardni vatrozid u CentOS 7 je uslužni program FirewallD. Zato ćemo o postavljanju vatrozida raspravljati koristeći ovaj alat kao primjer. Možete postaviti pravila filtriranja koristeći iste iptables, ali to se radi na nešto drugačiji način. Preporučamo da se upoznate s konfiguracijom spomenutog uslužnog programa klikom na sljedeću poveznicu, a mi ćemo započeti s analizom FirewallD-a.

    Osnove vatrozida

    Postoji nekoliko zona - skupova pravila za upravljanje prometom na temelju povjerenja u mreže. Svi oni imaju vlastita pravila, čija ukupnost čini konfiguraciju vatrozida. Svakoj zoni dodijeljeno je jedno ili više mrežnih sučelja, što također omogućuje podešavanje filtriranja. Primijenjena pravila izravno ovise o korištenom sučelju. Na primjer, pri povezivanju na javni Wi-Fi, vatrozid će povećati razinu kontrole, a na kućnoj mreži će omogućiti dodatni pristup za sudionike u lancu. Dotični vatrozid sadrži sljedeće zone:

    • pouzdan - maksimalna razina povjerenje u sve mrežne uređaje;
    • dom - grupa lokalna mreža. Postoji povjerenje u okruženju, ali dolazne veze dostupne su samo određenim strojevima;
    • raditi - radna zona. Postoji povjerenje u većinu uređaja, a dodatne usluge su aktivirane;
    • dmz je zona za izolirana računala. Takvi uređaji su odspojeni od ostatka mreže i dopuštaju samo određeni dolazni promet;
    • interna — zona internih mreža. Povjerenje se primjenjuje na sve strojeve, otvaraju se dodatne usluge;
    • vanjska — zona okrenuta prethodnoj. U vanjskim mrežama aktivno je maskiranje NAT-a, koje zatvara internu mrežu, ali ne blokira mogućnost pristupa;
    • javno - zona javnih mreža s nepovjerenjem svih uređaja i pojedinačnim prijemom dolaznog prometa;
    • blokirati - svi dolazni zahtjevi se poništavaju s poslanom pogreškom icmp-host-prohibited ili icmp6-adm-zabranjeno;
    • pad - minimalna razina povjerenja. Dolazne veze prekidaju se bez ikakve obavijesti.

    Same police mogu biti privremene ili trajne. Kada se parametri pojave ili uređuju, akcija vatrozida se odmah mijenja bez potrebe za ponovnim pokretanjem. Ako su primijenjena privremena pravila, bit će poništena nakon ponovnog pokretanja FirewallD-a. Trajno pravilo se tako zove - bit će trajno spremljeno kada se primijeni argument -permanent.

    Omogućavanje FirewallD

    Prvo morate pokrenuti FirewallD ili provjeriti je li u aktivnom stanju. Samo funkcionalni demon (program koji radi u pozadina) primijenit će pravila vatrozida. Aktivacija se vrši u samo nekoliko klikova:

    1. Pokreni klasiku "Terminal" bilo koji prikladan način, na primjer, putem izbornika "Prijave".
    2. Unesite naredbu sudo systemctl start firewalld.service i pritisnite tipku Unesi.
    3. Uslužnim programom upravlja u ime superkorisnika, tako da ćete morati potvrditi svoju autentičnost unosom lozinke.
    4. Kako biste bili sigurni da usluga radi, navedite firewall-cmd --state.
    5. U grafičkom prozoru koji se otvori ponovno potvrdite svoju autentičnost.
    6. Prikazat će se novi redak. Značenje "trčanje" označava da vatrozid radi.

    Ako ikada trebate privremeno ili trajno onemogućiti vatrozid, preporučujemo korištenje uputa predstavljenih u našem drugom članku na sljedećoj poveznici.

    Pogledajte zadana pravila i dostupne zone

    Čak i vatrozid koji normalno radi ima svoja posebna pravila i dostupna područja. Prije nego počnete uređivati ​​pravila, preporučujemo da se upoznate s trenutnom konfiguracijom. To se radi pomoću jednostavnih naredbi:

    1. Naredba firewall-cmd --get-default-zone pomoći će vam da odredite zadanu zonu.
    2. Nakon što ga aktivirate, vidjet ćete novi redak u kojem će biti prikazan željeni parametar. Na primjer, na slici ispod zona se smatra aktivnom "javnost".
    3. Međutim, nekoliko zona može biti aktivno odjednom, a povezane su s posebnim sučeljem. Saznajte ove informacije putem firewall-cmd --get-active-zones.
    4. Naredba firewall-cmd --list-all prikazat će pravila konfigurirana za zadanu zonu. Pogledajte snimak zaslona u nastavku. Vidite da je aktivna zona "javnost" dodijeljeno pravilo "zadano"- zadani rad, sučelje "enp0s3" a dodane su dvije usluge.
    5. Ako želite saznati sve dostupne zone vatrozida, unesite firewall-cmd --get-zones .
    6. Parametri određene zone određuju se preko firewall-cmd --zone=name --list-all , gdje Ime— naziv zone.

    Nakon određivanja potrebnih parametara, možete nastaviti s njihovim mijenjanjem i dodavanjem. Pogledajmo pobliže nekoliko najpopularnijih konfiguracija.

    Postavljanje zona sučelja

    Kao što znate iz gore navedenih informacija, svako sučelje ima vlastitu zadanu zonu. Ostat će ondje dok korisnik ili programski ne promijeni postavke. Moguće je ručno prenijeti sučelje u zonu za jednu sesiju, a to se radi aktiviranjem naredbe sudo firewall-cmd --zone=home --change-interface=eth0 . Proizlaziti "uspjeh" označava da je prijenos bio uspješan. Podsjetimo da se takve postavke resetiraju odmah nakon ponovnog pokretanja vatrozida.

    Prilikom ovakve promjene parametara, trebali biste uzeti u obzir da se usluge mogu resetirati. Neki od njih ne podržavaju rad u određenim zonama, na primjer, iako je SSH dostupan u "Dom", ali u prilagođenim ili posebnim servis će odbiti raditi. Možete provjeriti je li sučelje uspješno povezano s novom granom unosom firewall-cmd --get-active-zones.

    Ako želite resetirati svoje prethodno postavljene postavke, jednostavno ponovno pokrenite vatrozid: sudo systemctl restart firewalld.service .

    Ponekad nije uvijek zgodno promijeniti zonu sučelja za samo jednu sesiju. U tom slučaju morat ćete urediti konfiguracijsku datoteku tako da se sve postavke trajno unose. Da biste to učinili, preporučujemo korištenje uređivača teksta nano, koji se instalira iz službenog repozitorija pomoću sudo yum install nano . Zatim, sve što preostaje je učiniti sljedeće:

    1. Otvorite konfiguracijsku datoteku kroz editor upisivanjem sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , gdje eth0— naziv potrebnog sučelja.
    2. Potvrdite autentičnost račun za izvođenje daljnjih radnji.
    3. Pronađite parametar "ZONA" i promijenite njegovu vrijednost u željenu, na primjer, javno ili kućno.
    4. Držite tipke pritisnute Ctrl+O za spremanje promjena.
    5. Nemojte mijenjati naziv datoteke, samo kliknite Unesi.
    6. Izađite iz uređivača teksta putem Ctrl+X.

    Sada će zona sučelja biti onakva kakvu ste odredili do sljedećeg puta kada uredite konfiguracijsku datoteku. Da bi ažurirane postavke stupile na snagu, pokrenite sudo systemctl restart network.service i sudo systemctl restart firewalld.service.

    Postavljanje zadane zone

    Gore smo već demonstrirali naredbu koja nam je omogućila da saznamo zadanu zonu. Također se može promijeniti postavljanjem parametra po vašem izboru. Da biste to učinili, samo u konzolu upišite sudo firewall-cmd --set-default-zone=name, gdje Ime— naziv tražene zone.

    Uspjeh naredbe bit će označen natpisom "uspjeh" na zasebnoj liniji. Nakon toga, sva trenutna sučelja bit će vezana za navedenu zonu, osim ako nije drugačije navedeno u konfiguracijskim datotekama.

    Stvaranje pravila za programe i uslužne programe

    Na samom početku članka govorili smo o djelovanju svake zone. Definiranje usluga, uslužnih programa i programa u takvim granama omogućit će vam primjenu pojedinačnih parametara za svaku od njih kako bi odgovarali potrebama svakog korisnika. Za početak preporučujemo da se upoznate s potpunim popisom dostupnih na ovaj trenutak usluge: firewall-cmd --get-services .

    Rezultat će biti prikazan izravno u konzoli. Svaki poslužitelj je odvojen razmakom, a alat koji vas zanima lako ćete pronaći na popisu. Ako traženi servis nije dostupan, potrebno ga je dodatno instalirati. O pravilima instalacije pročitajte u službenoj dokumentaciji softvera.

    Gornja naredba prikazuje samo nazive usluga. Detaljne informacije za svaki od njih dobiva se kroz pojedinačnu datoteku koja se nalazi duž staze /usr/lib/firewalld/services. Takvi dokumenti su u XML formatu, put npr. do SSH izgleda ovako: /usr/lib/firewalld/services/ssh.xml, a dokument ima sljedeći sadržaj:

    SSH
    Secure Shell (SSH) je protokol za prijavu i izvršavanje naredbi na udaljenim strojevima. Omogućuje sigurnu šifriranu komunikaciju. Ako svom stroju planirate pristupiti daljinski putem SSH-a preko vatrozidnog sučelja, omogućite ovu opciju. Morate imati instaliran openssh-server paket da bi ova opcija bila korisna.

    Servisna podrška u određenoj zoni aktivira se ručno. U "Terminal" trebate izdati naredbu sudo firewall-cmd --zone=public --add-service=http , gdje --zona=javno- zona za aktivaciju, i --add-service=http— naziv usluge. Imajte na umu da će se takva promjena primijeniti samo na jednu sesiju.

    Trajno dodavanje vrši se putem sudo firewall-cmd --zone=public --permanent --add-service=http , a rezultat "uspjeh" označava uspješan završetak operacije.

    Pogled puni popis Možete stvoriti trajna pravila za određenu zonu prikazivanjem popisa u zasebnom retku konzole: sudo firewall-cmd --zone=public --permanent --list-services .

    Rješavanje problema nedostatka pristupa usluzi

    Prema zadanim postavkama pravila vatrozida navode najpopularnije i najsigurnije usluge kao dopuštene, ali neke standardne ili aplikacije trećih strana on blokira. U tom slučaju, korisnik će morati ručno promijeniti postavke kako bi riješio problem pristupa. To se može učiniti na dva različita načina.

    Port prosljeđivanje

    Kao što znate, sve mrežne usluge koriste određeni priključak. Lako ga detektira vatrozid i pomoću njega se može izvršiti blokiranje. Da biste izbjegli takve akcije vatrozida, trebate otvoriti traženi port naredbom sudo firewall-cmd --zone=public --add-port=0000/tcp , gdje --zona=javno- lučko područje, --add-port=0000/tcp— broj priključka i protokol. Opcija firewall-cmd --list-ports prikazat će popis otvorenih portova.

    Ako trebate otvoriti portove uključene u raspon, koristite liniju sudo firewall-cmd --zone=public --add-port=0000-9999/udp , gdje --add-port=0000-9999/udp— raspon portova i njihov protokol.

    Gore navedene naredbe omogućit će vam samo testiranje upotrebe takvih parametara. Ako je bilo uspješno, trebali biste dodati iste portove stalnim postavkama, a to se radi unosom sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp ili sudo firewall-cmd -- zona=javno --trajno --add-port=0000-9999/udp. Popis otvorenih stalnih priključaka pregledava se ovako: sudo firewall-cmd --zone=public --permanent --list-ports .

    Definicija usluge

    Kao što vidite, dodavanje portova ne uzrokuje nikakve poteškoće, ali postupak postaje kompliciraniji kada se koriste aplikacije veliki broj. Postaje teško pratiti sve portove u upotrebi, pa bi bolja opcija bila definirati uslugu:


    Sve što trebate učiniti je odabrati najprikladniju metodu za rješavanje problema s pristupom usluzi i slijediti navedene upute. Kao što vidite, sve se radnje izvode prilično jednostavno i ne bi trebalo nastati poteškoće.

    Izrada prilagođenih zona

    Već znate da je FirewallD u početku kreirao velik broj različitih zona s određenim pravilima. Međutim, postoje situacije kada Administrator sustava morate stvoriti prilagođenu zonu, kao što je "publicweb" za instalirani web poslužitelj ili "privatni DNS"— za DNS poslužitelj. Koristeći ova dva primjera, pogledat ćemo dodavanje grana:


    U ovom ste članku naučili kako stvoriti prilagođene zone i dodati im usluge. Već smo govorili o njihovom postavljanju prema zadanim postavkama i dodjeljivanju sučelja gore; sve što trebate učiniti je naznačiti ispravna imena. Ne zaboravite ponovno pokrenuti vatrozid nakon što napravite trajne promjene.

    Kao što vidite, vatrozid FirewallD prilično je sveobuhvatan alat koji vam omogućuje stvaranje najfleksibilnije konfiguracije vatrozida. Sve što preostaje je osigurati da se uslužni program pokrene sa sustavom i navedena pravila odmah počnu raditi. Učinite to pomoću naredbe sudo systemctl enable firewall.

    FirewallD je alat za upravljanje vatrozidom koji je dostupan prema zadanim postavkama na poslužiteljima CentOS 7. To je u osnovi omotač oko IPTables i dolazi s grafičkim konfiguracijskim alatom, firewall-config i firewall-config alatom. naredbeni redak vatrozid-cmd. Uz uslugu IPtables, svaka promjena zahtijeva brisanje starih pravila i stvaranje novih pravila u datoteci ` /etc/sysconfig/iptables`, a kod vatrozida se primjenjuju samo razlike.

    Zone vatrozida

    FirewallD koristi usluge i zone umjesto pravila i lanaca u Iptables. Prema zadanim postavkama dostupne su sljedeće zone:

    • pad– Ispustite sve dolazne mrežne pakete bez odgovora, dostupne su samo odlazne mrežne veze.
    • blok– Odbijte sve dolazne mrežne pakete s porukom icmp-host-prohibited, dopuštene su samo odlazne mrežne veze.
    • javnost– prihvaćaju se samo odabrane dolazne veze, za korištenje u javnim prostorima
    • vanjski– Za vanjske mreže s maskiranjem, prihvaćaju se samo odabrane dolazne veze.
    • dmz– demilitarizirana zona DMZ, javno dostupna s ograničenim pristupom internoj mreži, prihvaćaju se samo odabrane dolazne veze.
    • raditi
    • Dom– Za računala u matičnoj zoni prihvaćaju se samo odabrane dolazne veze.
    • unutarnje– Za računala u vašoj internoj mreži prihvaćaju se samo odabrane dolazne veze.
    • vjerovao– Sve mrežne veze su prihvaćene.

    Da biste dobili popis svih dostupnih zona:

    # firewall-cmd --get-zones work drop interni vanjski pouzdani dom dmz javni blok

    Za pregled popisa zadanih zona:

    # firewall-cmd --get-default-zone public

    Za promjenu zadane zone:

    Usluge vatrozida

    FirewallD usluge su XML konfiguracijske datoteke koje sadrže informacije o unosu usluge za firewalld. Da biste dobili popis svih dostupnih usluga:

    # firewall-cmd --get-services amanda-klijent amanda-k5-klijent bacula bacula-klijent ceph ceph-mon dhcp dhcpv6 dhcpv6-klijent dns docker-registar dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replikacija ftp visoka dostupnost http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp puls eaudio lutkar radijus rpc-bind rsyncd samba samba-klijent sane smtp smtps snmp snmptrap lignja ssh sinergija syslog syslog-tls telnet tftp tftp-klijent tinc tor-socks prijenos-klijent vdsm vnc-poslužitelj wbem-https xmpp-bosh xmpp-klijent xmpp-lokalni xmpp-poslužitelj

    Konfiguracijske datoteke XML je pohranjen u imenicima /usr/lib/firewalld/services/ I /etc/firewalld/services/.

    Postavljanje vatrozida s FirewallD

    Kao primjer, evo kako možete konfigurirati vatrozid s FirewallD ako koristite web poslužitelj, SSH na priključku 7022 i poslužitelj e-pošte.

    Prvo ćemo postaviti zadanu zonu za DMZ.

    # firewall-cmd --set-default-zone=dmz # firewall-cmd --get-default-zone dmz

    Da biste dodali trajna pravila usluge za HTTP i HTTPS u DMZ, pokrenite sljedeću naredbu:

    # firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

    Otvorite port 25 (SMTP) i port 465 (SMTPS):

    Firewall-cmd --zone=dmz --add-service=smtp --permanent firewall-cmd --zone=dmz --add-service=smtps --permanent

    Otvoreni, IMAP, IMAPS, POP3 i POP3S priključci:

    Firewall-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= pop3 --trajni firewall-cmd --zone=dmz --add-service=pop3s --trajni

    Budući da je SSH port promijenjen u 7022, uklonit ćemo SSH uslugu (port 22) i otvoriti port 7022

    Firewall-cmd --remove-service=ssh --trajno firewall-cmd --add-port=7022/tcp --trajno

    Za implementaciju promjena moramo ponovno pokrenuti vatrozid:

    Firewall-cmd --reload

    Na kraju, možete navesti pravila.

    Prvi korak u zaštiti poslužitelja od vanjskih prijetnji je vatrozid koji filtrira dolazni i odlazni promet. U ovom članku želim raspravljati o postavljanju iptables, posebnom slučaju vatrozida na CentOS-u, te također razgovarati o njegovoj instalaciji i onemogućavanju. Moj vodič neće biti iscrpan; razmotrit ću samo one aspekte koje smatram najvažnijima i koje sam koristim u svom radu.

    Ovaj je članak dio jedne serije članaka o poslužitelju.

    Uvod

    Iptables je trenutno de facto standard među modernim distribucijama Linuxa. Ne mogu se uopće sjetiti što se još koristi kao vatrozid. Dakle, svaki Linux administrator mora se nositi s postavljanjem ovog vatrozida u svom radu.

    Postoje različite veze s ovim vatrozidom koje se koriste za "praktičniju" konfiguraciju. Ubuntu ima ufw, u centima - vatrozid, ostale ne znam. Osobno, ne vidim nikakvu pogodnost u korištenju ovih alata. Navikao sam postavljati Linux firewall na starinski način, kako sam naučio na samom početku svog rada. Mislim da je ovo najjednostavniji i najprikladniji način, koji ću podijeliti s vama. Njegova se bit svodi na činjenicu da se skripta stvara prema pravilima vatrozida. Ova se skripta može jednostavno uređivati ​​kako bi odgovarala vašim potrebama i prenositi s poslužitelja na poslužitelj.

    Onemogućavanje vatrozida

    Već sam se dotaknuo pitanja onemogućavanja vatrozida u temi na . Prije svega, onemogućimo firewalld, koji je prisutan u centos 7 prema zadanim postavkama odmah nakon instalacije:

    # systemctl zaustavi vatrozid

    Uklonimo ga sada iz pokretanja kako se ne bi ponovno uključio nakon ponovnog pokretanja:

    # systemctl onemogući vatrozid

    Nakon toga, postavke vatrozida na poslužitelju postaju potpuno otvorene. Iptables pravila možete vidjeti naredbom:

    Instalacija iptables

    Zapravo, već imamo vatrozid na našem poslužitelju i on radi, jednostavno nema pravila, sve je otvoreno. Morat ćemo instalirati dodatne uslužne programe za upravljanje, bez kojih je nemoguće konfigurirati iptables. Na primjer, neće biti moguće ponovno pokrenuti vatrozid:

    # systemctl ponovno pokrenite iptables.service Nije uspjelo izdavanje poziva metode: Jedinica iptables.service nije uspjela učitati: Nema takve datoteke ili direktorija.

    Ili ga nećete moći dodati u automatsko pokretanje:

    # systemctl enable iptables.service Nije uspjelo izdavanje poziva metode: Nema takve datoteke ili direktorija

    Da biste izbjegli takve pogreške, instalirajte potrebni paket s uslužnim programima:

    # yum -y instaliraj iptables-services

    Sada možete dodati iptables za pokretanje i pokretanje:

    # systemctl omogući iptables.service # systemctl pokreni iptables.service

    Postavljanje vatrozida

    Koristim skriptu za upravljanje pravilima vatrozida. Stvorimo ga:

    # mcedit /etc/iptables.sh

    Zatim ćemo ga ispuniti potrebnim pravilima. Analizirat ću sve značajne dijelove scenarija, i U cijelosti ću ga dati kao tekstualnu datoteku na kraju članka. Pravila su napravljena u obliku slika kako bi se zabranilo kopiranje i lijepljenje. To može dovesti do pogrešaka u radu pravila, s kojima sam se i sam susreo tijekom pripreme članka.

    Razmotrit ćemo situaciju u kojoj je poslužitelj pristupnik Internetu za lokalnu mrežu.

    Prije svega, postavimo sve varijable koje ćemo koristiti u skripti. Ovo nije potrebno, ali se preporučuje jer je zgodno prenijeti postavke s poslužitelja na poslužitelj. Bit će dovoljno jednostavno ponovno dodijeliti varijable.

    Prije primjene novih pravila brišemo sve lance:

    Blokiramo sav promet koji ne odgovara nijednom od pravila:

    Dopusti sav lokalni i lokalni promet:

    Dopuštamo ping:

    Ako vam ovo nije potrebno, onda nemojte dodavati dopuštajuća pravila za icmp.

    Otvaramo pristup Internetu samom poslužitelju:

    Ako želite otvoriti sve dolazne veze s poslužiteljem, dodajte sljedeće pravilo:

    Dodajmo sada zaštitu od najčešćih mrežnih napada. Prvo, odbacimo sve pakete koji nemaju status:

    Blokiranje nultih paketa:

    Zaštitite se od syn-flood napada:

    Ako ne postavite ograničenja pristupa iz lokalne mreže, tada dopuštamo svima pristup Internetu:

    Zatim zabranjujemo pristup s interneta lokalnoj mreži:

    Kako bi naša lokalna mreža mogla koristiti internet, omogućujemo nat:

    Kako ne bismo izgubili pristup poslužitelju, nakon primjene pravila dopuštamo veze putem ssh-a:

    I na kraju zapišemo pravila tako da se primjenjuju nakon ponovnog pokretanja:

    Sastavili smo jednostavnu konfiguraciju koja blokira sve dolazne veze osim ssh i dopušta pristup s lokalne mreže na Internet. Istovremeno smo se zaštitili od nekih mrežnih napada.

    Spremite skriptu, učinite je izvršnom i pokrenite:

    # chmod 0740 /etc/iptables.sh # /etc/iptables.sh

    Pogledajmo pravila i provjerimo jesu li sva pravila na mjestu:

    # iptables -L -v -n

    Imajte na umu da pravila trebate primijeniti samo ako imate pristup konzoli poslužitelja. Ako postoji pogreška u postavkama, možete izgubiti pristup. Provjerite možete li u hitnim slučajevima onemogućiti vatrozid i prilagoditi postavke.

    Otvaranje portova

    Sada malo proširimo našu konfiguraciju i otvorimo portove u iptables za neke usluge. Recimo da imamo pokrenut web poslužitelj i trebamo mu otvoriti pristup s interneta. Dodajte pravila za web promet:

    Dodana je dozvola za dolazne veze na portovima 80 i 443 koje web poslužitelj koristi u svom radu.

    Ako imate instaliran poslužitelj e-pošte, morate dopustiti dolazne veze na njega na svim korištenim portovima:

    Za ispravan rad DNS poslužitelji, trebate otvoriti UDP port 53

    Port prosljeđivanje

    Razmotrimo situaciju kada je potrebno proslijediti portove s vanjskog sučelja na neko računalo na lokalnoj mreži. Recimo da trebate dobiti rdp pristup računalu 10.1.3.50 s Interneta. Prosljeđujemo TCP port 3389:

    Ako ne želite izložiti poznati port izvana, možete se preusmjeriti s nestandardnog porta na rdp port ciljanog računala:

    Ako vanjski priključak prosljeđujete na lokalnu mrežu, svakako komentirajte pravilo koje blokira pristup s vanjske mreže na unutarnju. U mom primjeru ovo pravilo je: $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

    Ili prije ovog pravila stvorite dopuštajuće pravilo za vanjski pristup internoj usluzi, na primjer ovako:

    $IPT -A NAPRIJED -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j PRIHVAT

    Omogućavanje zapisnika

    Tijekom postavljanja korisno je omogućiti zapisnike za praćenje blokiranih paketa i saznati zašto nema pristupa potrebnim servisima za koje se čini da smo već otvorili. Šaljem sve blokirane pakete u zasebne lance (block_in, block_out, block_fw) koji odgovaraju smjeru prometa i označavam svaki smjer u zapisima. To čini prikladnijim obaviti debrifing. Dodajte sljedeća pravila na sam kraj skripte, prije spremanja postavki:

    Sve blokirane pakete možete pratiti u datoteci /var/log/messages.

    Nakon što završite s postavljanjem, komentirajte ove retke i onemogućite zapisivanje. To je svakako vrijedno učiniti, jer trupci rastu vrlo brzo. Ja osobno ne vidim nikakvog praktičnog smisla u pohranjivanju takvih informacija.

    Kako onemogućiti iptables

    Ako iznenada odlučite da vam vatrozid više nije potreban, možete ga onemogućiti na sljedeći način:

    # systemctl zaustavi iptables.service

    Ova naredba zaustavlja vatrozid. A sljedeće ga uklanja iz pokretanja:

    # systemctl onemogući iptables.service

    Isključivanjem vatrozida dopustili smo sve veze.

    Zaključak

    Kao što sam obećao, objavljujem gotovu skriptu s osnovnim skupom pravila koja smo razmotrili

    Želio bih još jednom naglasiti da prilikom postavljanja iptables morate biti izuzetno oprezni. Nemojte pokretati ovaj posao ako nemate pristup konzoli poslužitelja. Još dok sam pisao ovaj članak, izgubio sam pristup poslužitelju zbog smiješne greške u pravilima. Ova pogreška nastala je zbog prepisivanja i gubitka dvostruke crtice - zamijenjena je jednom.

    online tečaj “Linux Administrator” na OTUS-u. Tečaj nije za početnike, za upis je potrebno osnovno znanje o mrežama i instaliranju Linuxa na virtualni stroj. Obuka traje 5 mjeseci, nakon čega će uspješni polaznici tečaja moći proći razgovore s partnerima. Što će vam ovaj tečaj dati:

    • Poznavanje Linux arhitekture.
    • Ovladavanje suvremenim metodama i alatima za analizu i obradu podataka.
    • Mogućnost odabira konfiguracije za tražene zadatke, upravljanje procesima i osiguranje sigurnosti sustava.
    • Poznavanje osnovnih radnih alata administratora sustava.
    • Razumijevanje specifičnosti postavljanja, konfiguriranja i održavanja mreža izgrađenih na Linuxu.
    • Sposobnost brzog rješavanja novonastalih problema i osiguravanja stabilnog i nesmetanog rada sustava.
    Testirajte se na prijemnom ispitu i pogledajte program za više detalja.

    Počevši od CentoOS-a 7, pojavio se novi alat za konfiguriranje pravila filtriranja prometa vatrozid. Preporuča se koristiti ga za upravljanje iptables pravilima. U CentOS 8, umjesto standardnog paketa za filtriranje iptables, sada se koristi okvir nftables, a kada konfigurirate pravila vatrozida kroz firewalld, vi zapravo konfigurirate nftables. U ovom ćemo članku pogledati instalaciju, osnovne koncepte i konfiguraciju vatrozida na poslužitelju koji pokreće CentOS 8 (CentOS 7 je isti).


    VatrozidD– vatrozid za zaštitu poslužitelja od neželjenog prometa s podrškom za dinamičko upravljanje pravilima (bez ponovnog pokretanja) i implementaciju stalnih pravila vatrozida. Radi kao sučelje za i nftables. FirewallD se može koristiti na gotovo svim distribucijama Linuxa.

    Osnovni koncepti vatrozida, zone i pravila

    Prije nego počnete s instalacijom i konfiguracijom vatrozid, uvest ćemo koncept zona, koje se koriste za definiranje razine povjerenja za različite veze. Za različite zone vatrozid Možete primijeniti različita pravila filtriranja, odrediti opcije aktivnog vatrozida u obliku unaprijed definiranih usluga, protokola i portova, prosljeđivanja portova i bogatih pravila.

    Vatrozid filtrira dolazni promet po zoni ovisno o pravilima koja se primjenjuju na zonu. Ako IP- adresa pošiljatelja zahtjeva odgovara pravilima određene zone, tada će paket biti poslan kroz ovu zonu. Ako adresa ne odgovara niti jednoj zoni konfiguriranoj na poslužitelju, paket će obraditi zadana zona. Prilikom postavljanja vatrozid poziva se zadana zona javnost.

    Firewalld ima zone koje su unaprijed konfigurirane s dopuštenjima za razne usluge. Možete koristiti ove postavke ili stvoriti vlastite zone. Popis zadanih zona koje se stvaraju prilikom instalacije firewallda (pohranjene u direktoriju /usr/lib/firewalld/zones/):

    pad minimalna razina povjerenja. Sve dolazne veze su blokirane bez odgovora, dopuštene su samo odlazne veze;
    blok zona je slična prethodnoj, ali kada se dolazni zahtjevi odbiju, šalje se poruka icmp-host-prohibited for Ipv4 ili icmp6-adm-prohibited for Ipv6;
    javnost predstavlja javne, nepouzdane mreže. Možete dopustiti odabrane dolazne veze na individualnoj osnovi;
    vanjski vanjske mreže kada koristite vatrozid kao pristupnik. Konfigurirano je za maskiranje NAT-a tako da vaša interna mreža ostaje privatna, ali dostupna;
    unutarnje antonim vanjske zone. Domaćin ima dovoljnu razinu povjerenja, dostupan je niz dodatnih usluga;
    dmz koristi se za računala koja se nalaze u DMZ-u (izolirana računala bez pristupa ostatku mreže). Dopuštene su samo određene dolazne veze;
    raditi zona za radne strojeve (većina računala na mreži je pouzdana);
    Dom zona kućne mreže. Većini računala se može vjerovati, ali samo su određene dolazne veze podržane;
    vjerovao vjerujte svim strojevima na mreži. Najotvorenija od svih dostupnih opcija, zahtijeva svjesno korištenje.

    U vatrozid koriste se dva skupa pravila – trajna i privremena. Privremena pravila rade dok se poslužitelj ponovno ne pokrene. Prema zadanim postavkama, prilikom dodavanja pravila u vatrozid, pravila se smatraju privremenim ( vrijeme izvođenja). Da biste trajno dodali pravilo, trebate upotrijebiti zastavicu - trajno. Takva pravila će se primijeniti nakon ponovnog pokretanja poslužitelja.

    Instaliranje i omogućavanje vatrozida na CentOS-u

    U CentOS 7/8, firewalld je instaliran prema zadanim postavkama s OS-om. Ako ste ga uklonili i želite instalirati firewalld, možete koristiti standardni /dnf manager:

    # yum install firewalld -y - za Centos 7
    # dnf install firewalld -y - za Centos 8

    Demonu vatrozid pokrenuo automatski kada se poslužitelj pokrenuo, morate ga dodati u:

    # systemctl omogući vatrozid

    I trči:

    # systemctl pokrenite vatrozid

    Provjerite status usluge:

    # vatrozid statusa systemctl

    ● firewalld.service - firewalld - dinamički vatrozidni demon Učitano: učitano (/usr/lib/systemd/system/firewalld.service; omogućeno; unaprijed postavljeno: omogućeno) Aktivno: aktivno (pokrenuto) od pon 2019-10-14 14:54 :40 +06; Prije 22 s Dokumenti: man:firewalld(1) Glavni PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid Listopad 14 14:54:40 server.vpn.ru systemd: Pokretanje firewalld - dinamički demon vatrozida... 14 listopad 14:54:40 server.vpn.ru systemd: Pokrenut firewalld - dinamički demon vatrozida.

    Ili naredbom:

    # firewall-cmd --stanje

    Firewall-cmd naredba je firewalld sučelje za nftables/iptables.

    # firewall-cmd --stanje

    Rad s pravilima vatrozida

    Zadana pravila:

    Prije postavljanja pravila vatrozida, morate provjeriti koja se zona koristi prema zadanim postavkama:

    # firewall-cmd --get-default-zone

    Budući da smo upravo instalirali firewalld i još ga nismo konfigurirali, imamo zadanu zonu javnost.

    Provjerimo aktivnu zonu. Postoji i jedan - javni:

    # firewall-cmd --get-active-zones

    Javna sučelja: eth0

    Kao što vidite, eth0 mrežno sučelje kontrolira zona javnost.

    Za pregled temeljnih pravila unesite:

    # firewall-cmd --list-all

    Javna (aktivna) meta: zadana icmp-block-inverzija: nema sučelja: eth0 izvori: usluge: dhcpv6-klijent ssh portovi: protokoli: maskarada: nema prosljeđujućih portova: izvorni portovi: icmp-blokovi: bogata pravila:

    Iz popisa možete vidjeti da su uobičajene operacije vezane uz DHCP klijent i ssh dodane ovoj zoni.

    Dostupne zone

    Za pregled popisa svih zona potrebno je pokrenuti naredbu:

    # firewall-cmd --get-zones

    Dobio sam sljedeći popis:

    Block dmz drop external home interni javni pouzdani rad

    Za provjeru pravila određene zone potrebno je dodati zastavu - zona.

    # firewall-cmd --zone=home --list-all

    Početna meta: zadana icmp-block-inverzija: nema sučelja: izvori: usluge: dhcpv6-klijent mdns samba-klijent ssh portovi: protokoli: maskarada: nema portova za prosljeđivanje: izvorni portovi: icmp-blokovi: bogata pravila:

    Pravila svih zona mogu se pogledati naredbom:

    # firewall-cmd --list-all-zones

    Popis će biti prilično velik, jer može biti mnogo zona.

    Promijenite zadanu zonu.

    Prema zadanim postavkama, sva mrežna sučelja nalaze se u zoni javnost, ali se mogu prenijeti u bilo koju od zona naredbom:

    # firewall-cmd --zone=home -change-interface=eth0

    Nakon parametra --zona= označite željenu zonu.

    Za promjenu zadane zone morate upotrijebiti naredbu:

    # firewall-cmd --set-default-zone=home

    Dodavanje pravila aplikacije

    Da biste otvorili priključak za aplikaciju, možete dodati uslugu u iznimke. Prikaz popisa dostupnih usluga:

    Izlaz će sadržavati veliki broj usluga. detaljne informacije o usluzi sadržan je u svom xml datoteka. Te se datoteke nalaze u direktoriju /usr/lib/firewalld/services.

    Na primjer:

    # cd /usr/lib/firewalld/services

    pošta (SMTP) Ova opcija dopušta dolaznu isporuku SMTP pošte. Ako trebate dopustiti udaljenim hostovima da se izravno povežu s vašim strojem radi dostave pošte, omogućite ovu opciju. Ovo ne morate omogućiti ako svoju poštu prikupljate s poslužitelja svog ISP-a putem POP3 ili IMAP-a, ili ako koristite alat kao što je fetchmail. Imajte na umu da neispravno konfiguriran SMTP poslužitelj može dopustiti udaljenim strojevima da koriste vaš poslužitelj za slanje spam.

    XML datoteka sadrži opis usluge, protokol i broj porta koji će se otvoriti u vatrozidu.

    Kada dodajete pravila, možete koristiti parametar --dodaj-uslugu za otvaranje pristupa određenoj usluzi:

    # firewall-cmd --zone=public --add-service=http

    # firewall-cmd --zone=public --add-service=https

    Nakon dodavanja pravila, možete provjeriti jesu li usluge dodane u navedenu zonu:

    # firewall-cmd --zone=public --list-services

    Dhcpv6-klijent http https ssh

    Ako želite učiniti ova pravila trajnim, trebate dodati parametar prilikom dodavanja — trajno.

    Za uklanjanje usluge iz zone:

    # firewall-cmd --permanent --zone=public --remove-service=http

    Dhcpv6-klijent https ssh test

    Ako svoju uslugu želite dodati iznimkama, možete izraditi datoteku xml sami i ispunite ga. Možete kopirati podatke s bilo kojeg servisa, promijeniti naziv, opis i broj priključka.

    Kopirajmo datoteku smtp.xml u imenik za rad s korisničkim servisima:

    # cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

    Promijenite opis usluge u datoteci.

    Sebe xml datoteka Također ga trebate preimenovati u naziv svoje usluge. Nakon toga potrebno je ponovno pokrenuti firewall i provjeriti nalazi li se naša usluga na popisu:

    Zvala sam servis test i pojavio se na popisu:

    Syslog-tls telnet test tftp

    Sada možete dodati kreiranu uslugu u bilo koju zonu:

    # firewall-cmd --zone=public --add-service=test --permanent

    # firewall-cmd --zone=public --permanent --list-services

    Dhcpv6-klijent http https ssh test

    Ako na popisu niste pronašli uslugu koja vam je potrebna, možete otvoriti traženi port na firewall-u naredbom:

    # firewall-cmd --zone=public -add-port=77/tcp - otvori port 77 tcp
    # firewall-cmd --zone=public -add-port=77/udp - otvori port 77 udp
    # firewall-cmd --zone=public -add-port=77-88/udp - otvoreni raspon portova 77-88 udp
    # firewall-cmd --zone=public -list-ports - provjeri popis dopuštenih portova

    Blokiraj/dopusti ICMP odgovore:

    # firewall-cmd --zone=public --add-icmp-block=echo-reply
    # firewall-cmd --zone= public --remove-icmp-block=echo-reply

    Ukloni dodani port:

    # firewall-cmd --zone=public -remove-port=77/udp - uklanjanje privremenog pravila 77 udp

    # firewall-cmd --permanent --zone=public -remove-port=77/udp - uklanjanje trajnog pravila

    Dodavanje vlastitih zona

    Možete stvoriti vlastitu zonu (nazvat ću je naše):

    # firewall-cmd --permanent --new-zone=our

    Nakon kreiranja nove zone, kao i nakon kreiranja usluge, potrebno je ponovno podizanje sustava vatrozid:

    # firewall-cmd --reload

    # firewall-cmd --get-zones

    Block dmz drop external home internal our public trusted work

    Zona naše dostupno. Možete mu dodati usluge ili otvoriti određene priključke.

    Vatrozid: blokiranje IP adresa, stvaranje iznimaka

    Možete dodati pouzdane IP adrese iznimkama vatrozida ili blokirati neželjene.

    Za dodavanje određene IP adrese (na primjer 8.8.8.8) na vaš poslužitelj putem vatrozid, koristite naredbu:

    # firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.8.8" accept"

    Provjerite područje i uvjerite se IP dodano iznimkama u bogatim pravilima:

    Javna (aktivna) meta: zadana icmp-block-inverzija: nema sučelja: eth0 izvori: usluge: dhcpv6-klijent http https ssh testni portovi: protokoli: maskarada: nema naprijed-portova: izvorni portovi: icmp-blokovi: bogata pravila: pravilo obitelj="ipv4" izvorna adresa="8.8.8.8" prihvatiti

    Blokirati IP, treba zamijeniti prihvatiti na odbiti:

    # firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.4.4" reject"

    # firewall-cmd --zone=public --list-all

    Javna (aktivna) meta: zadana icmp-block-inverzija: nema sučelja: eth0 izvori: usluge: dhcpv6-klijent http https ssh testni portovi: protokoli: maskarada: nema naprijed-portova: izvorni portovi: icmp-blokovi: bogata pravila: pravilo obitelj="ipv4" izvorna adresa="8.8.8.8" prihvati pravilo obitelj="ipv4" izvorna adresa="8.8.4.4" odbaci

    Određenu uslugu možete dopustiti samo za zahtjeve s određene IP adrese:

    #firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="10.10.1.0/24" service name="https" accept"

    Ako hitno morate blokirati sve zahtjeve prema poslužitelju, upotrijebite naredbu panic:

    # firewall-cmd --panic-on

    Način panike možete onemogućiti pomoću naredbe:

    # firewall-cmd --panic-off

    Ili ponovnim pokretanjem poslužitelja.

    Možete blokirati konfiguraciju vatrozida tako da lokalne usluge s root prava nije mogao promijeniti pravila vatrozida koja si stvorio:

    # firewall-cmd --lockdown-on

    Onemogući način blokiranja:

    # firewall-cmd --lockdown-off

    Port prosljeđivanje u vatrozidu

    Možete stvoriti pravilo za prosljeđivanje porta u firewalldu. Za prosljeđivanje porta 443 na 9090:

    # firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

    Da biste uklonili pravilo prosljeđivanja priključka:

    # firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090