LINUX.ORG.RU
ФорумAdmin

Ограничение попыток аутентификации

 ,


0

1

Добрый вечер. Такая вот проблема. Несколько дней назад лог ( /var/log/auth.log ) начал забиваться записями, вроде:

Apr 20 09:15:00 localhost sshd[5429]: Invalid user romaneve from 202.52.150.40

Apr 20 09:15:00 localhost sshd[5429]: pam_unix(sshd:auth): check pass; user unknown

Apr 20 09:15:00 localhost sshd[5429]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.$

Apr 20 09:15:02 localhost sshd[5429]: Failed password for invalid user romaneve from 202.52.150.40 port 50194 ssh2

уже там 5 логов, набитых подобным текстом. Как я понимаю, это брут по ssh. В связи с чем встает вопрос. Как ограничить попытки аутентификации по ssh, ftp, webmin? Например, 3 раза не правильно пасс ввел - бан на 15-20 минут. Второй вопрос - как задать ограниченную подсеть IP, с которой можно авторизовываться? Чтобы никто левый не смог сконнектиться. С уважением.

смени порт с дефолтного 22го, на

echo $RANDOM

drBatty ★★ ()

как задать ограниченную подсеть IP, с которой можно авторизовываться?

Как-то так

/sbin/iptables -A INPUT -p tcp ! -s 192.168.0.0/24 -j DROP
Лучше в доках по iptables смотреть.

backbone ★★★★★ ()
Ответ на: комментарий от backbone

Средствами PAM примерно так можно /etc/security/access.conf.

+:root:192.168.0.0/24
+:emissar git (sftponly):ALL
+:(crontab):cron
-:ALL:ALL

backbone ★★★★★ ()

emissar

как задать ограниченную подсеть IP, с которой можно авторизовываться?

ListenAddress
             Specifies the local addresses sshd(8) should listen on.  The following forms may be used:

                   ListenAddress host|IPv4_addr|IPv6_addr
                   ListenAddress host|IPv4_addr:port
                   ListenAddress [host|IPv6_addr]:port

             If port is not specified, sshd will listen on the address and all prior Port options specified.  The default is to listen
             on all local addresses.  Multiple ListenAddress options are permitted.  Additionally, any Port options must precede this
             option for non-port qualified addresses.

не? лично мне порта нестандартного хватило. Ну и авторизация по ключу на всякий случай.

drBatty ★★ ()
Ответ на: комментарий от drBatty

лично мне порта нестандартного хватило. Ну и авторизация по ключу на всякий случай.

Подскажи, как сменить порт? И что дает авторизация по ключу? А то я в администрировании как-то не особо.

emissar ★★ ()
Ответ на: комментарий от emissar

sshd_config
Port: [younewport]

Авторизация по ключу даёт надёжность, в смысле затруднённости брутфорса(подбора) пароля. Но накладывает ограничение, т.к. надо не протерять файл с ключОм.

Yustas ★★★★ ()
Ответ на: комментарий от Yustas

Нагуглил, что после смены порта нужно выполнить:

killall -1 sshd

но, насколько мне известно - killall убивает процесс и потом я по ssh вообще не смогу зайти. service sshd restart - прокатит?

emissar ★★ ()
Ответ на: комментарий от emissar

emissar

Подскажи, как сменить порт?

да, man sshd_config, конкретнее ищи Port.

emissar

И что дает авторизация по ключу?

у тебя на машине будет лежать секретный ключ, который никогда никуда не передаётся. С помощью этого секретного ключа ты можешь доказать серверу, что ты - это ты. И пароль вводить не нужно будет, а следовательно, пароль будет не подобрать. Секретный ключ == обычный файл в каталоге ~/.ssh, и ещё есть публичный. Этот публичный на сервер надо отправить (он не секретный, хоть здесь выкладывай).

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

drBatty ★★ ()
Ответ на: комментарий от emissar

emissar

настроить sftp, чтобы авторизация в фтп была по ключу?

ессно. проще всего сделать на клиенте файл ~/.ssh/config, в котором прописать все параметры для входа. man ssh_config

тогда для входа нужно набрать просто имя хоста (сам придумывай любое)

drBatty ★★ ()
Ответ на: комментарий от drBatty

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

А можно зашифровать серкетный ключ следующим секретным ключём ))

