RHCSA-sarja: Web- ja FTP-palvelimen asentaminen, määrittäminen ja suojaaminen - Osa 9


Verkkopalvelin (tunnetaan myös nimellä HTTP-palvelin) on palvelu, joka käsittelee sisältöä (useimmiten verkkosivuja, mutta myös muun tyyppisiä asiakirjoja) verkossa olevalle asiakkaalle.

FTP-palvelin on yksi vanhimmista ja yleisimmin käytetyistä resursseista (jopa tähän päivään asti) tiedostojen asettamiseen verkon asiakkaiden saataville tapauksissa, joissa todennusta ei tarvita, koska FTP käyttää käyttäjänimeä ja salasana ilman salausta.

RHEL 7:ssä saatavilla oleva verkkopalvelin on Apache HTTP -palvelimen versio 2.4. Mitä tulee FTP-palvelimeen, käytämme Very Secure Ftp Daemonia (alias vsftpd) muodostamaan TLS-suojattuja yhteyksiä.

Tässä artikkelissa selitämme, kuinka verkkopalvelin ja FTP-palvelin asennetaan, määritetään ja suojataan RHEL 7:ssä.

Apachen ja FTP-palvelimen asennus

Tässä oppaassa käytämme RHEL 7 -palvelinta, jonka staattinen IP-osoite on 192.168.0.18/24. Asenna Apache ja VSFTPD suorittamalla seuraava komento:


yum update && yum install httpd vsftpd

Kun asennus on valmis, molemmat palvelut poistetaan käytöstä aluksi, joten meidän on käynnistettävä ne manuaalisesti toistaiseksi ja sallittava niiden käynnistyminen automaattisesti seuraavasta käynnistyksestä alkaen:


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

Lisäksi meidän on avattava portit 80 ja 21, joissa web- ja ftp-daemonit vastaavasti kuuntelevat, jotta voimme päästä näihin palveluihin ulkopuolelta:


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Varmistaaksesi, että verkkopalvelin toimii oikein, käynnistä selain ja anna palvelimen IP-osoite. Sinun pitäisi nähdä testisivu:

Mitä tulee ftp-palvelimeen, meidän on määritettävä se edelleen, minkä teemme minuutissa, ennen kuin varmistamme, että se toimii odotetulla tavalla.

Apache-verkkopalvelimen määrittäminen ja suojaaminen

Apachen päämääritystiedosto sijaitsee osoitteessa /etc/httpd/conf/httpd.conf, mutta se voi perustua muihin tiedostoihin, jotka ovat kohdassa /etc/httpd. /conf.d.

Vaikka oletuskokoonpanon pitäisi riittää useimmissa tapauksissa, on hyvä idea tutustua kaikkiin käytettävissä oleviin vaihtoehtoihin virallisessa dokumentaatiossa kuvatulla tavalla.

Kuten aina, tee varmuuskopio päämääritystiedostosta ennen sen muokkaamista:


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

Avaa se sitten haluamallasi tekstieditorilla ja etsi seuraavat muuttujat:

  1. ServerRoot: hakemisto, jossa palvelimen kokoonpano-, virhe- ja lokitiedostot säilytetään.
  2. Kuuntele: kehottaa Apachea kuuntelemaan tiettyä IP-osoitetta ja/tai portteja.
  3. Sisällytä: sallii muiden asetustiedostojen sisällyttämisen, joiden on oltava olemassa. Muuten palvelin epäonnistuu, toisin kuin IncludeOptional-direktiivi, joka ohitetaan hiljaa, jos määritettyjä määritystiedostoja ei ole olemassa.
  4. Käyttäjä ja ryhmä: sen käyttäjän/ryhmän nimi, jona httpd-palvelu suoritetaan.
  5. DocumentRoot: Hakemisto, josta Apache toimittaa asiakirjasi. Oletuksena kaikki pyynnöt otetaan tästä hakemistosta, mutta symbolisia linkkejä ja aliaksia voidaan käyttää osoittamaan muihin paikkoihin.
  6. PalvelimenNimi: tämä ohje asettaa isäntänimen (tai IP-osoitteen) ja portin, joita palvelin käyttää tunnistaakseen itsensä.

