6.7 KiB
Porte SSH
1. Configurazione porte SSH alterative
Per aggiungere una nuova porta al servizio SSH di OpenSSH è necessario
-
Abilitare la porta in SELinux, se è attivo.
-
Aprire la porta nel firewall, se attivo.
-
Aggiungere la porta alla configurazione di OpenSSH.
L’aggiunta di una nuova porta, eventualmente sostitutiva di quella predefinita 22, ha lo scopo di ridurre la possibilità di violazione del servizio SSH esposto su Internet. Pertanto, le operazioni descritte sono orientate alla configurazione del servizio rispetto all’interfaccia di rete esposta sulla rete considerata ostile, in particoalre Internet.
1.1. Verifica delle porte SSH
Usare il comando netstat con l’account root:
[root@fedserv ~]# netstat -tunlp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 813/sshd: /usr/sbin
tcp6 0 0 :::22 :::* LISTEN 813/sshd: /usr/sbin
1.2. Configurazione SELinux
Usare il comando semanage con l’account root.
[root@fedserv ~]# semanage port -l | grep ssh
ssh_port_t tcp 22
[root@fedserv ~]# semanage port -a -p tcp -t ssh_port_t 2222
# Verifica
[root@fedserv ~]# semanage port -l | grep ssh
ssh_port_t tcp 2222, 22
[root@fedserv ~]# semanage port -d -t ssh_port_t -p tcp 2222
Le indicazioni per l’abilitazione SELinux di porte SSH alterative sono riportate anche nel file di configurazione del servizio di OpenSSH # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 |
1.3. Configurazione firewall
La configurazione del firewall potrebbe non essere necessaria se la zona attiva sull’interfaccia di rete considerata comprende già la porta da aprire.
Si consideri la seguente configurazione predefinita estratta dal mini-pc minis nel quale è installato il software di virtualizzazione.
Il filtro grep seleziona l’output del comando firewall-cmd a partire dalle righe che contengono la paraola active e le successive 13 righe. |
[camoroso@minis ~]$ firewall-cmd --list-all-zones |grep -A 13 active
FedoraWorkstation (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: dhcpv6-client mdns samba samba-client ssh
ports: 1025-65535/udp 1025-65535/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
--
libvirt (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: virbr0
sources:
services: dhcp dhcpv6 dns ssh tftp
ports:
protocols: icmp ipv6-icmp
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
L’output mostra che risultano attive due zone: FedoraWorkstation e libvirt. La prima è associata all’interfaccia di rete fisica enp3s0; la seconda all’interfaccia virtuale virtbr0 (bridge) definita dal virtualizzatore per le connessioni fra macchine virtuali.
Il caso d’interesse è evidentemente quello che consente l’accesso SSH da Internet, ovvero, in questo caso, all’interfaccia di rete fisica enp3s0. La zona attiva su quest’interfaccia, FedoraWorkStation prevede già l’apertura delle porte di valore uguale o superiore a 1025 e, quindi, della porta scelta 2222.
Se la zona attiva sull’interfaccia esterna non prevedesse già l’apertura della porta d’interesse, provvedere all’apertura con i seguenti comandi.
# Configurazione peristente del firewall
[root@minis ~]# firewall-cmd --permanent --service="ssh" --add-port="2222/tcp"
# Attivazione della configurazione
[root@minis ~]# firewall-cmd --reload
1.4. Configurazione servizio SSH
La configurazione del servizio SSH di OpenSSH è normalmente definita nel file /etc/ssh/sshd_config
. Il numero di porta d’ascolto per le richieste di connessione si imposta con il parametro Port
; questo parametro può essere utilizzato più volte per attivare altrettante porte d’ascolto.
Quando si imposta una porta diversa da quella predefinita (22), quest’ultima non è più attivata, a meno di aggiungere esplicitamente l’importazione Port 22 .
|
A partire da OpenSSH v8.2 è possibile definire porzioni di configurazione in file dedicati che il programma sshd può incorporare nella configurazione principale mediante la paraola chiave Include. Nel file di configurazione principale è presente la dichiarazione
# To modify the system-wide sshd configuration, create a *.conf file under
# /etc/ssh/sshd_config.d/ which will be automatically included below
Include /etc/ssh/sshd_config.d/*.conf
Quindi, piuttosto che modificare il file di configurazione principale, conviene creare un file dedicato, ad esempio /etc/ssh/sshd_config.d/alternate_port.conf
con il seguente contenuto:
# Alternate listenting port
# C. Amoroso, 21/08/2023
Port 2222
1.5. Configurazione systemd
Per il sistema operativo Fedora, e presumibilmente per altri basati su systemd, è presente una specifica configurazione per il servizio sshd. Non mi è ancora chiaro se e quando va impostata. Probabilmente tale configurazione entra in gioco quando si utilizza il super-demone Internet di systemd invece del listener di sshd.
Il comando per l’impostazione è il seguente.
[root@minis ~]# systemctl edit sshd.socket
Successfully installed edited file '/etc/systemd/system/sshd.socket.d/override.conf'.
Nel mini-pc ho impostato la configurazione come segue:
[root@minis ~]# cat /etc/systemd/system/sshd.socket.d/override.conf
[Socket]
ListenStream=2222
Ribadisco che, almendo rispetto all’uso standard di sshd, non rilevo differenze di comportamento agendo sulla configurazione systemd.
Celestino Amoroso
celestino . amoroso @ gmail . com
