Запрашивать с помощью iptables

Во-первых, я хочу спросить, почему мой rules.v4 выглядит настолько сложным после использования: iptables -F. Я подумал, что после промывки он будет пустым:

# Generated by iptables-save v1.6.0 on Tue Jan 9 21:25:13 2018 *filter :INPUT ACCEPT [76:4024] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1:40] :ufw-after-forward - [0:0] :ufw-after-input - [0:0] :ufw-after-logging-forward - [0:0] :ufw-after-logging-input - [0:0] :ufw-after-logging-output - [0:0] :ufw-after-output - [0:0] :ufw-before-forward - [0:0] :ufw-before-input - [0:0] :ufw-before-logging-forward - [0:0] :ufw-before-logging-input - [0:0] :ufw-before-logging-output - [0:0] :ufw-before-output - [0:0] :ufw-logging-allow - [0:0] :ufw-logging-deny - [0:0] :ufw-not-local - [0:0] :ufw-reject-forward - [0:0] :ufw-reject-input - [0:0] :ufw-reject-output - [0:0] :ufw-skip-to-policy-forward - [0:0] :ufw-skip-to-policy-input - [0:0] :ufw-skip-to-policy-output - [0:0] :ufw-track-forward - [0:0] :ufw-track-input - [0:0] :ufw-track-output - [0:0] :ufw-user-forward - [0:0] :ufw-user-input - [0:0] :ufw-user-limit - [0:0] :ufw-user-limit-accept - [0:0] :ufw-user-logging-forward - [0:0] :ufw-user-logging-input - [0:0] :ufw-user-logging-output - [0:0] :ufw-user-output - [0:0] -A INPUT -i enp3s0 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i enp3s0 -p tcp -m tcp --dport 67 -j ACCEPT -A INPUT -i enp3s0 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i enp3s0 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i enp2s0 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i enp2s0 -p tcp -m tcp --dport 67 -j ACCEPT -A INPUT -i enp2s0 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i enp2s0 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -j ufw-before-logging-input -A INPUT -j ufw-before-input -A INPUT -j ufw-after-input -A INPUT -j ufw-after-logging-input -A INPUT -j ufw-reject-input -A INPUT -j ufw-track-input -A FORWARD -d 10.42.0.0/24 -o enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 10.42.0.0/24 -i enp3s0 -j ACCEPT -A FORWARD -i enp3s0 -o enp3s0 -j ACCEPT -A FORWARD -o enp3s0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i enp3s0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -d 10.42.1.0/24 -o enp2s0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 10.42.1.0/24 -i enp2s0 -j ACCEPT -A FORWARD -i enp2s0 -o enp2s0 -j ACCEPT -A FORWARD -o enp2s0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i enp2s0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -j ufw-before-logging-forward -A FORWARD -j ufw-before-forward -A FORWARD -j ufw-after-forward -A FORWARD -j ufw-after-logging-forward -A FORWARD -j ufw-reject-forward -A FORWARD -j ufw-track-forward -A OUTPUT -j ufw-before-logging-output -A OUTPUT -j ufw-before-output -A OUTPUT -j ufw-after-output -A OUTPUT -j ufw-after-logging-output -A OUTPUT -j ufw-reject-output -A OUTPUT -j ufw-track-output -A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input -A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input -A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input -A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input -A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input -A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input -A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input -A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 4 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT -A ufw-before-forward -j ufw-user-forward -A ufw-before-input -i lo -j ACCEPT -A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny -A ufw-before-input -m conntrack --ctstate INVALID -j DROP -A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 4 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT -A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT -A ufw-before-input -j ufw-not-local -A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT -A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT -A ufw-before-input -j ufw-user-input -A ufw-before-output -o lo -j ACCEPT -A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A ufw-before-output -j ufw-user-output -A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] " -A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN -A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN -A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN -A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN -A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny -A ufw-not-local -j DROP -A ufw-skip-to-policy-forward -j DROP -A ufw-skip-to-policy-input -j DROP -A ufw-skip-to-policy-output -j ACCEPT -A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT -A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT -A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] " -A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable -A ufw-user-limit-accept -j ACCEPT COMMIT # Completed on Tue Jan 9 21:25:13 2018 # Generated by iptables-save v1.6.0 on Tue Jan 9 21:25:13 2018 *nat :PREROUTING ACCEPT [306:30491] :INPUT ACCEPT [79:4750] :OUTPUT ACCEPT [128:10004] :POSTROUTING ACCEPT [122:8932] -A POSTROUTING -s 10.42.0.0/24 ! -d 10.42.0.0/24 -j MASQUERADE -A POSTROUTING -s 10.42.1.0/24 ! -d 10.42.1.0/24 -j MASQUERADE COMMIT # Completed on Tue Jan 9 21:25:13 2018

Второй вопрос - мне нужно iptables, чтобы оценить ограничение новых соединений на конкретном порту (ограничение не на ip, но все новые попытки, если их слишком много из них), в то же время не блокировать трафик, который не приходит на этот конкретный порт. Все примеры, которые я видел в Интернете, используют DROP для политики INPUT по умолчанию, но это меня не устраивает.

Обновление: я запускаю игровой сервер на порте 45000 (он использует протокол tcp и upd), и недавно я проблемы с бот-спамом. Боты пытаются подключиться к моему серверу со всего мира, используя сотни прокси. Плагины игрового сервера успешно блокировали их, но в последнее время эта атака становится намного сильнее, и теперь она вызывает лаги. В идеале я хотел заблокировать доступ к этому порту на основе геолокации и разрешить только 5-10 стран, но это сложно. Другой вариант - ограничить скорость новых соединений с этим портом, сохраняя уже существующие. Разумеется, он сильно блокирует обычных игроков, пытающихся присоединиться к атаке, но, по крайней мере, те, кто уже играет, могут делать это без крайнего отставания. Мой сервер невелик (максимум 30 игроков), поэтому я предполагаю, что ограничение скорости до 30 новых подключений к порту 45000 за 30 секунд будет в порядке.

1
задан 10 January 2018 в 18:07

3 ответа

Все отправленные вами объекты - это то, что в какой-то момент вы активировали ufw, который является интерфейсом iptables и сделал все эти пользовательские таблицы.

Опция -F удаляет правила из некоторых, но не всех правил из всех таблиц и пустых цепочек, которые вы видите.

Вам нужны дополнительные опции:

Из https://serverfault.com/questions/200635/linux- iptables-best-way-to-clear-all-rules-leave-anything-open полный набор команд для сброса iptables:

iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -t mangle -F iptables -F iptables -X -P опция сбрасывает политику по умолчанию для таблиц. -t nat -F очищает таблицу nat. -t mangle -F flushes mangle, который почти никогда не используется. -X удаляет пустые цепочки.

Для получения дополнительной информации см. ссылку для IPv6 и man iptables.

«Проблема» - это опция -F без указания цепочки, не очищает все цепочки, в вашей Если у вас есть несколько оставшихся цепочек, созданных UFW.

Чтобы удалить эти цепочки, вам нужно их сначала очистить (-X не удалит их, если они не пусты)

Итак, для каждого вам сначала нужно удалить любую ссылку на цепочку, очистить цепочку и удалить ее

Начиная с «ufw-before-logging-forward»

sudo iptables -D FORWARD -j ufw-before-logging-forward sudo iptables -F ufw-before-logging-forward sudo iptables -X ufw-before-logging-forward

и в для всех пользовательских цепочек добавлено ufw.

Конечно, если вы используете ufw, то есть гораздо более простой метод:

sudo ufw disable

Несколько общие комментарии

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F. Если вы вручную пишете правила iptables, не используйте ufw или другие инструменты для изменения ваших правил. Я предлагаю REJECT, а не DROP. В ореховой раковине DROP более беспокоит законный трафик, и, хотя это звучит неплохо, DROP не замедляет и не обманывает ни один из современных инструментов крекинга. Поскольку ваша система реагирует на пакет, взломщики знают, что вы работаете на вашем IP-адресе, а DROP ничего не скрывает.

