Posts tagged ‘ssh’

Защита от брутфорса паролей при помощи Fail2Ban

В какой-то момент меня задолбало листать длиннющий logwatch с тысячами сообщений о том что на сервер пытались зайти с неверным логином по SSH и я решил оторвать свою пятую точку и поискать как же можно избавиться от ненависных брутфорсеров, и нашел…

Fail2Ban – утилита позволяющая защитить сервер от брутфорса таких сервисов как SSH, FTP, Apache и т.д. Она производит анализ логов программ и в случае превышения лимита на неудачные логины банит IP адрес злоумышленника при помощи iptables, при «бане» администратору высылается оповещение.
Официальный сайт: http://www.fail2ban.org/

Предполагается что вы используете CentOS :)

Для простоты работы и настройки лучше всего использовать версию Fail2Ban >0.8 (в стандартном репозитории есть только 0.6), для этого у вас должен быть установлен репозиторий RPMForge.

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

yum install fail2ban.noarch

После этого меняем настройки Fail2Ban (почему-то в конфигах указан неправильный путь к логу SSH):

Меняем файл /etc/fail2ban/jail.conf

...
bantime  = 600
...
[ssh-iptables]
 
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban]
logpath  = /var/log/secure
maxretry = 5
...

Обратите внимание на параметры:

bantime – время (в секундах), накоторое забаниться злоумышленник (по умолчанию 600 – 10 мин)
logpath – по умолчанию он указан неправильно
dest – кому слать оповещения о «забаненных»
sender – «отправитель» письма
maxretry – количество повторных «ошибочных» попыток логина

После настройки можно запускать сервис:

service fail2ban start
chkconfig fail2ban on

При условии что вы не поленились поменять алиас у пользователя root, со временем (зависит от «популярности» вашего сервера) вы начнете получать письма о том что хост такой-то забанен, а количество сообщений о неверных логинах уменьшиться до 10-20 в день, вместо 2-3 тысяч как это было у меня.

Security: наконец нашел толковый SFTP/SSH сервер под Windows

OpenSSH

Свершилось! Наконец-то я нашел SFTP сервер для Windows «с человеческим лицом». Даже не просто с человеческих, а очень даже приятным, но на поиски ушла целая неделя…

