Во-первых, я хочу спросить, почему мой 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 секунд будет в порядке.
Все отправленные вами объекты - это то, что в какой-то момент вы активировали 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
Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)
Все отправленные вами объекты - это то, что в какой-то момент вы активировали 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
Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)
Все отправленные вами объекты - это то, что в какой-то момент вы активировали 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
Если вам нужно более конкретная помощь, пожалуйста, обновите свой вопрос =)