Настройка iptables в Debian 6

Автор Capricornus, 11 октября 2012, 09:18:09

« назад - далее »

0 Пользователи и 6 гостей просматривают эту тему.

Capricornus

Здравствуйте, прощу помощи в решении данной проблемы. Бьюсь уже третий день, делаю по разным статьям, но ни одна не работает. Где-то я делаю ошибку...
Настроил VPS, осталось дело за малым - iptables. Раньше использовал Ubuntu, никаких проблем не было, все работало как надо, но с переходом на Debian у меня проблемы.
Во-первых, версия:

Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.6 (squeeze)
Release:        6.0.6
Codename:       squeeze


Мои действия:
1.touch /etc/network/if-up.d/myfirewall
2.chmod +x /etc/network/if-up.d/myfirewall
3. Открываю в nano /etc/network/if-up.d/myfirewall
4. Вставляю в открывшийся файл это
*myfilter
iptables -F
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP connections (on ports 80 and 8080) from anywhere
-A INPUT -p tcp --dport 80 -j ACCEPT

# Allows Ffproxy
-A INPUT -p tcp --dport 1122 -j ACCEPT

# Allows SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

5. Сохраняю, закрываю.
6. Запускаю /etc/network/if-up.d/myfirewall start
и все, дальше это...

/etc/network/if-up.d/myfirewall: line 1: *filter: command not found
/etc/network/if-up.d/myfirewall: line 5: -A: command not found
/etc/network/if-up.d/myfirewall: line 7: -A: command not found
/etc/network/if-up.d/myfirewall: line 10: -A: command not found
/etc/network/if-up.d/myfirewall: line 12: -A: command not found
/etc/network/if-up.d/myfirewall: line 14: -A: command not found
/etc/network/if-up.d/myfirewall: line 16: -A: command not found
/etc/network/if-up.d/myfirewall: line 18: -A: command not found
/etc/network/if-up.d/myfirewall: line 20: -A: command not found
/etc/network/if-up.d/myfirewall: line 21: --log-level: command not found
/etc/network/if-up.d/myfirewall: line 24: -A: command not found
/etc/network/if-up.d/myfirewall: line 25: -A: command not found


Что я делаю не так?
Заранее благодарен! На форуме не нашел.

qupl

#1
А что это за "*" в myfirewall, они зачем там?

Если в общем. то этот файлик просто набор букв.

Capricornus

Цитата: qupl от 11 октября 2012, 12:03:21
А что это за "*" в myfirewall, они зачем там?

Если в общем. то этот файлик просто набор букв.
Ой, это опечатка. Но и без этой звездочки не работает такой алгоритм.
Однако, такой набор букв работал в Ubuntu.

qupl

А в начале каждой строчки не было /sbin/iptables ? :)

Capricornus

Цитата: qupl от 11 октября 2012, 12:42:40
А в начале каждой строчки не было /sbin/iptables ? :)
Нет, я делал по этой статье http://www.drupal.ru/node/60530
На Дебиан она уже не идет.

Выходит, что правила надо прописывать так:
/sbin/iptables iptables -F
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -j ACCEPT

Особенно первая строчка, где iptables -F? И вообще, нужна ли эта строчка в моем примере?

qupl

Я не спец по iptables, но man говорит, что iptables -F - сбрасывает все фильтры (нужен).

Capricornus

Добавление /sbin/iptables никаких результатов не дает :( Что же такое

qupl

1) скиньте, что получилось
2) если пошагово из консоли все правила задать работает?

И что значит нет результатов? Остались ошибки?

Capricornus

Все разобрался.
Видать я так насиловал систему, что она не хотела ничего делать  ;D У меня два VPS - один для экспериментов. Переустановил ось, выполняю первые три пункта,  потом пишу правила:
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT   -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT  -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT


Тут только открыт SSH. Выполняю и все работает! ::)

Кстати, как вы выразились "набор букв" - так и есть. Плохо, что кто-то пишет в блогах такие инструкции, а потом такие я мучаются из-за незнания :(

qupl

Ну вот теперь это в скрипт (тот файл) , первой строчкой #! /bin/sh и возможно что-то получится. Только вот чтобы он понимал параметры, вроде start, его надо сделать похожим на другие скрипты лежащие в той же директории.

Alexey_F

Вышеописанный "набор букв" таки действительно не способен работать самостоятельно.
Судя по его виду, оно должно скармливаться скрипту, который запускает iptables с указанными параметрами, но это уже какое-то ненужное извращение.

qupl

Alexey_F, да нет, это просто "черновик админа", правила записаны, но "для себя".

Capricornus

touch /etc/network/if-up.d/myfirewall
chmod +x /etc/network/if-up.d/myfirewall
в /etc/network/if-up.d/myfirewall вставляем
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT   -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT  -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT


/etc/network/if-up.d/myfirewall start

И все работает, даже после перезагрузки. Так что зря тут глумитесь, попробуйте ;)

Alexey_F

Capricornus, мы не глумимся, мы вот это
Открыть содержимое (спойлер)
*myfilter
iptables -F
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP connections (on ports 80 and 8080) from anywhere
-A INPUT -p tcp --dport 80 -j ACCEPT

# Allows Ffproxy
-A INPUT -p tcp --dport 1122 -j ACCEPT

# Allows SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
[свернуть]
обсуждаем.
А с тем скриптом, что работает, всё в порядке.

corner

Цитата: Alexey_F от 12 октября 2012, 12:43:53Capricornus, мы не глумимся, мы вот это
Ну да, чего тут глумиться. Все то, что так героически делает ТС с iptables, можно быстро и просто (одной строкой) настроить при помощи /etc/network/interfaces (см. man interfaces). Там не так заумно, и не пугает...  :)