Controlla l'accesso ai file linux. Hard hardening di Linux. Selezioniamo strumenti per un audit di sicurezza completo. Esecuzione di test individuali in Lynis

La maggior parte di tali sistemi aziendali e multicomponente come LINFA , DB Oracle utilizzare nella loro piattaforma un sistema operativo basato su Linux . In considerazione di ciò, i revisori IT prestano loro tanta attenzione. Oggi nell'articolo presenteremo alla vostra attenzione diversi strumenti gratuiti presentati sotto forma di script e utilizzando i normali meccanismi del sistema operativo per fornire un controllo esplicito della configurazione di sicurezza.

I seguenti comandi e script di sistema utilizzati per il controllo espresso delle opzioni di sicurezza dei sistemi operativi Linux si basano sulle raccomandazioni di controllo della sicurezza pubblicate dalla comunità ISACA nel manuale UNIX/LINUX Operating System Security Audit/Assurance Program.

1. Verifica degli account

1.1 Elenca tutti gli utenti
L'elenco degli utenti è memorizzato in /etc/passwdfile. Per ottenere un elenco di utenti, puoi utilizzare il seguente script:

  1. bin/bash
  2. # elencoutentinelsistema.sh
  3. # conta ed elenca gli utenti "reali" esistenti nel sistema.
  4. echo "[*] Utenti esistenti (in ordine alfabetico):"
  5. grep '/bin/bash' /etc/passwd | grep -v 'radice' | taglia-f1
  6. -d':' | ordinare
  7. echo -n “[*] Numero di utenti reali trovati: “
  8. grep '/bin/bash' /etc/passwd | grep -v 'radice' | wc -l
1.2 Elenca gli account bloccati
Durante l'audit, è necessario controllare l'elenco degli utenti bloccati e sbloccati ( nome utente ). Il seguente comando funzionerà per questo:
  1. #!/bin/bash
  2. # passwd –s accountName

