LINUX.ORG.RU
решено ФорумAdmin

SSH туннель подправить iptables

 , ,


0

1

SSH туннель с винды (PUTTY) на линукс (CentOS) подымается и посволяет браузать (Firefox SOCKS) без проблем. Проблемы начинаются когда я пытаюсь на линуксбоксе iptables загрубить. При попытке закруть все входящие порты кроме SSH пропадает возможность браузать. При этом с коннектом по SSH к линуксбоксу проблем не возникает.

Так вот выглядит iptables которые я нагородил:

Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2     1601  219K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
3        0     0 ACCEPT     all  --  *      *       127.0.0.1            0.0.0.0/0
4        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
5        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 3992 packets, 2007K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Подскажите пожалуйста как подправить чтоб остался нужный функционал. Спасибо



Последнее исправление: Pinkbyte (всего исправлений: 1)

1 0 0 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Попадает ли под это правило UDP трафик? Видимо зависит от загруженных модулей conntrack*.

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

1 0 0 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Попадает ли под это правило UDP трафик? Видимо зависит от загруженных модулей conntrack*.

Как мне кажется UDP под all должен попадать но как проверить я не в курсе. Подгружается ли conntrack модуль или нет я точно сказать не могу но похоже нет.

Когда модуль “conntracks” отключен, таблица NAT отсутствует в iptables:
 
# cat /proc/net/ip_tables_names
mangle
filter

Добавление в /etc/sysconfig/iptables-config строки

IPTABLES_MODULES="ip_conntrack"
и/или
# echo "modprobe ip_conntrack" >> /etc/sysconfig/modules/iptables.modules
# chmod +x /etc/sysconfig/modules/iptables.modules
модуль не грузят.

Это первая линукс машина с которой я имею дело, не пинайте больно.

Добавлю что это OpenVZ VPS CentOS 6.5

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

UDP под all должен попадать

Под all попадет конечно, но попадает ли под RELATED,ESTABLISHED — вот вопрос, udp stateless протокол.

Если загружены conntrack модули (см. /sbin/lsmod), то может и отслеживается udp тоже.

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

Если загружены conntrack модули (см. /sbin/lsmod)

lsmod возвращает ничего

# lsmod
Module                  Size  Used by
Не подскажете как инсталировать conntrack модули?

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

lsmod возвращает ничего

В русском языке двое отрицание можно/нужно использовать.
Такого не может (не должно) быть на стандартном CentOS'овском ядре.

