Меню Рубрики

Установка squid на debian iptables

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

]]> Arno’s Iptables Firewall ]]> — простой в настройке, легко настраиваемый скрипт автоматически формирующий правила для файрволла iptables.

Начинаем настройку файрволла на сервере

Исходные данные стандартные 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

Устанавливаем скрипт настройки файрволла командой:

В процессе установки отказываемся от запуска программы.

После установки необходимо запустить настройку 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.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 добавить строку:

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

Делаем насильный проброс 80 порта (браузера) на порт прокси сервера для Debian Squeeze:

В Debian Squeeze версия установленного Arno’s Iptables Firewall v1.9.2k, и тут уже есть плагин который делает проброс порта.

Для того, чтобы активировать плагин, необходимо изменить файл /etc/arno-iptables-firewall/plugins/transparent-proxy.conf

И перезагружаем скрипт файрволла командой:

Проброс портов и NAT в Arno Iptables Firewall

Для проброса потров на компьютері находящиеся за интернет сервером, будем использовать внутренние возможности программы Arno Iptables Firewall.

Пример по аналогии с которым настроите свою задачу:

Наш сервер имеет 2 сетевые карты:

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:

Читайте также:  Установка пламегасителя вместо катализатора лачетти

Открываем NAT для компьютера администратора в конфигурационном файле /etc/arno-iptables-firewall/debconf.cfg программы Arno Iptables Firewall:

Теперь настроим проброс портов RDP(3389) и Radmin(4899) снаружи на компьютер администратора, для этого открываем файл /etc/arno-iptables-firewall/firewall.conf и вносим изменения:

Для примера еще:
Пробросим порт 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

После сохранения изменений в файлах программы Arno Iptables Firewall для применения изменений, необходимо перезагрузить программу Arno Iptables Firewall командой:

Для проверки подключения к почте с бухгалтерского компьютера выполним команду:

Если есть NAT, тогда начнется подключение, иначе нет.

источник

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

Я буду устанавливать на Debian Lenny, но отличия с Debian Squeeze нет.

]]> SAMS ]]> — это система для управления доступа пользователей через прокси сервер к ресурсам интернет. Она идеально подходит для использования как в частных фирмах так и в госудаственных учереждениях. Всю работу по проксированию, перенаправлению запросов, кэшированию и авторизации берет на себя proxy-сервер Squid, а SAMS занимается учетом трафика и управлением пользователями.

Начинаем установку и настройку пакета наших программ.

Установка и настройка squid

Для начала добавим в source.list репозиторий с котрого будем устанавливать все программы:

Обновляем репозиторий

Обновляем все доступные пакеты

Устанавливаем прокси сервер Squid

Установим файловый менеджер mc

Устанавливаем текстовый редактор vim

Устанавливаем веб сервер Apache2, MYSQL, PHP5, phpmyadmin

После успешной установки squid, переходим к его настройке:

Копируем конфигурационный файл в архив

Открываем удобным для Вас редактором конфигурационный файл squid.conf
vi – требует прочтения инструкции пользователя. Для того чтоб пройти экспресс курс запустить команду vimtutor и пройти основные команды для пользования программой.
mcedit — более легкий в работе для начинающего линуксоида
далее для простоты описания буду описывать работу с редактором MC

нажимаем F7 появится окно поиска, вводим в него то, что необходимо найти нажимаем Enter
Если нашло не то что нужно, снова повторяем поиск, и так пока не найдем нужную строку. После того как Вы внесли необходимые изменения и хотим сохранить файл нажимаем F2 и соглашаемся с изменением. После сохранения для закрытия сохраненного файла нажимаем F10
Далее я буду писать что ищем и как должно выглядеть после изменения (первый как должно выглядеть, остальные по примеру):

Внимание. Если у Вас пользователи будут авторизироватся при помощи пароля, прозрачная авторизация работать не будет, необходимо в браузере пользователя прописывать IP:PORT Вашего прокси сервера.

