Задать вопрос
amelihovv
@amelihovv
Фулстек веб разработчик

Как настроить iptables на vds с виртуализацией openvz?

Есть вдс от firstvds.ru, к сожалению, с виртуализацией openvz, а не kvm. На этом впс, видимо, отсутствует модуль conntrack, судя по этой ссылке и по тому, что команда
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
выдает ошибку iptables: No chain/target/match by that name.. Ок, попытался обойтись без этого правила. Написал следующие правила для iptables
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -j DROP

Все, вроде бы, хорошо. Снаружи открыты только 22, 80 и 443 порт. Остальные закрыты. Но проблема состоит в том, что и исходящие соединения блокируются. Потому что обычный пинг до яндекса или любой другой запрос к внешнему сайту не проходят. Цепочки FORWARD и OUTPUT пустые. Если удалить последнее правило -A INPUT -j DROP, то исходящие запросы уходят и приходят, но снаружи становятся открытыми все порты.
Как я понимаю, это из-за отсутствия
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
. Можно ли как-то обойтись без этого правила? Или все-таки нужно переезжать на вдс с kvm виртуализацией?
  • Вопрос задан
  • 1432 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@krosh
Во-первых, о каком дистрибутиве идет речь? Возможно у Вас firewalld вместо iptables, вот и не получается работать. Задавая вопросы такого типа нужно показывать, что у Вас во всех таблицах и цепочках:
iptables-save

Во-вторых, это логично, что в OpenVZ-контейнерах что-то не работает, т.к. используются возможности хостового ядра, а нужны Вам модуль туда не подгружен, а Вы на это не имеете прав. Если не нравится, то нужно переходить или к другому хостеру, или на KVM.

Просто проверяйте в следующих раз так:
lsmod |grep nf_conntrack

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

Поэтому придется фильтровать по принципу "разрешено все, что не запрещено":
iptables -A INPUT -p tcp -m tcp -s X.X.X.X --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP


Понять, что блокировать можно так:
netstat -lntpu
либо nmap с другого хоста.

Ставьте в правилах только блокировки на конкретные сервисы и не переживайте за остальное.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Скорее всего, Вам нужно переезжать на VDS с виртуализацией KVM. А если хотите нормальную поддержку (без панели ISPManager) то съезжайте от FirstVDS к адекватному провайдеру.
Ответ написан
Комментировать
@A1estro
Попробуйте state:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

З.Ы. лучше вместо -A INPUT -j DROP делать -P INPUT DROP
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы