RHCSA-serien: Installation, konfiguration og sikring af en web- og FTP-server - Del 9
En webserver (også kendt som en HTTP-server) er en tjeneste, der håndterer indhold (oftest websider, men også andre typer dokumenter) til en klient i et netværk.
En FTP-server er en af de ældste og mest anvendte ressourcer (selv den dag i dag) til at gøre filer tilgængelige for klienter på et netværk i tilfælde, hvor ingen godkendelse er nødvendig, da FTP bruger brugernavn og adgangskode uden kryptering.
Den tilgængelige webserver i RHEL 7 er version 2.4 af Apache HTTP-serveren. Hvad angår FTP-serveren, bruger vi Very Secure Ftp Daemon (aka vsftpd) til at etablere forbindelser, der er sikret med TLS.
I denne artikel forklarer vi, hvordan du installerer, konfigurerer og sikrer en webserver og en FTP-server i RHEL 7.
Installation af Apache og FTP-server
I denne vejledning bruger vi en RHEL 7-server med en statisk IP-adresse på 192.168.0.18/24. For at installere Apache og VSFTPD skal du køre følgende kommando:
# yum update && yum install httpd vsftpd
Når installationen er afsluttet, deaktiveres begge tjenester oprindeligt, så vi er nødt til at starte dem manuelt indtil videre og gøre det muligt for dem at starte automatisk med den næste opstart:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
Derudover skal vi åbne porte 80 og 21, hvor henholdsvis internet- og ftp-dæmoner lytter for at give adgang til disse tjenester udefra:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
For at bekræfte, at webserveren fungerer korrekt, skal du starte din browser og indtaste serverens IP. Du skal se testsiden:
Hvad angår ftp-serveren, bliver vi nødt til at konfigurere den yderligere, hvilket vi vil gøre om et øjeblik, før vi bekræfter, at den fungerer som forventet.
Konfiguration og sikring af Apache-webserver
Hovedkonfigurationsfilen til Apache er placeret i /etc/httpd/conf/httpd.conf
, men den kan stole på andre filer, der findes i /etc/httpd/conf.d
.
Selvom standardkonfigurationen i de fleste tilfælde skal være tilstrækkelig, er det en god ide at blive fortrolig med alle de tilgængelige muligheder som beskrevet i den officielle dokumentation.
Lav som altid en sikkerhedskopi af hovedkonfigurationsfilen, før du redigerer den:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Åbn den derefter med din foretrukne teksteditor og se efter følgende variabler:
- ServerRoot: det bibliotek, hvor serverens konfiguration, fejl og logfiler opbevares.
- Lyt: beder Apache om at lytte til specifik IP-adresse og/eller porte.
- Inkluder: tillader inkludering af andre konfigurationsfiler, som skal eksistere. Ellers mislykkes serveren i modsætning til IncludeOptional-direktivet, som ignoreres lydløst, hvis de angivne konfigurationsfiler ikke findes.
- Bruger og gruppe: navnet på den bruger/gruppe, der skal køre httpd-tjenesten som.
- DocumentRoot: Den mappe, hvoraf Apache serverer dine dokumenter. Som standard er alle anmodninger taget fra denne mappe, men symbolske links og aliaser kan bruges til at pege på andre placeringer.
- Servernavn: dette direktiv indstiller værtsnavnet (eller IP-adressen) og porten, som serveren bruger til at identificere sig selv.
Den første sikkerhedsforanstaltning består i at oprette en dedikeret bruger og gruppe (dvs. tecmint/tecmint) til at køre webserveren og ændre standardporten til en højere (9000 i dette tilfælde):
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
Du kan teste konfigurationsfilen med.
# apachectl configtest
og hvis alt er OK, skal du genstarte webserveren.
# systemctl restart httpd
og glem ikke at aktivere den nye port (og deaktivere den gamle) i firewallen:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Bemærk, at du på grund af SELinux-politikker kun kan bruge de porte, der returneres af
# semanage port -l | grep -w '^http_port_t'
til webserveren.
Hvis du vil bruge en anden port (dvs. TCP-port 8100), skal du tilføje den til SELinux-portkontekst til httpd-tjenesten:
# semanage port -a -t http_port_t -p tcp 8100
For yderligere at sikre din Apache-installation skal du følge disse trin:
1. Brugeren Apache kører som ikke burde have adgang til en shell:
# usermod -s /sbin/nologin tecmint
2. Deaktiver telefonliste for at forhindre browseren i at vise indholdet af en mappe, hvis der ikke er nogen index.html til stede i den mappe.
Rediger /etc/httpd/conf/httpd.conf
(og eventuelt konfigurationsfilerne til virtuelle værter) og sørg for, at indstillingsdirektivet, både øverst og på Directory-blokniveauer, er indstillet til Ingen:
Options None
3. Skjul oplysninger om webserveren og operativsystemet i HTTP-svar. Rediger /etc/httpd/conf/httpd.conf
som følger:
ServerTokens Prod ServerSignature Off
Nu er du klar til at begynde at servere indhold fra din/var/www/html-mappe.
Konfiguration og sikring af FTP-server
Som i tilfældet med Apache er hovedkonfigurationsfilen til Vsftpd (/etc/vsftpd/vsftpd.conf)
godt kommenteret, og selvom standardkonfigurationen skal være tilstrækkelig for de fleste applikationer, skal du stifte bekendtskab med dokumentation og mandsiden (man vsftpd.conf)
for at kunne betjene ftp-serveren mere effektivt (jeg kan ikke understrege det nok!).
I vores tilfælde er det de anvendte direktiver:
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
Ved at bruge chroot_local_user = YES
placeres lokale brugere (som standard) i en chroot'ed fængsel i deres hjemmekatalog lige efter login. Dette betyder, at lokale brugere ikke kan få adgang til filer uden for deres tilsvarende hjemmekataloger.
Endelig, for at tillade ftp at læse filer i brugerens hjemmekatalog, skal du indstille følgende SELinux boolske:
# setsebool -P ftp_home_dir on
Du kan nu oprette forbindelse til ftp-serveren ved hjælp af en klient som Filezilla:
Bemærk, at loggen /var/log/xferlog
registrerer downloads og uploads, som stemmer overens med ovenstående katalogliste:
Resumé
I denne vejledning har vi forklaret, hvordan man opretter et web og en ftp-server. På grund af emnets store omfang er det ikke muligt at dække alle aspekterne af disse emner (dvs. virtuelle webhosts). Således anbefaler jeg, at du også tjekker andre fremragende artikler på dette websted om Apache.