Serija RHCSA: Instaliranje, konfiguriranje i osiguranje web i FTP poslužitelja - 9. dio


Web poslužitelj (također poznat kao HTTP poslužitelj) je usluga koja rukuje sadržajem (najčešće web stranicama, ali i drugim vrstama dokumenata) klijentu u mreži.

FTP poslužitelj jedan je od najstarijih i najčešće korištenih resursa (čak i danas) za omogućavanje pristupa datotekama klijentima na mreži u slučajevima kada nije potrebna provjera autentičnosti jer FTP koristi korisničko ime i lozinkabez šifriranja.

Web poslužitelj dostupan u RHEL 7 je verzija 2.4 Apache HTTP poslužitelja. Što se tiče FTP poslužitelja, koristit ćemo Very Secure Ftp Daemon (aka vsftpd) za uspostavljanje veza zaštićenih TLS-om.

U ovom ćemo članku objasniti kako instalirati, konfigurirati i osigurati web poslužitelj i FTP poslužitelj u RHEL 7.

Instalacija Apache i FTP poslužitelja

U ovom vodiču koristit ćemo RHEL 7 poslužitelj sa statičkom IP adresom 192.168.0.18/24. Da biste instalirali Apache i VSFTPD, pokrenite sljedeću naredbu:


yum update && yum install httpd vsftpd

Kada instalacija završi, obje će usluge biti inicijalno onemogućene, tako da ih zasad moramo ručno pokrenuti i omogućiti im da se automatski pokreću počevši od sljedećeg pokretanja:


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

Osim toga, moramo otvoriti portove 80 i 21, gdje slušaju web i ftp demoni, kako bismo omogućili pristup tim uslugama izvana:


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

Kako biste potvrdili da web poslužitelj radi ispravno, pokrenite preglednik i unesite IP poslužitelja. Trebali biste vidjeti testnu stranicu:

Što se tiče ftp poslužitelja, morat ćemo ga dodatno konfigurirati, što ćemo učiniti za minutu, prije nego potvrdimo da radi prema očekivanjima.

Konfiguriranje i osiguranje Apache web poslužitelja

Glavna konfiguracijska datoteka za Apache nalazi se u /etc/httpd/conf/httpd.conf, ali se može oslanjati na druge datoteke unutar /etc/httpd /conf.d.

Iako bi zadana konfiguracija trebala biti dovoljna za većinu slučajeva, dobro je upoznati se sa svim dostupnim opcijama kako je opisano u službenoj dokumentaciji.

Kao i uvijek, prije uređivanja napravite sigurnosnu kopiju glavne konfiguracijske datoteke:


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

Zatim ga otvorite u svom omiljenom uređivaču teksta i potražite sljedeće varijable:

  1. ServerRoot: direktorij u kojem se čuvaju datoteke konfiguracije poslužitelja, pogreške i zapisnici.
  2. Slušaj: upućuje Apache da sluša određenu IP adresu i/ili portove.
  3. Uključi: omogućuje uključivanje drugih konfiguracijskih datoteka koje moraju postojati. U suprotnom, poslužitelj neće uspjeti, za razliku od direktive IncludeOptional, koja se tiho ignorira ako navedene konfiguracijske datoteke ne postoje.
  4. Korisnik i grupa: naziv korisnika/grupe za pokretanje httpd usluge.
  5. DocumentRoot: direktorij iz kojeg će Apache posluživati vaše dokumente. Prema zadanim postavkama, svi se zahtjevi preuzimaju iz ovog direktorija, ali simboličke veze i aliasi mogu se koristiti za usmjeravanje na druge lokacije.
  6. Naziv poslužitelja: ova direktiva postavlja naziv hosta (ili IP adresu) i priključak koji poslužitelj koristi za identifikaciju.

Prva sigurnosna mjera sastojat će se od stvaranja namjenskog korisnika i grupe (tj. tecmint/tecmint) za pokretanje web poslužitelja i promjene zadanog priključka na viši (9000 u ovom slučaju):


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

Konfiguracijsku datoteku možete testirati pomoću.


apachectl configtest

i ako je sve OK, ponovno pokrenite web poslužitelj.


systemctl restart httpd

i ne zaboravite omogućiti novi port (i onemogućiti stari) u vatrozidu:


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

Imajte na umu da, zbog SELinux pravila, možete koristiti samo portove koje vraća


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

za web poslužitelj.

Ako želite koristiti drugi port (tj. TCP port 8100), morat ćete ga dodati u SELinux kontekst porta za httpd uslugu:


semanage port -a -t http_port_t -p tcp 8100

Kako biste dodatno osigurali svoju instalaciju Apachea, slijedite ove korake:

1. Korisnik Apache radi jer ne bi trebao imati pristup ljusci:


usermod -s /sbin/nologin tecmint

2. Onemogućite popis direktorija kako biste spriječili preglednik da prikazuje sadržaj direktorija ako u tom direktoriju nema index.html.

Uredite /etc/httpd/conf/httpd.conf (i konfiguracijske datoteke za virtualna računala, ako postoje) i provjerite je li direktiva Opcije, i na vrhu i na razini bloka imenika, postavljeno je na Ništa:


Options None

3. Sakrij informacije o web poslužitelju i operativnom sustavu u HTTP odgovorima. Uredite /etc/httpd/conf/httpd.conf na sljedeći način:


ServerTokens Prod 
ServerSignature Off

Sada ste spremni za početak posluživanja sadržaja iz vašeg direktorija /var/www/html.

Konfiguriranje i osiguranje FTP poslužitelja

Kao i u slučaju Apachea, glavna konfiguracijska datoteka za Vsftpd (/etc/vsftpd/vsftpd.conf) dobro je komentirana i dok bi zadana konfiguracija trebala biti dovoljna za većinu aplikacija , trebali biste se upoznati s dokumentacijom i man stranicom (man vsftpd.conf) kako biste učinkovitije upravljali ftp poslužiteljem (ne mogu to dovoljno naglasiti!).

U našem slučaju, korištene su ove direktive:


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

Korištenjem chroot_local_user=YES, lokalni korisnici će (prema zadanim postavkama) biti smješteni u chroot'ed zatvor u svom početnom direktoriju odmah nakon prijave. To znači da lokalni korisnici neće moći pristupiti datotekama izvan svojih odgovarajućih matičnih direktorija.

Konačno, da biste omogućili ftp-u čitanje datoteka u korisničkom početnom direktoriju, postavite sljedeći SELinux boolean:


setsebool -P ftp_home_dir on

Sada se možete spojiti na ftp poslužitelj pomoću klijenta kao što je Filezilla:

Imajte na umu da dnevnik /var/log/xferlog bilježi preuzimanja i prijenose, koji se slažu s gornjim popisom direktorija:

Pročitajte također: Ograničite propusnost FTP mreže koju koriste aplikacije u sustavu Linux uz Trickle

Sažetak

U ovom vodiču smo objasnili kako postaviti web i ftp poslužitelj. Zbog opsežnosti teme, nije moguće pokriti sve aspekte ovih tema (tj. virtualni web hostovi). Stoga vam preporučujem da provjerite i druge izvrsne članke na ovoj web stranici o Apacheu.