Делаю отладку правил iptable на сервере debian, к которому имею физический доступ
Содержание файла /etc/iptables.up.rules буквально следующее
*filter
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT
COMMIT
Инет есть. Мой сервер работает
Команда "iptables -L" выдает
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:www
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:www
В доках пишут, что закрыть остальной трафик можно добавив две строчки правил по умолчанию
-P INPUT DROP
-P OUTPUT DROP
в файл /etc/iptables.up.rules, т е сделать содержимое этого файла буквально таким
*filter
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT
-P INPUT DROP
-P OUTPUT DROP
COMMIT
Я это сделал
Но, как только я подаю следующую команду в командной строчке
/sbin/iptables-restore < /etc/iptables.up.rules
мой сервер сразу зависает, зависает crontab, настроенный на затирание правил с интервалом 5мин, и даже зависает системное время, короче только reset помогает возродить сервер
В доках пишут, что правила по умолчанию надо ставить обязательно
Если пакет, последовательно прошедший все цепочки, не удовлетворит ни одному критерию, то к нему будут применены правила по умолчанию , и вообще-то такой пакет надо отклонять для пущей защиты
Но почему такой простой вариант правил iptables подвешивает сервер, подскажите, полжалуйста!!!
Что делаю неправильно?
Проблема с default policy в правилах iptable
-P INPUT DROP
-P OUTPUT DROP
на фига?
открой на lo и не будет зависать.
-P INPUT DROP
-P OUTPUT DROP
COMMIT
Я это сделал
Но, как только я подаю следующую команду в командной строчке
/sbin/iptables-restore < /etc/iptables.up.rules
мой сервер сразу зависает, зависает crontab, настроенный на затирание правил с интервалом 5мин, и даже зависает системное время, короче только reset помогает возродить сервер
дык ещё-бы! вы подропали ВСЮ сеть. А в Linux ВСЁ через сеть. В том числе и Х-сервер. Естественно клава/мыш/монитор стали ВНЕЗАПНО недоступными (вы пишете "зависли". но они работают).
Правила DROP должны быть В НАЧАЛЕ скрипта, а после него нужно разрешить прохождение всех нужных пакетов (и только их).
дык ещё-бы! вы подропали ВСЮ сеть. А в Linux ВСЁ через сеть. В том числе и Х-сервер. Естественно клава/мыш/монитор стали ВНЕЗАПНО недоступными (вы пишете "зависли". но они работают).
Правила DROP должны быть В НАЧАЛЕ скрипта, а после него нужно разрешить прохождение всех нужных пакетов (и только их).
Так ведь я пробовал и так
*filter
-P INPUT DROP
-P OUTPUT DROP
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT
COMMIT
Все равно висняк
Да, еще добавил для lo и для внутреннего eth1 , внешний у меня eth0. теперь висняка нет, но и интернета тоже нет
*filter
-P INPUT DROP
-P OUTPUT DROP
-A INPUT -i eth1 -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT
COMMIT