Недавно возникла такая проблема, после авторизации на ftp сервере, не хочет считываться каталог. Что я уже не пробовал, устанавливал различные ftp сервера, игрался с пассивным режим и многое другое, оказалось, что проблема была в iptables, все, что нужно, это включить режим nf_conntrack_ftp. Для этого открываем файл /etc/sysconfig/iptables-config идобавляем модуль:
Рубрика: iptables
Подключаемся по VPN через iptables nat
Вот, столкнулся с такой ситуацией, пользователи за шлюзом, на шлюзе вся подсеть натиться без ограничений, а вот VPN работать не хочет. Решение оказалось простым, все что нужно, это подгрузить следующие модули — ip_gre, ip_nat_pptp, ip_conntrack_pptp. Подгрузить можно вот так:
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp
Установка Advanced Policy Firewall
APF это основаный на iptables фаервол созданный специально для защиты Linux серверов. Конфигурирование его информативно и легко. Его основные характеристики:
— подробный и хорошо прокомментировал файл конфигурации
— детализация входящий и исходящий сетевой фильтрации
— фильтрация на основе идетификатора пользователя
— фильтрация на основе приложений
— файл с правилами доверия
— глобальная система доверия, где правила могут быть загружены с центрального сервера управления
— мгновенная адрес блокировка (RAB), следующего поколения в области предупреждения вторжений
— режим отладки для тестирования и конфигурации новых функций
— быстрая загрузка , которая позволяет за 1 сек загрузить более 1000 правил
— входящие и исходящие сетевые интерфейсы могут быть настроены независимо
— возможность гибкой настройки правил для каждого IP отдельно
— лимитирование пакетов, что уменьшает вероятность злоупотребления, например таких пакетов как icmp
— PREROUTING и POSTROUTING правил для оптимальной производительности сети
— поддержка черного списка dshield.org
— поддержка черного списка Spamhaus, что поможет в борьбе против “hijacked zombie” IP-блоков
— любой интерфейс может быть настроен как надежный или нет
— интеллектуальная проверка маршрута для предотвращения ошибок конфигурации
— усовершенствованная проверка поведения трафика
— защита от атак, таких как fragmented UDP, port zero floods, stuffed routing, arp poisoning и многое другое
— возможность настройки приоритетов в зависимсти от типа трафика
— настройки по умолчанию для удовлетворения каждый день установки сервера
— дополнительная фильтрация P2P-приложений
— дополнительная фильтрация частного и зарезервированого адресного пространства IP
— отслеживание количества соединений для маштабирования настроек фаервола под размеры вашей сети
— настройка ядра для усилинения системы против syn-flood атак & routing abuses
— расширенный контроль за сетью, уведомление о заторах и управление переполнением
— вспомогательные цепочки для FTP DATA и SSH соединений, чтобы предотвратить проблемы на стороне клиента
— логирование всех внесенных изменений в фаерволе
— детальная проверка ошибок запуска
— если вы знакомы с Netfilter вы можете создавать свои собственные правила в любом из файлов политики
— возможность использовать QoS алгоритм, предоставляемый вLinux
— потдержка плагинов
Инстоляция достаточно простая. Скачиваем последнию версию APF сайта
tar -xvf ./apf-current.tar.gz
cd apf-*
./install.sh
Далее, в конфигурационном файле /etc/apf/apf.conf необходимо сделать некоторые правки.
Каждый параметр в конфигурационном файле достаточно подробно расписан и разобраться за что он отвечает, думаю, не составит особого труда.
Некоторые моменты:
включается для проверки работоспособности фаирвола. Если все настроено правильно, данный параметр нужно установить в «0», иначе фаирвол будет остановлен через 5 минут после старта.
Назначаем интерфейс интернета:
IFACE_OUT=»eth0″
назначаем внутренний довереный интерфейс:
Описываем входящие порты:
И включаем Spamhaus, Dshield и Honey Pot Project
DLIST_SPAMHAUS=»1″
DLIST_DSHIELD=»1″
Если вам необходимо добавить какое-то правило PRE или POST routing, откройте файл postrouting.rules или prerouting.rules соответственно и добавьте например:
Если вам нужно добавить общее правило, то отредактируйте файл main.rules. Как пример давайте добавим правила для работы PopTop VPN:
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
iptables -A OUTPUT -p tcp —dports 1723 -m state —state NEW,ESTABLISHED -j ACCEPT
Iptables, записываем log сообщения в отдельный файл
Обычно, сообщения от Iptables записываются в /var/log/messages файл. Хотя, вы можете изменить назначение. Используя специальный файл для хранения логов Iptables вам легче будет проводить последующий анализа.
И так, что бы наши логи писались в отдельный файл, открываем /etc/syslog.conf и добавляем:
Записываем и перезапускаем syslog:
Теперь можно включить логирование в iptables. Например будем логировать весь ssh трафик исходящий с сервера:
Пробрасываем порты при помощи Iptables
И так, у нас есть шлюз и есть сервисы на внутреннем сервере к которым необходимо дать доступ из вне. Сделать это можно при помощи IPTables. Пускай внутренни IP — 10.10.0.1, а внешний — 80.91.175.92. Тогда нам необходимо выполнить такие команды:
iptables -t nat -A POSTROUTING -p tcp -m tcp –s 10.10.0.1 —sport 8000 -j SNAT –to-source 80.91.175.92:8000
Первое правило, весь входящий трафик на внешний интерфейс в порт 8000 перебрасываем на внутренний ip сервера в тот же порт. Второе правило выводит весь трафик с внутреннего сервера идущий с порта 8000 на внешний интерфейс с порта 8000.
Настройка Iptables для Transparent Proxy
Собственно говоря, ничего сложного в этом всем нет, нам необходимо пробросить весь входящий в 80 порт трафик на внутреннем интерфейсе в порт прокси, например 3128. Есть два способа, первый это при помощи DNAT, он удобен в том случаи если шлюз сети и прокси сервер это у вас разные компьютеры и прокси сервер находиться в сети со рядовыми пользователями. Второй, при помощи REDIRECT, это если наша прокся и шлюз это один и то же сервер. В первом случаи нам необходимо сделать 3 записи в iptables, первая пробрасывает весь трафик идущий на порт 80 исключая трафик от squid-box(сервер squid) в порт 3128 squid-box. Вторая включает NAT трансляцию для squid-box на нашем шлюзе iptables-box. И последняя разрешает форврадинг пакетов идущих на порт 3128 из локальной сети local-network в squid-box
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT —to iptables-box
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp —dport 3128 -j ACCEPT
Если же у нас ситуация такая, что шлюз и прокси сервер это один и тот же сервер, то достаточно будет простого редиректа: