Introducere
La configurarea unui nou server FreeBSD, există o serie de măsuri opționale pe care le puteți lua pentru ca server-ul dvs. să ajungă într-o stare de funcționare mai prietenoasă. În acest ghid vom acoperi unele dintre cele mai comune exemple.
Vom trece peste modul în care să creăm un simplu și ușor de configurat firewall care refuză majoritatea traficului. Ne vom asigura de asemenea că fusul orar al server-ului dvs. este configurat corect. O să configurăm alegerea NTP în ordine cu scopul de a păstra timpul server-ului precis și în cele din urmă vom demonstra cum să adăugați extra spațiu swap pe server.
Înainte de a începe acest ghid trebuie să vă autentificați și să configurați mediul de protecție după cum doriți.
Cum să Configurăm un Simplu IPFW Firewall
Prima sarcină pe care o vom aborda este crearea unui firewall simplu pentru a securiza server-ul nostru.
FreeBSD suportă și include trei firewall-uri separate, fiecare cu propria rezistență și slăbiciune. Acestea sunt numite pf, ipfw, și ipfilter. În acest ghid vom folosi ipfw pentru că putem cu ușurință pune la punct un firewall stateful.
Configurarea Firewall-ului de bază
Aproape toată configurarea va avea loc în fișierul /etc/rc.conf. Deschideți acest fișier cu drepturi sudo în editorul dvs.
sudo vi /etc/rc.conf
În interior ca trebui să adăugăm un număr de linii diferite care să permită și să controleze cum firewall-ul ipfw va funcționa. Să începem cu regulile esențiale. Adăugați acestea în partea de jos a fișierului:
firewall_enable=”YES”
firewall_quiet=”YES”
Așa cum probabil vă așteptați, prima linie permite firewall-ul ipfw, pornindu-l automat la boot și permițându-i ca la pornire să aibă comenzile service obișnuite.
Cea de-a doua comandă spune ipfw să nu permită nici o ieșire standard când efectuează anumite acțiuni. Acest lucru ar putea fi privit ca pe o chestiune de preferință, dar influențează de fapt funcționalitatea firewall-ului.
Doi factori se combină pentru a face ca aceasta să fie o opțiune importantă. Primul este acela că script-ul de configurare al firewall-ului este executat într-un mediu de protecție curent, nu ca sarcină de fond. Al doilea factor este când comanda ipfw citește un script de configurare fără steagul “quiet”, citește și scoate fiecare linie, la rândul său, la standardul cerut. Când afișează o linie, execută imediat acțiunea asociată.
Cele mai multe fișiere de configurare firewall trec peste normele actuale de la începutul script-ului pentru a o lua de la început. Dacă firewall-ul ipfw vine peste o linie fără quiet flag, va încălca imediat toate regulile și se va întoarce la politica implicită, care de obicei respinge toate conexiunile. Dacă configurați firewall-ul peste SSH, acest lucru ar scădea conexiunea, ar închide sesiunea curentă de protecție și nici una dintre regulile care urmează nu ar fi prelucrate, închizând efectiv accesul la server. Practic quiet flag-ul permite firewall-ului să proceseze regulile ca pe un set în loc să le implementeze individual pe fiecare.
După aceste două linii putem începe configurarea firewall-ului:
firewall_type=”workstation”
firewall_myservices=”22 80″
firewall_allowservices=”any”
firewall_logdeny=”YES”
Pentru început selectăm „workstation” ca tip de firewall pe care îl vom configura. Acesta este un firewall stateful cu un comportament implicit bun. De asemenea ne permite să modificăm cu ușurință serviciile pe care vrem să le acceseze clienții folosind opțiunile firewall_myservices și firewall_allowservices. La final, vom configura ipfw pentru autentificarea și conexiunile care sunt respinse prin regulile configurate.
Opțiunea firewall_myservices trebuie stabilită pentru o listă de servicii sau porturi TCP, separate prin spații, care ar trebui să fie accesibile pe server. Puteți folosi porturile, așa cum avem aici (am configurat port-ul 22 pentru conexiunea SSH și port-ul 80 pentru server web convențional HTTP). Ați putea folosi și servicii de nume. Serviciile pe care FreeBSD le cunoaște după nume sunt listate în fișierul /etc/services. De exemplu, putem schimba cele de mai sus cu ceva de genul:
firewall_myservices=”ssh http”
Acesta va avea aceleași rezultate. Dacă folosiți SSH pe server-ul dvs. web asigurați-vă că adăugați fie portul 443 fie serviciul https în lista.
Lista de obiecte firewall_allowservices sunt clienții cărora li se permite accesul la serviciile oferite. Cuvântul „any” înseamnă că orice client poate accesa aceste servicii. Dacă dorim să limităm clienții care se pot conecta la serviciile noastre putem face acest lucru de aici.
Opțiunea firewall_logdeny transmite ipfw să autentifice toate încercările de conexiune care sunt respinse într-un fișier localizat /var/log/security.
Toate împreună, /etc/rc.conf această porțiune din fișierul ar trebui să arate cam așa:
firewall_enable=”YES”
firewall_quiet=”YES”
firewall_type=”workstation”
firewall_myservices=”22 80″
firewall_allowservices=”any”
firewall_logdeny=”YES”
Amintiți-vă să ajustați opțiunea firewall_myservices care se referă la serviciul pe care îl prezentați clienților. Când ați terminat salvați și închideți fișierul.
Permiterea Conexiunilor UDP
Porturile și serviciile listate în opțiunea firewall_myservices din fișierul /etc/rc.conf permit accesul conexiunilor TCP. Dacă aveți servicii pe care doriți să le expuneți și care folosesc UDP, trebuie să editați fișierul /etc/rc.firewall:
sudo vi /etc/rc.firewall
Am configurat firewall-ul pentru a folosi tipul firewall „workstation”, așa că uitați-vă după o secțiune care arată ca aceasta:
Este o secțiune în interiorul acestui bloc care este dedicată procesării valorilor firewall_allowservices și firewall_myservices pe care le-am configurat. Va arăta ca acesta:
for i in ${firewall_allowservices} ; do
for j in ${firewall_myservices} ; do
${fwcmd} add pass tcp from $i to me $j
done
done
După această secțiune putem adăuga servicii sau porturi care ar trebui să accepte pachete UDP prin adăugarea unei linii ca aceasta:
${fwcmd} add pass udp from any to me port_num
În exemplul de mai sus, puteți lăsa cuvântul “any” dacă conexiunea ar fi permisă pentru toți clienții sau o puteți schimba cu o adresă IP specifică sau cu o gamă de rețea. Comanda port_num de mai sus ar trebui înlocuită cu un număr de port sau un nume de serviciu pentru care doriți accesul UDP. De exemplu, dacă rulați un DNS server, v-ați dori să aveți o linie care arată în felul următor:
for i in ${firewall_allowservices} ; do
for j in ${firewall_myservices} ; do
${fwcmd} add pass tcp from $i to me $j
done
done
${fwcmd} add pass udp from 192.168.2.0/24 to me 53
Aceasta ar trebui să permită oricărui client din intervalul 192.168.2.0/24 să acceseze server-ul DNS care operează cu portul standard 53. De remarcat că în acest exemplu veți dori să deschideți acest port pentru conexiuni TCP ca și cum ar fi folosit de server-ul DNS pentru răspunsuri mai lungi.
Salvați și închideți fișierul când ați terminat.
Pornirea Firewall-ului
Când ați terminat de configurat, puteți porni firewall-ul tastând:
sudo service ipfw start
Firewall-ul ar trebui să ruleze corect, blocând traficul nedorit în timp ce aderă la serviciile și porturile permise. Acest firewall pornește automat la fiecare boot.
De asemenea, dorim să configurăm o limită a cât de multe refuzuri de autentificare pot avea adresele IP. Acest lucru va preveni umplerea jurnalelor noastre cu un singur utilizator persistent. Puteți face acest lucru în fișierul /etc/sysctl.conf:
sudo vi /etc/sysctl.conf
La începutul fișierului putem limita autentificările la “5” adăugând:
net.inet.ip.fw.verbose_limit=5
Salvați și închideți fișierul când ați terminat. Acesta va configura această setare la următoarea pornire.
Pentru a pune în aplicare același comportament pentru sesiunea activă putem folosi comanda sysctl în sine, ca mai jos:
sudo sysctl net.inet.ip.fw.verbose_limit=5
Aceasta ar trebui să implementeze imediat limita pentru acest boot.
Cum se Setează Fusul Orar pentru un Server
Este o idee bună să configurați corect fusul orar pentru server-ul dvs. Acesta este un pas important pentru când veți configura sincronizarea NTP (Network Time Protocol) din secțiunea următoare.
FreeBSD vine cu un meniu de bază numit tzsetup pentru configurarea fusului orar. Pentru a configura fusul orar pentru serverul dvs. apelați la această comandă cu privilegii sudo:
sudo tzsetup
Vă va apărea o casetă de dialog, în care veți fi întrebat dacă ceasul echipamentului dvs. este setat la ora locală sau la UTC.
Selectați „No”. Mai departe veți fi întrebat care este regiunea în care server-ul dvs. este localizat.
În continuare va trebui să alegeți o regiune sau o țară.
La final selectați fusul orar cel mai apropiat de server-ul dvs.
Confirmați fusul orar care este prezentat pe baza alegerilor dvs.
În acest moment fusul orar ar trebui să se potrivească cu selecția făcută de dvs.
Cum să Configurăm NTP (Network Time Protocol) pentru a Menține Timpul Exact
Acum că aveți fusul orar configurat pe server-ul dvs. putem seta NTP – Network Time Protocol. Acesta va ajuta ca server-ul dvs. să fie sincronizat cu serverele din întreaga lume. Acest lucru este important pentru interacțiunile client – server, dar și pentru autentificare.
Putem activa serviciul NTP pe server prin ajustarea fișierului /etc/rc.conf. Trebuie să îl deschideți cu privilegii sudo:
sudo vi /etc/rc.conf
În acest fișier trebuie să adăugați următoarea linie:
ntpd_enable=”YES”
De asemenea va trebui să adăugați o a doua linie care va sincroniza server-ul nostru cu serverele NTP la boot. Acest lucru este necesar deoarece permite server-ului să depășească limita normală de drift la inițiere. Server-ul dvs. va fi în afara limitei de drift la boot pentru că fusul orar va fi aplicat prioritar pornirii NTP daemon care va compensa timpul sistemului nostru:
ntpd_enable=”YES”
ntpd_sync_on_start=”YES”
Dacă nu am fi avut această linie, NTP daemon-ul nostru ar eșua atunci când va porni, din cauza setărilor de fus orar care deviază timpul sistemului nostru înainte procesului de boot.
Salvați și închideți fișierul când ați terminat.
Puteți porni serviciul ntpd tastând:
sudo service ntpd start
Acesta va menține timpul server-ului sincronizându-l cu serverele NTP listate în /etc/ntp.conf.
Cum să Configurăm Spațiul Suplimentar Swap
Pe serverele cu FreeBSD configurate la …………, 1 Gigabyte de spațiu swap este configurat automat, indiferent de dimensiunea server-ului. Puteți vedea acest lucru tastând:
sudo swapinfo -g
Ar trebui să arate în felul următor:
Device 1G-blocks Used Avail Capacity
/dev/gpt/swapfs 1 0 1 0%
Unii utilizatori și unele aplicații s-ar putea să aibă nevoie de mai mult spațiu swap decât acesta. Acest lucru este cu ușurință îndeplinit adăugând un fișier swap.
Primul lucru pe care trebuie să îl facem este să alocăm o parte din sistemul de fișiere pentru fișierul pe care dorim să îl utilizăm pentru swap. Vom folosi comanda truncate, care va aloca spațiu.
În acest ghid vom pune fișierul swap pe /swapfile, dar puteți utiliza orice locație rezonabilă din sistemul de fișiere. Acest fișier va oferi un spațiu swap adițional de 1 Gigabyte. Puteți ajusta acest număr modificând valoarea dată cu ajutorul opțiunii -s.
sudo truncate -s 1G /swapfile
După ce vom aloca spațiul trebuie să închidem accesul la fișier. Utilizatorii obișnuiți nu trebuie să aibă acces la acest fișier:
sudo chmod 0600 /swapfile
În continuare, asociați un pseudo dispozitiv cu fișierul și configurați-l pentru a monta la boot prin tastarea:
sudo sh -c ‘echo „md99 none swap sw,file=/swapfile,late 0 0” >> /etc/fstab’
Comanda de mai sus adaugă o linie care arată în felul următor, la fișierul /etc/fstab:
md99 none swap sw,file=/swapfile,late 0 0
După ce linia este adăugată la fișierul /etc/fstab, putem activa fișierul swap pentru sesiune prin tastarea:
sudo swapon -aqL
Putem verifica funcționalitatea fișierului swap utilizând această comandă swapinfo încă o dată.
sudo swapinfo -g
Ar trebui să vedeți dispozitivul suplimentar (/dev/md99) asociat cu fișierul swap:
Device 1G-blocks Used Avail Capacity
/dev/gpt/swapfs 1 0 1 0%
/dev/md99 1 0 1 0%
Total 2 0 2 0%
Acest fișier swap va fi montat automat la fiecare boot.
Concluzii
Pașii subliniați în acest ghid pot fi folosiți pentru a aduce server-ul FreeBSD într-o stare mai bună pentru producție. Prin configurarea de bază a unor elemente esențiale ca firewall, sincronizarea NTP, spațiu adecvat swap server-ul dvs. poate fi folosit ca o bază bună pentru instalații și servicii viitoare.