Blog Post

Modifica portul 22 pentru sshd

Jan. 20, 2019, 10:37 a.m. TestCat linux centos selinux


Mai devreme sau mai tarziu, modificarea portului standard de ssh este necesara, daca nu si recomandata.

Ar trebui sa avem in vedere pasii urmatori.

Adaugam intai un al doilea port (de exemplu 6666), lasand in acelasi timp si vechiul port 22 activ, pana ne asiguram ca avem o configuratie functionala.

Deschidem vi /etc/ssh/sshd_config si cautam # Port 22, vom adauga un nou port, sa spunem 6666 si lasam ambele porturi activate momentan:

Port 22
Port 6666

Sa verificam intai configuratia firewalld, lista de porturi deschise (pt. alte comenzi firewall-cmd --help):

firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25
  sources:
  services: dhcpv6-client http ssh https
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Adaugam noul port 6666 in configuratia firewalld:

# deschidem portul in firewall,
# atentie nu supravietuieste unui server restart
firewall-cmd --add-port 6666/tcp 

Daca avem SELinux activat, trebuie sa precizam ca dorim access la 6666:

 # deschide portul si in SELinux
semanage port -a -t ssh_port_t -p tcp 6666

Acum putem face restart pt serviciul sshd:

systemctl restart sshd

Incercam o conexiune ssh pe noul port:

# ---> now try to ssh from local
ssh username@remoteserver -p 6666

Daca am reusit sa ne conectam, facem ca setarile firewalld sa fie persistente:

# adaugam port-ul 6666 ca fiind permanent
firewall-cmd --add-port 6666/tcp --permanent
# reincarcam noua configuratie firewalld
firewall-cmd --reload

Acum putem renunta la portul "default" ssh 22:

# indepartam portul 22 din configuratia firewalld
firewall-cmd --remove-service ssh --permanent

# reincarcam configuratia
firewall-cmd --reload

# restartam sshd
systemctl restart sshd

Acum pentru verificare, listam toate porturile deschise in firewalld. Observam prezenta noului port 6666, si vechiul port 22 ssh lipseste, pentru ca l-am dezactivat:

firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25
  sources:
  services: dhcpv6-client http https
  ports: 6666/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Intrucat, am avut surpriza ca portul sa fie descoperit dupa ceva timp, si sa incep sa vad iarasi incercari "brute-force", de a ghici parola de acces ssh am cautat sa studiez problema. Bineinteles am incercat fail2ban, dar am inceput sa studiez si ansible si lucrez la un playbook care sa modifice portul folosit de ssh la un anumit interval de timp.

Asta intr-un post din viitor...

to be continued