RHCSA-serien: Installere, konfigurere og sikre en web- og FTP-server - del 9
En webserver (også kjent som en HTTP-server) er en tjeneste som håndterer innhold (oftest nettsider, men også andre typer dokumenter) over til en klient i et nettverk.
En FTP-server er en av de eldste og mest brukte ressursene (selv i dag) for å gjøre filer tilgjengelige for klienter på et nettverk i tilfeller der ingen autentisering er nødvendig siden FTP bruker brukernavn og passord uten kryptering.
Nettserveren som er tilgjengelig i RHEL 7 er versjon 2.4 av Apache HTTP Server. Når det gjelder FTP-serveren, vil vi bruke Very Secure Ftp Daemon (aka vsftpd) for å etablere tilkoblinger sikret av TLS.
I denne artikkelen vil vi forklare hvordan du installerer, konfigurerer og sikrer en webserver og en FTP-server i RHEL 7.
Installere Apache og FTP Server
I denne guiden vil vi bruke en RHEL 7-server med en statisk IP-adresse på 192.168.0.18/24. For å installere Apache og VSFTPD, kjør følgende kommando:
# yum update && yum install httpd vsftpd
Når installasjonen er fullført, vil begge tjenestene bli deaktivert i utgangspunktet, så vi må starte dem manuelt foreløpig og la dem starte automatisk fra neste oppstart:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
I tillegg må vi åpne portene 80 og 21, der henholdsvis web- og ftp-demonene lytter for å gi tilgang til disse tjenestene fra utsiden:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
For å bekrefte at webserveren fungerer som den skal, start nettleseren din og skriv inn IP-en til serveren. Du bør se testsiden:
Når det gjelder ftp-serveren, må vi konfigurere den videre, noe vi vil gjøre om et minutt før vi bekrefter at den fungerer som forventet.
Konfigurere og sikre Apache Web Server
Hovedkonfigurasjonsfilen for Apache ligger i /etc/httpd/conf/httpd.conf
, men den kan stole på andre filer som finnes i /etc/httpd/conf.d
.
Selv om standardkonfigurasjonen burde være tilstrekkelig i de fleste tilfeller, er det en god idé å bli kjent med alle tilgjengelige alternativer som beskrevet i den offisielle dokumentasjonen.
Som alltid, ta en sikkerhetskopi av hovedkonfigurasjonsfilen før du redigerer den:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Åpne den deretter med din foretrukne tekstredigerer og se etter følgende variabler:
- ServerRoot: katalogen der serverens konfigurasjon, feil og loggfiler lagres.
- Lytt: instruerer Apache om å lytte på spesifikke IP-adresser og/eller porter.
- Inkluder: tillater inkludering av andre konfigurasjonsfiler, som må eksistere. Ellers vil serveren mislykkes, i motsetning til IncludeOptional-direktivet, som ignoreres stille hvis de angitte konfigurasjonsfilene ikke eksisterer.
- Bruker og gruppe: navnet på brukeren/gruppen som skal kjøre httpd-tjenesten som.
- DocumentRoot: Katalogen der Apache vil levere dokumentene dine. Som standard tas alle forespørsler fra denne katalogen, men symbolske lenker og aliaser kan brukes for å peke til andre steder.
- ServerName: Dette direktivet angir vertsnavnet (eller IP-adressen) og porten som serveren bruker for å identifisere seg selv.
Det første sikkerhetstiltaket vil bestå av å opprette en dedikert bruker og gruppe (dvs. tecmint/tecmint) for å kjøre webserveren som og endre standardporten til en høyere (9000 i dette tilfellet):
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 konfigurasjonsfilen med.
# apachectl configtest
og hvis alt er OK, start webserveren på nytt.
# systemctl restart httpd
og ikke glem å aktivere den nye porten (og deaktivere den gamle) i brannmuren:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Merk at på grunn av SELinux-policyer kan du bare bruke portene som returneres av
# semanage port -l | grep -w '^http_port_t'
for webserveren.
Hvis du vil bruke en annen port (dvs. TCP-port 8100), må du legge den til SELinux-portkonteksten for httpd-tjenesten:
# semanage port -a -t http_port_t -p tcp 8100
Følg disse trinnene for å sikre Apache-installasjonen ytterligere:
1. Brukeren Apache kjører og skal ikke ha tilgang til et skall:
# usermod -s /sbin/nologin tecmint
2. Deaktiver katalogoppføringen for å forhindre at nettleseren viser innholdet i en katalog hvis det ikke finnes index.html i den katalogen.
Rediger /etc/httpd/conf/httpd.conf
(og konfigurasjonsfilene for virtuelle verter, hvis noen) og sørg for at Options-direktivet, både på topp- og katalogblokknivå, er satt til ingen:
Options None
3. Skjul informasjon om webserveren og operativsystemet i HTTP-svar. Rediger /etc/httpd/conf/httpd.conf
som følger:
ServerTokens Prod ServerSignature Off
Nå er du klar til å begynne å vise innhold fra din /var/www/html-katalog.
Konfigurering og sikring av FTP-server
Som i tilfellet med Apache er hovedkonfigurasjonsfilen for Vsftpd (/etc/vsftpd/vsftpd.conf)
godt kommentert, og selv om standardkonfigurasjonen bør være tilstrekkelig for de fleste applikasjoner, bør du gjøre deg kjent med dokumentasjon og man-siden (man vsftpd.conf)
for å kunne betjene ftp-serveren mer effektivt (jeg kan ikke understreke det nok!).
I vårt tilfelle er disse direktivene som brukes:
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 å bruke chroot_local_user=JA
, vil lokale brukere (som standard) bli plassert i et chroot'ed-fengsel i hjemmekatalogen deres rett etter pålogging. Dette betyr at lokale brukere ikke vil kunne få tilgang til noen filer utenfor deres tilsvarende hjemmekataloger.
Til slutt, for å la ftp lese filer i brukerens hjemmekatalog, angi følgende SELinux boolean:
# setsebool -P ftp_home_dir on
Du kan nå koble til ftp-serveren ved å bruke en klient som Filezilla:
Merk at /var/log/xferlog
-loggen registrerer nedlastinger og opplastinger, som samsvarer med katalogoppføringen ovenfor:
Sammendrag
I denne opplæringen har vi forklart hvordan du setter opp en web- og en ftp-server. På grunn av emnets omfang er det ikke mulig å dekke alle aspektene ved disse emnene (dvs. virtuelle webverter). Derfor anbefaler jeg at du også sjekker andre utmerkede artikler på denne nettsiden om Apache.