Ensimmäinen turvatoimenpide koostuu erillisen käyttäjän ja ryhmän (eli tecmint/tecmint) luomisesta verkkopalvelimen käyttämiseksi ja oletusportin muuttamisesta korkeampaan (9000 tässä tapauksessa):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Voit testata asetustiedostoa komennolla.


apachectl configtest

ja jos kaikki on OK, käynnistä verkkopalvelin uudelleen.


systemctl restart httpd

ja älä unohda ottaa uusi portti käyttöön (ja poistaa vanha käytöstä) palomuurissa:


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

Huomaa, että SELinux-käytäntöjen vuoksi voit käyttää vain palauttamia portteja


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

verkkopalvelimelle.

Jos haluat käyttää toista porttia (esim. TCP-porttia 8100), sinun on lisättävä se SELinux-porttikontekstiin httpd-palvelua varten:


semanage port -a -t http_port_t -p tcp 8100

Voit suojata Apache-asennuksesi paremmin seuraavasti:

1. Apache-käyttäjällä ei pitäisi olla pääsyä komentotulkoon:


usermod -s /sbin/nologin tecmint

2. Poista hakemistoluettelo käytöstä estääksesi selainta näyttämästä hakemiston sisältöä, jos hakemistossa ei ole index.html-tiedostoa.

Muokkaa /etc/httpd/conf/httpd.conf (ja mahdollisten virtuaalisten isäntien määritystiedostoja) ja varmista, että Options-direktiivi sekä ylä- että hakemistolohkotasolla on Ei mitään:


Options None

3. Piilota tiedot verkkopalvelimesta ja käyttöjärjestelmästä HTTP-vastauksissa. Muokkaa tiedostoa /etc/httpd/conf/httpd.conf seuraavasti:


ServerTokens Prod 
ServerSignature Off

Nyt olet valmis aloittamaan sisällön näyttämisen /var/www/html-hakemistosta.

FTP-palvelimen määrittäminen ja suojaaminen

Kuten Apachen tapauksessa, Vsftpd (/etc/vsftpd/vsftpd.conf) päämääritystiedosto on hyvin kommentoitu, ja vaikka oletuskokoonpanon pitäisi riittää useimpiin sovelluksiin , sinun tulee tutustua dokumentaatioon ja man-sivuun (man vsftpd.conf), jotta voit käyttää ftp-palvelinta tehokkaammin (en voi korostaa sitä tarpeeksi!).

Meidän tapauksessamme käytetään seuraavia direktiivejä:


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

Käyttämällä chroot_local_user=YES-komentoa paikalliset käyttäjät sijoitetaan (oletuksena) chroot-valmiiseen vankilaan kotihakemistossaan heti kirjautumisen jälkeen. Tämä tarkoittaa, että paikalliset käyttäjät eivät voi käyttää tiedostoja vastaavien kotihakemistojensa ulkopuolella.

Lopuksi, jotta ftp voi lukea tiedostoja käyttäjän kotihakemistossa, aseta seuraava SELinux boolean:


setsebool -P ftp_home_dir on

Voit nyt muodostaa yhteyden ftp-palvelimeen käyttämällä asiakasohjelmaa, kuten Filezilla:

Huomaa, että /var/log/xferlog-loki tallentaa lataukset ja lataukset, jotka ovat yhtäpitäviä yllä olevan hakemistoluettelon kanssa:

Lue myös: Rajoita Linux-järjestelmän sovellusten käyttämää FTP-verkon kaistanleveyttä Tricklen avulla

Yhteenveto

Tässä opetusohjelmassa olemme selittäneet, kuinka verkko- ja ftp-palvelin määritetään. Aiheen laajuudesta johtuen ei ole mahdollista kattaa kaikkia näiden aiheiden näkökohtia (eli virtuaaliset web-isännät). Siksi suosittelen, että tarkistat myös muut erinomaiset artikkelit tällä verkkosivustolla Apachesta.