Xinetd, o Extended Internet Services Daemon, è un cosiddetto super-server. Puoi configurarlo per l'ascolto al posto di molti servizi e avviare il servizio che dovrebbe gestire una richiesta in arrivo solo quando arriva effettivamente al sistema, risparmiando così risorse. Anche se questo potrebbe non sembrare un grosso problema su un sistema in cui il traffico è relativamente permanente, questo servizio rispetto a un altro approccio presenta alcuni vantaggi evidenti, come la registrazione o il controllo dell'accesso.
In questo articolo installeremo xinetd su un RHEL 8 / CentOS 8 e inseriremo sshd
demone sotto la sua cura. Dopo aver verificato la configurazione, modificheremo un po' la configurazione per vedere il controllo di accesso in azione.
In questo tutorial imparerai:
- Come installare xinetd
- Come configurare sshd su RHEL 8 / CentOS 8 come servizio xinetd
- Come consentire l'accesso solo da una rete specifica al servizio sshd da xinetd
- Come controllare il traffico dalle voci di log di xinetd
Consentire l'accesso da un determinato segmento di rete a sshd.
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | xinetd 2.3.15-23, OpenSSH 7.8p1 |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Come installare il servizio xinetd in Red Hat 8 istruzioni dettagliate
Xinetd
può essere trovato nei repository di base dopo aver impostato i repository ufficiali di gestione delle sottoscrizioni. Il sshd
il server è installato per impostazione predefinita su qualsiasi Red Hat (e praticamente su qualsiasi distribuzione Linux).
Tieni presente che
sshd
sarà disattivato durante questa configurazione. NON provare a completare questa guida su un sistema a cui puoi accedere solo con ssh, altrimenti perderai la connessione al sistema nel momento in cui spegni sshd per avviare il server xinetd.- Per prima cosa dobbiamo installare
xinetd
demone. Useremodnf
:# dnf install xinetd
- Se per qualche motivo il tuo sistema non contiene l'installazione di OpenSSH, puoi installare pacchetti come in questo caso
openssh
pacchetto come sopra:# dnf install openssh
- Xinetd viene fornito con un file di configurazione predefinito
/etc/xinetd.conf
, oltre ad alcuni ottimi esempi nel/etc/xinetd.d/
directory, tutto disabilitato per impostazione predefinita. Con un editor di testo comevi
onano
, creiamo un nuovo file di testo/etc/xinetd.d/ssh
con il seguente contenuto (notare che la nuova riga dopo il nome del servizio è obbligatoria):service ssh { disable = no socket_type = stream protocol = tcp port = 22 wait = no user = root server = /usr/sbin/sshd server_args = -i }
- Se il
sshd
server è in esecuzione sul sistema, dobbiamo fermarlo, altrimentixinetd
impossibile collegarsi alla porta TCP 22. Questo è il passaggio in cui verrai disconnesso se hai effettuato l'accesso tramite ssh.# systemctl stop sshd
Se prevediamo di utilizzare sshd su xinetd a lungo termine, possiamo anche disabilitare
systemd
service per esso, per impedirne l'avvio all'avvio:systemctl disable sshd
- Ora possiamo avviare
xinetd
:# systemctl start xinetd
E facoltativamente abilita l'avvio all'avvio:
# systemctl enable xinetd
- Dopo l'avvio di xinetd, possiamo accedere tramite ssh, poiché la nostra configurazione di base non contiene alcuna restrizione aggiuntiva. Per testare il servizio, chiediamo il login su
localhost
:# ssh localhost root@localhost's password: Last login: Sun Mar 31 17:30:07 2019 from 192.168.1.7 #
- Aggiungiamo un'altra riga a
/etc/xinetd.d/ssh
, appena prima del braccialetto di chiusura:[...] server = /usr/sbin/sshd server_args = -i only_from = 192.168.0.0 }
Con questa impostazione, limitiamo l'accesso solo dal segmento di rete 192.168.*.*. È necessario riavviare xinetd affinché questa modifica alla configurazione abbia effetto:
# systemctl restart xinetd
- La nostra macchina da laboratorio ha più di un'interfaccia. Per testare la restrizione di cui sopra, proveremo a connetterci per connetterci a un'interfaccia che non è consentita dalla configurazione di xinetd e una che è effettivamente consentita:
# hostname -i fe80::6301:609f:4a45:1591%enp0s3 fe80::6f06:dfde:b513:1a0e%enp0s8 10.0.2.15 192.168.1.14 192.168.122.1
Proveremo ad aprire la connessione dal sistema stesso, quindi il nostro indirizzo IP di origine sarà lo stesso della destinazione a cui stiamo cercando di connetterci. Pertanto, quando proviamo a connetterci a
10.0.2.15
, non siamo autorizzati a connetterci:# ssh 10.0.2.15 ssh_exchange_identification: read: Connection reset by peer
Mentre l'indirizzo
192.168.1.14
rientra nell'intervallo di indirizzi consentito. Riceveremo la richiesta della password e potremo accedere:# ssh 192.168.1.14 [email protected]'s password:
- Dato che non abbiamo modificato la configurazione di registrazione predefinita, i nostri tentativi di accesso (o in altre parole, i nostri tentativi di accesso al servizio xinetd) verranno registrati su
/var/log/messages
. Le voci di registro possono essere trovate con un semplicegrep
:cat /var/log/messages | grep xinetd Mar 31 18:30:13 rhel8lab xinetd[4044]: START: ssh pid=4048 from=::ffff:10.0.2.15 Mar 31 18:30:13 rhel8lab xinetd[4048]: FAIL: ssh address from=::ffff:10.0.2.15 Mar 31 18:30:13 rhel8lab xinetd[4044]: EXIT: ssh status=0 pid=4048 duration=0(sec) Mar 31 18:30:18 rhel8lab xinetd[4044]: START: ssh pid=4050 from=::ffff:192.168.1.14
Questi messaggi rendono facile sapere come si accede ai nostri servizi. Sebbene ci siano molte altre opzioni (inclusa la limitazione delle connessioni simultanee o l'impostazione di timeout dopo connessioni non riuscite per prevenire attacchi DOS), si spera che questa semplice configurazione mostri la potenza di questo super-server che può semplificare la vita dell'amministratore di sistema, particolarmente affollato, rivolto a Internet sistemi.