1.3 Visualizzazione delle statistiche per tutti gli utenti

  • Il revisore deve garantire che il team AC inclusi nel sistema, per una panoramica delle attività degli utenti:
    1. #!/bin/bash
    Per visualizzare l'attività della sessione di connessione di un utente con i totali per ogni giorno, utilizzare il comando:
    1. #!/bin/bash
    2. # ac -d
    Per visualizzare informazioni sull'attività della sessione (in ore) di connessione dell'utente "utente" :
    1. #!/bin/bash
    2. # utente ac
    1.4 Visualizzare l'attività dell'utente
    Le applicazioni di sistema psacct o acct vengono eseguite in background e tengono traccia dell'attività di ogni utente sul sistema, nonché delle risorse che consumano. Per controllare l'attività degli utenti nel sistema, eseguire il seguente script:
    1. #!/usr/bin/envksh
    2. ultimo -Fa|awk '
    3. /wtmp inizia/ ( successivo; )
    4. /ancora connesso/ ( successivo; )
    5. $0 == riavvia ( successivo; )
    6. NF > 0 (
    7. se(NR > 1)
    8. stampaf("
      ”);
    9. printf("Utente:t%s
      ”, $1); # utente
    10. printf(" Inizio:t%s %s %s %s
      ”, $3, $4, $5, $6);
    11. if($9 == "giù")
    12. printf("Fine:spegnimento
      ”);
    13. printf("Fine:t%s %s %s %s
      ”, $9, $10, $11, $12);
    14. if(substr ($NF, 1, 1) == “(“)
    15. t = $NF;
    16. h = "host locale";
    17. t = $(NF-1);
    18. h = $NF;
    19. gsub(“[()]”, “”, t);
    20. printf("Tempo attivo:t%s
      ", T);
    21. printf("Host remoto:t%s
      ", H);
  • 2. Verifica della politica della password

    2.1 Conti con una password vuota
    Durante l'audit, è necessario assicurarsi che non vi siano account bloccati nel sistema che consentono di accedere al sistema senza inserire una password. Questa regola può essere verificata con il comando:

    # cat /etc/shadow | awk -F: ($2==””)(stampa $1)’

    2.2 Verifica della complessità della password
    Durante l'audit, è necessario verificare le impostazioni di complessità della password per ridurre il rischio di attacchi di forza bruta (forza bruta) o dizionario alla password. Per impostare questo criterio sul sistema, è necessario utilizzare PAM (Plugable Authentication Modules).
    Il revisore può verificare l'impostazione appropriata nel file di configurazione:

    # vi /etc/pam.d/system-auth

    2.3 Verifica della scadenza della password

    Come parte del controllo, dovresti controllare l'impostazione della scadenza della password. Per controllare il tempo di scadenza della password, utilizzare il comando modifica. Questo comando emette informazioni dettagliate la data di scadenza della password e la data dell'ultima modifica.
    Il seguente comando viene utilizzato per visualizzare le informazioni sulla "età" delle password:

    #chage -l nome utente

    Per modificare il tempo di scadenza della password per un utente specifico, puoi utilizzare i seguenti comandi:

    #chage -M60 nome utente
    #chage -M 60 -m 7 -W 7 nomeutente

    Opzioni (per impostare la data di scadenza della password):
    -M - data di scadenza massima in giorni.
    -m è la data di scadenza minima in giorni.
    -W - impostazione dell'avviso in giorni.

    2.4 Uso di password ripetute
    Le impostazioni di autorizzazione nel sistema devono essere conformi alla politica della password. Il file contenente la cronologia delle password si trova in /etc/security/opasswd. Per verificare, attenersi alla seguente procedura:

    per RHEL: apri il file '/etc/pam.d/system-auth':

    # vi /etc/pam.d/system-auth

    per Ubuntu/Debian/Linux Mint: apri il file '/etc/pam.d/common-password':

    # vi /etc/pam.d/password-comune

    Aggiungi la seguente riga alla sezione 'auth':

    auth sufficiente pam_unix.so likeauthnullok

    Per disabilitare l'uso delle ultime sei password, aggiungi la seguente riga:

    Password sufficiente pam_unix.so nullokuse_authtok md5 shadow Remember=6

    Dopo aver eseguito il comando, il sistema manterrà una cronologia delle sei password precedenti e se un utente tenta di aggiornare la password utilizzando una delle ultime sei, riceverà un messaggio di errore.

    3. Impostazioni di connessione sicura
    I protocolli di connessione remota Telnet e Rlogin sono molto vecchi e vulnerabili, a causa della trasmissione della password sulla rete in forma non crittografata. È necessario utilizzare un protocollo sicuro per una connessione remota e protetta Shell sicura (SSH). Il revisore deve inoltre garantire che l'opzione accesso root disabilitato, porta SSH predefinita modificata, accesso remoto consentito solo a specifici utenti autorizzati. Le impostazioni da controllare sono nel file di configurazione SSH:

    1. #vi /etc/ssh/sshd_config

    3.1 Login come superutente (login root)

    Nel corso dell'audit, il revisore dovrebbe verificare che l'accesso remoto con diritti di superutente root sia proibito.

    # PermitRootLogin = sì
    3.2 Verificare l'accesso SSH dell'account di servizio

    Durante l'audit, il revisore dovrebbe controllare l'account di servizio con un accesso SSH senza password. In genere, gli amministratori di sistema utilizzano questa funzione per i file programmati backup, trasferimento di file ed esecuzione di script in modalità di controllo remoto.

    Controlla che le impostazioni di sshd_config (/etc/ssh/sshd_config) siano corrette un'ultima volta.

    # PermitRootLogin senza password

    # RSAAuthentication = sì

    #PubkeyAuthentication=sì

    3.3 Controllo degli elenchi di accesso in DenyHosts e Fail2ban
    Durante l'audit, è necessario controllare le impostazioni delle liste di accesso DenyHost E Fail2ban . Si tratta di script utilizzati per monitorare e analizzare i log di accesso SSH e proteggere dagli attacchi di forza bruta della password.

    Caratteristiche di DenyHost:

    • salva e tiene traccia dei registri da un file /var/log/sicuro , contrassegnando tutti i tentativi di accesso riusciti e non riusciti e filtrandoli.
    • monitora i tentativi di accesso falliti
    • invia notifiche e-mail di host bloccati e tentativi di accesso sospetti
    Caratteristiche di Fail2ban:
    • Salva e tiene traccia dei registri dai file /var/log/sicuro E /var/log/auth.log , /var/log/pwdfail
    • altamente personalizzabile e multi-thread
    • monitora regolarmente i file di registro

    4. Controllo dei registri di sistema
    Durante l'audit, è necessario assicurarsi che il daemon SysLog sia in esecuzione e che tutti gli eventi significativi che si verificano nel sistema siano registrati nei registri eventi. L'audit dovrebbe inoltre garantire che la politica di conservazione del registro eventi tenga conto dei requisiti della legge applicabile e della politica di sicurezza.

    4.1 Registri eventi in Linux:

    /var/log/auth.log – registro del sistema di autorizzazione (login e meccanismo di autenticazione).
    /var/log/dpkg.log - registro dell'installazione/rimozione di pacchetti tramite dpkg.
    /var/log/yum.log - registro dell'installazione/rimozione di pacchetti tramite yum.
    /var/log/faillog - Un registro dei tentativi di accesso non riusciti e il relativo limite per ciascun account.
    /var/log/kern.log – registro del kernel, (registro dettagliato dei messaggi dal kernel Linux).
    /var/log/maillog o /var/log/mail.log – registro del server di posta.
    /var/log/wtmp – registro di accesso (tempo di registrazione e durata di tutti gli utenti del sistema).
    /var/run/utmp - informazioni sugli utenti attualmente connessi al sistema.
    /var/log/lastlog - record di accessi precedenti.
    /var/log/boot - informazioni registrate durante l'avvio del sistema

    5. Protezione dei file di sistema

    5.1 Protezione del bootloader GRUB

    Per proteggere il bootloader GRUB, l'amministratore deve utilizzare la crittografia della password in Formato MD5 :

    # grub-md5-crypt

    Dopo aver eseguito il comando, l'amministratore deve aprire il file /boot/grub/menu.lst O /boot/grub/grub.conf e aggiungi la password MD5:

    # vi /boot/grub/menu.lst

    #vi /boot/grub/grub.conf

    La password MD5 appena creata può essere aggiunta al file di configurazione di GRUB.

    5.2 Protezione della directory di avvio /BOOT

    Durante l'audit, è necessario controllare lo stato della directory /stivale, poiché il nucleo del sistema e i relativi file si trovano nella directory /stivale. È necessario assicurarsi che questa directory abbia accesso in sola lettura, che impedisce modifiche non autorizzate a file importanti sul sistema. Per verificare, apri il file /etc/fstab e controlla la configurazione:

    Il file deve contenere la riga:

    LABEL=/boot /boot ext2 defaults,ro 1 2

    5.3 Verifica delle porte aperte e delle connessioni attive

    Il seguente script può essere utilizzato per controllare i servizi in esecuzione sul sistema:

    #!/bin/bash
    if (($(ps -ef | grep -v grep | grep $service | wc -l) > 0))
    Poi
    echo "$servizio è in esecuzione!!!"
    altro
    /etc/init.d/$avvio del servizio
    fi

    Visualizzazione le connessioni di rete

    # netstat -anop
    O
    # lsof -i(lsof -ni)
    O
    #ipTraf

    Porte in ascolto
    Utilizzando il comando Netstat, puoi visualizzare tutto porti aperti e relativi comandi. Esempio di sceneggiatura:

    # netstat-tulpn
    Uno script per la scansione delle porte è:
    scansione() (
    se [[ -z $1 || -z$2]]; Poi
    echo "Utilizzo: $0
    ritorno
    fi
    host locale=$1
    porte locali=()
    caso $ 2 dentro
    *-*)
    IFS=- leggi inizio fine<<< “$2”
    for ((porta=inizio; porta<= end; port++)); do
    porte+=($porta)
    Fatto
    ;;
    *,*)
    IFS=, leggi -ra porte<<< “$2”
    ;; *)
    porte+=($2) ;;
    esac
    per la porta in "$(ports[@])"; Fare
    allarme 1 "echo >/dev/tcp/$host/$port" &&
    echo "la porta $porta è aperta" ||
    echo "la porta $porta è chiusa"
    Fatto
    }

    firewall iptables

    Durante l'audit, è necessario verificare la configurazione del firewall Linux per impedire l'accesso non autorizzato. Per controllare il traffico, è necessario creare regole in iptables che filtreranno i pacchetti in entrata, in uscita e inoltrati in base all'indirizzo IP e al numero di porta TCP/UDP.

    # iptables -n -L -v --line-numbers

    Richieste ICMP/trasmissione

    Durante l'audit, è necessario verificare che i sistemi siano configurati per ignorare i ping e le richieste di trasmissione. Per fare ciò, assicurati che il file “/etc/sysctl.conf” aggiunto le seguenti righe:

    # ignora le richieste ICMP:
    net.ipv4.icmp_echo_ignore_all = 1
    # ignora le richieste di trasmissione:
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    5.4 Controllo degli aggiornamenti installati

    I sistemi devono disporre degli ultimi aggiornamenti installati:

    # yum aggiornamenti
    # yum controlla l'aggiornamento

    6. Controllo dei lavori CRON eseguiti automaticamente

    L'auditor dovrebbe controllare chi è autorizzato e chi ha il divieto di eseguire lavori in cron. L'accesso cron è controllato tramite file /etc/cron.allow E /etc/cron.deny.

    # echo ALL >>/etc/cron.deny

    7. Controllo di sicurezza forzato SELINUX

    Durante l'audit, è importante controllare lo stato SELinux . Questo meccanismo deve essere abilitato nel sistema.
    Ci sono tre modalità SELinux :

    • Enforcing: la policy SELinux è applicata. SELinux nega l'accesso in base alle regole della politica di SELinux.
    • Permissivo: la policy SELinux non viene applicata. SELinux non nega l'accesso, ma i dinieghi vengono registrati come azioni che verrebbero negate se la policy fosse impostata per l'applicazione.
    • Disabilitato: SELinux è disabilitato. Vengono utilizzate solo regole DAC discrete.

    Durante un audit, puoi utilizzare il seguente script per verificare lo stato di SELinux o utilizzare i comandi system-configselinux, getenforce o sestatus:

    ENABLED=`cat /selinux/enforce`
    if [ “$ABILITATO” == 1 ]; Poi
    echo "SELinux è abilitato, disabilitare? (si No):"
    leggi disabilita
    if [$disabilita == "sì"]; Poi
    echo "disabilitare selinux"
    impostaforza 0
    fi
    fi

    Script LBSA per controllare le opzioni di sicurezza di base

    LBSA (script di controllo della sicurezza di base di Linux) è uno script di controllo della configurazione di sicurezza di Linux di base. Lo script deve essere eseguito da una riga di comando con privilegi radice, o idealmente pianificato per essere eseguito su base regolare utilizzando cron per controllare sistematicamente le modifiche alla configurazione.

    Lo scopo di questo script è controllare rapidamente le impostazioni di sicurezza e scaricare un rapporto che descrive le possibili impostazioni che possono essere modificate per fornire un livello di sicurezza più elevato. Nel caso in cui non ci siano raccomandazioni per nessuna opzione, lo script visualizza semplicemente una riga con l'elaborazione del controllo e la decisione finale spetta sempre all'amministratore. Prima di eseguire un test, gli sviluppatori consigliano vivamente di leggere il manuale e studiare le sezioni consigliate per ulteriori informazioni.

    Nell'edizione corrente (versione 1.0.49), lo script cerca le seguenti opzioni:

    • vulnerabilità nelle impostazioni dell'account
    • vulnerabilità nelle impostazioni SSH
    • vulnerabilità nelle directory temporanee e nelle directory del file system caricate nella RAM (ad esempio, in /tmp, /var/tmp /dev/)
    • permessi dei file, stato delle directory di sistema
    • -configurazione dei servizi DRBD e Hearbeat

    La sceneggiatura è piuttosto grande, quindi non l'abbiamo inserita nella pagina.

    Condurre un controllo di sicurezza del server una volta al mese per rilevare tempestivamente possibili problemi relativi alla penetrazione di intrusi nel server.

    Se non vedi alcun segno di attività di terze parti sul VPS o sul sito, esegui la seguente serie di controlli e regolazioni per proteggere il server dall'hacking.

    Impostazioni del livello dell'applicazione

    Se CMS è installato sul server, controlla se sono installati tutti gli aggiornamenti più recenti.

    Joomla

    Trova il file changelog.txt nella directory principale del sito, dove troverai informazioni sulla versione del CMS. Se non è aggiornato, aggiorna Joomla.

    WordPress

    Cerca il file wp-includes/version.php per le informazioni sulla versione del CMS. Se è obsoleto, aggiorna Wordpress.

    DLE

    Cerca il file engine/data/config.php, cerca la riga version_id e assicurati che la versione sia aggiornata.

    Controlla anche i file engine/ajax/updates.php e upgrade/index.php (parametro $dle_version).

    1C-Bitrix

    Cerca il file /bitrix/modules/main/classes/general/version.php, dove troverai informazioni sulla versione del CMS. Controlla anche il file /bitrix/admin/update_system.php. Se la versione è obsoleta, aggiorna 1C-Bitrix.

    Drupal

    Trova il file changelog.txt nella directory principale del sito, dove troverai informazioni sulla versione del CMS. Se non è aggiornato, aggiorna Drupal.

    Controlla la versione del kernel nel file /modules/system/system.info.

    Inoltre, puoi rilevare la versione del CMS attraverso il pannello di controllo.

    Controllo server web.

    Apache

    Apri il file di configurazione di Apache (a seconda della versione, questi possono essere file httpd.conf, httpd2.conf, apache.conf, apache2.conf) e controlla se contiene una direttiva che disabilita l'output di informazioni sulla versione del web server:

    ServerTokenProd

    Se questa direttiva non è presente, aggiungi e salva il file.

    Cerca il file secure.conf, aprilo per visualizzarlo e confronta il suo contenuto con il seguente esempio:

    Opzioni +Include -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride FileInfo AuthConfig Limite Indici Opzioni Ordine consenti, nega Consenti da tutti php_admin_value open_basedir "." Opzioni-Indici Azione php-cgi /php-bin/php

    Il tuo secure.conf non dovrebbe essere significativamente diverso dall'esempio precedente.

    Controllare l'MPM installato con il comando

    Apachectl -V

    Per una maggiore sicurezza, usa mpm_itk a meno che tu non abbia assolutamente bisogno di mpm_prefork.

    Se desideri modificare MPM, esegui una reinstallazione dopo aver eseguito copie di backup dei file di configurazione. Dopo la reinstallazione, controlla se il proprietario del sito e di tutte le sue directory è l'utente.

    Nginx

    Apri il file di configurazione del server web (nginx.conf), vai alla sezione http e controlla se contiene direttive che limitano il numero di connessioni da un indirizzo IP:

    Limit_zone riduce $binary_remote_addr 5m; limit_conn slimits 10; oppure (per le versioni recenti) limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn indirizzo 10;

    Se queste direttive non sono presenti, aggiungi e salva il file.

    Blocca alcuni agenti utente per bloccare il traffico indesiderato. Nella sezione http del file di configurazione di Nginx, aggiungi la direttiva

    If ($http_user_agent ~* LWP::Simple|BBBike|wget|msnbot) (restituisce 403;)

    Blocca lo spam di riferimento aggiungendo la direttiva alla sezione http del file di configurazione di Nginx

    If($http_referer ~*(babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen))(return 403;)

    Gestore ISP

    Eseguire i seguenti controlli nel pannello di controllo di ISPmanager.

    Verificare se l'accesso al pannello di controllo è limitato dall'indirizzo IP.

    Imposta il backup dei dati se non è abilitato. Si consiglia di utilizzare un'unità esterna per il backup per evitare la perdita di dati insieme all'archivio.

    PHP

    Apri il file di configurazione php.ini e aggiungi le seguenti direttive.

    Expose_php=Off - disattiva la trasmissione delle informazioni sulla versione PHP nell'intestazione HTTP; sql.safe_mode=On - abilita la modalità provvisoria SQL; post_max_size=8M - limite di dimensione per i dati trasmessi dal metodo POST; disable_functions exec, system, passthru, proc_open, shell_exec - disabilita alcune funzioni per motivi di sicurezza.

    NTP

    Nel file di configurazione NTP (/etc/ntp.conf per impostazione predefinita), aggiungi righe per disabilitare le richieste ricorsive:

    Limita default kod limited nomodify notrap nopeer noquery restrizione -6 default kod limited nomodify notrap nopeer noquery restrizione 127.0.0.1 restrizione -6::1

    Legamento

    Inserisci le seguenti righe nel file named.conf per disabilitare le query ricorsive:

    Consenti ricorsione( 127.0.0.1; 82.146.32.0/19; 78.24.216.0/21; 92.63.96.0/20; 62.109.0.0/19; 188.120.224.0/19; 149.154.64.0/21; 37.230.114.125; 248.0/21;);

    Controllo del proprietario della directory del sito

    Controlla chi possiede la directory principale del sito e tutte le sue sottodirectory.

    Nella barra degli strumenti di ISPmanager, vai alla sezione “Sistema” -> “File manager” e apri la directory del sito. Assicurati che le colonne Proprietario e Gruppo siano per l'utente proprietario del sito. Per modificare questi attributi, fare clic sul pulsante Attributi sulla barra degli strumenti.

    I nomi validi del proprietario del sito Web sono apache, www, www-data se si utilizza mpm_prefork. Si consiglia di utilizzare mpm_itk per migliorare la sicurezza.

    Se il sito contiene cartelle condivise (ad esempio, upload, tmp), per esse è valido il nome del proprietario 777. Assicurati che questo utente sia impostato solo sulle directory necessarie eseguendo il comando

    Trova ./ -perm 0777

    Troverà tutte le cartelle e i file di proprietà di 777.

    Impostazioni a livello di sistema operativo

    cacciatore

    Utilizza l'utility rkhunter per identificare potenziali vulnerabilità del server.

    Per installare l'utilità, utilizzare il comando:

    Yum install rkhunter - CentOS OS apt-get install rkhunter - Debian/Ubuntu OS make all install clean -C /usr/ports/security/rkhunter or pkg install rkhunter - FreeBSD OS

    Per aggiornare il database di questa utility, eseguire i comandi

    Rkhunter --aggiornamento

    Rkhunter --propupd

    Eseguire un controllo del sistema con il comando

    Rkhunter -c --cs2

    Durante il processo di verifica, è necessario premere più volte il tasto Invio per continuare. Al termine, verrà visualizzato un riepilogo del risultato del test.

    I risultati del controllo vengono inseriti nel file di registro /var/log/rkhunter/rkhunter.log, controllalo per avvisi ed errori.

    sysctl

    Utilizzare l'utilità sysctl per gestire i parametri del kernel di sistema. Apri il file di configurazione dell'utilità /etc/sysctl.conf e inserisci le seguenti righe.

    Disabilita la possibilità di instradare il traffico in entrata, poiché un utente malintenzionato può utilizzare questa capacità per falsificare gli indirizzi IP:

    net.ipv4.conf.all.accept_source_route = 0

    Disabilita le risposte alle richieste ICMP sul canale di trasmissione: questo aiuterà a prevenire gli attacchi smurf:

    Net.ipv4.icmp_echo_ignore_broadcasts = 1

    Disabilita la registrazione dei messaggi di errore non validi:

    Net.ipv4.icmp_ignore_bogus_error_responses = 1

    Abilita la protezione dall'overflow della memoria:

    Kernel.exec-shield=1 (CentOS)

    Abilita l'utilizzo della memoria ASLR:

    kernel.randomize_va_space = 2

    Disabilita la possibilità di inoltrare messaggi ICMP:

    net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.default.accept_redirects=0

    Se non stai utilizzando una VPN o altre applicazioni speciali sul server, disabilita l'inoltro:

    Net.ipv4.conf.all.forwarding=0

    Abilita la protezione SYN flood - utilizzo dei cookie SYN:

    Net.ipv4.tcp_syncookies=1

    Imposta il numero di tentativi di invio di pacchetti SYN-ACK:

    Net.ipv4.tcp_synack_retries = 3

    Imposta il tempo dopo il quale il server controlla la connessione se non è stata utilizzata per molto tempo (il valore predefinito è 2 ore):

    Net.ipv4.tcp_keepalive_time=1800

    Imposta il numero di controlli di connessione prima che venga terminato:

    Net.ipv4.tcp_keepalive_probes=3

    Imposta il timeout del socket nello stato FIN-WAIT-2:

    net.ipv4.tcp_fin_timeout=30

    fstab

    Controllare il file di configurazione fstab (/etc/fstab), che contiene informazioni su dischi, partizioni e dispositivi di archiviazione e su come sono montati sul sistema.

    Vi /etc/fstab

    Si noti che le partizioni non root devono avere l'opzione nodev. Se /tmp è montato su una partizione separata, aggiungi nodev, noexec, nosuid per quella partizione.

    rsyslog

    Controllare il file di registro di sistema /etc/rsyslog.conf.

    Vi /etc/rsyslog.conf

    Presta attenzione alle seguenti righe, che dovrebbero assomigliare a:

    Assicurati inoltre che il file di registro non sia vuoto, ad es. la registrazione è corretta.

    sudo

    Controlla se l'utilità sudo (o su) è configurata correttamente, che consente all'utente di eseguire determinati comandi e programmi come root. Le impostazioni per questa utility si trovano nel file di configurazione /etc/sudoers o /usr/local/etc/sudoers. Aprilo per la modifica

    Vi /etc/sudoers

    Trova la riga scritta per impostazione predefinita e consente al superutente root di eseguire qualsiasi comando.

    Per dare a tutti gli utenti il ​​privilegio di eseguire i comandi come root, aggiungi la seguente riga:

    TUTTI TUTTI=/bin/su o TUTTI TUTTI=/usr/bin/su

    Per dare a un utente specifico il privilegio di eseguire solo determinati comandi come root, aggiungi la riga:

    %users ALL=/sbin/mount - il gruppo utenti potrà usare solo sudo con il comando mount user ALL=/sbin/mount - l'utente user potrà usare solo sudo con il comando mount

    Impostazioni a livello di rete

    Controlla quali porte sono aperte sul server e quali servizi le stanno utilizzando eseguendo il comando

    Netstat -tuplnw | awk "(stampa $4,$NF)" | ordina | uniq

    Ad esempio, la voce 127.0.0.1:53 748/named indica che il servizio named utilizza la porta 53. Verifica che solo quelli necessari siano tra i servizi in esecuzione, disabilita tutti gli altri.

    FTP

    Imposta l'intervallo di porte da utilizzare per la modalità FTP passiva. Per fare ciò, apri il file di configurazione del tuo server FTP per la modifica e aggiungi le righe:

    per vsftpd.conf:

    pasv_min_port=1028 pasv_max_port=1048

    per proftpd.conf:

    Porte passive 1028 1048

    Non utilizzare il protocollo FTP a meno che non sia assolutamente necessario, utilizza invece SFTP. Se FTP è ancora richiesto, aggiungi le seguenti righe al file di configurazione:

    per vsftpd.conf:

    Xferlog_enable=YES (registrazione ftp) anonymous_enable=NO (nega connessioni utente anonime) anon_upload_enable=NO anon_mkdir_write_enable=NO

    per proftpd.conf:

    nella sezione ... eliminare tutte le sezioni e aggiungi linee

    Nega tutto Nega tutto

    iptables

    Controlla se il firewall è configurato correttamente. Per iptables eseguire il comando

    Iptables-NL

    Questo comando stampa tutte le regole del firewall di iptables sulla riga di comando. Inoltre, queste regole possono essere visualizzate e modificate nel file di configurazione del firewall /etc/sysconfig/iptables - per il sistema operativo CentOS, /etc/network/if-up.d/ispmgrfw - per il sistema operativo Debian/Ubuntu.

    Nelle regole del firewall, chiudi tutte le porte ad eccezione di quelle utilizzate dai servizi in esecuzione sul server. Per fare ciò, cambia le linee

    :INPUT ACCETTA :FORWARD ACCETTA :OUTPUT ACCETTA a :INPUT DROP :FORWARD DROP :OUTPUT DROP

    Per aprire le porte necessarie, aggiungi righe come

    A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m multiport --sports 53,80,25,443,953 -j ACCETTARE

    dove 53 è il numero di porta da aprire.

    Prima di apportare modifiche al file di configurazione del firewall, eseguire una copia del file di lavoro.

    Le regole del firewall possono essere configurate dal pannello di controllo di ISPmanager.

    SSH

    Apri il file di configurazione SSH:

    Vi /etc/ssh/sshd_config

    Verifica che le seguenti righe non siano commentate:

    Protocol 2 (per utilizzare la seconda versione del protocollo) IgnoreRhosts sì (non utilizzare il file .rhost) HostbasedAuthentication no (non autenticare l'host) PermitRootLogin no (negare l'accesso root) PermitEmptyPasswords no (non utilizzare password vuote) PermitUserEnvironment no (impedisce all'utente di impostare variabili di ambiente) PasswordAuthentication sì (consente l'autenticazione tramite password)

    Abilita SFTP aggiungendo la seguente riga a sshd_config:

    Sottosistema sftp /usr/lib/openssh/sftp-server

    Controlla che la coda della posta non sia in eccesso e assicurati che non ci siano messaggi di spam tra i messaggi.

    Eseguire il comando mailq e visualizzare l'elenco dei messaggi. Se l'elenco è molto lungo, controlla selettivamente i messaggi che potrebbero essere spam. Per identificatore (ad esempio, BD65F10DEE4) determinare il mittente della lettera. Squadra

    Exim -Mvh message_id

    visualizza l'intestazione dell'e-mail e il comando

    Exim -Mvb message_id

    visualizzerà il corpo del messaggio.

    Tra le intestazioni del messaggio, il campo From: contiene il mittente e X-PHP-Originating-Script contiene lo script a cui è stato inviato il messaggio.

    Software

    Controllare il software del server per le vulnerabilità.

    Sistema operativo CentOS

    Eseguire un comando che elenchi i file software installati modificati di recente:

    Rpm -qVa - per visualizzare tutti i file, rpm -qVa | awk "$2!="c" (print $0)" - per stampare i file tranne i log.

    Analizza quali file sono stati modificati e come, utilizzando i seguenti valori dei parametri:

    S - dimensione del file modificata M - autorizzazioni predefinite modificate 5 - checksum MD5 modificato D - numeri principali/secondari per il dispositivo modificati L - collegamento simbolico modificato U - proprietario del file modificato G - gruppo modificato T - data di modifica del file (mtime) modificata ) c - file di configurazione d - file di documentazione g - file non incluso nel pacchetto l - file di licenza r - file README

    Ad esempio, la riga S.5....T. c /etc/httpd/conf/httpd.conf significa che httpd.conf è un file di configurazione, le sue dimensioni, il checksum e la data dell'ultima modifica sono stati modificati. Poiché si tratta di un file di configurazione, queste modifiche non sono sospette.

    Presta attenzione ai file che hanno i loro valori di checksum modificati senza una ragione apparente. Per tali file, eseguire il comando:

    Stat /usr/sbin/sshd && file /usr/sbin/sshd dove usr/sbin/sshd è il percorso del file.

    Come risultato del comando, sullo schermo vengono visualizzate informazioni dettagliate sulla modifica in questo file.

    Esegui il comando:

    Yum --aggiornamento di sicurezza

    per installare l'aggiornamento della sicurezza.

    Sistema operativo Debian

    Esegui i comandi che controllano i checksum MD5 per i programmi installati:

    # apt-get install debsums # debsums -c

    Esegui i seguenti comandi per verificare l'aggiornamento della sicurezza:

    # echo 'deb http://security.debian.org wheezy/updates main contrib non-free' >> /etc/apt/sources.list # grep security /etc/apt/sources.list > /etc/apt/secsrc .list # apt-get -s -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" aggiornamento

    Per installare l'aggiornamento della sicurezza, eseguire il comando:

    # apt-get -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" aggiornamento

    Verifica che tutti i repository abbiano la riconciliazione gpg eseguendo i comandi:

    # grep -ri gpgcheck /etc/yum.conf # grep -ri gpgcheck /etc/yum.repos.d/ Assicurarsi che le righe siano simili a: gpgcheck=1 # grep -ri AllowUnauthenticated /etc/apt/

    Righe del modulo

    APT::Get::AllowUnauthenticated "true";

    non dovrebbe essere.

    Servizi non utilizzati

    Sistema operativo CentOS

    chkconfig --lista

    Chkconfig --del service_name dove service_name è il nome del servizio.

    Sistema operativo Debian

    Esegui un comando che elenchi i servizi inutilizzati:

    sysv-rc-conf

    Per disabilitare l'avvio di un servizio inutilizzato, eseguire il comando:

    Sysv-rc-conf off service_name dove service_name è il nome del servizio.

    La sicurezza del server Linux è molto importante per proteggere i tuoi dati, proprietà intellettuale, così come il tempo nelle mani dei cracker. Per sicurezza sistema operativo Linux risponde Amministratore di sistema. In questo articolo, esamineremo venti cose che devi fare con il tuo sistema operativo Linux per tenerlo sempre al sicuro. Se questo computer di casa, quindi sulla sicurezza, forse, non ha senso preoccuparsi così tanto, saranno sufficienti password complesse e blocco dell'accesso alle porte da Internet. Ma nel caso di un server pubblico, dovresti prestare attenzione a garantirne la protezione.

    Queste istruzioni funzioneranno per qualsiasi distribuzione, sia che tu stia utilizzando CentOS, Red Hat o Ubuntu, Debian.

    1. Crittografia delle comunicazioni

    Tutti i dati trasmessi sulla rete sono aperti per il monitoraggio. Pertanto, è necessario crittografare i dati trasmessi, ove possibile utilizzando password, chiavi o certificati.

    Usa scp, ssh , rsync o sftp per trasferire i file. Puoi anche montare un filesystem remoto nella tua home directory usando strumenti come shhfs.

    GnuPG ti consente di crittografare e firmare i tuoi dati con una chiave privata speciale. Sono inoltre presenti funzioni per la gestione delle chiavi e l'accesso alle chiavi pubbliche.

    Fugu è uno strumento grafico per il trasferimento di file SFTP. SFTP è molto simile a FTP, ma l'intera sessione è crittografata. Ciò significa che nessuna password o comando viene trasmesso in chiaro. Pertanto, tali trasferimenti sono meno vulnerabili a terzi. Puoi anche usare FileZilla, è multipiattaforma Cliente FTP con supporto per FTS su SSH/TLS e SSH File Transfer Protocol (SFTP).

    OpenVPN è un client VPN efficiente e leggero con supporto per la crittografia SSH.

    2. Cerca di non usare FTP, Telnet, Rlogin e RSH

    Sulla maggior parte delle reti, nomi utente, password da FTP, Telnet, comandi RSH possono essere intercettati da qualcuno sulla stessa rete utilizzando uno sniffer di pacchetti. La soluzione generale a questo problema è utilizzare OpenSSH, SFTP o SFTP, che aggiunge SSL o TLS al normale FTP. Eseguire il seguente comando per rimuovere NIS, RSH e altri servizi obsoleti:

    yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

    3. Ridurre la quantità di software

    Hai davvero bisogno di tutti i servizi web installati? Non installare inutili Software per evitare vulnerabilità in questi programmi. Usa il tuo gestore di pacchetti per vedere programmi installati e rimuovi tutto ciò che non è necessario:

    elenco yum installato
    Pacchetto elenco $ yum
    $ yum rimuovere il pacchetto

    dpkg --lista
    $ dpkg --info pacchetto
    $ apt-get rimuovi pacchetto

    4. Una macchina - un servizio

    Esegui servizi diversi su server separati o macchine virtuali. Ciò limita il numero di servizi che possono essere compromessi. Ad esempio, se un utente malintenzionato può hackerare Apache, otterrà l'accesso all'intero server. Compresi servizi come MySQL, server E-mail e così via. È possibile utilizzare software come XEN o OpenVZ per la virtualizzazione.

    5. Mantenere aggiornati il ​​kernel e il software di Linux

    L'applicazione delle patch di sicurezza è una parte molto importante per proteggere un server Linux. Il sistema operativo fornisce tutti gli strumenti per mantenere aggiornato il sistema e aggiornarlo alle nuove versioni. Tutti gli aggiornamenti di sicurezza dovrebbero essere applicati il ​​prima possibile. Anche qui devi usare il tuo gestore di pacchetti. Per esempio:

    O per i sistemi basati su Debian:

    sudo apt update && sudo apt upgrade

    Puoi impostare Red Hat o Fedora per l'invio di notifiche e-mail quando sono disponibili nuovi aggiornamenti di sicurezza. Inoltre puoi personalizzare aggiornamento automatico tramite cron, oppure puoi usare aptcron di Debian per avvisarti di aggiornare il tuo sistema.

    6. Usa le estensioni di sicurezza in Linux

    Il sistema operativo Linux viene fornito con varie patch di sicurezza che possono essere utilizzate per proteggere da errori di configurazione o malware. Ma puoi anche utilizzare sistemi di controllo degli accessi aggiuntivi per applicazioni come SELinux o AppArrmor.

    SELinux fornisce varie politiche di sicurezza per il kernel Linux. Qui è possibile controllare l'accesso a qualsiasi risorsa di sistema utilizzando i ruoli. È possibile accedere a una particolare risorsa solo da un programma il cui ruolo lo consente e anche i diritti di superutente non contano. SELinux aumenta notevolmente la sicurezza di un sistema Linux, poiché qui anche root è considerato un utente normale. Maggiori dettagli sono descritti in un articolo separato.

    7. Account utente e password complesse

    Utilizzare i comandi useradd e usermod per creare e gestire gli account utente. Assicurati di avere una password buona e sicura, dovrebbe contenere almeno otto caratteri, preferibilmente in un caso diverso, tra i quali dovrebbero esserci caratteri speciali o numeri. Ad esempio, 8 caratteri, di cui sette sono lettere e un carattere o numero. Utilizza strumenti come John the Ripper per trovare password utente deboli sul server e configura pam_cracklib.so per applicare la politica delle password.

    8. Cambia le password di volta in volta

    Il comando di modifica consente di specificare il numero di giorni prima della data di modifica forzata della password. Queste informazioni vengono utilizzate dal sistema per determinare quando l'utente deve modificarle. Queste impostazioni sono in /etc/login.defs. Per disabilitare la durata della password, immetti il ​​seguente comando:

    cambia -l nome utente

    Per ottenere informazioni sulla data di scadenza della password, immettere il comando:

    Puoi anche configurare tutto manualmente, nel file /etc/shadow:

    (password utente): (Ultima modifica):(max_giorni): (minimo_giorni): (Avvertimento):(disattivare):(righe_di_scadenza):

    • Giorni minimi- l'intervallo minimo tra le modifiche della password, ovvero la frequenza con cui l'utente può modificare la password.
    • Numero massimo di giorni- quanti giorni sarà valida la password, trascorso tale periodo l'utente sarà costretto a cambiare la password.
    • Avvertimento- il numero di giorni dopo i quali l'utente verrà avvisato che deve cambiare la sua password.
    • scadenza_stringa- il numero di giorni dal 1 gennaio 1970 in cui l'account sarà completamente disattivato.

    cambia -M 60 -m 7 -W 7 nome utente

    È inoltre auspicabile impedire agli utenti di utilizzare vecchie password, altrimenti tutti gli sforzi per costringerli a modificare le password verranno annullati.

    9. Blocca account dopo tentativi di accesso falliti

    Su un sistema operativo Linux, puoi utilizzare il comando faillog per visualizzare i tentativi di accesso utente non riusciti. Puoi anche usarlo per impostare un limite ai tentativi di accesso falliti. Tutte le informazioni sui tentativi di accesso non riusciti sono memorizzate nel file /var/log/faillog. Per visualizzarlo digitare:

    E per impostare un limite ai tentativi di accesso per un account specifico, utilizzare:

    faillog -r -u utente

    Puoi anche bloccare o sbloccare manualmente gli account utilizzando il comando passwd. Per bloccare l'uso:

    passwd -l utente

    E per sbloccare:

    passwd -u utente

    Si consiglia inoltre di verificare se nel sistema sono presenti account con password vuote. Per fare ciò, eseguire:

    awk -F: "($2 == "") (print)" /etc/shadow

    Controlla anche se ci sono utenti con gruppo o ID 0. Dovrebbe esserci un solo utente di questo tipo, e questo è root. Puoi verificare con questo comando:

    awk -F: "($3 == "0") (print)" /etc/passwd

    Ci dovrebbe essere solo una riga:

    root:x:0:0:root:/root:/bin/bash

    Se ce ne sono altri, eliminali. Gli utenti, e in particolare le loro password deboli, sono una delle cose più vulnerabili che possono violare la sicurezza in Linux.

    10. Disabilita l'accesso come superutente

    Per proteggere il tuo sistema Linux, non accedere mai come root. Puoi usare sudo per ottenere le autorizzazioni necessarie ed eseguire il comando desiderato come root. Questo comando ti consente di non divulgare la password del superutente ad altri amministratori e contiene anche strumenti per monitorare, limitare e tenere traccia delle azioni.

    11. Sicurezza fisica del server

    La sicurezza del server Linux deve includere la sicurezza fisica. È necessario limitare l'accesso fisico alla console del server. Impostare il BIOS in modo che non supporti l'avvio da supporti esterni come DVD, CD, USB. Imposta anche una password sul BIOS e sul bootloader GRUB per proteggere le loro impostazioni.

    12. Disabilita i servizi non necessari

    Disabilita tutti i servizi e i demoni non utilizzati. Inoltre, non dimenticare di rimuovere questi servizi dall'avvio. Puoi elencare tutti i servizi attivi sui sistemi Red Hat con il comando:

    chkconfig --elenco | grep "3:on"

    Per disattivare il servizio utilizzare:

    fermata del servizio
    Servizio $ chkconfig disattivato

    Trova tutto programmi aperti porti:

    Lo stesso può essere fatto con lo scanner nmap:

    nmap -sT -O host locale

    Usa iptables per chiudere tutte le porte che non dovrebbero essere accessibili dalla rete. Oppure fermati servizi inutili come descritto sopra.

    13. Rimuovere il server X

    Il server X sul computer server è completamente facoltativo. Non è necessario eseguire un ambiente grafico su un server Apache o di posta dedicato. Rimuovi questo software per migliorare la sicurezza e le prestazioni.

    14. Configurare Iptables

    iptables è un programma in spazio utente per la configurazione del firewall Netfilter integrato nel kernel. Ti consente di filtrare tutto il traffico e consentire solo determinati tipi di traffico. Usa anche TCPWrappers - sistema ACL per filtrare l'accesso a Internet. Puoi prevenire molti tipi di attacchi DOS con iptables. La sicurezza della rete in Linux è un aspetto molto importante della sicurezza generale del sistema.

    15. Configurare il kernel

    Il file /etc/sysctl.conf memorizza le impostazioni del kernel che vengono caricate e applicate durante l'avvio del sistema.

    Abilita la protezione dall'overflow del buffer di execshield:

    kernel.exec-shield=1
    kernel.randomize_va_space=1

    Abilita protezione da spoofing IP:

    net.ipv4.conf.all.rp_filter=1

    Disabilita l'inoltro dell'indirizzo IP:

    net.ipv4.conf.all.accept_source_route=0

    Ignora le richieste di trasmissione:

    net.ipv4.icmp_echo_ignore_broadcasts=1
    net.ipv4.icmp_ignore_bogus_error_messages=1

    Registra tutti i pacchetti contraffatti:

    net.ipv4.conf.all.log_martians=1

    16. Partiziona il tuo disco rigido

    Separazione disco rigido in partizioni a seconda dello scopo dei file migliora la sicurezza del sistema operativo Linux. Si consiglia di creare sezioni separate per tali directory:

    • /casa
    • /var e /var/tmp

    Crea partizioni separate per le directory radice di Apache e i server FTP. Apri il file /etc/fstab e imposta opzioni speciali per le partizioni desiderate:

    • noexec- non eseguire programmi o file eseguibili su questa partizione, sono consentiti solo script
    • nodev- non consentire dispositivi simbolici o speciali su questa partizione.
    • nosuid- non consentire l'accesso SUID/SGID ai programmi di questa sezione.

    17. Utilizzare la limitazione dello spazio su disco

    Limita lo spazio su disco disponibile per gli utenti. Per fare ciò, crea un disk quota in /etc/fstab, rimonta i filesystem e crea un database di disk quota. Ciò migliorerà la sicurezza su Linux.

    18. Disattiva IPv6

    Il protocollo Internet di prossima generazione IPv6 sostituirà in futuro il già utilizzato IPv4. Ma al momento non esistono strumenti che permettano di verificare la sicurezza di una rete basata su IPv6. Molte distribuzioni Linux consentono IPv6 per impostazione predefinita. Gli hacker possono inviare traffico indesiderato e gli amministratori non saranno in grado di tracciarlo. Quindi, se non hai bisogno di questo servizio, disabilitalo.

    19. Disabilitare i binari SUID e SGID inutilizzati

    Tutti i file eseguibili per i quali è abilitato il flag SUID o SGID sono potenzialmente pericolosi. Questo flag indica che il programma verrà eseguito con diritti di superutente. E questo significa che se il programma presenta qualche tipo di vulnerabilità o bug, allora il file locale o utente remoto può usare questo file. Trova tutti questi file con il seguente comando:

    trova / -perm +4000

    Trova i file con il flag SGID impostato:

    trova / -perm +2000

    Oppure possiamo combinare tutto in un unico comando:

    find / \(-perm -4000 -o -perm -2000 \) -print
    $ find / -path -prune -o -type f -perm +6000 -ls

    Dovrai studiare in dettaglio ogni file trovato per capire quanto è necessario questo o quel file.

    20. File pubblici

    È inoltre auspicabile trovare file che possono essere modificati da tutti gli utenti del sistema. Per fare ciò, utilizzare il seguente comando:

    find /dir -xdev -type d \(-perm -0002 -a ! -perm -1000 \) -print

    Ora è necessario verificare se i diritti per il gruppo e il proprietario di ciascun file sono impostati correttamente e se ciò rappresenta un rischio per la sicurezza.

    È anche desiderabile trovare tutti i file che non appartengono a nessuno:

    find /dir -xdev \(-nouser -o -nogroup \) -print

    21. Utilizzare un sistema di autenticazione centralizzato

    Senza un sistema di autenticazione centralizzato, i dati degli utenti diventano incoerenti, il che può portare a credenziali obsolete e account dimenticati che avrebbero dovuto essere eliminati molto tempo fa. Il servizio centralizzato ti consentirà di mantenere il controllo sugli account utente e sui dati di autenticazione sui diversi Sistemi Linux e Unix. È possibile sincronizzare i dati di autenticazione tra i server. Ma non utilizzare il servizio NIS, meglio guardare verso Open DAP.

    Una delle interessanti implementazioni di un tale sistema è Kerberos. Consente agli utenti di essere autenticati utilizzando una chiave segreta su reti in cui i pacchetti possono essere intercettati e modificati. Kerberos utilizza una chiave simmetrica per crittografare i dati e per funzionare richiede un Centro di gestione delle chiavi. È possibile configurare l'accesso remoto, la copia remota, la copia sicura dei file tra i sistemi e altre attività con un elevato livello di sicurezza.

    22. Registrazione e controllo

    Configura la registrazione e il controllo per raccogliere e salvare tutti i tentativi di accesso falliti e i tentativi di hacking. Per impostazione predefinita, tutti i log, o almeno la maggior parte di essi, si trovano nella cartella /var/log/. Più in dettaglio, abbiamo parlato di ciò di cui sono responsabili alcuni in un articolo separato.

    Puoi guardare i log con utilità come logwatch o logcheck. Semplificano notevolmente la lettura dei log. Puoi visualizzare non l'intero file, ma solo gli eventi che ti interessano, così come inviarti una notifica al tuo indirizzo email.

    Monitora il sistema con il servizio auditd. Il programma scrive su disco tutti gli eventi di audit che ti interessano. Tutte le impostazioni di controllo sono memorizzate nel file /etc/audit.rules All'avvio del sistema, il servizio legge tutte le regole da questo file. Puoi aprirlo e configurare tutto ciò di cui hai bisogno o utilizzare un'utilità separata: auditctl. È possibile impostare i seguenti punti:

    • Eventi di avvio e arresto del sistema
    • Data e ora dell'evento
    • Eventi utente (ad esempio, accesso a un file specifico)
    • Tipo di evento (modifica, accesso, cancellazione, scrittura, aggiornamento, ecc.)
    • Successo o fallimento durante l'esecuzione di un evento
    • Registrazione degli eventi di modifica delle impostazioni di rete
    • Registrazione delle modifiche di utenti e gruppi
    • Monitora le modifiche ai file

    23. Proteggi il tuo server OpenSSH

    Consenti solo l'uso del protocollo 2:

    Disabilita l'accesso come superutente:

    24. Installare IDS

    L'IDS o il sistema di rilevamento delle intrusioni tenta di rilevare attività sospette e dannose come Attacco DOS, scansione delle porte o persino tentativi di hackerare il computer monitorando il traffico di rete.

    È buona norma distribuire tale software prima che il sistema sia reso disponibile da Internet. Puoi installare AIDE, è HIDS (IDS basato su host) che può controllare tutti gli aspetti dispositivo interno il tuo sistema.

    Snort è un software di rilevamento delle intrusioni di rete. È in grado di analizzare e registrare i pacchetti e analizzare il traffico di rete in tempo reale.

    25. Proteggi i tuoi file e directory

    Linux ha eccellenti protezioni contro l'accesso non autorizzato ai file. Tuttavia, le autorizzazioni impostate da Linux e sistema di file non significano nulla quando un utente malintenzionato ha accesso fisico a un computer e può semplicemente connettersi HDD computer su un altro sistema per copiare i dati. Ma puoi facilmente proteggere i tuoi file con la crittografia:

    • Per crittografare e decrittografare un file con una password, utilizzare GPG
    • Puoi anche proteggere i file con OpenSSL
    • La crittografia delle directory viene eseguita con ecryptfs
    • TrueCrypt è uno strumento di crittografia del disco gratuito per Windows e Linux

    conclusioni

    Ora la sicurezza del sistema operativo Linux sul tuo computer sarà notevolmente aumentata. Non dimenticare di impostare password complesse di tanto in tanto. Scrivi il tuo strumento di sicurezza del sistema preferito nei commenti.

    In questo articolo, faremo conoscenza con le principali utilità per l'hardening di Linux. In russo, questo si chiama qualcosa come "verificare il livello di sicurezza dei sistemi Linux e valutare la correttezza delle configurazioni in termini di sicurezza delle informazioni". Naturalmente, non solo esamineremo i programmi, ma forniremo anche esempi del loro utilizzo.

    Il tuo revisore o la tua sicurezza

    Gli amministratori, e ancora di più, i revisori IS spesso affrontano il compito di verificare la sicurezza un largo numero host in brevissimo tempo. E, naturalmente, ci sono strumenti specializzati nel segmento Enterprise per risolvere questi problemi, ad esempio, come scanner di sicurezza di rete. Sono sicuro che tutti loro, dalle fonti aperte del motore OpenVAS ai prodotti commerciali come Nessus o Nexpose, siano noti ai nostri lettori. Tuttavia, questo software viene solitamente utilizzato per cercare software obsoleto e quindi vulnerabile e quindi eseguire la gestione delle patch. Inoltre, non tutti gli scanner tengono conto di alcune caratteristiche specifiche dei meccanismi di sicurezza integrati di Linux e di altri prodotti open source. E, ultimo ma non meno importante, il prezzo dell'emissione è importante, perché solo le aziende che allocano budget per questa attività possono permettersi prodotti commerciali.

    Ecco perché oggi parleremo di un set specializzato di utilità distribuite gratuitamente in grado di diagnosticare l'attuale livello di sicurezza del sistema, valutare i potenziali rischi, ad esempio "servizi extra" che sporgono su Internet o una configurazione predefinita non sicura e persino suggerire opzioni per correggere le carenze riscontrate. Un altro vantaggio dell'utilizzo di questi strumenti è la capacità di replicare i tipici script di test farm da qualsiasi numero di sistemi Linux e formare una base di test documentata sotto forma di registri e report separati.

    Aspetti pratici del controllo della sicurezza

    Se guardi attraverso gli occhi del revisore, l'approccio al test può essere suddiviso in due tipi.

    Primo- questa è la conformità ai cosiddetti requisiti di conformità, qui viene verificata la presenza di elementi di sicurezza obbligatori prescritti in qualsiasi standard internazionale o "best practice". Un esempio classico sono i requisiti PCI DSS per i sistemi IT di pagamento, SOX404, serie NIST-800, .

    Secondo- questo è un approccio puramente razionale basato sulla domanda "Cos'altro si può fare per migliorare la sicurezza?". Non ci sono requisiti obbligatori: solo la tua conoscenza, testa brillante e mani abili. Ad esempio, questo sta aggiornando la versione del kernel e / oi pacchetti dell'applicazione, abilitando, forzando, impostando un firewall.

    Tutto ciò che riguarda il secondo approccio è solitamente chiamato termine speciale. indurimento, che possono anche essere definiti come "azioni volte a rafforzare il livello di sicurezza iniziale del sistema operativo (o programma) principalmente con mezzi regolari".

    La conformità ai requisiti di conformità viene solitamente verificata in preparazione al superamento di un audit obbligatorio come PCI DSS o altri audit di certificazione. Presteremo maggiore attenzione alla componente Hardening. Tutti i principali sviluppatori offrono per i loro prodotti Linee guida per l'indurimento- guide contenenti suggerimenti e raccomandazioni su come migliorare la sicurezza, tenendo conto dei normali meccanismi di sicurezza e delle specifiche del software. Quindi, Red Hat, Debian, Oracle, Cisco hanno manuali simili.

    INFORMAZIONI

    Hardening è un termine del mondo della sicurezza delle informazioni, che si riferisce al processo per garantire la sicurezza di un sistema (programma) riducendone la vulnerabilità e, di norma, utilizzando solo utilità o meccanismi di protezione standard.

    sudo apt-get update sudo apt-get install lynis

    E per le distribuzioni orientate a RPM (dopo aver aggiunto i repository appropriati):

    Yum installa linus -y

    Installazione su macOS:

    $ brew cerca lynis $ brew installa lynis

    Per avviare Lynis è sufficiente specificare almeno una chiave. Ad esempio, per eseguire tutti i test disponibili, è necessario specificare l'opzione -c (seleziona tutto, seleziona tutto):

    # Tipica suite di test sudo lynis audit system # Suite di test completa sudo lynis audit system -c # Scansiona un sistema di audit host remoto remoto







    Prima di un audit, è sempre una buona idea verificare se una nuova versione Lynis:

    Informazioni sull'aggiornamento di Lynis e controllo dell'aggiornamento di Lynis

    L'utilità Lynis, oltre a quella standard, ha un'altra modalità: corsa non privilegiata:

    Audit di Lynis --pentest

    Se vuoi inserire il nome dell'auditor che ha iniziato il test, basta aggiungere il parametro -auditor :

    Sudo lynis audit system -c -auditor Papà

    In qualsiasi fase dell'audit, il processo di verifica può essere continuato (Invio) o forzatamente terminato (Ctrl+C). I risultati dei test eseguiti verranno scritti nel log di Lynis in /var/log/lynis.log . Si noti che il registro verrà sovrascritto ogni volta che si avvia l'utility.

    Per testare sistematicamente in modalità automatica, puoi assegnare il lavoro appropriato allo scheduler Cron utilizzando l'opzione -cronjob. In questo caso, l'utility verrà eseguita in base al modello specificato (config) e non visualizzerà alcun messaggio interattivo, domanda o avviso. Tutti i risultati verranno salvati nel registro. Ad esempio, ecco uno script di avvio dell'utilità con una configurazione predefinita una volta al mese:

    #!/bin/sh AUDITOR="automatico" DATE=$(data +%Y%m%d) HOST=$(nome host) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/report-$( HOST).$(DATA)" DATA="$LOG_DIR/report-data-$(HOST).$(DATA).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDITOR)" --cronjob > $(REPORT) mv /var/log/lynis-report.dat $(DATI) # Fine

    Salva questo script nella directory /etc/cron.monthly/lynis. E non dimenticare di aggiungere percorsi per il salvataggio dei log (/usr/local/lynis e /var/log/lynis), altrimenti potrebbe non funzionare correttamente.

    Puoi vedere un elenco di tutti i comandi disponibili per la chiamata:

    Lynis mostra i comandi

    Particolarmente curioso può guardare le impostazioni dalla configurazione predefinita:

    Lynis mostra le impostazioni

    Brevi istruzioni su come lavorare con l'utilità:

    uomo lynis

    Le opzioni per i possibili stati basati sui risultati del controllo sono limitate al seguente elenco: NESSUNO, DEBOLE, FATTO, TROVATO, NON_TROVATO, OK, AVVISO.


    Esecuzione di test individuali in Lynis

    In pratica, potrebbe essere necessario eseguire solo pochi test. Ad esempio, se il tuo server esegue solo le funzioni di Mail Server o Apache. Possiamo usare l'opzione -tests per questo. La sintassi del comando è la seguente:

    Lynis -test "Test-ID"

    Se trovi difficoltà di comprensione a causa dell'elevato numero di ID test, puoi utilizzare il parametro di gruppo -test-category . Con questa opzione, Lynis esegue solo gli ID test che rientrano in una categoria specifica. Ad esempio, prevediamo di eseguire test del firewall e del kernel:

    ./lynis -tests-category "kernel dei firewall"

    Inoltre, la funzionalità di Lynis è estesa da vari plugin che puoi aggiungere da solo o puoi inserirne di nuovi in ​​una directory esistente.

    Suggerimenti per la correzione

    Tutti gli avvisi verranno elencati dopo i risultati. Ognuno inizia con il testo di avviso, poi accanto ad esso è indicato tra parentesi il test che lo ha generato. La riga successiva suggerisce una soluzione al problema, se ne esiste una. In effetti, l'ultima riga è un URL in cui puoi vedere i dettagli e trovare ulteriori consigli su come risolvere il problema.

    Profili

    I profili che gestiscono l'auditing sono definiti nei file con estensione .prf situato nella directory /etc/lynis. Il profilo predefinito è denominato in modo prevedibile: default.prf . Gli sviluppatori sconsigliano di modificarlo direttamente: qualsiasi modifica che si desidera apportare all'audit è meglio aggiungerla al file custom.prf situato nella stessa directory.

    Continua disponibile solo per i membri

    Opzione 1. Unisciti alla community "site" per leggere tutti i materiali sul sito

    L'appartenenza alla comunità durante il periodo specificato ti darà accesso a TUTTI i materiali Hacker, aumenterà il tuo sconto cumulativo personale e ti consentirà di accumulare una valutazione Xakep Score professionale!