Брандмауэр
WARNING
После каждого изменения или обновления брандмауэра Hestia очистит текущие iptables, если только правила не будут добавлены через Hestia и пользовательский скрипт.
Как открыть или заблокировать порт или IP?
- Перейдите к настройкам сервера, нажав значок Сервер в правом верхнем углу.
- Нажмите кнопку Брандмауэр.
- Нажмите кнопку Добавить правило.
- Выберите нужное действие.
- Выберите нужный протокол.
- Введите порт(ы), к которым вы хотите применить это правило (
0
для всех портов). - Установите IP, к которому это правило будет применяться (
0.0.0.0/0
для всех IP) или выберите IPSet. - При желании опишите функцию правила.
- Нажмите кнопку Save в правом верхнем углу.
Вы также можете использовать команду v-add-firewall-rule.
Как настроить черный или белый список IPSet?
IPSet — это большие списки IP-адресов или подсетей. Их можно использовать для черных и белых списков.
- Перейдите к настройкам сервера, нажав на значок Сервер в правом верхнем углу.
- Нажмите кнопку Брандмауэр.
- Нажмите кнопку Управление списками IP.
- Нажмите кнопку Добавить список IP.
- Дайте имя вашему списку IP.
- Выберите источник данных, введя один из следующих вариантов:
- URL:
http://ipverse.net/ipblocks/data/countries/nl.zone
- Скрипт (с
chmod 755
):/usr/local/hestia/install/deb/firewall/ipset/blacklist.sh
- Файл:
file:/location/of/file
- Вы также можете использовать один из включенных источников Hestia.
- Выберите нужную версию IP (v4 или v6).
- Выберите, следует ли автоматически обновлять список.
- Нажмите кнопку Сохранить в правом верхнем углу.
Как настроить правила iptables?
DANGER
Это опасно продвинутая функция, убедитесь, что вы понимаете, что делаете.
Hestia поддерживает настройку пользовательских правил, цепочек или флагов и т. д. с помощью скрипта.
Скрипт должен быть здесь: /usr/local/hestia/data/firewall/custom.sh
- Создайте custom.sh:
touch /usr/local/hestia/data/firewall/custom.sh
- Сделайте его исполняемым:
chmod +x /usr/local/hestia/data/firewall/custom.sh
- Отредактируйте его в своем любимом редакторе.
- Проверьте и убедитесь, что он работает.
- Чтобы сделать пользовательские правила постоянными, выполните:
v-update-firewall
НЕЯВНАЯ ЗАЩИТА: Перед тем, как сделать правила постоянными, если вы накосячите или заблокируете себе доступ к серверу, просто перезагрузите его.
пример custom.sh:
#!/bin/bash
IPTABLES="$(command -v iptables)"
$IPTABLES -N YOURCHAIN
$IPTABLES -F YOURCHAIN
$IPTABLES -I YOURCHAIN -s 0.0.0.0/0 -j RETURN
$IPTABLES -I INPUT -p TCP -m multiport --dports 1:65535 -j YOURCHAIN
Мой IPSet не работает
IPSet должен содержать не менее 10 IP-адресов или диапазонов IP-адресов.
Могу ли я объединить несколько источников в один?
Если вы хотите объединить несколько источников IP, вы можете сделать это с помощью следующего скрипта:
#!/bin/bash
BEL=(
"https://raw.githubusercontent.com/ipverse/rir-ip/master/country/be/ipv4-aggregated.txt"
"https://raw.githubusercontent.com/ipverse/rir-ip/master/country/nl/ipv4-aggregated.txt"
"https://raw.githubusercontent.com/ipverse/rir-ip/master/country/lu/ipv4-aggregated.txt"
)
IP_BEL_TMP=$(mktemp)
for i in "${BEL[@]}"; do
IP_TMP=$(mktemp)
((HTTP_RC = $(curl -L --connect-timeout 10 --max-time 10 -o "$IP_TMP" -s -w "%{http_code}" "$i")))
if ((HTTP_RC == 200 || HTTP_RC == 302 || HTTP_RC == 0)); then # "0", потому что file:/// возвращает 000
command grep -Po '^(?:\d{1,3}\.){3}\d{1,3}(?:/\d{1,2})?' "$IP_TMP" | sed -r 's/^0*([0-9]+)\.0*([0-9]+)\.0*([0-9]+)\.0*([0-9]+)$/\1.\2.\3.\4/' >> "$IP_BEL_TMP"
elif ((HTTP_RC == 503)); then
echo >&2 -e "\\nНедоступно (${HTTP_RC}): $i"
else
echo >&2 -e "\\nПредупреждение: curl вернул код ответа HTTP $HTTP_RC для URL $i"
fi
rm -f "$IP_TMP"
done
sed -r -e '/^(0\.0\.0\.0|10\.|127\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.|192\.168\.|22[4-9]\.|23[0-9]\.)/d' "$IP_BEL_TMP" | sort -n | sort -mu
rm -f "$IP_BEL_TMP"