197 lines
6.7 KiB
Plaintext
197 lines
6.7 KiB
Plaintext
# Porte SSH
|
|
Sottotitolo documento
|
|
:authors: Celestino Amoroso
|
|
:docinfo: shared
|
|
:encoding: utf-8
|
|
:toc: right
|
|
:toclevels: 4
|
|
:toc-title: Indice Generale
|
|
:icons: font
|
|
:icon-set: fi
|
|
:numbered:
|
|
:table-caption: Tabella
|
|
:figure-caption: Diagramma
|
|
:docinfo1:
|
|
:sectlinks:
|
|
:sectanchors:
|
|
:source-highlighter: rouge
|
|
// :rouge-style: ThankfulEyes
|
|
:rouge-style: gruvbox
|
|
// :rouge-style: colorful
|
|
//:rouge-style: monokay
|
|
|
|
toc::[]
|
|
|
|
## 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.
|
|
|
|
### Verifica delle porte SSH
|
|
Usare il comando _netstat_ con l'account _root_:
|
|
|
|
[source,bash]
|
|
----
|
|
[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
|
|
----
|
|
|
|
### Configurazione SELinux
|
|
Usare il comando _semanage_ con l'account _root_.
|
|
|
|
.Verifica porte abilitate in SELInux per il servizio SSH
|
|
[source,bash]
|
|
----
|
|
[root@fedserv ~]# semanage port -l | grep ssh
|
|
ssh_port_t tcp 22
|
|
----
|
|
|
|
.Abilitazione porta alternativa, ad es. 2222
|
|
[source,bash]
|
|
----
|
|
[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 dall'abilitazione SELinux
|
|
[source,bash]
|
|
----
|
|
[root@fedserv ~]# semanage port -d -t ssh_port_t -p tcp 2222
|
|
----
|
|
|
|
[TIP]
|
|
====
|
|
Le indicazioni per l'abilitazione SELinux di porte SSH alterative sono riportate anche nel file di configurazione del servizio di OpenSSH `/etc/ssh/sshd_config`:
|
|
|
|
[shell,sh]
|
|
----
|
|
# 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
|
|
----
|
|
|
|
====
|
|
|
|
### 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.
|
|
|
|
TIP: Il filtro _grep_ seleziona l'output del comando _firewall-cmd_ a partire dalle righe che contengono la paraola _active_ e le successive 13 righe.
|
|
|
|
[source,bash]
|
|
----
|
|
[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.
|
|
|
|
.Apertura porta firewall
|
|
[source,ssh]
|
|
----
|
|
# Configurazione peristente del firewall
|
|
[root@minis ~]# firewall-cmd --permanent --service="ssh" --add-port="2222/tcp"
|
|
|
|
# Attivazione della configurazione
|
|
[root@minis ~]# firewall-cmd --reload
|
|
----
|
|
|
|
### 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.
|
|
|
|
NOTE: 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
|
|
|
|
[source,ssh]
|
|
----
|
|
# 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*
|
|
[source,ssh]
|
|
----
|
|
# Alternate listenting port
|
|
# C. Amoroso, 21/08/2023
|
|
Port 2222
|
|
----
|
|
|
|
|
|
### 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.
|
|
|
|
[source,sh]
|
|
----
|
|
[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:
|
|
|
|
[source,conf]
|
|
----
|
|
[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*
|
|
|
|
image::https://gravatar.com/avatar/88d204d546890e5d89073fb1cec29fe9.png?size=48[]
|