RHCSA serija: žiniatinklio ir FTP serverio diegimas, konfigūravimas ir apsauga – 9 dalis


Žiniatinklio serveris (taip pat žinomas kaip HTTP serveris) yra paslauga, kuri tvarko turinį (dažniausiai tinklalapius, bet taip pat ir kitų tipų dokumentus) klientui tinkle.

FTP serveris yra vienas iš seniausių ir dažniausiai (net iki šių dienų) naudojamų išteklių, kad failai būtų prieinami klientams tinkle tais atvejais, kai autentifikavimas nereikalingas, nes FTP naudoja naudotojo vardą ir slaptažodisbe šifravimo.

RHEL 7 pasiekiamas žiniatinklio serveris yra 2.4 Apache HTTP serverio versija. Kalbant apie FTP serverį, TLS apsaugotiems ryšiams užmegzti naudosime labai saugų Ftp demoną (dar žinomą kaip vsftpd).

Šiame straipsnyje paaiškinsime, kaip įdiegti, konfigūruoti ir apsaugoti žiniatinklio serverį ir FTP serverį naudojant RHEL 7.

Apache ir FTP serverio diegimas

Šiame vadove naudosime RHEL 7 serverį, kurio statinis IP adresas yra 192.168.0.18/24. Norėdami įdiegti Apache ir VSFTPD, paleiskite šią komandą:


yum update && yum install httpd vsftpd

Kai diegimas bus baigtas, abi paslaugos iš pradžių bus išjungtos, todėl kol kas turime jas paleisti rankiniu būdu ir įgalinti jas automatiškai pradėti nuo kitos įkrovos:


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

Be to, turime atidaryti prievadus 80 ir 21, kuriuose atitinkamai klausosi žiniatinklio ir ftp demonai, kad galėtume pasiekti šias paslaugas iš išorės:


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Norėdami įsitikinti, kad žiniatinklio serveris veikia tinkamai, paleiskite naršyklę ir įveskite serverio IP. Turėtumėte pamatyti bandomąjį puslapį:

Kalbant apie ftp serverį, turėsime jį konfigūruoti toliau, o tai padarysime per minutę, prieš patvirtindami, kad jis veikia taip, kaip tikėtasi.

„Apache“ žiniatinklio serverio konfigūravimas ir apsauga

Pagrindinis Apache konfigūracijos failas yra /etc/httpd/conf/httpd.conf, tačiau jis gali būti pagrįstas kitais failais, esančiais /etc/httpd. /conf.d.

Nors daugeliu atvejų turėtų pakakti numatytosios konfigūracijos, verta susipažinti su visomis galimomis parinktimis, aprašytomis oficialiuose dokumentuose.

Kaip visada, prieš redaguodami pagrindinį konfigūracijos failą pasidarykite atsarginę kopiją:


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Tada atidarykite jį naudodami pageidaujamą teksto rengyklę ir ieškokite šių kintamųjų:

  1. ServerRoot: katalogas, kuriame saugomi serverio konfigūracijos, klaidų ir žurnalo failai.
  2. Klausyti: nurodo „Apache“ klausytis naudojant konkretų IP adresą ir (arba) prievadus.
  3. Įtraukti: leidžia įtraukti kitus konfigūracijos failus, kurie turi egzistuoti. Priešingu atveju serveris suges, priešingai nei direktyva IncludeOptional, kuri tyliai ignoruojama, jei nurodyti konfigūracijos failai neegzistuoja.
  4. Vartotojas ir grupė: vartotojo/grupės, kuriai reikia paleisti httpd paslaugą, pavadinimas.
  5. DocumentRoot: katalogas, iš kurio „Apache“ pateiks jūsų dokumentus. Pagal numatytuosius nustatymus visos užklausos paimamos iš šio katalogo, tačiau simbolinės nuorodos ir slapyvardžiai gali būti naudojami norint nukreipti į kitas vietas.
  6. Serverio pavadinimas: ši direktyva nustato pagrindinio kompiuterio pavadinimą (arba IP adresą) ir prievadą, kurį serveris naudoja savęs identifikavimui.