Подробнее см. в https://serverfault.com/questions/200635/linux-iptables-best-way-to-clear-all-rules-leaving-anything-open . .

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F

. Главный ответ Как сохранить правила iptables? рассматривает основное использование, включая сохранение и восстановление вашего набора правил.

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

Примеры:

Веб-трафик. Я мог бы использовать общий синтаксис для веб-сервера, если он был очень занят:

iptables -I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT

Вы, безусловно, можете добавить опцию --dport 80 к приведенной выше команде.

Это ограничивает 30 подключений в минуту, что очень медленно для Apache.

SSH - эти правила отлично подходят для блокировки попыток грубой силы

# This rule tracks incoming connections to port 22 iptables -A INPUT -p tcp -m tcp --dport 22 -m tcp -m state --state NEW -m recent --set --name SSH --rsource # This command rejects any attempt to connect to ssh more than # 8 times in 10 minutes # After 10 minutes you can attempt again so not permanent ban iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 600 --hitcount 8 --rttl --name SSH --rsource -j REJECT --reject-with icmp-host-prohibited # Finally this will accept the connections iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)

1
ответ дан 17 July 2018 в 23:26

Все отправленные вами объекты - это то, что в какой-то момент вы активировали ufw, который является интерфейсом iptables и сделал все эти пользовательские таблицы.

Опция -F удаляет правила из некоторых, но не всех правил из всех таблиц и пустых цепочек, которые вы видите.

Вам нужны дополнительные опции:

Из https://serverfault.com/questions/200635/linux- iptables-best-way-to-clear-all-rules-leave-anything-open полный набор команд для сброса iptables:

iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -t mangle -F iptables -F iptables -X -P опция сбрасывает политику по умолчанию для таблиц. -t nat -F очищает таблицу nat. -t mangle -F flushes mangle, который почти никогда не используется. -X удаляет пустые цепочки.

Для получения дополнительной информации см. ссылку для IPv6 и man iptables.

«Проблема» - это опция -F без указания цепочки, не очищает все цепочки, в вашей Если у вас есть несколько оставшихся цепочек, созданных UFW.

Чтобы удалить эти цепочки, вам нужно их сначала очистить (-X не удалит их, если они не пусты)

Итак, для каждого вам сначала нужно удалить любую ссылку на цепочку, очистить цепочку и удалить ее

Начиная с «ufw-before-logging-forward»

sudo iptables -D FORWARD -j ufw-before-logging-forward sudo iptables -F ufw-before-logging-forward sudo iptables -X ufw-before-logging-forward

и в для всех пользовательских цепочек добавлено ufw.

Конечно, если вы используете ufw, то есть гораздо более простой метод:

sudo ufw disable

Несколько общие комментарии

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F. Если вы вручную пишете правила iptables, не используйте ufw или другие инструменты для изменения ваших правил. Я предлагаю REJECT, а не DROP. В ореховой раковине DROP более беспокоит законный трафик, и, хотя это звучит неплохо, DROP не замедляет и не обманывает ни один из современных инструментов крекинга. Поскольку ваша система реагирует на пакет, взломщики знают, что вы работаете на вашем IP-адресе, а DROP ничего не скрывает.

Подробнее см. в https://serverfault.com/questions/200635/linux-iptables-best-way-to-clear-all-rules-leaving-anything-open . .

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F

. Главный ответ Как сохранить правила iptables? рассматривает основное использование, включая сохранение и восстановление вашего набора правил.

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

Примеры:

Веб-трафик. Я мог бы использовать общий синтаксис для веб-сервера, если он был очень занят:

iptables -I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT

Вы, безусловно, можете добавить опцию --dport 80 к приведенной выше команде.

Это ограничивает 30 подключений в минуту, что очень медленно для Apache.

SSH - эти правила отлично подходят для блокировки попыток грубой силы

