Arno's Iptables Firewall - простой в настройке, легко настраиваемый скрипт автоматически формирующий правила для файрволла iptables.
Начинаем настройку файрволла на сервере
Исходные данные стандартные 2 сетевые, одна для провайдера, вторая в свич - локальную сеть:
Дано 2 интерфейса
eth0 - провайдер интернета
ip 192.168.1.5
mask 255.255.255.0
gateway 192.168.1.1
dns 192.168.1.1
eth1 - локальная сеть
ip 192.168.2.1
mask 255.255.255.0
Устанавливаем скрипт настройки файрволла командой:
aptitude install arno-iptables-firewall
В процессе установки отказываемся от запуска программы.
После установки необходимо запустить настройку arno-iptables-firewall командой:
dpkg-reconfigure arno-iptables-firewall
Соглашаемся с настройкой через debconf, указываем внешний интерфейс (провайдера) - eth0:
Если провайдер дает интернет через статический IP, запрещаем DHCP от провайдера. Если необходимо иметь снаружи к серверу доступ по ssh, указываем порт на котором у Вас находится ssh. Если Вы порт не меняли (для безопасности лучше сменить, тогда всевозможные китайцы с их подборами пароля практически полностью отваливаются и больше не беспокоят), то стандартный порт 22. Если же доступ снаружы по TCP не требуются, писать ничего не нужно.
Если есть необходимость в открытом порту снаружы по UDP, например если у вас настроен сервер OpenVPN, указываем необходимый порт. Если же доступ снаружы по UDP не требуются, писать ничего не нужно. Также включаем снаружи пинг на сервер. Для наилучшей безопасности лучше не включать(всевозможные сканеры портов меньше будут Вас сканировать, так как на пинг не откликаетесь), но для своего удобства я включаю, так как переодически для проверки пингую сервер:
Во внутренних интерфейсах указываем интерфейс идущий в свич - локальную сеть eth1. Указываете подсеть на интерфейсе eth1, в нашем случае это 192.168.2.0/24
Если нужно разрешить NAT, а в нашем случае мы разрешаем, так как есть необходимость нескольким машинам дать полный доступ к интернету (для фтп, для торентов итд), а остальные будут имень доступ к интернету только через прокси сервер. Указываем того кому разрешен NAT: либо всю подсеть, либо через пробел IP компьютеров, которым нужен NAT:
На этом настройка Arno Iptables Firewall через debconf закончена. Соглашаемся с запуском файрволла.
Базовая настройка файрволла проведена.
Если у Вас используется прозрачный прокси, можно настроить файрволлом переброс 80(web) порта насильно на порт прокси сервера. Тогда если даже у пользователя есть NAT, с браузера пользователь сидит только через прокси сервер, но торенты, фтп итд будут ити мимо проксика. Тут есть несколько решений:
1. Настроить шейпер - программа распределяющая канал соответственно настройкам для каждого компьютера использующих интернет.
2. Отключаем NAT.
2.1 Открываем порт 443(https) наружу для всех, так как если не открыть, нужно прописывать всем использовать IP прокси сервера и порт. Переброска 443 порта прозрачно на порт Squid не работает.
2.2 Открываем порт 21(ftp) наружу для тех кто активно пользуется ftp клиентами, так как работа ftp через squid не полноценна.
2.3 Доступ торент клиента возможен через порт прокси сервера. В настройках торент клиента указываем IP:PORT прокси сервера Squid.
2.4 Перебрасываем насильно всех использующих браузеры с 80 порта на порт прокси сервера 3128
Насильный проброс 80 порта (браузера) на порт прокси сервера для Debian Lenny:
В Debian Lenny версия установленного Arno's Iptables Firewall v1.8.8o, и тут нет плагина который делает проброс порта как в Debian Squeeze.
Для того, чтобы наcтроить переброску всех на порт прокси сервера, необходимо в файрволле Arno Iptables в файле /etc/arno-iptables-firewall/custom-rules добавить строку:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Тут прописано всех кто идет с локальной сети (браузеры) перебрасывать на порт 3128 нашего прокси сервера. Если пользователю не разрешен интрнет, либо пользователь не зарегистрирован, он не сможет пользоватся интернетом через браузер.
Делаем насильный проброс 80 порта (браузера) на порт прокси сервера для Debian Squeeze:
В Debian Squeeze версия установленного Arno's Iptables Firewall v1.9.2k, и тут уже есть плагин который делает проброс порта.
Для того, чтобы активировать плагин, необходимо изменить файл /etc/arno-iptables-firewall/plugins/transparent-proxy.conf
было:
ENABLED=0 # (Transparent) proxy settings # ------------------------------------------------------------------------------ #HTTP_PROXY_PORT="3128"
стало:
ENABLED=1 # (Transparent) proxy settings # ------------------------------------------------------------------------------ HTTP_PROXY_PORT="3128"
И перезагружаем скрипт файрволла командой:
/etc/init.d/arno-iptables-firewall restart
Проброс портов и NAT в Arno Iptables Firewall
Для проброса потров на компьютері находящиеся за интернет сервером, будем использовать внутренние возможности программы Arno Iptables Firewall.
Пример по аналогии с которым настроите свою задачу:
Наш сервер имеет 2 сетевые карты:
eth0 - интернет
eth1 - локальная сеть предприятия IP адрес 192.168.1.1
Есть компьютер бухгалтера - ip 192.168.1.5 и администратора - ip 192.168.1.10. Нам необходимо:
- Для компьютера администратора - Открыть NAT (полный доступ к интернету кроме 80 порта, который файрволл перехватывает и перебрасывает на порт прокси сервера Squid) и пробросить порт RDP(3389) и Radmin(4899) снаружи.
- Для компьютера бухгалтера нужно открыть NAT на гугловскую почту (465 и 995 порты) и открыть NAT для банк клиента, который работает по TCP на порту 2255 (для примера)
Приступим.
Начнем с компьютера бухгалтера:
Для того, чтобы открыть NAT на почтовые порты Google и порт банк клиента для компьютера бухгалтера, нам необходимо прописать в файл /etc/arno-iptables-firewall/custom-rules:
vi /etc/arno-iptables-firewall/custom-rules
... iptables -t nat -A POSTROUTING -o eth0 -p tcp -s 192.168.1.5 -j MASQUERADE --to-ports 465,995,2255 ...
Открываем NAT для компьютера администратора в конфигурационном файле /etc/arno-iptables-firewall/debconf.cfg программы Arno Iptables Firewall:
vi /etc/arno-iptables-firewall/debconf.cfg # Разрешен ли DHCP на внешнем интерфейсе: DC_EXT_IF_DHCP_IP=0 # Разрешен ли пинг на внешнем интерфейсе: DC_OPEN_ICMP=1 # Внешние сетевые интерфейсы: DC_EXT_IF="eth0" # Открытые порты TCP: DC_OPEN_TCP="22" # Открытые порты UDP: DC_OPEN_UDP="" # Внутренние сетевые интерфейсы: DC_INT_IF="eth1" # Включен NAT: DC_NAT=1 # Перечисляем IP компьютеров через пробел, либо указываем подсеть вида 192.168.1.0/24(открыт всем) которым разрешаем NAT: DC_INTERNAL_NET="192.168.1.10" DC_NAT_INTERNAL_NET="192.168.1.10"
Теперь настроим проброс портов RDP(3389) и Radmin(4899) снаружи на компьютер администратора, для этого открываем файл /etc/arno-iptables-firewall/firewall.conf и вносим изменения:
... NAT_FORWARD_TCP="3389,4899>192.168.1.10" NAT_FORWARD_UDP="" ...
Для примера еще:
Пробросим порт WEB сервера 80 и порт FTP сервера 21 на сервер в локальной сети за интернет шлюзом 192.168.1.10;
Пробросим 81 порт сервера на 80 порт компьютера 192.168.1.7:
NAT_FORWARD_TCP="80,21>192.168.1.10 81>192.168.1.7~80"
После сохранения изменений в файлах программы Arno Iptables Firewall для применения изменений, необходимо перезагрузить программу Arno Iptables Firewall командой:
/etc/init.d/arno-iptables-firewall restart
Для проверки подключения к почте с бухгалтерского компьютера выполним команду:
telnet google.com 465
Если есть NAT, тогда начнется подключение, иначе нет.
Add new comment