Yustas ★★★★ ()
Ответ на: комментарий от Yustas

Yustas

А можно зашифровать серкетный ключ следующим секретным ключём ))

конечно. Например с помощью GnuPG. Только расшифровывать запаришься, да и смысла нет никакого (хотя вру, смысл есть - можно сделать автоматический бекап на любом открытом хостинге файлов. Ведь при бекапе нужен публичный ключ, которым файл так зашифруется, что его хрен расшифруешь без секретного, и этот секретный ключ можно выложить в свободный доступ, на случай, если потеряется оригинал (ну HDD сдохнет к примеру). Правда надо помнить тот секретный ключ, которым зашифрован первый)

drBatty ★★ ()
Ответ на: комментарий от dada

dada

AllowUsers для защиты.
fail2ban - защита + чистый messages
В чём проблема ?

защита от чего? боты не будут тыкаться в рандомный порт, можешь сам проверить.

drBatty ★★ ()
Ответ на: комментарий от Galant

О Боже. Кто тебя к серверу допустил.

Ну я вообще программист PHP и линукс на уровне пользователя знаю, с администрированием не очень. :)

emissar ★★ ()
Ответ на: комментарий от emissar

emissar

Все ок, через вебмин сменил порт на дефолтный.

блжд... выполни ты echo $RANDOM в консоли, и не мучайся. Если у тебя bash, то оно тебе даст случайное число 0..32768, ну если будет <1024, то повтори команду (<1024 лучше не надо, хотя можно, чтоб врага запутать)

drBatty ★★ ()
Ответ на: комментарий от drBatty

тогда выполни
echo «<?php echo rand(1024,65536); ?>» | php

:D хватит издеваться. С портом решил задачу. Сейчас нужно настроить sftp, поможете?

emissar ★★ ()
Ответ на: комментарий от emissar

emissar

Сейчас нужно настроить sftp, поможете?

повторяю: проще всего сделать на клиенте файл ~/.ssh/config, в котором прописать все параметры для входа. man ssh_config

тогда для входа нужно набрать просто имя хоста (сам придумывай любое)

drBatty ★★ ()
Ответ на: комментарий от drBatty

и да, это работает не только с sftp, но и с ssh, scp, sshfs и вообще.

drBatty ★★ ()
Ответ на: комментарий от emissar

А то что вебмин могут похакать ты не боишься?

Я предпочитаю админить через впн.

Galant ()
Ответ на: комментарий от emissar

Сменил порт на 89343. Это конец?:(

это не конец, это другой -ец.
портов всего 65535

aol ★★★★★ ()
Ответ на: комментарий от drBatty

Я воспользовался утилитой:

ssh-keygen -t rsa

cкопировал файл на диск к себе, для теста, добавил его в файлзилле в список ключей. Пытаюсь соединиться, не вписывая пароль, пишет:

Ответ: fzSftp started Команда: keyfile «/var/www/passkey» Команда: open «xxx@xxx.ru» 12743 Команда: Pass: Ошибка: Сбой аутентификации. Ошибка: Критическая ошибка Ошибка: Невозможно подключиться к серверу

emissar ★★ ()
Ответ на: комментарий от emissar

И да, кстати, файлзилла сообщила мне о своей невозможности работы с запароленными ключами и конвертировала в ключ без пасскея.

emissar ★★ ()
Ответ на: комментарий от emissar

emissar

Я воспользовался утилитой: >ssh-keygen -t rsa cкопировал файл на диск к себе, для теста, добавил его в файлзилле в список ключей. Пытаюсь соединиться, не вписывая пароль

нихрена не понял. Что там на сервере, что на клиенте?

emissar

И да, кстати, файлзилла сообщила мне о своей невозможности работы с запароленными ключами

ну это её проблемы. я с таким г-ном не работаю. Если уж нужна „папка“ по ssh, то можно её смонтировать как sshfs по fuse. А далее юзать из любимого файлового менеджера. Ну например из Dolphin'а.

drBatty ★★ ()

iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount
3 --name DEFAULT --rsource -j DROP
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name DEFAULT --rsource -j
ACCEPT

замечательно справляеться с этой задачей
ограничивает число коннектов с одного ip неболее 3 за минуту

ae1234 ★★ ()

Подскажите пож-ста, а сколько всего портов ?

vasya_pupkin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.