Vesta 2.0 is coming soon! See our progress update: https://vestacp.com/docs/vesta-2-update
БОЛЬШАЯ ПРОБЛЕМА с фаерволом в панели и iptables
-
- Posts: 3
- Joined: Thu Nov 10, 2016 4:38 am
БОЛЬШАЯ ПРОБЛЕМА с фаерволом в панели и iptables
Здравствуйте. Веста установлена на ubuntu 14.04, версия 0.9.8.16 (amd64).
Обнаружился очень неприятный и опасный баг: при настройке фаервола в панели, в частности - прописывании к порту ip-адреса, обнаружилось следующее - при вводе ip в формате CIDR - X.X.X.X/24 (/16, /32 и т.д.) панель выдаёт ошибку - Error: invalid ip format :: X.X.X.X/24, принимается только запись вида X.X.X.X/0.
В результате: приходится прописывать вручную правила iptables непосредственно в консоли. Ну это ничего, полбеды, вполне справляюсь и ручками. НО!!!
Обнаружилось, что VestaCP создаёт дополнительную таблицу vesta, видимо для записи собственных цепочек правил фильтрации, ОДНАКО - пишет В ГЛАВНУЮ ТАБЛИЦУ INPUT, а собственная таблица пуста.
Вопрос: это реальный баг, или так специально сделано? Тогда какой смысл создавать дополнительную пустую таблицу, в которой потом ничего не пишется? Зачем изменять ГЛАВНУЮ ТАБЛИЦУ INPUT, вместо того, что бы сделать из неё переход в собственную, и туда уже записывать правила фаервола из хостинг-панели?
Ну и третье, самое неприятное: обнаружилось, что Vesta самостоятельно переписывает правила в iptables, без участия администратора, согласно правилам в хостинг-панели.
А именно: при невозможности указать в панели в правиле ip-адрес формата CIDR, приходится это делать вручную в консоли, непосредственно в iptables. При прописывании правил iptables в консоли, и их последующем сохранении, изменения никак не отражаются в панели весты, т.е. правила фаервола в панели остаются прежними, хотя правила в iptables были изменены. И вот, обнаружилось, что через некоторое время, правила в iptables ИЗМЕНЯЮТСЯ НА ТАКИЕ ЖЕ, как и в фаерволе в панели, т.е. vesta спустя некоторое время переписывает таблицу INPUT в iptables, согласно своим правилам во-вкладке фаервола.
Результат: прописал для весты и SSH доступ только со-своего диапазона IP, что-бы другие не ломились, и через некоторое время с удивлением обнаруживаю в логах аутентификации, в что в эти порты (8083 и ssh) ломятся все, кому не лень! И брутофорсят, брутофорсят. Смотрю в таблицу INPUT в iptables и офигиваю - ip доступа к портам вновь переписаны в 0.0.0.0/0, как в фаерволе в панели. Сразу напрашивается вопрос: КАКОГО ХРЕНА???
Ну а теперь главный вопрос: это я дурак, и делаю что-то не правильно, либо в Весте реальный баг, с невозможностью прописывания нужного формата CIDR, и перезаписью правил в главной таблице iptables?
Прошу обратить особое внимание на эту проблему, ибо это офигенная дыра в безопасности.
ПыСы: Да, совсем забыл добавить - панель НЕ ТОЛЬКО переписывает свои правила в iptables, которые присутствуют в панели фаервола, НО ЕЩЁ И УДАЛЯЕТ ТЕ ПРАВИЛА, которые отсутствуют в панели но имеются в таблице INPUT, т.е. полностью переписывает главную таблицу на свой лад.
Обнаружился очень неприятный и опасный баг: при настройке фаервола в панели, в частности - прописывании к порту ip-адреса, обнаружилось следующее - при вводе ip в формате CIDR - X.X.X.X/24 (/16, /32 и т.д.) панель выдаёт ошибку - Error: invalid ip format :: X.X.X.X/24, принимается только запись вида X.X.X.X/0.
В результате: приходится прописывать вручную правила iptables непосредственно в консоли. Ну это ничего, полбеды, вполне справляюсь и ручками. НО!!!
Обнаружилось, что VestaCP создаёт дополнительную таблицу vesta, видимо для записи собственных цепочек правил фильтрации, ОДНАКО - пишет В ГЛАВНУЮ ТАБЛИЦУ INPUT, а собственная таблица пуста.
Вопрос: это реальный баг, или так специально сделано? Тогда какой смысл создавать дополнительную пустую таблицу, в которой потом ничего не пишется? Зачем изменять ГЛАВНУЮ ТАБЛИЦУ INPUT, вместо того, что бы сделать из неё переход в собственную, и туда уже записывать правила фаервола из хостинг-панели?
Ну и третье, самое неприятное: обнаружилось, что Vesta самостоятельно переписывает правила в iptables, без участия администратора, согласно правилам в хостинг-панели.
А именно: при невозможности указать в панели в правиле ip-адрес формата CIDR, приходится это делать вручную в консоли, непосредственно в iptables. При прописывании правил iptables в консоли, и их последующем сохранении, изменения никак не отражаются в панели весты, т.е. правила фаервола в панели остаются прежними, хотя правила в iptables были изменены. И вот, обнаружилось, что через некоторое время, правила в iptables ИЗМЕНЯЮТСЯ НА ТАКИЕ ЖЕ, как и в фаерволе в панели, т.е. vesta спустя некоторое время переписывает таблицу INPUT в iptables, согласно своим правилам во-вкладке фаервола.
Результат: прописал для весты и SSH доступ только со-своего диапазона IP, что-бы другие не ломились, и через некоторое время с удивлением обнаруживаю в логах аутентификации, в что в эти порты (8083 и ssh) ломятся все, кому не лень! И брутофорсят, брутофорсят. Смотрю в таблицу INPUT в iptables и офигиваю - ip доступа к портам вновь переписаны в 0.0.0.0/0, как в фаерволе в панели. Сразу напрашивается вопрос: КАКОГО ХРЕНА???
Ну а теперь главный вопрос: это я дурак, и делаю что-то не правильно, либо в Весте реальный баг, с невозможностью прописывания нужного формата CIDR, и перезаписью правил в главной таблице iptables?
Прошу обратить особое внимание на эту проблему, ибо это офигенная дыра в безопасности.
ПыСы: Да, совсем забыл добавить - панель НЕ ТОЛЬКО переписывает свои правила в iptables, которые присутствуют в панели фаервола, НО ЕЩЁ И УДАЛЯЕТ ТЕ ПРАВИЛА, которые отсутствуют в панели но имеются в таблице INPUT, т.е. полностью переписывает главную таблицу на свой лад.
Re: БОЛЬШАЯ ПРОБЛЕМА с фаерволом в панели и iptables
С CIDR баг, с цепочками баг, с перезаписыванием правил iptables - фитча: веста генерирует весь конфиг iptables заново, читая свой файлы конфигурации в /usr/local/vesta/data/firewall.
Мораль: пишем в правила в конфигурацию и ребилдим v-update-firewall
Что будет в 17-й версии - еще не известно.
Мораль: пишем в правила в конфигурацию и ребилдим v-update-firewall
Что будет в 17-й версии - еще не известно.
Re: БОЛЬШАЯ ПРОБЛЕМА с фаерволом в панели и iptables
Что бы избавиться от этой проблемы, поправьте файл <VESTA_DIR>/func/main.sh
Найдите там функцию
и в условии проверки "чистого айпи" убрать в конце $ знак:
Я вот не очень по башу, и не мог понять зачем он тут и для чего, но тоже долго промучился с тем, что не мог в файрволе через ограничить доступ к порту только для локальной сети 192.168.1.0/24 - выдовала такую же ошибку Error: invalid ip format
Найдите там функцию
Code: Select all
# IP format validator
is_ip_format_valid() {
object_name=${2-ip}
ip_regex='([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
ip_clean=$(echo "${1%/[0-9][0-9]}")
ip_clean=$(echo "${1%/[0-9]}")
if ! [[ "$ip_clean" =~ ^$ip_regex\.$ip_regex\.$ip_regex\.$ip_regex$ ]]; then
echo $1
check_result $E_INVALID "invalid $object_name format :: $1"
fi
if [ $1 != "$ip_clean" ]; then
ip_cidr="$ip_clean/"
ip_cidr=$(echo "${1#$ip_cidr}")
if [[ "$ip_cidr" -gt 32 ]]; then
check_result $E_INVALID "invalid $object_name format :: $1"
fi
fi
}
Code: Select all
if ! [[ "$ip_clean" =~ ^$ip_regex\.$ip_regex\.$ip_regex\.$ip_regex ]]; then
-
- Posts: 3
- Joined: Thu Nov 10, 2016 4:38 am
Re: БОЛЬШАЯ ПРОБЛЕМА с фаерволом в панели и iptables
Вы имеете в виду - невозможность прописывания подсетей в формате CIDR? Т.е. конкретный баг панели заключается именно в этой синтаксической ошибке?gloobus wrote:Что бы избавиться от этой проблемы, поправьте файл <VESTA_DIR>/func/main.sh
Найдите там функцию
Я поступил немного по другому: вообще отключил фаервол в настройках панели. При этом, исчезли все правила из INPUT и пустая таблица vesta тоже удалилась, политика таблицы INPUT изменилась ACCEPT.
И уже в чистой таблице INPUT прописал все правила заново.
Однако, вызывает большое удивление, что разработчики никак не реагируют на такую дыру в безопасности.