IPTables запущен на моем веб-сервере. Мне действительно нужна динамическая переадресация портов SSH, но мои IPTables ОТКЛЮЧАЮТ любое соединение INPUT / OUPUT, разрешая только некоторые порты.
Для цепочки FORWARD я написал такие правила:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcpflags:! 0x17/0x02 state NEW
ACCEPT all -f 0.0.0.0/0 0.0.0.0/0 limit: avg 100/sec burst 100
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 2/sec burst 10
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
Мои правила могут блокировать любое соединение с динамической переадресацией портов SSH.
Какие правила мне нужно написать? Не говорите мне «Отключить IPTables», мне нужен брандмауэр для защиты от взлома.
Просто чтобы уточнить ответ @kubanczyk, цепочка FORWARD не имеет значения, поскольку она применяется только к входящим пакетам, предназначенным для адреса, отличного от локального хоста, который должен быть маршрутизирован через локальный хост. Поскольку демон ssh принимает соединения (цепочка INPUT) на tcp / 22, а затем инициирует соединения (цепочка OUTPUT) от имени клиента (из-за -D), пересылки пакетов не происходит.
Я предполагаю, что цепочка INPUT веб-сервера уже позволяет ssh, простите меня за очевидное.
Теперь для динамического (-D) туннелирования вам также необходимо включить ВЫВОД с веб-сервера (любой локальный порт) на желаемый удаленный хост (ы) и их порт (ы). Под удаленными я имею в виду те, к которым вы действительно хотите подключиться через динамический туннель.
Поэтому, если вы планируете использовать свой туннель для подключения к хосту 1.2.3.4 через порт 443, вам необходимо РАЗРЕШИТЬ ВЫХОД на веб-сервере с любого порта на 1.2.3.4:443.
Цепочка FORWARD здесь совершенно неактуальна.