GNU/Linux >> Linux Esercitazione >  >> Linux

Limita l'accesso ai server Linux utilizzando i wrapper TCP

Involucro TCP è un sistema ACL (Access Control List) basato su host open source, utilizzato per limitare i servizi di rete TCP in base al nome host, all'indirizzo IP, all'indirizzo di rete e così via. Decide quale host dovrebbe essere autorizzato ad accedere a un servizio di rete specifico. TCP Wrapper è stato sviluppato da un programmatore e fisico olandese Wietse Zweitze Venema nel 1990 presso l'Università di Tecnologia di Eindhoven. Lo ha mantenuto fino al 1995 e poi lo ha rilasciato sotto licenza BSD nel 2001. In questa breve guida, spiegherò come limitare l'accesso ai server Linux usando TCP Wrapper.

Tieni presente che TCP Wrapper non è un sostituto completo del firewall correttamente configurato . È solo un'aggiunta preziosa per migliorare la sicurezza del tuo server Linux. Si consiglia di utilizzarlo insieme a un firewall completamente configurato e ad altri meccanismi e strumenti di sicurezza.

Installa wrapper TCP

TCP Wrappers è disponibile nei repository ufficiali della maggior parte dei sistemi operativi Linux.

A seconda della distribuzione Linux in uso, può essere installato come mostrato di seguito.

Sui sistemi basati su Arch:

$ sudo pacman -S tcp_wrappers

Sui sistemi basati su YUM:

$ sudo yum install tcp_wrappers

Sui sistemi basati su APT:

$ sudo apt-get install tcp_wrappers

Sui sistemi SUSE/openSUSE:

$ sudo zypper in tcp_wrappers

Limita l'accesso ai server Linux utilizzando i wrapper TCP

Configurazione

TCP Wrapper implementa il controllo degli accessi con l'aiuto di due file di configurazione:/etc/hosts.allow e /etc/hosts.deny . Questi due file dell'elenco di controllo dell'accesso decidono se i client specifici possono accedere o meno al tuo server Linux.

Il file /etc/hosts.allow

Questo file contiene l'elenco di host o reti consentiti o non consentiti. Significa che possiamo consentire o negare le connessioni ai servizi di rete definendo le regole di accesso in questo file.

Il file /etc/hosts.deny

Questo file contiene l'elenco di host o reti a cui non è consentito accedere al server Linux. Le regole di accesso in questo file possono anche essere impostate in /etc/hosts.allow con un 'nega' opzione.

La sintassi tipica per definire una regola di accesso è:

daemon_list : client_list : option : option ...

Dove,

  • lista_demoni - Il nome di un servizio di rete come SSH, FTP, Portmap ecc.
  • elenco_clienti - L'elenco separato da virgole di nomi host, indirizzi IP o indirizzi di rete validi.
  • opzioni - Un'azione facoltativa che specifica qualcosa da fare ogni volta che una regola viene soddisfatta.

La sintassi è la stessa per entrambi i file.

Regole da ricordare

Prima di utilizzare TCP Wrapper, è necessario conoscere le seguenti regole importanti. Tieni presente che il TCP Wrapper consulta solo questi due file (hosts.allow e hosts.deny).

  • Le regole di accesso nel file /etc/hosts.allow vengono applicate per prime. Hanno la precedenza sulle regole nel file /etc/hosts.deny. Pertanto, se l'accesso a un servizio è consentito in /etc/hosts.allow file e una regola che nega l'accesso allo stesso servizio in /etc/hosts.deny viene ignorato.
  • È consentita una sola regola per servizio in entrambi i file (hosts.allow e hosts.deny).
  • L'ordine delle regole è molto importante. Verrà presa in considerazione solo la prima regola di corrispondenza per un determinato servizio. Lo stesso vale per entrambi i file.
  • Se non ci sono regole di corrispondenza per un servizio in nessuno dei file o se nessuno dei due file esiste, l'accesso al servizio sarà concesso a tutti gli host remoti.
  • Qualsiasi modifica in entrambi i file avrà effetto immediato senza riavviare i servizi di rete.

L'approccio consigliato per proteggere il tuo server

In genere, la procedura migliore per proteggere un server Linux è bloccare tutte le connessioni in entrata e consentire solo pochi host o reti specifici. Per farlo, modifica /etc/hosts.deny file:

$ sudo vi /etc/hosts.deny

Aggiungi la riga seguente. Questa linea rifiuta le connessioni a TUTTI i servizi e TUTTE le reti.

ALL: ALL

Quindi, modifica /etc/hosts.allow file:

$ sudo vi /etc/hosts.allow

e consenti gli host o le reti specifici di tua scelta.

sshd: 192.168.43.192 192.168.43.193

Inoltre, puoi specificare nomi host validi invece dell'indirizzo IP come mostrato di seguito.

sshd: server1.ostechnix.lan server2.ostechnx.lan

In alternativa, puoi fare lo stesso definendo tutte le regole (consenti e nega) nel file /etc/hosts.allow stesso.

Modifica /etc/hosts.allow file e aggiungi le seguenti righe.

sshd: 192.168.43.192 192.168.43.193
sshd: ALL: DENY

Non è necessario specificare alcuna regola in /etc/hosts.deny file.

Secondo la regola precedente, tutte le connessioni in entrata verranno negate per tutti gli host eccetto i due host 192.168.43.192, 192.168.43.193.

Ora, prova a eseguire l'SSH sul tuo server Linux da qualsiasi host tranne gli host precedenti, riceverai il seguente errore.

ssh_exchange_identification: read: Connection reset by peer

Puoi verificarlo dai file di registro del tuo server Linux come mostrato di seguito.

$ cat /var/log/secure

Risultato di esempio:

Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)

Allo stesso modo, puoi definire regole per altri servizi, ad esempio vsftpd, in /etc/hosts.allow file come mostrato di seguito.

vsftpd: 192.168.43.192 
vsftpd: ALL: DENY

Anche in questo caso, non è necessario definire alcuna regola in /etc/hosts.deny file. Secondo la regola precedente, un host remoto con indirizzo IP 192.168.43.192 può accedere al server Linux tramite FTP. Tutti gli altri host verranno rifiutati.

Inoltre, puoi definire le regole di accesso in diversi formati nel file /etc/hosts.allow come mostrato di seguito.

sshd: 192.168.43.192				#Allow a single host for SSH service
sshd: 192.168.43.0/255.255.255.0		#Allow a /24 prefix for SSH
vsftpd: 192.168.43.192				#Allow a single host for FTP
vsftpd: 192.168.43.0/255.255.255.0	        #Allow a /24 prefix for FTP
vsftpd: server1.ostechnix.lan                   #Allow a single host for FTP

Consenti tutti gli host tranne un host specifico

Puoi consentire connessioni in entrata da tutti gli host, ma non da un host specifico. Supponiamo, ad esempio, di consentire le connessioni in entrata da tutti gli host nel 192.168.43 sottorete, ma non dall'host 192.168.43.192 , aggiungi la seguente riga in /etc/hosts.allow file.

ALL: 192.168.43. EXCEPT 192.168.43.192

Nel caso precedente, non è necessario aggiungere alcuna regola nel file /etc/hosts.deny.

Oppure puoi specificare il nome host invece dell'indirizzo IP come mostrato di seguito.

ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan

Per maggiori dettagli, fare riferimento alle pagine man.

$ man tcpd

Leggi anche: 

  • Consenti o nega l'accesso SSH a un particolare utente o gruppo in Linux
  • Limita il numero di accessi SSH per utente/gruppo/sistema

Ancora una volta, non dimentichiamo che TCP Wrapper non sostituisce un firewall. Dovrebbe essere utilizzato insieme a firewall e altri strumenti di sicurezza.


Linux
  1. Opzioni di comando TCP Wrapper (hosts.allow e hosts.deny) in Linux

  2. Comprensione dei wrapper TCP (/etc/hosts.allow &/etc/hosts.deny) in Linux

  3. Comprensione del file /etc/hosts in Linux

  4. Perché sono necessari < o > per usare /dev/tcp

  5. Nel mio file /etc/hosts/ su Linux/OSX, come creo un sottodominio con caratteri jolly?

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

Linux:come limitare l'accesso a Internet per un particolare utente sulla LAN utilizzando Iptables in Linux?

Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

Come viene aggiornato /etc/motd?

Utilizzo di Ajenti nella gestione dei server Linux