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:

  1. ServerRoot: katalogen der serverens konfigurasjon, feil og loggfiler lagres.
  2. Lytt: instruerer Apache om å lytte på spesifikke IP-adresser og/eller porter.
  3. 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.
  4. Bruker og gruppe: navnet på brukeren/gruppen som skal kjøre httpd-tjenesten som.
  5. 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.
  6. 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.