Jeg har lige sat VPN op til vores lokale netværk, og dermed er der ingen grund til at have ssh til at lytte efter indkommende forbindelser udefra.
Kun een af serverne lytter på en ikke-standard ssh port, bare for at have en bagvej ind, hvis jeg ikke har mulighed for at bruge VPN eller VPN-serveren er gået ned.
Normalt lytter ssh på alle interfaces på port 22:
1 2 3 4 5 6 |
# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name [...] tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 481/sshd: /usr/sbin [...] |
Først skal vi finde den lokale ip adresse for denne maskine. Det gøres let med ifconfig
og i dette tilfælde hedder den 10.42.24.4.
Herefter åbnes sshd’s konfigurationsfil hvor vi skriver denne ip ud for ListenAddress
– Husk at fjerne havelågen (#) foran linien:
1 2 3 4 5 6 7 |
#/etc/ssh/sshd_config #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: ListenAddress 10.42.24.4 |
Tip: Jeg havde på et tidspunkt brug for at rsync’e nogle filer fra en ekstern kilde. Da valgte jeg at åbne på det offentlige interface på een port, og stadig tillade adgang internt på port 22. Herefter lagde jeg en regel ind i UFW der kun tillod adgang på port 54124 fra denne specifikke eksterne kilde:
1 2 |
ListenAddress [0.0.0.0]:54124 ListenAddress [10.42.24.4]:22 |
Gem og genstart ssh:
1 |
service ssh restart |
Nu skulle du gerne se at ssh kun lytter på serverens lokale ip:
1 2 3 4 5 6 |
# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name [...] tcp 0 0 10.42.24.4:22 0.0.0.0:* LISTEN 23585/sshd: /usr/sb [...] |
…og jeg behøver vel ikke minde mig selv om her, at denne her øvelse naturligvis kun bør foregå hvis man selv befinder sig på det lokale netværk, evt. via en VPN forbindelse 🙂