Documenti ripartiti in directory tematiche
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
# Porte SSH
|
||||
:author: C. Amoroso (celestino.amoroso@gmail.com)
|
||||
|
||||
## 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_.
|
||||
Reference in New Issue
Block a user