В прошлом event`e «Пользуясь положением: как вы боретесь с кражей паролей от FTP?» я решил узнать у «общественности», как кто борется с кражей паролей к FTP аккаунтам. Ответы в своей сути сводились к двум вариантам:

  • Одноразовые пароли
  • Отказатся от FTP вообще, в тользу SFTP/SSH/SVN etc.

Поиски

Первый вариант не подходит категорически, т.к. большинству пользователей нужен постоянный доступ, а не разовый. Да и реакция на нововведение будет однозначно негативная.
Второй вариант тоже «не подарок», но почему бы не попробовать ;) .

Основываясь на данных Википедии и собственном опыте, было принято решение опробовать SFTP/SSH с авторизацией по ключу.
Причины:

  • Эти протоколы передают данные по защищенным каналам, в отличии от FTP, который передает ВСЕ данные (вкючая пароли) «как есть».
  • Можно организовать доступ по открытым ключам, что избавить от необходимости ввода пароля.
  • Врядли найдется вирус который тырит приватные ключи от SSH
  • Соединение но SFTP/SSH можно пустить через тоннель, в отличии от FTP

Что нашел

  • FreeSSHD – небольшой, симпатичный [S]FTP сервер, но работает только с «одной папкой», т.е. у вас есть только одна папка и вы создаете пользователей для доступа к ней
  • Cygwin – под «всемогущим» можно поднять порт OpenSSH, но не понравился за то что нужно создавать в системе пользователя и нельзя ограничить конкретной папкой (да и вообще интерфейса хочется)
  • OpenSSH for Windows – опять таки Cygwin, но проект старый и не нравится по той же причине что и Cygwin
  • WinSSHD (Bitvise) – платный SSH/SFTP сервер для Windows, если честно ознакомившись с функционалом я решил, что будь я проженным копирастом я бы купил этот софт. Он действительно хорош!


С небес на землю



Итак, WinSSHD действительно хоршь, но мы то живем на просторах xUSSR и платить 99$ за одну лицензию нас жаба душит.
[Недвусмысленно намекает на самые большие залежи софта в рунете (оно же torrents.ru)]

Качаем этот сервер у добрых людей и радуемся жизни :) .

WinSSHD server консоль

Безбожно сдертое с torrents.ru опиcание



Поддерживает следующие SSH сервисы:
- Защищенный удаленный доступ через консоль.
- Защищенный удаленный доступ через GUI.
- Защищенная передача файлов через SFTP и SCP.
- Защищенное TCP/IP тунелизирование соединения.
Если необходимо улучшить безопасность в вашей организации, то стоит обратить внимание на Secure Shell Handling 2 (SSH2) и Secure FTP (SFTP). Попросту говоря, туннелирование SSH2 позволяет безопасно подключаться к службам на удаленных машинах. Оно также помогает ограничить открытость потенциальным хакерам, уменьшая число доступных прослушивающих и прямо связанных с приложениями портов, открытых на брандмауэре. SFTP является альтернативой стандартному серверу FTP и использует SSH2 для обеспечения безопасности данных и команд.

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

Доступ к SSH без ввода пароля

Всем привет,
решил написать маленький мануал о том как можно настроить SSH на работу без ввода пароля.
Заранее со всеми согласен с тем что таких статей уже много, но еще одна возможно будет выше в рейтинге GOOGLE и кто-то сможет найти ее быстрее :) .

Я не буду сильно вводить в теорию, а просто обьясню как и что делать, хотя советую все же с теорией ознакомиться (http://www.opennet.ru/docs/RUS/use_ssh/), т.к. это продвинет вас в понимании вопроса :) .

При беспарольном входе по SSH, клиент и сервер оперирует так называемыми ключами, которые разделены на 2е части: публичный и приватный (public and private).
Публичный ключ распространяеться на те сервера, на которые вы хотите заходить.
Приватный ключ храниться только на той машине с которой вы хотите осуществлять вход (этот ключ не должн распростроняться ни в коем случае!!!)

Ну вот с минимумом теории вроде и закончили, приступим к практике…
Для того чтобы начать работу с ключами необходимо для начала их сгенерировать, для этого под пользователем из под которого будет выполняться вход выполняем следующую команду:
$ ssh-keygen -t rsa
Enter file in which to save the key (/root/.ssh/id_rsa):

Далее вам будет предложено выбрать путь к файлу в котором будет находиться ваш ключ, лучше всего оставить стандартный(просто нажать Enter).

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Дальше нужно ввести «парольную фразу», вводим какой нибудь текст (это необходимо для более высокой надежности ключа), затем повторяем опрацию ввода фразы.
Все, ключ создан, можно начинать использование.

Если вы использовали стандартный путь для файла с ключем, то в той же папке что и указанный ключ должен лежать файл ~/.ssh/id_rsa.pub – это и есть публичный ключ, открывает его каким нибудь текстобым редактором, и копируем содержимое.

Затем заходим на сервер, на который хотим ходить без пароля, и открываем текстомым редактором файл ~/.ssh/authorized_keys (если его нет, создаем), в этом файле храняться публичные ключи для хостов с которых можно заходить без пароля, добавляем в этот файл содержимое скопированного нами ключа.

Ура, теперь можно пробовать пользоваться, для этого на рабочем компьютере выполняем:

ssh user@server_without_pass

по идее вы должны увидет приветствие удаленного сервера без ввода пароля, однако иногда этого не происходит, в некоторых дистрибутивах требуеться настроить так называемы «параноидальные» настройки на досту к файлам SSH, нужно выполнить на обоих компьютерах

chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/authorized_keys

Вот и все что я хотел сказать по этой тем, если у кого-то есть вопросы или пожелания – прошу оставлять, может я чего и забыл ;) .

P.S.

Через некоторое время обнаружился глюк ;) , если папку ~/.ssh/ создать руками то описанный выше совет не работает. Поэтому удаляем созданную руками папку и заходим на какой-нибудь сервер по SSH(логинится не обязательно), SSH как паинька создаст нужные папки. После этого можно вылолнить вышеописанные действия.