SSH (Secure Socket Shell) е интерфейс и протокол за командния ред за сигурно получаване на достъп до отдалечен Linux сървър. Той осигурява сигурна и криптирана комуникация по мрежата и позволява данните да се обменят по сигурен канал между два сървъра. Той се използва широко от системните администратори за дистанционно управление на уеб и други типове сървъри. В тази статия ще ви покажем как можете да защитите SSH сървъра си.

Забележка : този урок предполага, че SSH сървърът работи с Ubuntu 14.04, а клиентската машина е Linux.

Първи стъпки - инсталирайте SSH

Първо, трябва да актуализирате системата си и да инсталирате необходимите пакети в системата си.

За да актуализирате системата и да инсталирате SSH сървъра на сървърната машина, изпълнете следната команда:

 sudo apt-get актуализация sudo apt-get инсталирате openssh-сървър 

За да инсталирате SSH клиент на клиентската машина, изпълнете следната команда:

 sudo apt-get инсталирате openssh-клиент 

Конфигурирайте SSH за влизане без парола

Има два различни метода за влизане в SSH сървър: едната е автентификация на базата на парола, а другата е удостоверяване на базата на ключове. Удостоверяването на паролите е много лесен за използване и пляскане метод. Използването на удостоверяване чрез парола е много несигурно, особено ако потребителят използва слаба парола. От друга страна, клавишите SSH осигуряват лесен и сигурен начин за влизане в отдалечен сървър и този метод се препоръчва за всички потребители.

На клиентската ви машина генерирайте SSH ключове със следната команда:

 cd ~ / .ssh ssh-keygen -t rsa 

Просто натиснете клавиша Enter при всяко натискане. Това създава два файла: id_rsa.pub (публичен ключ) и id_rsa (частен ключ).

Това ще изведе нещо, което прилича на следното:

На сървъра си създайте следната папка (ако тя не съществува):

 mkdir -p ~ / .ssh / 

Върнете се в клиентската машина, копирайте файла "id_rsa.pub" на сървъра си, като използвате следната команда:

 scp -P "yourport" ~ / .ssh / id_rsa.pub потребителско име @ serverip: ~ / .ssh 

Променете "yourport" на номера на порта, който SSH сървърът използвате (по подразбиране е 22) и "serverip" на IP адреса на сървъра.

На сървърната машина променете името на файла и разрешенията за инсталиране.

 котка ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys chmod 700.ssh chmod 600.ssh / authorized_keys rm .ssh / id_rsa.pub 

За да проверите дали методът за удостоверяване на базата на ключове работи, опитайте да се свържете със сървъра си SSH от клиентската машина:

 ssh -P "yourport" username @ serverip 

Ако можете да се свържете без да въвеждате парола, тогава работи методът за удостоверяване на базата на ключове.

Secure SSH конфигурационен файл

Файлът "/ etc / ssh / sshd_config" е конфигурационният файл за SSH, който ви позволява да зададете различни опции за подобряване на сигурността на SSH сървър. Конфигурацията по подразбиране в конфигурационния файл е много несигурна, така че първо трябва да я редактирате и да зададете подходящи опции за подобряване на сигурността.

За да редактирате файла "/ etc / ssh / sshd_config", изпълнете

 sudo nano / etc / ssh / sshd_config 

Промяна на порт за слушане на SSH

По подразбиране SSH слуша в порт 22. Атакуващите използват пристанищни скенери, за да видят дали SSH услугата работи или не. Препоръчва се да промените портът по подразбиране.

За да промените портът по подразбиране на 2200, променете:

 Порт 22 

да се

 Порт 2200 

Използвайте протокол 2 само

Версия 1 на протокола съдържа уязвимости в сигурността. Протокол 2 е по подразбиране за Ubuntu.

Променете реда, показан по-долу:

 Протокол 2 

Ограничаване на достъпа на потребителите

Необходимо е да се позволи само конкретни потребители да влизат в SSH. Тя може да подобри вашата сигурност. По подразбиране тази опция не е налице в конфигурационния файл на SSH.

За да разрешите "user1" и "user2", добавете следния ред:

 Позволява потребител user1 user2 

За да отхвърлите "baduser1" и "baduser2", добавете следния ред:

 DenyUsers baduser1 baduser2 

Деактивиране на вход за root

Не е необходимо да влизате като root през ssh по мрежата. Нормалните потребители могат също да използват su или sudo да получат достъп до коренното ниво. Повечето нападатели ще се опитат да използват потребител на root, за да влязат в профила си. Това е голям риск за сигурността, затова се препоръчва да откажете root login.

За да деактивирате кодовото влизане, променете реда

 PermitRootLogin без парола 

да се

 PermitRootLogin не 

Скриване на последното влизане

Можете да скриете кой е влязъл последно, когато потребител се логва.

За тази цел променете реда

 PrintLastLog да 

да се

 PrintLastLog no 

Ограничете интерфейса, за да влезете

По подразбиране ssh ще се слуша на всички мрежови интерфейси. Ако искате да разрешите приемането на SSH връзка от конкретни IP адреси, можете да промените линията

 #ListenAddress :: 

да се

 ListenAddress 192.168.1.20 

Деактивиране на удостоверяването на паролата

Използването на удостоверяване чрез парола е голям риск за сигурността, ако потребителят използва слаба парола. Препоръчително е да използвате "ssh keys". Един "ssh ключ" може да съдържа над 600 произволни знака и е трудно да се счупи.

За тази цел променете реда

 # PasswordAuthentication да 

да се

 PasswordAuthentication no 

Деактивирайте файловете .rhosts

Файловете .rhosts определят кои потребители могат да имат достъп до r-командите (rsh, rcp, rlogin и т.н.) на локалната машина без парола. По подразбиране файлът .rhosts е деактивиран; ако не, променете линиите, както е показано по-долу.

 IgnoreRhosts да RhostsAuthentication не RSAAuthentication да 

Деактивирайте удостоверяването на базата на хост

Определянето на автентичността на хоста на SSH е по-сигурна от удостоверяването .rhosts. Въпреки това, не се препоръчва домакините да се доверяват един на друг. По подразбиране тази опция е деактивирана.

Ако не, променете реда, показан по-долу.

 HostbasedAuthentication no 

Задайте график за влизане в гратис за влизане

"LoginGraceTime" определя колко дълго след заявка за връзка сървърът ще изчака, преди да прекъснете връзката. Препоръчва се да се намали до 60 секунди.

За тази цел променете реда

 LoginGraceTime 120 

да се

 LoginGraceTime 60 

Задайте максимални връзки за стартиране

Настройването на подходящ максимален брой съпътстващи връзки към SSH демона може да бъде полезно срещу атака на груба сила.

За тази цел променете реда

 #MaxStartups 10:30:60 

да се

 MaxStartups 2 

Деактивиране на препращането

Технологията за препращане на портове се използва от нападателите за тунелиране на мрежови връзки през SSH сесия за влизане в системите. Препоръчваме да деактивирате тази опция.

За тази цел променете реда

 X11Предоставяне да 

да се

 X11 Предоставяне не 

Регистрирайте повече информация

По подразбиране SSH регистрира всичко. Ако искате да влезете в повече информация като неуспешни опити за влизане. можете да промените стойността на това на "VERBOSE".

За тази цел променете реда

 LogLevel INFO 

да се

 LogLevel VERBOSE 

Деактивирайте празни пароли

Необходимо е да откажете на потребителите с празни пароли на сървъра си. По подразбиране PermitEmptyPasswords е деактивиран в Ubuntu.

Ако не, променете реда, показан по-долу.

 PermitEmptyPasswords не 

Задайте интервал от време на изчакване

По подразбиране тези опции не са налични в конфигурационния файл по подразбиране за SSH. Препоръчва се да се настрои подходящо време за изчакване, за да се избегне сешоара без наблюдение.

За това добавете следните редове.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Строг режим

Това ще попречи на използването на несигурна домашна директория и разрешения за файлови ключове. По подразбиране тази опция е активирана.

Ако не, променете следния ред.

 StrictModes да 

Сега запазете и излезте от файла / etc / ssh / sshd_config и рестартирайте SSH сървъра.

 sudo услуга ssh рестартиране 

Защитете SSH, като използвате TCP обвивки

TCP обвивката осигурява контрол на достъпа на базата на хост до мрежови услуги, използвани за филтриране на мрежов достъп до Интернет. Редактирайте файла "/etc/hosts.allow", за да позволите SSH само от 192.168.1.2 и 172.16.23.12.

 sudo nano /etc/hosts.allow 

Добавете следния ред:

 sshd: 192.168.1.2 172.16.23.12 

Защитете SSH посредством iptables

По подразбиране SSH сървърът трябва да приема само връзки от вашата локална мрежа или други отдалечени обекти. Препоръчва се да се разреши само достъп до специфични IP адреси за достъп до SSH и блокиране на достъпа до SSH до неразрешени IP адреси.

За да позволите SSH връзки само от 192.168.1.2 изпълнете следната команда:

 sudo iptables -A INPUT -p tcp -m състояние -съдържание НОВО - източник 192.168.1.2 --dport 2200 -j ACCEPT 

Деактивирайте връзката SSH от всички други хостове, като изпълните следната команда:

 sudo iptables -А ВЪВЕЖДАНЕ -p tcp -dport 2200 -j DROP 

Сега запомнете новите си правила, като използвате следната команда:

 sudo iptables-save> /etc/iptables/rules.v4 

заключение

Горепосочените указания са много мощни техники за осигуряване на SSH сървъра ви. Тази публикация обхваща цялата информация, която повечето потребители ще имат нужда от SSH сървър. Ако имате някакви въпроси, можете да коментирате по-долу.

Референция: SSH ubuntu