Pirmoji saugos priemonė bus skirta sukurti vartotoją ir grupę (t. y. tecmint/tecmint), kuri paleis žiniatinklio serverį kaip ir numatytąjį prievadą pakeis į aukštesnį (9000 šiuo atveju):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Galite išbandyti konfigūracijos failą su.


apachectl configtest

ir jei viskas Gerai, iš naujo paleiskite žiniatinklio serverį.


systemctl restart httpd

ir nepamirškite ugniasienėje įjungti naują prievadą (ir išjungti senąjį):


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

Atminkite, kad dėl SELinux politikos galite naudoti tik grąžintus prievadus


semanage port -l | grep -w '^http_port_t'

žiniatinklio serveriui.

Jei norite naudoti kitą prievadą (t. y. TCP prievadą 8100), turėsite jį įtraukti į SELinux prievado kontekstą, skirtą httpd paslaugai:


semanage port -a -t http_port_t -p tcp 8100

Norėdami dar labiau apsaugoti „Apache“ diegimą, atlikite šiuos veiksmus:

1. Naudotojas „Apache“ veikia taip, kaip neturėtų turėti prieigos prie apvalkalo:


usermod -s /sbin/nologin tecmint

2. Išjunkite katalogų sąrašą, kad naršyklė nerodytų katalogo turinio, jei tame kataloge nėra index.html.

Redaguokite /etc/httpd/conf/httpd.conf (ir virtualių prieglobų konfigūracijos failus, jei tokių yra) ir įsitikinkite, kad Parinkčių direktyva tiek viršuje, tiek Katalogo bloko lygiais nustatyta kaip Nėra:


Options None

3. Slėpkite informaciją apie žiniatinklio serverį ir operacinę sistemą HTTP atsakymuose. Redaguokite /etc/httpd/conf/httpd.conf taip:


ServerTokens Prod 
ServerSignature Off

Dabar esate pasirengę pradėti teikti turinį iš katalogo /var/www/html.

FTP serverio konfigūravimas ir apsauga

Kaip ir Apache atveju, pagrindinis Vsftpd (/etc/vsftpd/vsftpd.conf) konfigūracijos failas yra gerai pakomentuotas ir daugumai programų turėtų pakakti numatytosios konfigūracijos , turėtumėte susipažinti su dokumentacija ir vadovo puslapiu (man vsftpd.conf), kad galėtumėte efektyviau valdyti ftp serverį (negaliu to pakankamai pabrėžti!).

Mūsų atveju naudojamos šios direktyvos:


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Naudojant chroot_local_user=YES, vietiniai naudotojai (pagal numatytuosius nustatymus) bus patalpinti į chroot apsaugotą kalėjimą savo namų kataloge iškart po prisijungimo. Tai reiškia, kad vietiniai vartotojai negalės pasiekti jokių failų už atitinkamų namų katalogų ribų.

Galiausiai, norėdami leisti ftp skaityti failus vartotojo namų kataloge, nustatykite šią SELinux loginę reikšmę:


setsebool -P ftp_home_dir on

Dabar galite prisijungti prie ftp serverio naudodami klientą, pvz., Filezilla:

Atminkite, kad žurnale /var/log/xferlog įrašomi atsisiuntimai ir įkėlimai, kurie atitinka aukščiau pateiktą katalogų sąrašą:

Taip pat skaitykite: apribokite FTP tinklo pralaidumą, kurį naudoja programos Linux sistemoje su Trickle

Santrauka

Šioje pamokoje paaiškinome, kaip nustatyti žiniatinklio ir ftp serverį. Dėl temos platumo neįmanoma aprėpti visų šių temų aspektų (t. y. virtualių žiniatinklio prieglobų). Taigi rekomenduoju peržiūrėti ir kitus puikius šios svetainės straipsnius apie „Apache“.