Омръзано ли ви е да четете в журналните си файлове опитите на разни „хакери“ да пробват brute-force атака към ssh сървъра ви? И на мен в един момент ми омръзна. Временно оправих нещата като сложих приложението fail2ban, което за съжаление не винаги работеше както трябва. За това си реших проблема глобално като забраних възможноста да се използват пароли за достъп до системата ми и настроих ssh сървъра ми да използва RSA ключове за достъп.
Първото нещо което ще трябва да направим преди да забраним достъпа с пароли е да генерираме свой ключ и да го поставим на нужното място на сървъра. Генерирането на ключ става ето така:
ssh-keygen -t rsa -f .ssh/id_rsa-username-hostname
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa-username-hostname.
Your public key has been saved in .ssh/id_rsa-username-hostname.pub.
The key fingerprint is:
3b:77:ec:1e:fb:e7:dd:2b:7b:81:f6:1c:17:e9:a5:60 user@example
Заменете username и hostname с потребителското име и адреса на сървъра към който ще се свързвате. Командата ssh-keygen има още доста опции, които обаче няма да описвам тук. За да видите пълните и възможности – man ssh-keygen.
След като вече имаме генериран ключ е време да го инсталираме. Това може да стане по-два начина – с командата ssh-copy-id или ръчно. При първия вариант синтаксиса на командата е следният:
ssh-copy-id -i .ssh/id_rsa-username-hostname.pub username@remote_machine
Ще бъдете попитани да въведете паролата си, след което командата ще ви уведоми че новият ви ключ е инсталиран и готов за употреба.
За да инсталирате ключа ръчно е необходимо да направите следните стъпки. Свържете се със отдалечената машина на която ще инсталирате ключа, чрез ftp или по-друг начин изтеглете там вашият публичен ключ. След което го добавете по този начин:
cat id_rsa-username-hostname.pub >> .ssh/authorized_keys
Сега вече може да настроим и ssh сървъра да използва само ключове за оторизация. Под Debian файлът за настройка на OpenSSH сървъра се намира в директория /etc/ssh под името sshd_config. Отворете файла и въведете промените на следните редове:
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
Сега малко обяснения. Чрез PermitRootLogin no ще забраните директният достъп чрез потребителя root до системата. Това е мярка за сигурност която би трябвало вече да имате, а ако нямате – направете я. Със следващите два реда казваме на сървъра че може да приема оторизация чрез публични RSA ключове. А със последният ред забраняваме оторизацията чрез пароли. Рестартирайте OpenSSH сървъра си за да може промените които въведохме да влязат в сила.
Сега остана да настроим и самият ssh клиент за да ни е по-лесно да работим с него. Това става чрез файла ssh_config който се намира в същата директория /etc/ssh. Отворете файла за редактиране и добавете следните редове:
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa-%r-%h
IdentityFile ~/.ssh/id_dsa-%r-%h
Чрез тези четири опции указваме на ssh клиента къде да търси файловете с ключовете когато решим да се свързваме към отдалечената машина. Чрез опциите %r – потребителско име, и %h – име на хоста, можем да държим няколко различни ключа за различни машини, като благодарение на тях ssh ще знае кой ключ да използва когато изискаме нова връзка към съответният отдалечен сървър.
Tова е. Вече имате OpenSSH сървър работещ с RSA лични ключове и не позволяващ достъп до системата чрез парола.
You must log in to post a comment.