# This rule tracks incoming connections to port 22 iptables -A INPUT -p tcp -m tcp --dport 22 -m tcp -m state --state NEW -m recent --set --name SSH --rsource # This command rejects any attempt to connect to ssh more than # 8 times in 10 minutes # After 10 minutes you can attempt again so not permanent ban iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 600 --hitcount 8 --rttl --name SSH --rsource -j REJECT --reject-with icmp-host-prohibited # Finally this will accept the connections iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)

1
ответ дан 24 July 2018 в 13:57
  • 1
    Благодарим вас за подробный ответ. Я обновил свой пост о том, чего хочу. – Gerolf 10 January 2018 в 17:49

Все отправленные вами объекты - это то, что в какой-то момент вы активировали ufw, который является интерфейсом iptables и сделал все эти пользовательские таблицы.

Опция -F удаляет правила из некоторых, но не всех правил из всех таблиц и пустых цепочек, которые вы видите.

Вам нужны дополнительные опции:

Из https://serverfault.com/questions/200635/linux- iptables-best-way-to-clear-all-rules-leave-anything-open полный набор команд для сброса iptables:

iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -t mangle -F iptables -F iptables -X -P опция сбрасывает политику по умолчанию для таблиц. -t nat -F очищает таблицу nat. -t mangle -F flushes mangle, который почти никогда не используется. -X удаляет пустые цепочки.

Для получения дополнительной информации см. ссылку для IPv6 и man iptables.

«Проблема» - это опция -F без указания цепочки, не очищает все цепочки, в вашей Если у вас есть несколько оставшихся цепочек, созданных UFW.

Чтобы удалить эти цепочки, вам нужно их сначала очистить (-X не удалит их, если они не пусты)

Итак, для каждого вам сначала нужно удалить любую ссылку на цепочку, очистить цепочку и удалить ее

Начиная с «ufw-before-logging-forward»

sudo iptables -D FORWARD -j ufw-before-logging-forward sudo iptables -F ufw-before-logging-forward sudo iptables -X ufw-before-logging-forward

и в для всех пользовательских цепочек добавлено ufw.

Конечно, если вы используете ufw, то есть гораздо более простой метод:

sudo ufw disable

Несколько общие комментарии

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F. Если вы вручную пишете правила iptables, не используйте ufw или другие инструменты для изменения ваших правил. Я предлагаю REJECT, а не DROP. В ореховой раковине DROP более беспокоит законный трафик, и, хотя это звучит неплохо, DROP не замедляет и не обманывает ни один из современных инструментов крекинга. Поскольку ваша система реагирует на пакет, взломщики знают, что вы работаете на вашем IP-адресе, а DROP ничего не скрывает.

Подробнее см. в https://serverfault.com/questions/200635/linux-iptables-best-way-to-clear-all-rules-leaving-anything-open . .

Я предлагаю вам придерживаться политики по умолчанию ACCEPT, а не REJECT или DROP. Если вы установите для политики по умолчанию REJECT / DROP, вы можете заблокировать себя, если вы запустите iptables -F

. Главный ответ Как сохранить правила iptables? рассматривает основное использование, включая сохранение и восстановление вашего набора правил.

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

Примеры:

Веб-трафик. Я мог бы использовать общий синтаксис для веб-сервера, если он был очень занят:

iptables -I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT

Вы, безусловно, можете добавить опцию --dport 80 к приведенной выше команде.

Это ограничивает 30 подключений в минуту, что очень медленно для Apache.

SSH - эти правила отлично подходят для блокировки попыток грубой силы

# This rule tracks incoming connections to port 22 iptables -A INPUT -p tcp -m tcp --dport 22 -m tcp -m state --state NEW -m recent --set --name SSH --rsource # This command rejects any attempt to connect to ssh more than # 8 times in 10 minutes # After 10 minutes you can attempt again so not permanent ban iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 600 --hitcount 8 --rttl --name SSH --rsource -j REJECT --reject-with icmp-host-prohibited # Finally this will accept the connections iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)

1
ответ дан 24 July 2018 в 17:02
  • 1
    Благодарим вас за подробный ответ. Я обновил свой пост о том, чего хочу. – Gerolf 10 January 2018 в 17:49

Другие вопросы по тегам:

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