LinuxForum.Fans
Тема

Снова ssh и iptables

Автор: A-off 10 сообщений 3173 просмотров
#205586

Банальный вопрос по закрытию шела вызвал неожиданные проблемы.
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]

#205673

[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]

#205723

Kettler

"man iptables" написал:
Нигде не утверждается, что описание действия (target/jump) должно стоять последним в строке, однако, такая нотация более удобочитаема.

Так в чем проблема-то может быть, подскажите. Может нюансы ВПС?

#205725

Опишите что хотите получить в итоге.

#205727

Шаги

AllowUsers root@MYIP в sshd_config
и


iptables -A INPUT -s! MYIP --dport 22 -j DROP

делают по сути одно и тоже - разрешение ssh лишь с одного конкретного ip
В итоге хочу чтобы один из этих способов заработал :)

Предпочтительнее решить вопрос с помощью iptables.
Порткнокинг был бы идеальным вариантом, но подозреваю, что в недофаерволе нашего впс могут быть проблемы с ресентом, поэтому он и не заработал.
Причина сброса правила для 22 порта (см выше) тоже не ясна, хотя абсолюно идентичные правила для 111 и 3306 портов срабатывают корректно.

#205798

Брррр пробуйте так

[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]

#205812

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

#206450

Во втором пробуй заменить
[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]

#206458

Кстати если интересно, в последнее время делаю примерно так:

text

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:

text
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 (ловушка):

text
aptitude install module-assistant xtables-addons-source
module-assistant prepare
module-assistant auto-install xtables-addons-source
depmod -a
#206531

Kettler, и этот вариант дает подключится к сеансу логина с "левого" ip... я в тупике.
Может выводы команд каких показать для разбора полетов?
newzenon, спасибо, давно хотел TARPIT использовать.

запись об этом адресе должна быть “моложе” 20 секунд

может быть "не моложе"?

Войдите или зарегистрируйтесь, чтобы ответить.