Serija RHCSA: Instaliranje, konfiguriranje i osiguranje web i FTP servera - 9. dio


Web server (također poznat kao HTTP server) je usluga koja upravlja sadržajem (najčešće web stranicama, ali i drugim vrstama dokumenata) do klijenta u mreži.

FTP server je jedan od najstarijih i najčešće korištenih resursa (čak i do danas) za omogućavanje datoteka dostupnim klijentima na mreži u slučajevima kada nije potrebna autentifikacija jer FTP koristi korisničko ime i lozinkabez enkripcije.

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

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

Instalacija Apache i FTP servera

U ovom vodiču ćemo koristiti RHEL 7 server sa statičkom IP adresom 192.168.0.18/24. Da instalirate Apache i VSFTPD, pokrenite sljedeću naredbu:


yum update && yum install httpd vsftpd

Kada se instalacija završi, obje usluge će biti u početku onemogućene, tako da ih za sada moramo ručno pokrenuti i omogućiti im da automatski počnu sa sljedećim pokretanjem:


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

Osim toga, moramo otvoriti portove 80 i 21, gdje web i ftp demoni slušaju, respektivno, 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

Da biste potvrdili da web server radi ispravno, pokrenite pretraživač i unesite IP servera. Trebali biste vidjeti stranicu za testiranje:

Što se tiče ftp servera, morat ćemo ga dodatno konfigurirati, što ćemo učiniti za minut, prije nego što potvrdimo da radi kako se očekuje.

Konfiguriranje i osiguranje Apache web servera

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

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

Kao i uvijek, napravite sigurnosnu kopiju glavne konfiguracijske datoteke prije nego što je uredite:


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

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

  1. ServerRoot: direktorij u kojem se čuvaju serverske konfiguracije, greške i datoteke evidencije.
  2. Slušaj: nalaže Apacheu da sluša na određenoj IP adresi i/ili portovima.
  3. Uključi: omogućava uključivanje drugih konfiguracijskih fajlova, koji moraju postojati. U suprotnom, server neće uspjeti, za razliku od direktive IncludeOptional, koja se tiho zanemaruje ako specificirane konfiguracijske datoteke ne postoje.
  4. Korisnik i grupa: ime korisnika/grupe za pokretanje httpd usluge.
  5. DocumentRoot: Direktorij iz kojeg će Apache posluživati vaše dokumente. Prema zadanim postavkama, svi zahtjevi se preuzimaju iz ovog direktorija, ali se mogu koristiti simboličke veze i pseudonimi za upućivanje na druge lokacije.
  6. ServerName: ova direktiva postavlja ime hosta (ili IP adresu) i port koji server koristi za identifikaciju.

Prva sigurnosna mjera sastojat će se od kreiranja namjenskog korisnika i grupe (tj. tecmint/tecmint) za pokretanje web servera kao i promjene zadanog porta na viši (9000u 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

Možete testirati konfiguracijsku datoteku sa.


apachectl configtest

i ako je sve OK, ponovo pokrenite web server.


systemctl restart httpd

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


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 pravila SELinux, možete koristiti samo portove koje vraća


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

za web server.

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


semanage port -a -t http_port_t -p tcp 8100

Da dodatno osigurate 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 prikaže sadržaj direktorija ako u tom direktoriju ne postoji index.html.

Uredite /etc/httpd/conf/httpd.conf (i konfiguracijske datoteke za virtuelne hostove, ako ih ima) i uvjerite se da je direktiva Opcije, i na vrhu i na na nivoima bloka direktorija, postavljeno je na Ništa:


Options None

3. Sakrij informacije o web serveru i operativnom sistemu 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 /var/www/html direktorija.

Konfiguriranje i osiguranje FTP servera

Kao iu slučaju Apachea, glavna konfiguracijska datoteka za Vsftpd (/etc/vsftpd/vsftpd.conf) je dobro komentirana i dok bi zadana konfiguracija trebala biti dovoljna za većinu aplikacija , trebalo bi da se upoznate sa dokumentacijom i man stranicom (man vsftpd.conf) kako biste efikasnije radili sa ftp serverom (ne mogu to dovoljno naglasiti!).

U našem slučaju, ovo su direktive koje se koriste:


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 (po defaultu) biti smješteni u chroot'ed zatvor u svom kućnom direktoriju odmah nakon prijave. To znači da lokalni korisnici neće moći pristupiti datotekama izvan odgovarajućih kućnih direktorija.

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


setsebool -P ftp_home_dir on

Sada se možete povezati na ftp server koristeći klijent kao što je Filezilla:

Imajte na umu da /var/log/xferlog dnevnik bilježi preuzimanja i otpremanja, što je u skladu s gornjim popisom direktorija:

Pročitajte također: Ograničite FTP mrežni propusni opseg koji koriste aplikacije u Linux sistemu pomoću Trickle

Sažetak

U ovom vodiču smo objasnili kako postaviti web i ftp server. Zbog opsežnosti teme, nije moguće pokriti sve aspekte ovih tema (npr. virtuelni web hostovi). Stoga vam preporučujem da pogledate i druge odlične članke na ovoj web stranici o Apacheu.