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:
- ServerRoot: direktorij u kojem se čuvaju datoteke konfiguracije poslužitelja, pogreške i zapisnici.
- Slušaj: upućuje Apache da sluša određenu IP adresu i/ili portove.
- 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.
- Korisnik i grupa: naziv korisnika/grupe za pokretanje httpd usluge.
- 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.
- 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.