Conosciamo tutti molto bene Apache server web, è un server web molto popolare per ospitare i tuoi file web o il tuo sito web sul web. Ecco alcuni collegamenti che possono aiutarti a configurare il server Web Apache sulla tua macchina Linux.
In questo tutorial, tratterò alcuni suggerimenti principali per proteggere il tuo server web. Prima di applicare queste modifiche al tuo server web, dovresti avere alcune nozioni di base sul server Apache.
Quando installi Apache con sorgenti o altri programmi di installazione di pacchetti come yum, visualizza il versione del tuo Apache server web installato sul tuo server con il Nome del sistema operativo del tuo server in Errori. Mostra anche le informazioni su Moduli Apache installati nel tuo server.
Nella foto sopra, puoi vedere che Apache sta mostrando la sua versione con il Sistema operativo installato nel tuo server. Questa può essere una grave minaccia alla sicurezza per il tuo server web e anche per la tua Linux box. Impedire Apache per non mostrare queste informazioni al mondo, è necessario apportare alcune modifiche al file di configurazione principale di Apache.
Apri il file di configurazione con l'editor vim e cerca "Firma del server“, è attivato per impostazione predefinita. Abbiamo bisogno di Spento queste firme del server e la seconda riga “ServerTokens Prodotto” dice ad Apache di restituire solo Apache come prodotto nell'intestazione della risposta del server su ogni richiesta di pagina, sopprime il sistema operativo, le informazioni sulla versione principale e secondaria.
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) # vim /etc/apache2/apache2.conf (Debian/Ubuntu)
Firma server disattivata. ServerTokens Prodotto
# riavvio del servizio httpd (RHEL/CentOS/Fedora) # riavvio del servizio apache2 (Debian/Ubuntu)
Per impostazione predefinita, Apache elenca tutti i contenuto della directory radice del documento in assenza di file indice. Si prega di vedere l'immagine qui sotto.
Noi possiamo Spegni elenco di directory usando Direttiva sulle opzioni nel file di configurazione per una directory specifica. Per questo dobbiamo fare una voce in httpd.conf o apache2.conf file.
Opzioni -Indici.
La comunità di sviluppatori Apache lavora continuamente su problemi di sicurezza e rilasciando il suo versione aggiornata con nuovo opzioni di sicurezza. Quindi si consiglia sempre di utilizzare il ultima versione di Apache come tuo server web.
Controllare Versione Apache: Puoi controllare la tua versione attuale con httpd -v comando.
# httpd -v. Versione server: Apache/2.2.15 (Unix) Server costruito: 13 agosto 2013 17:29:28
Puoi aggiornare la tua versione con il seguente comando.
# yum update httpd. # apt-get install apache2
Si consiglia inoltre di conservare il proprio kernel e OS aggiornato alle ultime versioni stabili se non stai eseguendo alcuna applicazione specifica che funzioni solo su un sistema operativo o kernel specifico.
È sempre bene ridurre al minimo le possibilità di essere vittima di qualsiasi attacco web. Quindi si consiglia di disabilitare tutti quelli moduli che non sono attualmente in uso. Puoi elencare tutti i moduli compilati del server web, usando il seguente comando.
# grep LoadModule /etc/httpd/conf/httpd.conf # devono posizionare le righe `LoadModule' corrispondenti in questa posizione in modo che il file. # LoadModule foo_module module/mod_foo.so. LoadModule auth_basic_module moduli/mod_auth_basic.so. LoadModule auth_digest_module moduli/mod_auth_digest.so. LoadModule authn_file_module moduli/mod_authn_file.so. LoadModule authn_alias_module moduli/mod_authn_alias.so. LoadModule authn_anon_module moduli/mod_authn_anon.so. LoadModule authn_dbm_module moduli/mod_authn_dbm.so. LoadModule authn_default_module moduli/mod_authn_default.so. LoadModule authz_host_module moduli/mod_authz_host.so. LoadModule authz_user_module moduli/mod_authz_user.so. LoadModule authz_owner_module moduli/mod_authz_owner.so. LoadModule authz_groupfile_module moduli/mod_authz_groupfile.so. LoadModule authz_dbm_module moduli/mod_authz_dbm.so. LoadModule authz_default_module moduli/mod_authz_default.so. LoadModule ldap_module moduli/mod_ldap.so. LoadModule authnz_ldap_module moduli/mod_authnz_ldap.so. LoadModule include_module moduli/mod_include.so. LoadModule log_config_module moduli/mod_log_config.so. LoadModule logio_module moduli/mod_logio.so. LoadModule env_module moduli/mod_env.so. LoadModule ext_filter_module module/mod_ext_filter.so. ...
Sopra c'è l'elenco dei moduli abilitati per impostazione predefinita ma spesso non necessari: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Per disabilitare il modulo specifico, puoi inserire un "#” all'inizio di quella riga e riavviare il servizio.
Con un'installazione predefinita Apache esegue il suo processo con l'utente nessuno o demone. Per motivi di sicurezza si consiglia di eseguire Apache in proprio non privilegiato account. Per esempio: http-web.
# groupadd http-web. # useradd -d /var/www/ -g http-web -s /bin/nologin http-web
Ora devi dirlo Apache per funzionare con questo nuovo utente e per farlo, dobbiamo inserire una voce in /etc/httpd/conf/httpd.conf e riavviare il servizio.
Aprire /etc/httpd/conf/httpd.conf con l'editor vim e cercare la parola chiave "Utente" e "Gruppo” e lì dovrai specificare il nome utente e nome del gruppo usare.
Utente http-web. Gruppo http-web
Possiamo limitare l'accesso alle directory con "Permettere" e "Negare"opzioni in httpd.conf file. Qui in questo esempio, ci assicureremo root directory, per questo impostando quanto segue nel httpd.conf file.
Opzioni Nessuna Ordina nega, consenti Nega da tutti.
Questi due moduli”mod_security" e "mod_evasive” sono moduli molto popolari di Apache in termini di sicurezza.
In cui si mod_security funziona come un firewall per le nostre applicazioni web e ci permette di monitorare il traffico in tempo reale. Ci aiuta anche a proteggere i nostri siti Web o server Web da attacchi di forza bruta. Puoi semplicemente installare mod_security sul tuo server con l'aiuto dei tuoi programmi di installazione di pacchetti predefiniti.
$ 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 funziona in modo molto efficiente, basta una richiesta per elaborarla e la elabora molto bene. Previene Attacchi DDOS dal fare tanti danni. Questa caratteristica di mod_evasive consente di gestire il Forza bruta HTTP e Dos o DDos attacco. Questo modulo rileva gli attacchi con tre metodi.
mod_evasive può essere installato direttamente dalla fonte. Qui abbiamo una guida all'installazione e alla configurazione di questi moduli che ti aiuterà a configurare questi moduli Apache nella tua macchina Linux.
Per impostazione predefinita Apache segue collegamenti simbolici, noi possiamo Spegni questa funzione con SeguiSimLink insieme a Direttiva sulle opzioni. E per farlo dobbiamo inserire la seguente voce nel file di configurazione principale.
Opzioni -SeguiSymLinks
E, se qualche particolare utente o sito web bisogno SeguiSimLink abilita, possiamo semplicemente scrivere una regola in ".htaccess"file da quel sito web.
# Abilita i collegamenti simbolici. Opzioni +SeguiSymLinks
Nota: Per abilitare le regole di riscrittura all'interno di ".htaccess" file "ConsentiIgnora tutto” dovrebbe essere presente nella configurazione principale a livello globale.
Noi possiamo Spegni lato server include (mod_include) e CGI esecuzione se non necessaria e per farlo è necessario modificare il file di configurazione principale.
Opzioni -Include. Opzioni -ExecCGI
Possiamo farlo anche per una directory particolare con il tag Directory. Qui In questo esempio, siamo spegnendo Include esecuzioni di file Cgi per "/var/www/html/web1” rubrica.
Opzioni -Include -ExecCGI.
Ecco alcuni altri valori con può essere acceso o spento con la direttiva Options.
Per impostazione predefinita Apache non ha limiti sulla dimensione totale della richiesta HTTP, ovvero illimitata e quando si consentono richieste di grandi dimensioni su un server Web è possibile che si possa essere vittima di Attacchi Denial of Service. Possiamo limitare la dimensione delle richieste di una direttiva Apache "LimiteRichiesta Corpo” con il tag directory.
Puoi impostare il valore in byte da 0 (illimitato) a 2147483647 (2 GB) consentiti in un organismo di richiesta. Puoi impostare questo limite in base alle esigenze del tuo sito. Supponiamo che tu abbia un sito in cui consenti i caricamenti e desideri limitare la dimensione del caricamento per una particolare directory.
Qui in questo esempio, caricamenti_utente è una directory che contiene i file caricati dagli utenti. Stiamo mettendo un limite a 500K per questo.
LimitRequestBody 512000.
Beh, è vero che non puoi proteggere completamente il tuo sito web da Attacchi DDos. Ecco alcune direttive che possono aiutarti ad avere un controllo su di esso.
Apache ti consente di accedere indipendentemente dal tuo Registrazione del sistema operativo. È consigliabile abilitare la registrazione di Apache, perché fornisce più informazioni, come i comandi immessi dagli utenti che hanno interagito con il server Web.
Per fare ciò è necessario includere il mod_log_config modulo. Ci sono tre principali direttive relative alla registrazione disponibili con Apache.
Puoi anche usarli per un particolare sito web che stai facendo Hosting virtuale e per questo è necessario specificarlo nella sezione host virtuale. Ad esempio, ecco la configurazione dell'host virtuale del mio sito Web con la registrazione abilitata.
DocumentRoot /var/www/html/example.com/ NomeServer www.example.com. DirectoryIndex index.htm index.html index.php. ServerAlias esempio.com. ErrorDocument 404 /story.php. ErrorLog/var/log/httpd/example.com_error_log Log personalizzato /var/log/httpd/example.com_access_log combinato
Ultimo ma non meno importante Certificati SSL, puoi proteggere tutte le tue comunicazioni in modo crittografato su Internet con certificato SSL. Supponi di avere un sito Web in cui le persone accedono dimostrando le proprie credenziali di accesso o di avere un sito Web di e-commerce in cui le persone forniscono le proprie coordinate bancarie o Addebito/Credito i dettagli della carta per l'acquisto di prodotti, per impostazione predefinita il tuo server web invia questi dettagli in formato testo ma quando usi Certificati SSL ai tuoi siti web, Apache invia tutte queste informazioni in testo crittografato.
Puoi acquistare certificati SSL da tanti provider SSL diversi come nomecheap.com. Se gestisci un'attività web molto piccola e non sei disposto a farlo acquista un certificato SSL puoi ancora assegnare un Certificato autofirmato al tuo sito web. Apache usa il mod_ssl modulo da supportare Certificato SSL.
# 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
Una volta che il tuo certificato è stato creato e firmato. Ora devi aggiungerlo nella configurazione di Apache. Apri il file di configurazione principale con l'editor vim e aggiungi le seguenti righe e riavvia il servizio.
SSLEngine su 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 [e-mail protetta] 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.
Apri il tuo browser, digita https://example.com, e potrai vedere il nuovo certificato autofirmato.
Questi sono alcuni suggerimenti per la sicurezza che puoi utilizzare per proteggi il tuo server web Apache installazione. Per suggerimenti e idee sulla sicurezza più utili, vedere la documentazione online ufficiale di Server HTTP Apache.