Настройка брандмауэра для SSH в Linux

0
2.9 (58.46%) 13 votes

Как правило «хостер» предоставляет Вам доступ по SSH с отключенным брандмауэром — его надо включить и настроить.

Конфигурационный файл OpenSSH находится в /etc/ssh/sshd_config — для просмотра без комментариев следует выполнить команду(ы):

$sudo grep -v '^#' /etc/ssh/sshd_config | grep -v '^$'

1. Настройка Брандмауэра (netfilter) для SSH и тырем порт

По умолчанию для SSH соединения, используется порт ТСP-порт 22. Забегая перед следует сказать, что многие рекомендует его поменять, но я так не думаю. Смена порта не поможет, «любой» сканер без труда отыщет ваш порт куда вы его не запрятали. Способ смены порта хорошо известен и Хакеры пишут соответствующие скрипты. Ниже будут приведены меры безопасности, прочитав их вы можете решить стоит ли менять порт или нет. Чтобы узнать какой порт слушает демон (sshd) на сервере, нужно выполнить команду:

$ sudo grep -w 'Port' /etc/ssh/sshd_config
#Port 22

Применив директиву Port поменяв значение, вы укажете демону (sshd) порт который нужно слушать;

Port 8822

Теперь демон (sshd) будет слушать порт 8822, для подключения к серверу, нужно воспользоваться на клиентской машине командой:

$ ssh -p8822 user@127.0.0.1

Ключ ‘-p‘ указывает порт, вместо user пишем имя пользователя, 127.0.0.1 меняем на IP своего сервера.

C портами разобрались, теперь нужно настроить брандмауэр. Можно воспользоваться средствами TUI дистрибутива.

Внимание! Будьте внимательны и последовательны в ваших действиях ! Неправильные действия могут привести к потере удалённого доступа.

Для Red-Hat based:

$ sudo yum install iptables system-config-securitylevel-tui
$ sudo system-config-securitylevel-tui

Нужно открыть порты (SSH) ТСP-22, UDP-22 или соответственно открыть порт который указали в директиве Port

Для SuSE:

$ sudo yast

Заходим в /Безопасность и пользователи/ Брандмауэр / Разрешённые службы — добавляем «Сервер Secure Shell», если вы указали порт директивой Port то / Брандмауэр / Разрешенные службы /Дополнительно и добавляем порт TCP и UDP .

Для «ручной настройки» следует внимательно ознакомиться с правилами iptables и настройкой брандмауэра вашего дистрибутива.

Приведу пример открытия портов простыми правилами:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

Внимание ! Следует понимать, что к примеру SuSEfirewall2 генерирует правила для iptables из конфигурационного файла /etc/sysconfig/SuSEfirewall2, в каждом дистрибутиве есть свои особенности управления брандмауэром.

2. Убираем «рута» и ещё кое что

Во многих дистрибутивах доступ «суперпользователю» по SSH открыт, это не совсем безопасно. За этим следит директива PermitRootLogin, чтобы посмотреть состояние:

$ sudo grep -w 'PermitRootLogin' /etc/ssh/sshd_config
PermitRootLogin no
#the setting of "PermitRootLogin without-password"

В примере показано, что значение директивы PermitRootLogin является no, значит что, авторизация под root -ом запрещена. Стоит отметить, в большинстве случаях когда доступ разрешён для «суперпользователя» то вывод команды:

$ sudo grep -w 'PermitRootLogin' /etc/ssh/sshd_config
#PermitRootLogin yes
#the setting of "PermitRootLogin without-password

Это значит авторизация под root возможна, следует PermitRootLogin придать значения no.

По умолчанию доступ к серверу разрешён всем пользователям. Что бы изменить ситуацию нам в помощь служат директива AllowUsers

AllowUsers:
AllowUsers luser1 luser2 luser4

Приведены пользователи через пробел, которым разрешён доступ.

Другой пример:

AllowUsers luser*

Будет разрешён доступ пользователям у кого имя начинается на luser.

Для разрешения групп(ы) служит директива AllowGroups :

AllowGroups luser fuser

Перечислены разрешённые группы через пробел.

Таким образом мы запретили «root» и указали каким именно пользователям/группам разрешён доступ.

3. Делаем вход по ключу

Для улучшения безопасности, рекомендуется авторизация по ключам. Для генерации ключей нужно выполнить команду:

$ cd ~/.ssh
$ ssh-keygen -t rsa

Вам будет предложено ввести защитную фразу, если вы не хотите набирать её каждый раз перед авторизацией. Можете нажать «ввод». Учтите, если кто-нибудь завладеет ключом (непубличным), то он беспрепятственно авторизуется, я рекомендую использовать защитную фразу. После генерации ключей вы обнаружите в каталоге ~/.ssh два ключа:

  • id_rsa — приватный ключ, клиентская часть
  • id_rsa.pub — публичный ключ для сервера

Теперь нужно перенести ключ id_rsa.pub на сервер в файл ~/.ssh/authorized_keys делаем:

$ scp ~/.ssh/id_rsa.pub IP_сервера:\
~/.ssh/authorized_keys2

Для корректной работы нужно на северной части добавить или изменить параметры в /etc/ssh/sshd_confi:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Для запрета авторизации по паролям, добавляем в /etc/ssh/sshd_confi:

PasswordAuthentication no
PermitEmptyPasswords no

Будете внимательны, проверьте конфигурации, для вступления изменений в силу нужно сделать рестарт службы(демона) sshd:

$ sudo /etc/init.d/sshd restart

4. Защита SSH

Для защиты от перебора пароля и назойливых «брутфорсеров», можно и нужно использовать denyhostdenyhosts;

Для SUSE:

$ sudo zypper ar http://download.opensuse.org/repositories/\
network:/utilities/openSUSE_11.0/network:utilities.repo
$ sudo chkconfig denyhosts on
$ sudo rcdenyhosts start

Для Debian-based:

$ sudo apt-get install denyhosts
$ sudo/etc/init.d/denyhosts start

Для Red-Hat based:

$ sudo yum install denyhosts
$ sudo chkconfig denyhosts on
$ sudo service denyhosts start

После установки denyhost и запуска, все надоевшие клиенты будут посылаться в /etc/hosts.deny блокироваться.

Следует занести свой IP в файл /etc/hosts.allow — разрешённые адреса.

5. Советы для админов

Создаём директорию ~/bin туда будем складывать скрипты :

$ mkdir ~/bin 

Убеждаемся что в вашем профиле bash, переменная PATH содержит ~/bin.

$ echo $PATH

Пишем скрипт, делаем исполняемым:

$ vim ~/bin/gosrv.sh
#!/bin/bash
#file:gosrv.sh
ssh user@ваш_IP
$ chmod a+x ~/bin/gosrv.sh

Теперь можем набрав gosrv.sh подключаться к серверу.

Как делать sudo это баян, расскажу как сделать автодополнение после sudo. Вставляем в ~/.bashrc:

complete -cf sudo

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *