не помогло, в логах сообщения о попытках подключения каждые 4 секунды.
Jan 14 09:55:00 srv sshd[2373]: Invalid user ali from 218.106.193.142
Jan 14 09:55:00 srv sshd[2383]: gkr-pam: error looking up user information for: ali
Jan 14 09:55:01 srv sshd[2373]: error: PAM: User not known to the underlying authentication module for illegal user ali from 218.106.193.142
Jan 14 09:55:01 srv sshd[2373]: Failed keyboard-interactive/pam for invalid user ali from 218.106.193.142 port 53988 ssh2
Jan 14 09:55:04 srv sshd[2393]: Invalid user ali from 218.106.193.142
Jan 14 09:55:04 srv sshd[2399]: gkr-pam: error looking up user information for: ali
Jan 14 09:55:05 srv sshd[2393]: error: PAM: User not known to the underlying authentication module for illegal user ali from 218.106.193.142
Jan 14 09:55:05 srv sshd[2393]: Failed keyboard-interactive/pam for invalid user ali from 218.106.193.142 port 54806 ssh2
Может в SuSEfirewall2 ещё что-то донастроить надо?
Jan 14 09:55:00 srv sshd[2373]: Invalid user ali from 218.106.193.142
Jan 14 09:55:00 srv sshd[2383]: gkr-pam: error looking up user information for: ali
Jan 14 09:55:00 srv sshd[2373]: Invalid user ali from 218.106.193.142
Jan 14 09:55:00 srv sshd[2383]: gkr-pam: error looking up user information for: ali
что за юзер ali?
Это кто-то с адреса 218.106.193.142 пытается подключиться перебирая различные имена, у меня такого имени нету.
Например, для ограничения количества соединений на 22 порт, можно написать следующие два правила: iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --name ssh --update --seconds 20 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --name ssh --set -j ACCEPT
Первое правило проверяет, есть ли в списке с именем ssh (--name ssh --update) IP адрес с которого пришел к нам пакет, и не прошло ли с момента попадания его в список 20 секунд (--seconds 20). Если IP есть в списке и не прошло 20 секунд, тогда пакет не пропускается (-j DROP). Если нет в списке или уже прошло 20 секунд, правило не срабатывает, смотрим следующее правило.
Второе правило заносит IP адрес источника в список с именем ssh (--name ssh --set) и пакет пропускается (-j ACCEPT).
Обратите внимание на то, что эти правила обрабатывают только первые пакеты в соединении (--state NEW). И на остальные пакеты не распространяются.
правила добавить в custom rule
iptables -N reset_knock # Цепочка для сброса процесса стука
iptables -A reset_knock -m recent --name PHASE1 --remove
iptables -A reset_knock -m recent --name PHASE2 --remove
iptables -A reset_knock -m recent --name PHASE3 --remove
iptables -A reset_knock -m recent --name PHASE4 --remove
iptables -N in_phase_2 # Создаем цепочку для фазы 2
iptables -A in_phase_2 -m recent --name PHASE1 --remove # Удаляем запись из списка первой фазы
iptables -A in_phase_2 -m recent --name PHASE2 --set # Добавляем ее в список второй фазы
iptables -N in_phase_3 # Создаем цепочку для фазы 3
iptables -A in_phase_3 -m recent --name PHASE2 --remove # Удаляем запись из списка второй фазы
iptables -A in_phase_3 -m recent --name PHASE3 --set # Добавляем ее в список третьей фазы
iptables -N in_phase_4 # Создаем цепочку для фазы 4
iptables -A in_phase_4 -m recent --name PHASE3 --remove # Удаляем запись из списка третьей фазы
iptables -A in_phase_4 -m recent --name PHASE4 --set # Добавляем ее в список четвертой фазы
iptables -N checked # Для записей, прошедших проверку
iptables -A checked -j reset_knock # Очищаем списки
iptables -A checked -j ACCEPT # Разрешаем пакет
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Первая фаза
iptables -A INPUT -p tcp --dport 21210 -m recent --name PHASE1 --set -j RETURN
# Для тех, кто присутствует в списке первой фазы — переход во вторую
iptables -A INPUT -p tcp --dport 11992 -m recent --rcheck --name PHASE1 --seconds 5 -g in_phase_2
# И т.д.
iptables -A INPUT -p tcp --dport 16043 -m recent --rcheck --name PHASE2 --seconds 5 -g in_phase_3
iptables -A INPUT -p tcp --dport 23050 -m recent --rcheck --name PHASE3 --seconds 5 -g in_phase_4
# Если стучатся не в том порядке — сброс
iptables -A INPUT -p tcp -m multiport --dport 21210,11992,16043,23050 -j reset_knock
# Для тех, кто прошел все четыре фазы — разрешаем доступ
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --rcheck --name PHASE4 --seconds 5 -j checked
iptables -P INPUT DROP # Дефолтное правило цепочки INPUT
(wiki) писал(а):Принцип прост — при стуке в порт, соответствующий очередной фазе, проверяется наличие записи в предыдущей фазе. Теперь порт 22 откроется на 5 секунд после стука в порты 21210, 11992, 16043, 23050 со строгим соблюдением порядка перечисления и интервалами не более 5 секунд.
Обратите внимание на технику реализации процесса — цепочки фаз вызываются не через -j, а через -g, поэтому после прохождения этих цепочек к пакетам сразу применяется правило по умолчанию цепочки INPUT, то есть DROP. В противном случае пакеты доходили бы до правила сброса (которое с multiport), и процесс стука все время сбрасывался бы.
Последовательный стук в порты можно организовать, например, утилитой netcat
script
for it in {21210,11992,16043,23050}; do
echo " " | nc -w 1 host $it
done
ssh user@host
Вы не правильно меня поняли. Это мое задание, типа скрипт написать, чтобы эту цель достигнуть.
Дано: комп. класс с неск. машинами с МСВС и лок. сетью. необходимо в SSH отслеживать подключения с других компов и блокировать их.
Вы не правильно меня поняли. Это мое задание, типа скрипт написать, чтобы эту цель достигнуть.
Дано: комп. класс с неск. машинами с МСВС и лок. сетью. необходимо в SSH отслеживать подключения с других компов и блокировать их.
Решение:
Зачем писать скрипт, если для того чтобы заблокировать соединение достаточно просто выключить службу?
Да как-то нечего еще договорить, просто нельзя все отключать, нужно только чужие компы. Можно по айпи, мож еще как, но мой комп должен использовать включенный SSH, ну и может еще кому дам разрешение...
Да как-то нечего еще договорить, просто нельзя все отключать, нужно только чужие компы.
Ну как нечего... Если ВСЕ машины кроме той, которую надо настроить, - чужие, то проще и эффективнее способа, чем предложен выше - с полным отключением SSH, просто нет.
PS Не в каждом классе для обучения стоит МСВС ... совсем не в каждом...