. Если Вы внутри сети используете внутренний днс сервер, можно указать прокси серверу Squid использовать его прописав:

Для того, чтобы использовать свой локальный DNS сервер изменяем:

Сохраняем изменения и переходим к установке SAMS.

Установка SAMS 1.5

Необходимо установить необходимые зависимости:

На просьбу ввести пароль root mysql — вводим и повторяем, а также записываем на бумажку либо в блокнот, чтоб не забыть.

делаем бекап конфигов которые будем изменять:

Настройка PHP
SAMS умеет работать с PHP в режиме safe_mode=On. Но это требует дополнительной настройки конфигурации. Для этого редактируем файл конфигурации php /etc/php5/apache2/php.ini
1. включаем режим safe mode (это по желанию, например я не включаю). Для этого выставляем параметр safe_mode

. Внимание. Если у Вас при импроте в rejik бан листов выдает в веб интерфейсе ошибку: can’t open sams config file data/urlist.txt

safe_mode ставим в Off, то есть должно быть:

2. SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:

3. Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:

4. Для того, чтобы можно было заливать в самс большие бан списки в PHP увеличиваем максимальный размер запроса и размер загружаемого файла.

Необходимо перезапустить веб сервер, чтобы настройки перечитались с конфига php.ini:

Устанавливаем SAMS:

Переходим в директорию куда будем качать установочные пакеты, создаем папку sams, переходим в неё и качаем установочные пакеты:

Качаем пакеты sams для своей архитектуры:

Инсталлируем скачанные пакеты:

Появится псевдографическое окно:

Включаем самс в файле исправив в /etc/init.d/sams

Правим конфигурационный файл по адресу /etc/sams.conf

Далее проверяем запущен ли squid и если команда вывела номер значит запущен, и тогда останавливаем прокси сервер.

Теперь пересоздадим кеш прокси сервера командой:

На этом этапе настройка squid закончена, теперь запускаем прокси сервер squid командой:

Подгатавливаем mysql базу для работы sams:

заходим под пользователем root и паролем, что мы заранее записали в блокнот на наш сервер по адресу:

Далее нажимаем на кнопку SQL и вставляем код в окно Выполнить SQL-запрос(ы) на сервере «localhost» обязательно изменить пароль yourpassword на свой:

Необходимо нажать OK:

Обязательно нужно заполнить созданные для sams базы командами в консоли сервера:

скопировать — вставить и выполнить изменив пароль yourpassword на свой:

Если Вы настраиваете на Debian Squeeze, необходимо добавить репозиторий из Debian Lenny для того, чтобы установить необходимые зависимости.

Добавляем репозиторий, который уже вывели в архив в файл /etc/apt/sources.list командой:

Обновляем репозиторий командой:

Устанавливаем необходимую зависимость командой:

Для того, чтобы зайти в панель управления SAMS, необходимо в браузере ввести адрес http://ip_server/sams , где ip_server — IP адрес сервера на который мы выполняли установку.

Вход под администратором:
Логин: admin
Пароль: qwerty

Вход под аудитором:
Логин: auditor
Пароль: audit

Пароль настоятельно советую изменить сразу же, и записать его в блокнот.

Если устанавливаете SAMS на сервер уже работающий с какой-либо панелью управления хостингом, например ISPmanager, создаете для примера пользователя samsweb с доменом sams.site.loc и даете ему права на CGI, а также настраиваете домен работать через php CGI , и в папку домена просто монтируете содержимое папки sams командой:

Выполняйте эту команду и затем поместите её в файл /etc/rc.local, тогда при загрузке сервера папка бедет монтироватся автоматически.

Так же необходимо дать права на содержимое папки для своего пользователя командой:

должно получится примерно так:

Если при установке выдало такую ошибку:

Необходимо внести в скрипты SAMS:

После этого веб интерфейс откроется нормально.

Скриншоты по настройке SAMS через web интерфейс:

Для пользователей попадающих под ограничения, стандартное сообщение которое выводит sams выглядит так:

Для того, чтобы пользователю вывести свой файл написанный на HTML необходимо создать сам файл который будет выводится пользователю попавшему под ограничение командой:

После этого пользователю попавшего под ограничение будет выводится подготовленный Вами HTML файл находящийся по пути /usr/share/sams/messages/file_denied.html

Мой пример простого файла:

В настройках sams в Способ аутентификации пользователя выбираете необходимый Вам способ IP либо NCSA и обязалельно ставите в Шаблоны пользователей — Default такой же способ. Далее Вы создаете необходимые шаблоны и один из этих шаблонов Вы можете привязать любому пользователю.

Каждому шаблону можно привязать ограничения куда ходить можно, а куда нет, а также количество трафика доступное пользователю, скорость канала для всего шаблона и скорость канала для отдельного пользователя.

Продолжение инструкции находится по адресу:

В этой инструкции мы устанавливаем программу редиректор Rejik и настраиваем её через веб интерфейс SAMS

А в этой инструкции мы устанавливаем и настраиваем программу онлайн статистики прокси сервера Sqstat

источник

Основы iptables на примере Debian глазами младенца

О чем же пойдёт речь

Как это выглядит

Мы будем рассматривать типичную схему для офисов и для квартир, да-да именно квартир! Мало у кого есть собственный маленький сервачок дома под столом, но у большинства интернет дома раздается через роутер и в большинстве своём они тоже прошиты Linux.
Это типичная схема малого офиса. Когда к интернет подключен 1 компьютер(сервер), а остальные подключаются к интернет уже через этот сервер.

Поехали, потихонечку.

что такое NAT

Для начала нам нужно понять, что настраивать мы будем самый обыкновенный NAT(Network Address Translation). Для жаждущих, я в конце упомяну и о проксе сервере на примере squid. Как я уже сказал разжёвывать будем практически всё.
Что же такое NAT? На самом деле все просто, все компьютеры имеют физический (MAC) и сетевой (IP) адреса. Нас в данный момент интересуют IP адреса. IP адрес в пределах одной сети должен быть уникальным! А при нынешнем стандарте IPv4 уникальными могут быть всего-то 4 294 967 296 (2 32 ), что совсем не много и они практически кончились. но не переживайте вот вот вступит в широкое распространение IPv6, а там адресов навалом!
Но тут вы можете заметить, компьютеров значительно больше того числа, что позволяет IPv4 или скажете, что у друга дома такой же адрес как и у вас! И вот тут-то и заходит речь о NAT — он позволяет соединять компьютерные сети между собой используя единственный, свой IP адрес, действия фаервола при этом называется SNAT(Source NAT или подмена адреса источника). Т.е. в 99% случаев вся ваша контора выходит в интернет под 1 IP адресом, при этом внутри офиса у каждого он свой. О классах IP адресов вы сможете прочесть в интерне.

Теперь, когда мы знаем что такое NAT и для чего он нужен, можно приступать непосредственно к настройке сервера.

транзитный трафик

Все команды выполняются от имени root(суперпользователь). В Debian по умолчанию отключен так называемый транзитный трафик, т.е. по умолчанию предусмотрена работа только как единичная машина. Как вы уже догадались, без транзитного трафика нету и NAT. Для его включения достаточно изменить 1 цифру — $ echo 1 > /proc/sys/net/ipv4/ip_forward, но данная настройка слетит после перезагрузки, так что лучше поправить конфиг — $ nano /etc/sysctl.conf далее ищем строчку #net.ipv4.ip_forward=1 и убираем «решётку»(символ комментария) в начале строки и проверяем что значения равно 1! Теперь можно приступать непосредственно к конфигурированию iptables.

настраиваем iptables

В интернет, есть много статей о том как писать правила в iptables и что с их помощью можно творить, наиболее полным и приятным для чтения мне показалась статья на wikipedia.org.
И так приступим. Для начала очистим таблицы от лишних правил, вдруг там что было лишнего…
$ iptables -F
$ iptables -t nat -F
$ iptables -t mangle -F