ls /lib/modules/`uname -r`/kernel/net/netfilter/*conntrack*

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

ls /lib/modules/`uname -r`/kernel/net/netfilter/*conntrack*

# ls /lib/modules/`uname -r`# ls /lib/modules/`uname -r`/kernel/net/netfilter/*conntrack*
ls: cannot access /lib/modules/2.6.32-042stab085.20/kernel/net/netfilter/*conntrack*: No such file or directory

Я не вижу папки /kernel в /lib/modules/2.6.32-042stab085.20

Насчет стандартности ядра я не могу ничего сказать, это VPS который я рентую.

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk
# ls /proc/sys/net/netfilter/*conntrack*
/proc/sys/net/netfilter/nf_conntrack_acct                  /proc/sys/net/netfilter/nf_conntrack_icmpv6_timeout           /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_fin_wait
/proc/sys/net/netfilter/nf_conntrack_buckets               /proc/sys/net/netfilter/nf_conntrack_log_invalid              /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_last_ack
/proc/sys/net/netfilter/nf_conntrack_checksum              /proc/sys/net/netfilter/nf_conntrack_max                      /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_max_retrans
/proc/sys/net/netfilter/nf_conntrack_count                 /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal           /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_syn_recv
/proc/sys/net/netfilter/nf_conntrack_events                /proc/sys/net/netfilter/nf_conntrack_tcp_loose                /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_syn_sent
/proc/sys/net/netfilter/nf_conntrack_events_retry_timeout  /proc/sys/net/netfilter/nf_conntrack_tcp_max_retrans          /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait
/proc/sys/net/netfilter/nf_conntrack_expect_max            /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close        /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_unacknowledged
/proc/sys/net/netfilter/nf_conntrack_generic_timeout       /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close_wait   /proc/sys/net/netfilter/nf_conntrack_udp_timeout
/proc/sys/net/netfilter/nf_conntrack_icmp_timeout          /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established  /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream

Может это оно?

raiffeisenpunk
() автор топика
Ответ на: комментарий от sdio

Кастомное ядро, VPS — oбратись в тех.поддержку.

Боюсь с iptables тех.поддержка от хостера мне не светит... Проще хостера сменить. Спасибо большое за помощь.

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

Все зависит от твоей цели. Или ты хочешь разобраться почему не работают твои правила или хочешь использовать то что есть в наличие.

Не закрывай udp для начала, иначе резолвинг (dns) не будет работать, затем смотри как закрывать остальное (просто по портам или при помощи RELATED,ESTABLISHED)

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

Проблемы с DNS резолвинг это первое что мне казалось может быть причиной но открыть сайт по IP также не получается.

conntrack не подгружается но я так понимаю для его использования надо было добавлять строку так:

# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
я естественно добавлял так:
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Если «technically the conntrack match supersedes - and so obsoletes - the state match» то использование первого возможно решило бы проблему.

Все зависит от твоей цели. Или ты хочешь разобраться почему не работают твои правила или хочешь использовать то что есть в наличие.

Непонятно какие еще кастомизации были сделаны в данном кернеле и на какие грабли придется наступать в будущем.

raiffeisenpunk
() автор топика

Если уж ты разрешил icmp, и там нет слушающих во внешку сервисов, то зачем же все закрывать? Если там есть такие сервисы, то предпочтительно их правильно настроить, чем использовать для закрытия фаерволл.

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

Если уж ты разрешил icmp, и там нет слушающих во внешку сервисов, то зачем же все закрывать?

icmp был открыт временно.

Можно и сервисы настроить и фаерволом все закрыть. Чем плох такой подход?

VPS хостера я сменил и все функционирует как надо. В кастомизации кернела похоже загвоздка была.

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

Можно и сервисы настроить и фаерволом все закрыть. Чем плох такой подход?

А зачем тогда закрывать? Уязвимы приложения, а не сетевая подсистема ядра.

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

А зачем тогда закрывать? Уязвимы приложения, а не сетевая подсистема ядра.

Вы вопрос задаете для того чтобы почерпнуть что-то полезное из моих ответов или намекнуть на то что мой подход кривой? Если первое то это мой первый опыт в этом деле и он никакой а если второе то напишите конкретно чем подход «закрыть все и открывать нужное» не хорош.

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

Вы вопрос задаете для того чтобы почерпнуть что-то полезное из моих ответов или намекнуть на то что мой подход кривой?

Истина, как известно, рождается в споре. Я бы сам хотел почитать, что думают здешние резиденты по этому поводу, поэтому и вступил в дискуссию.

чем подход «закрыть все и открывать нужное» не хорош

Не нужно привлекать лишние сущности (фаерволл в данном случае) для решения проблем, которые могут быть решены без них. Благо, линукс способствует этому принципу.

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

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

Фаервол стоит так как противостоять бруту открытого порта без него неудобно. Все и началось с того что хостер VPS мой положил из-за брута.

raiffeisenpunk
() автор топика
Ответ на: комментарий от raiffeisenpunk

[qoute]Фаервол стоит так как противостоять бруту открытого порта без него неудобно. Да, тогда средствами приложения справиться будет затруднительно (если вообще возможно).

Если брутят ssh, то могу посоветовать fail2ban. Оно читает логи на предмет неудавшихся попыток аутентификации и автоматически банит на определенный период времени средствами фаерволла. По дефолту 10 минут, но можно настроить и побольше.

Альтернативно, можно поменять номер порта, на котором слущает ssh. Делается это добавлением/заменой в /etc/ssh/sshd_config строчки

Port N

, где N - нужное число.

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

Если брутят ssh, то могу посоветовать fail2ban.

Порт я сменил и добавил такие правила:

iptables -A INPUT -p tcp --dport 3322 -m recent --name ssh --update --seconds 900 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 3322 -m recent --name ssh --set
iptables -A INPUT -p tcp --dport 3322 -m recent --name ssh ! --rcheck --seconds 15 --hitcount 2 -j DROP
iptables -A INPUT -p tcp --dport 3322 -j ACCEPT
От тупых сканеров порт закрыт и тупой брут тоже не пройдет.

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