Установка и настройка серверов Linux,создание сайтов, установка и настройка Asterisk PBX, Linux для начинающих и не только.
Получать статьи этого сайта на почту:

 

08
Feb 2012
sergldom
автор
8
комментариев
Рейтинг статьи:
4
Average: 4 (2 votes)

Установка и настройка интернет шлюза на Debian 5 (Lenny) и Debian 6 (Squeeze) используя squid, rejik, sams, sqstat, arno-firewall-iptables Часть 4

arno-iptables-firewall

<![CDATA[]]>Arno's Iptables Firewall<![CDATA[]]> - простой в настройке, легко настраиваемый скрипт автоматически формирующий правила для файрволла 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 1

Установка Arno-Iptables-Firewall 2
 

После установки необходимо запустить настройку arno-iptables-firewall командой:

dpkg-reconfigure arno-iptables-firewall

Соглашаемся с настройкой через debconf, указываем внешний интерфейс (провайдера) - eth0:

Запуск настройки arno-iptables-firewall

Выбор внешнего интерфейса в arno-iptables-firewall

Если провайдер дает интернет через статический IP, запрещаем DHCP от провайдера. Если необходимо иметь снаружи к серверу доступ по ssh, указываем порт на котором у Вас находится ssh. Если Вы порт не меняли (для безопасности лучше сменить, тогда всевозможные китайцы с их подборами пароля практически полностью отваливаются и больше не беспокоят), то стандартный порт 22. Если же доступ снаружы по TCP не требуются, писать ничего не нужно.

Разрешать или нет dhcp с внешнего интерфейса в arno-iptables-firewall

Открываем TCP порты с внешнего интерфейса в arno-iptables-firewall

Если есть необходимость в открытом порту снаружы по UDP, например если у вас настроен сервер OpenVPN, указываем необходимый порт. Если же доступ снаружы по UDP не требуются, писать ничего не нужно. Также включаем снаружи пинг на сервер. Для наилучшей безопасности лучше не включать(всевозможные сканеры портов меньше будут Вас сканировать, так как на пинг не откликаетесь), но для своего удобства я включаю, так как переодически для проверки пингую сервер:

Открываем UDP порты с внешнего интерфейса в arno-iptables-firewall

Разрешаем пинг с внешнего интерфейса в arno-iptables-firewall

Во внутренних интерфейсах указываем интерфейс идущий в свич - локальную сеть eth1. Указываете подсеть на интерфейсе eth1, в нашем случае это 192.168.2.0/24

Указываем внутренний интерфейс в arno-iptables-firewall

Указываем сеть на внутреннем интерфейсе в arno-iptables-firewall

Если нужно разрешить NAT, а в нашем случае мы разрешаем, так как есть необходимость нескольким машинам дать полный доступ к интернету (для фтп, для торентов итд), а остальные будут имень доступ к интернету только через прокси сервер. Указываем того кому разрешен NAT: либо всю подсеть, либо через пробел IP компьютеров, которым нужен NAT:

Включаем NAT в arno-iptables-firewall

Указываем сеть либо IP компьютера разрешенному NAT в arno-iptables-firewall

На этом настройка Arno Iptables Firewall через debconf закончена. Соглашаемся с запуском  файрволла.

Закончили настройку arno-iptables-firewall и соглашаемся с запуском файрволла

Базовая настройка файрволла проведена.

Если у Вас используется прозрачный прокси, можно настроить файрволлом переброс 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. Нам необходимо:

  1. Для компьютера администратора - Открыть NAT (полный доступ к интернету кроме 80 порта, который файрволл перехватывает и перебрасывает на порт прокси сервера Squid) и пробросить порт RDP(3389) и Radmin(4899) снаружи.
  2. Для компьютера бухгалтера нужно открыть 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, тогда начнется подключение, иначе нет.

Рейтинг статьи: 

4
Average: 4 (2 votes)

Вам понравилась статья? Хотите получать уведомления о выходе новых статей с этого сайта на свой почтовый адрес? Подписывайтесь пожалуйста. Введите свой почтовый адрес и нажмите кнопку Хочу получать статьи!

<![CDATA[]]><![CDATA[]]>

 

*Адреса электронной почты не разглашаются и не предоставляются третьим лицам для коммерческого или некоммерческого использования.

 

 
 

 

8 комментария:
BAF
11/02/2012 - 09:33
Для перенаправления портов в арно есть специальный плагин, лучше запустить правила туда, чем в custom-rules, т.к. многие пользователи не знакомы с кучей параметров iptables, а там это легко и понятно.
11/02/2012 - 10:59
Спасибо, поправлю.
28/04/2012 - 10:53
Огромное спасибо!!! Неожиданное решие назревших проблем с переходом на Linux-шлюз. Вопрос, если позволите - не намечается ли такая же потрясающая статья по установке почтового сервера с усреднёнными исходными - один почтовый домен, Debian, Postfix, mysql, dovecot, spamasassin и прочее. Пробовал по этой статье - http://help.ubuntu.ru/wiki/почтовый_сервер_со_всем_фаршем_на_10.04_lts , но запутался вконец ибо статья не расчитана на новичков и к томуже ориентирована на настроенный сервер c openldap, что на практике применяется крайне редко.
07/03/2013 - 06:59
Установил Arno's Iptables Firewall и в итоге вообще никуда не могу зайти. В смысле в php панель и в sams, доступы закрыты через web интерфейс. Что за фигня. Все по инструкции делал.  
07/03/2013 - 09:24
Здравствуйте, в данной инструкции снаружи порты открыт только 22 порт ssh, если Вам нужно открыть снаружи порты для web, тогда нужно совместно с 22 портом прописать через пробел порты:  80 443 Если Вы правильно указали внешний и внутренний интерфейсы, тогда все что идет изнутри не заблокирвано, если снаружи, тогда открыто, то что прописано.
Владимир
06/02/2014 - 14:37
Не подскажите что куда добавить чтоб iptv multicast сервак начал пропускать..? eth0 внешка, eth 1 локальная сеть, используется ano iptables firwall..  спасибо!
06/02/2014 - 19:30
Здравствуйте. Во время подготовки инструкции у меня небыло возможности проверить работу IPTV через сервер. На данный момент возможность есть, так как сам пользуюсь IPTV через сервер. У меня интернет предоставляется на интерфейсе eth0 Добавляем маршрут выполнив команду: route add -net 239.1.0.0 netmask 255.255.0.0 dev eth0 Естественно у Вас уже должен быть настроен NAT по инструкции выше. После того как Вы удостоверились в работе IPTV через сервер, добавте данную команду в файл /etc/rc.local перед строкой: exit 0 должно быть: ... route add -net 239.1.0.0 netmask 255.255.0.0 dev eth0 exit 0 Отпишитесь пожалуйста о результате.
07/02/2014 - 09:45
Кто сталкивался с проблемой Sams перестаёт отображать статистику! Пол года сервер проработал нормально статистика выводилась чётко но с недавних пор Sams напроч отказывается выводить статистику! Помогите пожалуйста!

Add new comment

Filtered HTML

  • Search Engines will index and follow ONLY links to allowed domains.

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Search Engines will index and follow ONLY links to allowed domains.

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.