Лишнее почистили. Очень важно понять и помнить, что правила в iptables применяются иерархически, т.е. правило стоящее выше выполнится раньше. Все цепочки по умолчанию имеют политику ACCEPT — разрешают всё. что не попало под правила данной цепочки.
Условимся, что интерфейс смотрящий в локальную сеть — eth0, а в интернет — eth1, локальная сеть имеет адреса 192.168.0.0/24, а провайдер выдал нам статический адрес 10.188.106.33(пускай и не «белый» — о типах ip адресов вы также можете посмотреть в интернет). И так пишем:
$ iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A FORWARD -i eth1 -o eth0 -d 192.168.0.0/24 -j ACCEPT
$ iptables -P FORWARD DROP

тем самым разрешили ходить транзитным пакетам через firewall для нашего диапазона ip адресов, а всё остальное запрещаем.
Теперь сам NAT:
$ iptables -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT —to-source 10.188.106.33
Этого достаточно для того что бы у вас заработал NAT.

по мелочам.

На клиентах указываем ip из выбранного диапазона и указываем в качестве шлюза ip адрес нашего сервера(обычно его назначают первым из подсети — я оставлю это на ваше усмотрение). Все сетевые настройки на сервере можно провести так:
$ nano /etc/network/interfaces в нём указываются настройки ваших сетевых интерфейсов.

доступ в недры сети через шлюз или DNAT

И тут вы поняли, что в сети у вас есть Windows Server к которому у вас всегда был простой доступ по RDP, а тут вылез это назойливый шлюз на Debian! Всё очень просто — надо всего лишь добавить DNAT правило в наш iptables.
Что за зверь DNAT? DNAT (Destination NAT или подмена адреса получателя) — сетевые карты работают в таком режиме, что они принимают только пакеты адресованные именно им, а зайти на наш сервер если ip под которым он выходит в интернет сидят еще десяток машин в вашем офисе? Как запрос дойдёт именного до него? На самом деле все запросы такого рода упираются в наш шлюз. И всё что нам надо сделать это задать правила для работы с такими пакетами.
$ iptables -A PREROUTING -i eth1 -p tcp -m tcp —dport 3389 -j DNAT —to-destination 192.168.0.2
Это простое правило будет переадресовывать все пакеты приходящие на шлюз из интернет на порт TCP 3389(именно его использует RDP протокол) на ваш внутренний Windows Server. И, вуаля, у вас все работает.

итак что там с любимым squid

И хотя сейчас все работает, у всех есть интернет и все работает, некоторым всё же нужен прокси сервер. Я не буду рассказывать о настройке squid, я покажу правило которое позволит сделать его «прозрачным». В сквид надо лишь прописать волшебное слово transparent в нужном месте и он начнём корректно обрабатывать свалившееся на него запросы.
Пишем $ iptables -A PREROUTING -d! 192.168.0.0/24 -i eth0 -p tcp -m multiport —dports 80,443 -j REDIRECT —to-ports 3128 .
И что же нам это даёт? Теперь все запросы на web страницы с ваших рабочих мест по http((80) и https(443) протоколам будут перенаправляться на порт который слушает squid. Вы получает контентную фильтрацию, информацию о том кто где был и что делал в интернет, пользователь ни чего не подозревая работает как и раньше…

немного безопасности

Следует хоть минимально защитить свой шлюз поэтому добавим еще пару правил
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A INPUT -i eth1 -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -P INPUT DROP

Тем самым запретили любое общение непосредственно с шлюзом, кроме уже установленных соединений, т.е. те что были инициированы вами и вы просто получаете на них ответы. Не бойтесь наш DNAT до этих правил просто не доходит…

почему так мало?

Статья не резиновая и обо всем все-равно не расскажешь… Я привел минимальный набор действий и понятий что бы вы могли начать осваивать такую махину как шлюз на Linux. Здесь можно говорить очень и очень долго, обсуждая многие аспекты и возможности netfilter.

Итого

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *