- подключенный по Ethernet комп;
- локальная сеть, из которой авторизовавшись (с помощью специальной программы) можно выйти в Инет;
- запущенный только для локалки FTP (отделенный от Инета NAT'ом прова);
- некоторый сетевой софт;
Чтением доков по iptables, а так же методом проб и ошибок накатал такой кривенький скрипт:
Код: Выделить всё
# установили политики
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# сбросили цепочки
iptables -F
# разрешили все для интерфейса lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# разрешили пинг
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# разрешили DNS
iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
# разрешили порты:
# 20, 21 - FTP
# 25 - SMTP
# 80 - HTTP
# 110 - POP3
# 443 - HTTPS
# 4444 - трекеры торрентов
# 5190 - ICQ
# 5222 - Jabber
# 6326 - программа авторизации в Инете (работает по принципу "клиент-сервер", вешаясь на этот порт)
# 6881 - тоже торренты
# 7030 - радио, поточное вещание для amaroK
iptables -A INPUT -i eth0 -p tcp -m multiport --port 20,21,25,80,110,443,4444,5190,5222,6326,6881,7030 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --port 20,21,25,80,110,443,4444,5190,5222,6326,6881,7030 -j ACCEPT
# UDP-порты для торрентов
iptables -A INPUT -i eth0 -p udp -m multiport --port 4444,6881 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m multiport --port 4444,6881 -j ACCEPT
# "верхний" диапазон портов, см. далее
iptables -A INPUT -i eth0 -p tcp -m multiport --port 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --port 1024:65535 -j ACCEPT
# запрещаем все что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROPОсобое беспокойство вызывает т.н. "верхний" диапазон портов. Если его не добавлять, то становится невозможно зайти на какой-либо FTP (в локалке или в Инете - без разницы). Все остальное (почта, браузер, мой FTP-сервер и пр.) без открытия диапазона пашет без проблем.
Причину такого поведения понимаю /кажется/: грабли в том что FTP устанавливает коннект по порту 21, а данные передает либо по порту 20 (пассивный режим), либо по любому какой ему вздумается (например 23423). Именно поэтому нужно открывать диапазон портов - чтоб удаленный FTP мог через них слать мне данные.
Пробовал написать так:
Код: Выделить всё
iptables -A INPUT -i eth0 -p tcp --sport 1024:65535 --dport 20 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 1024:65535 --sport 20 -j ACCEPTНо это не работает.
Подскажите пожалуйста как правильно настроить диапазон и можно ли как-то ухитриться вообще без него обойтись? Иначе ИМХО просто глупость по крошкам выбирать отдельные порты, а потом открывать целый автобан - лучше уж тогда сразу поставить везде ACCEPT и обо всем забыть.