iptables отклоняет все, что он должен принять

Для домашнего использования я выполняю Secunia PSI. Это отслеживает то, что установлено на машине и затем предупреждает меня, когда существуют обновления - даже дает ссылку на загрузку при необходимости. Блестящее небольшое приложение. Конечно, это только работает на то, что на самом деле установлено на моей машине и не лицензируется для корпоративного использования...

Secunia действительно предлагает Корпоративную версию также: http://secunia.com/vulnerability_scanning/corporate у меня не было шанса проверить его все же все же.

2
задан 2 March 2012 в 18:01
2 ответа

Что касается ответов HTTP, у меня создалось впечатление, что они используют соединение, открытое клиентом, что разрешено моим правилом. Я был неправ?

Да, ты был неправ. Скорее всего, вы захотите принять установленные соединения или связанные с входящими соединениями. Таким образом, можно ответить на все, что принято в правиле ввода. С брандмауэром без сохранения состояния нужно явно открывать исходный порт. Поскольку IPtables отслеживает состояние, вам не нужно этого делать. Он будет отслеживать состояние подключений для вас и автоматически разрешать исходящие подключения так, как вы думаете, но только если вы скажете ему об этом. Правило для этого: iptables -A INPUT -p ALL -m state --state ESTABLISHED, RELATED -j ACCEPT . Поместите это в начало вашего выходного списка. Если вы хотите быть особенно агрессивным, вы могли бы привязать это правило к определенным портам.

Если бы вы смотрели на это без сохранения состояния, вам нужно было бы помнить, откуда приходят и куда идут пакеты. Ваш сервер в настоящее время настроен, чтобы вы могли подключаться к другой машине по SSH. Поскольку вы не разрешаете трафик с портом 22 в качестве источника, ваш сервер не может отвечать на входящие соединения. Опять же, правило «ESTABLISHED, RELATED» решает эту проблему, разрешая трафику отвечать на входящие соединения, как и разрешая трафик, исходящий из порта 22, но в отличие от открытия 22 на брандмауэре без сохранения состояния, эта настройка не позволяет запускать новые соединения оттуда.

Ваш сервер в настоящее время настроен, чтобы вы могли подключаться к другой машине по SSH. Поскольку вы не разрешаете трафик с портом 22 в качестве источника, ваш сервер не может отвечать на входящие соединения. Опять же, правило «ESTABLISHED, RELATED» решает эту проблему, разрешая трафику отвечать на входящие соединения, как и разрешая трафик, исходящий из порта 22, но в отличие от открытия 22 на брандмауэре без сохранения состояния, эта настройка не позволяет запускать новые соединения оттуда.

Ваш сервер в настоящее время настроен, чтобы вы могли подключаться к другой машине по SSH. Поскольку вы не разрешаете трафик с портом 22 в качестве источника, ваш сервер не может отвечать на входящие соединения. Опять же, правило «ESTABLISHED, RELATED» решает эту проблему, разрешая трафику отвечать на входящие соединения, как и разрешая трафик, исходящий из порта 22, но в отличие от открытия 22 на брандмауэре без сохранения состояния, эта настройка не позволяет запускать новые соединения оттуда.

3
ответ дан 3 December 2019 в 10:58

Ваш подход плохой. Вы разрешаете все входные соединения, а затем останавливаете их на выходе. Это не предотвратит DDoS-атаки. Правильный способ - остановить входные соединения и разрешить выход.

Читая ваш код, я пытался переделать. Вот как, я думаю, это должно выглядеть:

#!/bin/sh

IPT=/usr/sbin/iptables

echo "Clear firewall rules..."
$IPT -F
$IPT -Z
$IPT -t nat -F
$IPT -t nat -Z
$IPT -t mangle -F
$IPT -t mangle -Z
$IPT -X

echo "Setting firewall policy..."
$IPT -P INPUT   DROP    # Deny  all incoming connections
$IPT -P OUTPUT  ACCEPT  # Allow all outgoing connections
$IPT -P FORWARD DROP    # Deny  all forwaring

echo "Allow connections from: lo, eth0, eth0.2654"
$IPT -I INPUT -i lo   -j ACCEPT
$IPT -I INPUT -i eth0 -j ACCEPT

echo "Allow icmp requests from eth0"
$IPT -A INPUT -p icmp -i eth0 -j ACCEPT

echo "Allow traffic for HTTP(S), SSH, SMTP, DNS, NTP, PgSQL, SolR"
$IPT -A INPUT -p tcp --dport 22                 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25   -i eth0       -j ACCEPT
$IPT -A INPUT -p tcp --dport 53   -i eth0       -j ACCEPT
$IPT -A INPUT -p udp --dport 53   -i eth0       -j ACCEPT
$IPT -A INPUT -p tcp --dport 80   -i eth0       -j ACCEPT
$IPT -A INPUT -p udp --dport 123  -i eth0       -j ACCEPT
$IPT -A INPUT -p tcp --dport 443  -i eth0       -j ACCEPT
$IPT -A INPUT -p tcp --dport 5433 -i eth0.2654  -j ACCEPT
$IPT -A INPUT -p udp --dport 5433 -i eth0.2654  -j ACCEPT
$IPT -A INPUT -p tcp --dport 8983 -i eth0.2654  -j ACCEPT
$IPT -A INPUT -p udp --dport 8983 -i eth0.2654  -j ACCEPT

echo "Deny web server user outgoing connections; eth0"
$IPT -A INPUT -o eth0 -m owner --uid-owner www-data -j DROP

echo "Drop everything."
$IPT -A INPUT -s 0/0 -j DROP

echo "Firewall loaded."
sleep 20
$IPT -nvL

echo "Clear firewall rules..."
$IPT -F
$IPT -Z
$IPT -t nat -F
$IPT -t nat -Z
$IPT -t mangle -F
$IPT -t mangle -Z
$IPT -X

Я не тестировал, так что имейте это в виду. Я не уверен, что "-i eth0.2654" будет работать с виртуальными интерфейсами.

Если хотите - попробуйте и дайте мне знать, работает он или нет.

0
ответ дан 3 December 2019 в 10:58

Теги

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