Банальный вопрос по закрытию шела вызвал неожиданные проблемы.
AllowUsers root@MYIP в sshd_config не дал результата, решил использовать iptables
[console]iptables -A INPUT -s! MYIP --dport 22 -j DROP[/console]
просто не стал работать. Попробовал порткнокинг:
[console]#--------------------------------------
iptables -N sshguard
# Если адрес в списке, то подключение разрешено
iptables -A sshguard -m state --state NEW -m recent --rcheck --name SSH -j ACCEPT
# Разрешить пакеты для уже установленных соединений
iptables -A sshguard -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A sshguard -j DROP
# Заносит адрес в список
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1500 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1501 -m recent --name SSH --remove -j DROP
# Удаляет адрес из списка
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1499 -m recent --name SSH --remove -j DROP
# Применение для трафика ssh цепочку sshguard
iptables -A INPUT --dport 22 -j sshguard
#--------------------------------------[/console]
Доступ не закрылся...
Не знаю что и делать.
Скрипт правил имеет такую структуру:
[console]#!/bin/sh
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s! MYIP --dport 111 -j DROP
iptables -A INPUT -s! MYIP --dport 3306 -j DROP
#IP-BANS
iptables -I INPUT -j DROP -s XXX.XXX.X.X/16
#etc...
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save[/console]
Снова ssh и iptables
[console]
iptables -I INPUT -j DROP -s XXX.XXX.X.X/16
[/console]
Может так
[console]
iptables -I INPUT -s XXX.XXX.X.X/16 -j DROP
[/console]
Kettler
Нигде не утверждается, что описание действия (target/jump) должно стоять последним в строке, однако, такая нотация более удобочитаема.
Так в чем проблема-то может быть, подскажите. Может нюансы ВПС?
Опишите что хотите получить в итоге.
Шаги
AllowUsers root@MYIP в sshd_configи
iptables -A INPUT -s! MYIP --dport 22 -j DROP
делают по сути одно и тоже - разрешение ssh лишь с одного конкретного ip
В итоге хочу чтобы один из этих способов заработал :)
Предпочтительнее решить вопрос с помощью iptables.
Порткнокинг был бы идеальным вариантом, но подозреваю, что в недофаерволе нашего впс могут быть проблемы с ресентом, поэтому он и не заработал.
Причина сброса правила для 22 порта (см выше) тоже не ясна, хотя абсолюно идентичные правила для 111 и 3306 портов срабатывают корректно.
Брррр пробуйте так
[console]#!/bin/sh
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s XXX.XXX.X.X --dport 111 -j ACCEPT
iptables -A INPUT -s XXX.XXX.X.X --dport 3306 -j ACCEPT
iptables -N sshguard
# Если адрес в списке, то подключение разрешено
iptables -A sshguard -m state --state NEW -m recent --rcheck --name SSH -j ACCEPT
# Разрешить пакеты для уже установленных соединений
iptables -A sshguard -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A sshguard -j DROP
# Заносит адрес в список
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1500 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1501 -m recent --name SSH --remove -j DROP
# Удаляет адрес из списка
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1499 -m recent --name SSH --remove -j DROP
# Применение для трафика ssh цепочку sshguard
iptables -I INPUT 1 --dport 22 -j sshguard
iptables-save[/console]
Либо такс
[console]#!/bin/sh
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#HZ
iptables -A INPUT -s XXX.XXX.X.X --dport 111 -j ACCEPT
#RDP
iptables -A INPUT -s XXX.XXX.X.X --dport 3306 -j ACCEPT
#SSH
iptables -A INPUT -s XXX.XXX.X.X --dport 22 -j ACCEPT[/console]
Kettler, спасибо за варианты, но ситуация ровным счетом такая же...
В первом варианте пускает свободно, во втором (с другого айпи) тоже начинается диалог аунтефикации.
Что ковырять?
P.S.
Linux version 2.6.18 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Wed Jun 1 13:20:25 MSD 2011
iptables v1.4.8
Во втором пробуй заменить
[console]#SSH
iptables -A INPUT -s XXX.XXX.X.X --dport 22 -j ACCEPT[/console]
на
[console]#SSH
iptables -I INPUT 1 -s XXX.XXX.X.X --dport 22 -j ACCEPT[/console]
Кстати если интересно, в последнее время делаю примерно так:
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j TARPIT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
Первое правило проверяет наличие в динамическом списке ip-адреса отправтеля, и запись об этом адресе должна быть “моложе” 20 секунд. Иначе – TARPIT. Второе правило разрешает обращение на 22-й порт и заносит IP-адрес в динамический список.
Для единственного IP:
iptables -A INPUT -p tcp -m state -s XXX.XXX.X.X --state NEW --dport 22 -m recent --update --seconds 20 -j TARPIT
iptables -A INPUT -p tcp -m state -s XXX.XXX.X.X --state NEW --dport 22 -m recent --set -j ACCEPT
Чтобы работал TARPIT (ловушка):
aptitude install module-assistant xtables-addons-source
module-assistant prepare
module-assistant auto-install xtables-addons-source
depmod -aKettler, и этот вариант дает подключится к сеансу логина с "левого" ip... я в тупике.
Может выводы команд каких показать для разбора полетов?
newzenon, спасибо, давно хотел TARPIT использовать.
запись об этом адресе должна быть “моложе” 20 секунд
может быть "не моложе"?