13 Apache-verkkopalvelimen tietoturva- ja kovettumisvinkkejä


Me kaikki tunnemme hyvin Apache-verkkopalvelimen, se on erittäin suosittu verkkopalvelin, joka isännöi Web-tiedostojasi tai verkkosivustoasi verkossa. Tässä on joitain linkkejä, joiden avulla voit määrittää Apache-verkkopalvelimen Linux-ruutuun.

  1. Asenna Apache-verkkopalvelin
  2. Määritä verkkosivustosi Linux-ruutuun

Tässä tässä opetusohjelmassa käsittelen joitain tärkeimpiä vinkkejä verkkopalvelimesi suojaamiseen. Ennen kuin otat nämä muutokset käyttöön Web-palvelimellasi, sinulla on oltava Apache-palvelimen perusasiat.

  1. Asiakirjan juurihakemisto:/var/www/html tai/var/www
  2. Päämääritystiedosto: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) ja /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. HTTP-oletusportti: 80 TCP
  4. HTTPS-oletusportti: 443 TCP
  5. Testaa määritystiedoston asetukset ja syntaksit: httpd -t
  6. Käytä Web-palvelimen lokitiedostoja:/var/log/httpd/access_log
  7. Verkkopalvelimen virhelokitiedostot:/var/log/httpd/error_log

1. Kuinka piilottaa Apache-versio ja käyttöjärjestelmän identiteetti virheiltä

Kun asennat Apache-lähdekoodin tai minkä tahansa muun paketin asennusohjelman, kuten yum, se näyttää palvelimellesi asennetun Apache-verkkopalvelimen version ja palvelimesi käyttöjärjestelmän nimen kohdassa Virheet. Se näyttää myös tietoja palvelimellesi asennetuista Apache-moduuleista.

Yllä olevasta kuvasta näet, että Apache näyttää versionsa palvelimellesi asennetun käyttöjärjestelmän kanssa. Tämä voi olla suuri turvallisuusuhka sekä Web-palvelimellesi että Linux-ruutuasi. Jotta Apache ei näyttäisi näitä tietoja maailmalle, meidän on tehtävä joitain muutoksia Apache-pääasetustiedostoon.

Avaa määritystiedosto vim editorilla ja etsi "ServerSignature", oletusarvoisesti Päällä. Meidän on poistettava nämä palvelinallekirjoitukset käytöstä ja toinen rivi “ServerTokens Prod” käskee Apache-palvelua palauttamaan vain Apache-tuotteen palvelimen vastausotsikossa jokaisen sivupyynnön yhteydessä. Se estää käyttöjärjestelmän, pää- ja aliversiotiedot.

# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache2/apache2.conf (Debian/Ubuntu)
ServerSignature Off
ServerTokens Prod
# service httpd restart (RHEL/CentOS/Fedora)
# service apache2 restart (Debian/Ubuntu)

2. Poista hakemistoluettelo

Oletusarvoisesti Apache luetteloi asiakirjan juurihakemiston sisällön hakemistotiedoston puuttuessa. Katso alla oleva kuva.

Voimme poistaa hakemistoluettelon käytöstä käyttämällä Options-direktiiviä tietyn hakemiston kokoonpanotiedostossa. Tätä varten meidän on tehtävä merkintä httpd.conf- tai apache2.conf-tiedostoon.

<Directory /var/www/html>
    Options -Indexes
</Directory>

3. Päivitä Apache säännöllisesti

Apache-kehittäjäyhteisö työskentelee jatkuvasti tietoturvakysymysten parissa ja julkaisee päivitetyn versionsa uusilla suojausvaihtoehdoilla. Joten on aina suositeltavaa käyttää Apache: n uusinta versiota verkkopalvelimena.

Apache-version tarkistaminen: Voit tarkistaa nykyisen version httpd -v-komennolla.

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

Voit päivittää version seuraavalla komennolla.

# yum update httpd
# apt-get install apache2

On myös suositeltavaa pitää ydin ja käyttöjärjestelmä päivitettynä uusimpiin vakaisiin julkaisuihin, jos et käytä mitään tiettyä sovellusta, joka toimii vain tietyllä käyttöjärjestelmällä tai ytimellä.

4. Poista tarpeettomat moduulit käytöstä

On aina hyvä pienentää mahdollisuutta joutua minkä tahansa verkkohyökkäyksen uhriksi. Joten on suositeltavaa poistaa käytöstä kaikki moduulit, jotka eivät ole tällä hetkellä käytössä. Voit luetella kaikki verkkopalvelimen käännetyt moduulit seuraavalla komennolla.

# grep LoadModule /etc/httpd/conf/httpd.conf

# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
....

Yllä on luettelo moduuleista, jotka ovat oletusarvoisesti käytössä, mutta joita ei usein tarvita: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Voit poistaa tietyn moduulin käytöstä lisäämällä “#” rivin alkuun ja käynnistämään palvelun uudelleen.

5. Suorita Apache erillisenä käyttäjänä ja ryhmänä

Oletusasennuksella Apache suorittaa prosessinsa kenenkään tai daemonin kanssa. Turvallisuussyistä on suositeltavaa käyttää Apache omalla ei-etuoikeutetulla tilillä. Esimerkiksi: http-web.

# groupadd http-web
# useradd -d /var/www/ -g http-web -s /bin/nologin http-web

Nyt sinun on kerrottava Apache: lle ajaa tämä uusi käyttäjä ja tekemään niin, meidän on tehtävä merkintä tiedostoon /etc/httpd/conf/httpd.conf ja käynnistettävä palvelu uudelleen.

Avaa /etc/httpd/conf/httpd.conf vim editorilla ja etsi avainsanoja "Käyttäjä" ja "Ryhmä", ja sinun on määritettävä käytettävä käyttäjänimi ja ryhmänimi.

User http-web
Group http-web

6. Rajoita hakemistojen käyttöä sallimalla ja estämällä

Voimme rajoittaa hakemistojen käyttöä Salli- ja Hylkää-asetuksilla httpd.conf-tiedostossa. Tässä esimerkissä suojaamme juurihakemiston asettamalla seuraavat asiat httpd.conf-tiedostoon.

<Directory />
   Options None
   Order deny,allow
   Deny from all
</Directory>

  1. Asetukset Ei mitään - Tämä vaihtoehto ei salli käyttäjien ottaa käyttöön mitään valinnaisia ominaisuuksia.
  2. Tilauksen estäminen, salliminen - Tämä on järjestys, jossa "Hylkää" - ja "Salli" -direktiivit käsitellään. Täällä se "kieltää" ensin ja "sallii" seuraavaksi.
  3. Estä kaikilta - Tämä estää kaikkien pyytämisen juurihakemistoon, kukaan ei voi käyttää juurihakemistoa.

7. Käytä mod_security- ja mod_evasive-moduuleja Apachen suojaamiseen

Nämä kaksi moduulia "mod_security" ja "mod_evasive" ovat turvallisuuden kannalta erittäin suosittuja Apache-moduuleja.

Missä mod_security toimii palomuurina verkkosovelluksillemme ja antaa meille mahdollisuuden seurata liikennettä reaaliajassa. Se auttaa meitä myös suojaamaan verkkosivustojamme tai verkkopalvelinta raakojen voimien hyökkäyksiltä. Voit yksinkertaisesti asentaa mod_security palvelimellesi oletuspakettien asentajien avulla.

$ sudo apt-get install libapache2-modsecurity
$ sudo a2enmod mod-security
$ sudo /etc/init.d/apache2 force-reload
# yum install mod_security
# /etc/init.d/httpd restart

mod_evasive toimii erittäin tehokkaasti, sen käsittelyyn ja käsittelyyn tarvitaan yksi pyyntö. Se estää DDOS-hyökkäyksiä tekemästä niin paljon vahinkoa. Tämän mod_evasive-ominaisuuden avulla se pystyy käsittelemään HTTP-raakaa voimaa ja Dos- tai DDos-hyökkäyksiä. Tämä moduuli tunnistaa hyökkäykset kolmella tavalla.

  1. Jos niin monta pyyntöä tulee samalle sivulle muutaman kerran sekunnissa.
  2. Jos joku lapsi yrittää tehdä yli 50 samanaikaista pyyntöä.
  3. Jos jokin IP-osoite yrittää edelleen tehdä uusia pyyntöjä, kun se on väliaikaisesti mustalla listalla.

mod_evasive voidaan asentaa suoraan lähteestä. Täällä meillä on näiden moduulien asennus- ja asennusopas, joka auttaa sinua asettamaan nämä Apache-moduulit Linux-ruutuun.

  1. Suojaa Apache käyttämällä Mod_Security ja Mod_evasive

8. Poista Apachen seuraavat symboliset linkit käytöstä

Oletuksena Apache seuraa symlinkkejä, voimme poistaa tämän ominaisuuden käytöstä FollowSymLinks with Options -direktiivillä. Ja niin meidän on tehtävä seuraava merkintä pääkokoonpanotiedostoon.

Options -FollowSymLinks

Ja jos joku tietty käyttäjä tai verkkosivusto tarvitsee FollowSymLinks-toiminnon, voimme yksinkertaisesti kirjoittaa säännön kyseisen verkkosivuston .htaccess-tiedostoon.

# Enable symbolic links
Options +FollowSymLinks

Huomaa: Jos haluat sallia uudelleenkirjoitussäännöt .htaccess-tiedostossa, AllowOverride All -palvelun tulisi olla läsnä pääkokoonpanossa globaalisti.

9. Poista palvelinpuolen sisältämät ja CGI-suorittaminen käytöstä

Voimme poistaa palvelinpuolen sisältävän (mod_include) ja CGI-suorituksen käytöstä, jos sitä ei tarvita, ja meidän on muutettava pääkokoonpanotiedostoa.

Options -Includes
Options -ExecCGI

Voimme tehdä tämän myös tietylle hakemistolle Directory-tagilla. Tässä Tässä esimerkissä poistamme käytöstä Sisälly- ja Cgi-tiedostojen suoritukset hakemistolle “/ var/www/html/web1”.

<Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>

Tässä on joitain muita arvoja, joiden voi ottaa käyttöön tai poistaa käytöstä Options-direktiivillä.

  1. Asetukset Kaikki - Ota kaikki vaihtoehdot käyttöön kerralla. Tämä on oletusarvo, Jos et halua määrittää mitään arvoja nimenomaisesti Apache conf-tiedostossa tai .htaccessissa.
  2. Vaihtoehdot sisältävät NOEXEC - Tämä vaihtoehto sallii palvelinpuolen sisällyttämisen ilman komennon tai cgi-tiedostojen suorituslupaa.
  3. Vaihtoehdot Moninäkymät - Sallii sisällön neuvoteltavat moninäkymät mod_negotiation-moduulilla.
  4. Asetukset SymLinksIfOwnerMatch - Se on samanlainen kuin FollowSymLinks. Mutta tämä tapahtuu vain, kun omistaja on sama linkin ja alkuperäisen hakemiston välillä, johon se on linkitetty.

10. Rajapyynnön koko

Apache ei oletusarvoisesti rajoita HTTP-pyynnön kokoa eli rajoittamatonta, ja kun sallit suuria pyyntöjä verkkopalvelimella, on mahdollista, että saatat olla palvelunestohyökkäysten uhri. Voimme rajoittaa Apache-direktiivin ”LimitRequestBody” pyyntöjen kokoa hakemistotunnisteella.

Voit asettaa arvon tavuina 0 (rajoittamaton) arvoon 2147483647 (2 Gt), jotka ovat sallittuja pyynnön rungossa. Voit asettaa tämän rajan sivustosi tarpeiden mukaan. Oletetaan, että sinulla on sivusto, johon sallit lataamisen ja haluat rajoittaa tietyn hakemiston latauskokoa.

Tässä esimerkissä user_uploads on hakemisto, joka sisältää käyttäjien lataamat tiedostot. Asetamme tälle 500 kt: n rajan.

<Directory "/var/www/myweb1/user_uploads">
   LimitRequestBody 512000
</Directory>

11. Suojaa DDOS-hyökkäykset ja kovettuminen

No, on totta, että et voi täysin suojata verkkosivustoasi DDos-hyökkäyksiltä. Tässä on joitain direktiivejä, jotka voivat auttaa sinua hallitsemaan sitä.

  1. Aikakatkaisu: Tämän direktiivin avulla voit asettaa ajan, jonka palvelin odottaa tiettyjen tapahtumien päättymistä ennen kuin se epäonnistuu. Sen oletusarvo on 300 sekuntia. On hyvä pitää tämä arvo alhaalla sivustoissa, joihin kohdistuu DDOS-hyökkäyksiä. Tämä arvo riippuu täysin siitä, minkä tyyppisiä pyyntöjä saat verkkosivustollesi. Huomaa: Se voi aiheuttaa ongelmia tulevien CGI-komentosarjojen kanssa.
  2. MaxClients: Tämän direktiivin avulla voit asettaa rajoituksen samanaikaisesti palveleville yhteyksille. Jokainen uusi yhteys asetetaan jonoon tämän rajan jälkeen. Se on saatavana sekä Preforkin että Worker MPM: n kanssa. Sen oletusarvo on 256.
  3. KeepAliveTimeout: Se on aika, jonka palvelin odottaa seuraavaa pyyntöä ennen yhteyden sulkemista. Oletusarvo on 5 sekuntia.
  4. LimitRequestFields: Se auttaa meitä asettamaan rajoituksen HTTP-pyynnön otsikkokenttien määrälle, jotka hyväksytään asiakkailta. Sen oletusarvo on 100. On suositeltavaa laskea tätä arvoa, jos DDos-hyökkäyksiä esiintyy niin monien http-pyyntöotsikkojen seurauksena.
  5. LimitRequestFieldSize: Se auttaa meitä asettamaan kokorajoituksen HTTP-pyyntö-otsikossa.

12. Ota Apache Logging käyttöön

Apache antaa sinun kirjautua riippumatta käyttöjärjestelmän kirjaamisesta. On järkevää ottaa Apache-kirjaaminen käyttöön, koska se antaa lisätietoja, kuten komentoja, jotka ovat kirjoittaneet käyttäjät, jotka ovat olleet vuorovaikutuksessa Web-palvelimesi kanssa.

Tätä varten sinun on sisällytettävä mod_log_config-moduuli. Apachen kanssa on saatavana kolme pääasiallista kirjautumiseen liittyvää direktiiviä.

  1. TransferLog: Lokitiedoston luominen.
  2. LogFormat: Määritetään mukautettu muoto.
  3. CustomLog: Lokitiedoston luominen ja muotoilu.

Voit käyttää niitä myös tietyllä verkkosivustolla, jota teet virtuaalipalveluna, ja sinun on määritettävä se virtuaalikone-osiossa. Esimerkiksi tässä on verkkosivustoni virtuaalisen isäntäkokoonpano, jossa loki on käytössä.

<VirtualHost *:80>
DocumentRoot /var/www/html/example.com/
ServerName www.example.com
DirectoryIndex index.htm index.html index.php
ServerAlias example.com
ErrorDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log combined
</VirtualHost>

13. Apache-suojaus SSL-varmenteilla

Viimeisenä, mutta ei vähäisimpänä, SSL-varmenteet, voit suojata kaiken viestinnän salatulla tavalla Internetin kautta SSL-varmenteella. Oletetaan, että sinulla on verkkosivusto, johon ihmiset kirjautuvat todistamalla sisäänkirjautumistietonsa, tai sinulla on verkkokaupan verkkosivusto, jossa ihmiset antavat pankkitietonsa tai pankki- tai luottokorttitietonsa tuotteiden ostamiseksi, oletusarvoisesti verkkopalvelimesi lähettää nämä tiedot yksinkertaisella tekstillä muodossa, mutta kun käytät SSL-varmenteita verkkosivustoillesi, Apache lähettää kaikki nämä tiedot salatussa tekstissä.

Voit ostaa SSl-varmenteita niin monelta eri SSL-palveluntarjoajalta, kuten namecheap.com. Jos sinulla on hyvin pieni verkkoyritys etkä halua ostaa SSL-sertifikaattia, voit silti määrittää itse allekirjoitetun varmenteen verkkosivustollesi. Apache käyttää mod_ssl-moduulia tukemaan SSL-sertifikaattia.

# openssl genrsa -des3 -out example.com.key 1024
# openssl req -new -key example.com.key -out exmaple.csr
# openssl x509 -req -days 365 -in example.com.com.csr -signkey example.com.com.key -out example.com.com.crt

Kun varmenne on luotu ja allekirjoitettu. Nyt sinun on lisättävä tämä Apache-kokoonpanoon. Avaa päämääritystiedosto vim editorilla, lisää seuraavat rivit ja käynnistä palvelu uudelleen.

<VirtualHost 172.16.25.125:443>
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/example.com.crt
        SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
        SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt
        ServerAdmin [email 
        ServerName example.com
        DocumentRoot /var/www/html/example/
        ErrorLog /var/log/httpd/example.com-error_log
        CustomLog /var/log/httpd/example.com-access_log common
</VirtualHost>

Avaa selaimesi, kirjoita https://example.com, niin näet uuden itse allekirjoittaman varmenteen.

Nämä ovat muutamia tietoturvavihjeitä, joita voit käyttää Apache-verkkopalvelimen asennuksen suojaamiseen. Lisää hyödyllisiä tietoturvavinkkejä ja ideoita on Apache HTTP Serverin virallisessa online-dokumentaatiossa.