linux/SSH/sshd_add_ports.adoc

6.7 KiB
Raw Permalink Blame History

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.

Laggiunta 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 allinterfaccia di rete esposta sulla rete considerata ostile, in particoalre Internet.

1.1. Verifica delle porte SSH

Usare il comando netstat con laccount 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 laccount root.

Verifica porte abilitate in SELInux per il servizio SSH
[root@fedserv ~]# semanage port -l | grep ssh
ssh_port_t                    tcp      22
Abilitazione porta alternativa, ad es. 2222
[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
Comando per la rimozione di una porta dallabilitazione SELinux
[root@fedserv ~]# semanage port -d -t ssh_port_t -p tcp 2222

Le indicazioni per labilitazione SELinux di porte SSH alterative sono riportate anche nel file di configurazione del servizio di OpenSSH /etc/ssh/sshd_config:

# 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 sullinterfaccia 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 loutput 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:

Loutput mostra che risultano attive due zone: FedoraWorkstation e libvirt. La prima è associata allinterfaccia di rete fisica enp3s0; la seconda allinterfaccia virtuale virtbr0 (bridge) definita dal virtualizzatore per le connessioni fra macchine virtuali.

Il caso dinteresse è evidentemente quello che consente laccesso SSH da Internet, ovvero, in questo caso, allinterfaccia di rete fisica enp3s0. La zona attiva su questinterfaccia, FedoraWorkStation prevede già lapertura delle porte di valore uguale o superiore a 1025 e, quindi, della porta scelta 2222.

Se la zona attiva sullinterfaccia esterna non prevedesse già lapertura della porta dinteresse, provvedere allapertura con i seguenti comandi.

Apertura porta firewall
# 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 dascolto per le richieste di connessione si imposta con il parametro Port; questo parametro può essere utilizzato più volte per attivare altrettante porte dascolto.

Quando si imposta una porta diversa da quella predefinita (22), questultima non è più attivata, a meno di aggiungere esplicitamente limportazione 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:

Configurazione porta in alternate_port.conf
# 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 limpostazione è 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 alluso standard di sshd, non rilevo differenze di comportamento agendo sulla configurazione systemd.


Celestino Amoroso
celestino . amoroso @ gmail . com

88d204d546890e5d89073fb1cec29fe9