Cicle formatiu: Administració de sistemes informàtics en xarxa (ASIX)
Mòdul: 0374. Administració de sistemes operatius
En un entorn professional real, un administrador de sistemes gestiona desenes o centenars de servidors i estacions de treball que, majoritàriament, no té davant seu físicament. Poden estar en un CPD a un altre edifici, en un datacenter a un altre país o en el núvol.
L’administració remota permet:
Però també introdueix riscos de seguretat importants: si algú intercepta o suplanta una connexió d’administració remota, obté el control del sistema. Per això, tota la resta d’aquest document gira al voltant d’un principi central:
L’administració remota mai s’ha de fer amb protocols que transmetin credencials o dades en text pla. La comoditat no pot anar per davant de la seguretat.
Hi ha dues grans famílies de mètodes d’accés remot:
Ofereixen una línia d’ordres remota, sense interfície gràfica. Són lleugers, ràpids i ideals per a servidors sense entorn gràfic (headless).
| Protocol | Port | Xifrat? | Ús recomanat |
|---|---|---|---|
| Telnet | TCP/23 | No | Obsolet, només per a proves de connectivitat de ports |
| rlogin / rsh | TCP/513, 514 | No | Obsolet, no s’ha d’utilitzar |
| SSH | TCP/22 | Sí | Estàndard actual en Linux/Unix i també disponible a Windows |
| WinRM (mode text via PowerShell Remoting) | TCP/5985 (HTTP) / 5986 (HTTPS) | (5986) | Estàndard a Windows |
Ofereixen una interfície gràfica completa, com si l’usuari estigués assegut físicament davant l’equip.
| Protocol | Port | Xifrat? | Plataforma |
|---|---|---|---|
| RDP (Remote Desktop Protocol) | TCP/3389 | Sí (TLS/CredSSP) | Windows (nadiu), Linux via xrdp |
| VNC (Virtual Network Computing) | TCP/5900+ | Depèn de la implementació | Multiplataforma |
| Spice | TCP/5900 (variable) | Depèn | Virtualització (KVM/Proxmox) |
És fonamental que un tècnic sàpiga identificar quins ports ha d’obrir al tallafoc per a cada servei:
SSH TCP/22
Telnet TCP/23 (a evitar)
RDP TCP/3389
VNC TCP/5900 + N (display 0 = 5900, display 1 = 5901...)
WinRM HTTP TCP/5985
WinRM HTTPS TCP/5986Recorda que canviar el port per defecte d’un servei (per exemple, SSH al port 2222) no és una mesura de seguretat real (és “seguretat per obscuritat”), sinó només una manera de reduir soroll d’escanejos automàtics. La seguretat real ve de l’autenticació forta i el xifratge.
Aquest és un concepte clau que sovint es confon:
Mantenen un estat persistent de la connexió mentre dura la interacció: l’usuari s’autentica una vegada i, mentre la sessió estigui oberta, el sistema recorda qui és, quin directori de treball té, quines variables d’entorn s’han definit, etc.
Exemples: SSH, RDP, VNC, Telnet, una sessió de
PowerShell Remoting interactiva (Enter-PSSession).
Característiques:
tmux, screen o RDP amb reconnexió ho
pal·lien).Cada petició és independent de les anteriors; el servidor no manté un estat de “qui està connectat” entre peticions.
Exemples: Invoke-Command de PowerShell
contra un equip remot sense obrir una sessió persistent, crides SNMP,
una petició HTTP puntual a una API REST d’administració (com
Redfish/iDRAC/iLO), ssh servidor "ordre" executant una
única ordre i tancant.
Característiques:
cron, sistemes d’orquestració
(Ansible, que de fet fa servir SSH però de forma no
interactiva/orientada a tasca).Tant Linux com Windows Server porten “de fàbrica” (o quasi) eines d’administració remota, sense necessitat d’instal·lar programari de tercers.
sshd): pràcticament
l’estàndard universal. Sol venir preinstal·lat o disponible als dipòsits
oficials.systemctl status nginx executat via
SSH).En un domini Active Directory com THOS.LOCAL, les eines
RSAT (Remote Server Administration Tools) permeten gestionar
els controladors de domini (per exemple SRV-DC01) des d’una
estació de treball client, sense necessitat d’obrir una sessió RDP al
servidor.
sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable --now ssh
sudo systemctl status sshComprovació que el servei escolta al port corresponent:
sudo ss -tuln | grep :22Fitxer de configuració principal: /etc/ssh/sshd_config.
Alguns paràmetres crítics de seguretat:
Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3Després de qualsevol canvi:
sudo sshd -t # verifica sintaxi abans de reiniciar
sudo systemctl restart sshsudo apt install xrdp -y
sudo systemctl enable --now xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdpObertura del tallafoc (UFW):
sudo ufw allow 3389/tcpPer PowerShell (útil quan no tenim accés gràfic previ, per exemple en un Server Core):
# Activa l'escriptori remot
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# Habilita l'autenticació a nivell de xarxa (NLA) - recomanat
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 1
# Obre el tallafoc
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"# Configuració ràpida (entorn de domini/prova)
Enable-PSRemoting -Force
# Comprovar l'estat del servei
Get-Service WinRM
# Llistar els listeners actius
winrm enumerate winrm/config/listenerPer a un entorn de producció, cal configurar el listener amb HTTPS i un certificat vàlid en lloc del HTTP per defecte (vegeu apartat 9).
Enable-PSRemoting -Force configura per defecte un
listener HTTP (port 5985) sense xifratge de transport
addicional (encara que l’autenticació Kerberos/NTLM xifra les
credencials, el contingut de la sessió no va xifrat amb TLS). En
producció, configura sempre un listener HTTPS.
# Connexió bàsica
ssh usuari@srv-web01.thos.local
# Connexió amb clau privada específica i port no estàndard
ssh -i ~/.ssh/id_ed25519 -p 2222 usuari@10.0.10.15
# Executar una única ordre remota (no orientat a sessió)
ssh usuari@srv-web01 "df -h && uptime"
# Copiar fitxers (SCP)
scp informe.pdf usuari@srv-fs01.thos.local:/home/usuari/
# Transferència interactiva (SFTP)
sftp usuari@srv-fs01.thos.localGeneració de claus per a autenticació sense contrasenya:
ssh-keygen -t ed25519 -C "ramon@thos.local"
ssh-copy-id usuari@srv-web01.thos.local# Sessió interactiva (orientat a sessió)
Enter-PSSession -ComputerName SRV-DC01
# Execució d'una ordre puntual en múltiples equips (no orientat a sessió)
Invoke-Command -ComputerName SRV-DC01, SRV-FS01 -ScriptBlock { Get-Service | Where-Object Status -eq 'Running' }
# Sessió persistent reutilitzable (millor rendiment en múltiples ordres)
$sessio = New-PSSession -ComputerName SRV-DC01
Invoke-Command -Session $sessio -ScriptBlock { Get-Process }
Remove-PSSession $sessio| Eina | Plataforma origen | Plataforma destí | Ús |
|---|---|---|---|
Connexió a Escriptori remot (mstsc) |
Windows | Windows | RDP nadiu |
| Remmina | Linux | Windows/Linux/VNC | Client multiprotocol (RDP, VNC, SSH) |
| PuTTY | Windows | Linux/Unix | Client SSH clàssic |
| Windows Admin Center | Navegador | Windows Server | Gestió web centralitzada |
| Cockpit | Navegador | Linux | Gestió web (serveis, xarxa, logs, actualitzacions) |
| RSAT | Windows | Active Directory / DNS / DHCP | Consoles MMC remotes |
Un principi essencial de seguretat: mai s’ha d’administrar
remotament amb el compte root o Administrator
directament. Cal crear comptes nominals amb privilegis elevats
controlats.
# Crear l'usuari
sudo adduser jsanchez
# Afegir-lo al grup amb permisos d'escalada (sudo a Debian/Ubuntu)
sudo usermod -aG sudo jsanchez
# Restringir l'accés SSH només a un grup concret
sudo groupadd sshusers
sudo usermod -aG sshusers jsanchezA /etc/ssh/sshd_config:
AllowGroups sshusers# Crear l'usuari
New-LocalUser -Name "jsanchez" -Description "Tècnic de suport remot" -NoPassword:$false
# Afegir-lo al grup local d'usuaris d'escriptori remot
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "jsanchez"
# En entorn de domini (THOS.LOCAL), es faria amb els cmdlets d'AD:
New-ADUser -Name "Joan Sanchez" -SamAccountName "jsanchez" -Enabled $true
Add-ADGroupMember -Identity "Remote Desktop Users" -Members "jsanchez"Per a l’accés a WinRM/PowerShell Remoting, l’usuari
ha de pertànyer al grup local Remote Management Users (o
ser administrador), a més de tenir permisos concedits explícitament si
es restringeix per Set-PSSessionConfiguration.
Un dels reptes reals en entorns empresarials mixtos és connectar sistemes Windows i Linux entre si.
Client SSH nadiu (Windows 10/11 i Windows Server, des de PowerShell):
ssh jsanchez@srv-web01.thos.local
scp .\informe.pdf jsanchez@srv-fs01.thos.local:/home/jsanchez/Amb PuTTY (interfície gràfica): cal indicar l’adreça IP/nom, el port 22 i el tipus de connexió SSH.
RDP des de Linux amb xfreerdp (línia d’ordres) o
Remmina (gràfic):
sudo apt install freerdp2-x11 -y
xfreerdp /u:jsanchez /p:'ContrasenyaSegura!' /v:srv-dc01.thos.local /cert:ignorePowerShell Remoting des de Linux (PowerShell 7 és multiplataforma):
sudo apt install -y powershell
pwsh# Dins de pwsh, connectant a un Windows amb WinRM configurat sobre HTTPS
$cred = Get-Credential
New-PSSession -ComputerName srv-dc01.thos.local -UseSSL -Credential $cred| Origen | Destí | Protocol | Eina |
|---|---|---|---|
| Linux | Linux | SSH | ssh, scp |
| Windows | Linux | SSH | client SSH nadiu de Windows, PuTTY |
| Linux | Windows | RDP | xfreerdp, Remmina |
| Linux | Windows | WinRM | PowerShell 7 (pwsh) |
| Windows | Windows | RDP | mstsc |
| Windows | Windows | WinRM | Enter-PSSession, Invoke-Command |
Totes les credencials i dades que circulen per la xarxa durant una sessió d’administració remota han d’anar xifrades, per evitar atacs de tipus sniffing o man-in-the-middle.
El xifratge és nadiu al protocol. Bones pràctiques:
# /etc/ssh/sshd_config
Protocol 2
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
KexAlgorithms curve25519-sha256
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512Cal forçar el nivell de xifratge i exigir NLA (Network Level Authentication), que autentica l’usuari abans d’establir la sessió completa d’escriptori, reduint la superfície d’atac:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "MinEncryptionLevel" -Value 3 # AltCal un certificat (idealment emès per la CA interna del domini, com
la que es pot desplegar amb AD CS a THOS.LOCAL):
# Crear el listener HTTPS amb un certificat ja instal·lat (Thumbprint)
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq "CN=srv-dc01.thos.local"}
New-Item -Path WSMan:\localhost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $cert.Thumbprint -Force
# Obrir el port corresponent al tallafoc
New-NetFirewallRule -DisplayName "WinRM-HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action AllowVNC “clàssic” (RFB) no xifra per defecte. Cal: - Fer servir una implementació que ho suporti nativament (TigerVNC amb TLS), o - Encapsular la connexió dins d’un túnel SSH:
ssh -L 5901:localhost:5901 usuari@servidor-remot
# I després connectar el client VNC a localhost:5901Un error molt habitual és exposar un servidor VNC directament a Internet sense xifratge ni túnel. Aquesta configuració ha causat incidents de seguretat reals en entorns de producció. Mai VNC sense xifratge cap a l’exterior.
Documentar no és opcional: en un entorn professional, si el tècnic que ha configurat un servei no hi és disponible, un altre membre de l’equip ha de poder-lo mantenir.
## Servei: SSH — SRV-WEB01
- **Equip**: srv-web01.thos.local (10.0.10.15)
- **Protocol/Port**: SSH / TCP 22
- **Autenticació**: clau pública (contrasenya deshabilitada)
- **Usuaris amb accés**: jsanchez (grup sshusers), rlopez (grup sshusers)
- **Root login**: deshabilitat (PermitRootLogin no)
- **Última revisió**: 2026-09-10, per R. López
- **Observacions**: fail2ban actiu amb bloqueig després de 3 intents fallits