Прозрачный Squid
Обновлено: 23.06.2021
Зачем нужен прозрачный Squid
Для начала представим, что у нас есть обычная сеть, выходящая в интернет через один шлюз (прокси-сервер Squid установлен здесь же). Предположим, IP-адрес шлюза 192.168.1.1
. Все остальные компьютеры в сети получают настройки IP по DHCP. Компьютеры в сети разные, Windows XP/7, Ubuntu, да моло ли еще какие. За всеми не углядишь. Но мы должны считать трафик, ускоряя при этом доступ в интерент, должны контролировать (хотя бы от "дурака") доступ в интернет и пр. Squid обладает широкими возможностями по логированию, ограничению доступа и пр. Поэтому нам нужно, чтобы все компьютеры в сети не могли миновать нашего прокси-сервера Squid. Поэтому нам надо в любом случае направить (завернуть, пробросить) запрос клиентских компьютеров только через прокси-сервер Squid.
Настройка переадресации портов
При обращении клиентов локальной сети к внешним сайтам Squid должен прозрачно для клиента перехватить запрос и обработать его согласно своим правилам - решить, какой контент отдать, логировать ли активность пользователя, можно ли вообще этому пользователю выходить в интернет. Наша задача - сделать так, чтобы на самом клиенте не надо было бы делать никаких настроек броузеров. Клиент просто подключился к локальной сети и уже работает через наш прокси-сервер и НИКАК иначе. Т.е. даже если кто-либо захочет обойти наш прокси, без хитростей ему уже не обойтись.
Переадресация портов в FreeBSD
Если на нашем шлюзе установлена FreeBSD и брандмауэр по-умолчанию - IPFW, то для выполнения этой задачи мы должны на шлюзе установить переадресацию (проброс) портов:
# Redirect to local proxy
/sbin/ipfw add 0170 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80
где:
- 0170 - номер правила (в вашем случае может быть любой).
- fwd 127.0.0.1,3128 - куда будем направлять пакеты, - в нашем случае нашему любимому Squid, запущенному на порту 3128 на шлюзе, - ...
- from 192.168.1.0/24 - ... отправленные компьютерами локальной сети...
- to any 80 - ... на какой-либо сайт в интернете
Теперь внимание! Это правило нужно добавить ДО того, как правила NAT (Network Address Translation) получат этот запрос. Объясню немного неакадемично: что делает NAT? В нашем случае NAT изменяет адрес источника (заменяет локальный IP клиента на внешний IP шлюза и запоминает, от какого внутреннего клиента был запрос. Для того, чтобы Squid обработал запрос от клиента, ему не нужно ничего преобразовывать - он и сам с этим справится. Поэтому Squid должен получить пакет в первозданном виде и сам решить, что делать дальше.
К тому же NAT и Squid - все-таки разные вещи, и пакет, адресованный, скажем к 2.3.4.5:80
, не содержит информации, как попасть в Squid (на порт 3128
шлюза). И пакет будет обрабатываться только средствами NAT. Squid пакет так и не увидит. Поэтому наша задача - просто отдать Squid-у тот пакет, который отправил броузер пользователя. Объясню на примере части конфига ipfw:
cmd="ipfw -q add" $skip="skipto 5000" pif="xl1" #внешний интерфейс ... # Redirect to local proxy $cmd 0170 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 # NAT $cmd 0200 divert natd ip from any to any in via $pif # Allow keep-state statement. $cmd 0201 check-state # POP3/POP3S $cmd 0325 $skip tcp from any to any 110 out via $pif setup keep-state $cmd 0326 $skip tcp from any to any 995 out via $pif setup keep-state # WWW (HTTP/HTTPS/..) $cmd 0350 $skip tcp from any to any 80 out via $pif setup keep-state $cmd 0352 $skip tcp from any to any 443 out via $pif setup keep-state # This is skipto location for outbound stateful rules $cmd 5000 divert natd ip from any to any out via $pif ...
В конфиге выше запрос открыть сайт сначала обрабатывается правилом 0170
, которое заворачивает запрос в Squid. Squid (как и любая другая программа) также выполняет требования брандмауэра - только для него правило 0170
не действует, а вот правило 0350
разрешает Squid отправить запрос в интернет. Для того, чтобы выходить в интернет без Squid, необходимо закоментировать правило 0170
. В этом случае Squid не получит ничего, а все запросы броузеров из локальной сети будут обрабатываться правилом 0350
.
Переадресация портов в Linux
Если на нашем шлюзе установлена Linux и iptables, то вышеуказанная команда будет выглядеть так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
где eth0 - внутренний интерфейс.
В остальном смысл переадресаций и пр. аналогичен тому, как это объяснялось для ipfw
. Разнятся только правила постороения конфигурационных файлов ipfw
и iptables
. Пример правил iptables можно изучить здесь.
С этим разобрались. Теперь надо дать указание Squid о том, что он должен обрабатывать пакеты, изначально на него не направленные. Переходим к включению режима прозрачности Squid.
Прозрачный Squid в squid.conf
Теперь дело осталось за малым - настроить Squid в режим невидимки, т.е. принимать автоматически перенаправленные пакеты и обрабатывать их. В разных версиях Squid за это отвечали разные команды. Настройка Squid версии 2.6.* выглядит так:
http_port 127.0.0.1:3128 transparent # Squid работает в прозрачном режиме
Внимательно просмотрите конфигурационный файл squid.conf на предмет дубликатов директив - я потратил два часа времени, обратился на форум за помощью с "нестандартной проблемой", в то время как просто не обратил внимание на то, что первой строкой у меня включался обычный режим работы Squid:
http_port 3128 # Squid работает в обычном режиме
Практически все. Перезапустите Squid, примените правила брандмауэра с добавленной командой перенаправления портов - теперь любой компьютер локальной сети, выходя через наш шлюз в интернет, не сможет миновать нашего ставшего прозрачным для всех Squid. А теперь попробуйте настроить прокси на каком-нибудь компьютере - компьютер не должен получить выход в интернет. Вроде все. Если есть вопросы или советы - комментарии приветствуются, особенно учитывая, что настройка прозрачного Squid и проброс портов вообще "больная" тема на форумах.
Плюсы и минусы
Из плюсов можно отметить абсолютную уверенность, что все запросы на 80 порт (стандартный для веб) будут обработаны Squid-ом. Соответственно, будут логи, статистика для шефа и отсутствие необходимости бегать и руками все настраивать.
Из минусов можно отметить:
- невозможность (по-крайней мере, простым способом) авторизовать пользователей для доступа в интернет;
- если вдруг "упадет" Squid, то доступ к сайтам прекратится. Поэтому админу нужно или быть уверенным, что все будет ОК, или иметь возможность удаленно изменить конфиг брандмауэра, или написать скрипт, автоматом проверяющего, висит ли Squid на порту 3128, и если нет, то запускающего его.
Настройка Squid в прозрачном режиме завершена. Вот теперь - все.
Простой DHCP-сервер + прозрачный прокси на Squid
Обновлено: 29.06.2025
Для начала опишу ситуацию, почему я установил у себя на компьютере связку dhcp-сервера и прозрачного прокси на squid. Все дело в том, что мне частенько приходится дома работать с несколькими компьютерами одновременно (что-нить настроить и т.п.), но постоянно каждому компьютеру прописывать ручками ip, а так же прописывать настройки прокси очень не удобно, можешь забыть, что ты уже использовал какой-то ip - поэтому и получаешь конфликты ip-адресов.
Хочу сразу предупредить, что описал лишь только те параметры конфигурационных файлов, которые необходимы для простой работы dhcp-сервера и прокси Squid. Так как этих параметров уйма, предлагаю вам самим с ними поразбираться, а не упрекать меня в том, что я что-то не описал.
Установка DHCP-сервера
1. Устанавливаем dnsmasq
$sudo apt-get install dnsmasq
2. Редактируем файл /etc/dnsmasq.conf
$sudo nano /etc/dnsmasq.conf
3. Ищем закомментированную строку (что то вроде этого):
#interface=eth0
и раскомментируем ее
interface=eth0
при этом не забываем поменять название сетевой карты - eth0 на название вашей сетевой карты, к которой будут конектиться другие компьютеры из вашей сети.
4. Дальше, в этом же файле, раскомментируем или добавляем свою строку: dhcp-range= . К примеру, вот как она выглядит у меня:
dhcp-range=192.168.0.2,192.168.0.15,12h
данная запись означает, что всем компьютерам подключающимся к моей сети, будут автоматически выдаваться ip-адреса, c 192.168.0.2 по 192.168.0.15. И аренда этих адресов будет составлять 12 часов.
5. Перезапускаем сервис dnsmasq:
$sudo /etc/init.d/dnsmasq restart
6. Подключаем в сеть какой-нить компьютер, при этом не забываем поставить ему в сетевых настройках, получение ip-адреса автоматически. Если все верно - то компьютеру присвоится ip-адрес из заданного нами в настройках диапазона.
Установка прозрачного прокси.
1. Устанавливаем squid (и если потребуется, другие нужные пакеты, которые он запросит автоматически):
$sudo apt-get install squid
2. Редактируем файл настроек squid:
$sudo nano /etc/squid/squid.conf
3. Ищем параметр http_port , и выставляем ему следующее значение (к примеру, как у меня):
http_port 3128 transparent
ключевое слово здесь - это transparent, в результате его мы и получим "прозрачный" прокси. А 3128 - это порт для протокола http.
4. В этом же файле ищем параметр visible_hostname и выставляем ему следующее значение:
visible_hostname (название прокси)
где (название прокси) - можете заменить на любое слово или словосочетание. Если вы не заполните данный параметр - squid будет очень сильно ругаться )) 5. Ищем дальше. Теперь ищем параметр acl our_networks заменяем его на такие строки (вот как к примеру у меня):
acl our_networks src 192.168.0.0/255.255.0.0
http_access allow our_networks
Данными строками мы разрешили доступ к прокси для компьютеров из нашей сети 192.168.0.0.
6. Перезапускаем сервис squid:
$sudo /etc/init.d/squid restart
7. Ну и наконец-то завершающий аккорд. Добавим правило перенаправления портов в наш файервол.
$sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
8. Теперь компьютеры в вашей сети смогут выходить в интернет через ваш "прозрачный" прокси, при этом нам нигде не надо прописывать настройки прокси вручную !! Все работает автоматом.
P.S. Чтобы снова, при каждом включении компьютера, не запускать по новой правило для файервола, проделываем следующее:
1. Запускаем правило для файервола:
$sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
2. Сохраняем список всех правил файервола в файл:
$iptables-save /etc/iptables.rules
3. Редактируем файл /etc/network/interfaces
$sudo nano /etc/network/interfaces
и после блока про сетевую карту eth0 (к примеру, у меня так), вставляем строку
pre-up iptables-restore < /etc/iptables.rules
Вот собственно и все ))
Автор: leolik
blog: http://leolik.blogspot.com
email: leolikua at gmail.com
Команды OpenVPN
Обновлено: 18.03.2020
OpenVPN - очень гибкое, удобное, а главное быстрое и безопасное, решение для построения виртуальных частных сетей VPN. В данной статье я попытаюсь наиболее подробно описать основные команды, используемые в OpenVPN.
Синхронизация избранного с помощью Dropbox
Обновлено: 17.03.2020Вступление
Я в большой степени не сторонник всего "самого-самого". Один из последних среди друзей стал использовать кредитки в интернете, один из последних стал поглядывать во вконтакт и все такое. Поэтому многочисленные социальные сервисы хранения закладок и прочие online фишки проходят до поры до времени мимо меня. Поэтому в этой статейке речь не пойдет о том, например, как прикрутить Google Bookmarks куда-либо. Мы будем делать примитивно и просто: синхронизировать содержимое папки (или файла) избранного. Для примера возьмем Internet Explorer и Windows 7.
Задача: иметь дома и на работе одинаковое избранное, при этом ничего не копируя (например, на флешку или еще куда-либо). Синхронизировать избранное мы будем с помощью Dropbox в качестве online-хранилища и:
- Символьной ссылки (команда
mklink
в Windows) - Allway Sync в качестве простой и без выкрутасов программы синхронизации файлов.
Теория
Dropbox
Для тех, кто не в курсе - Dropbox это веб-сервис, бесплатно предоставляющий 2 Гб для хранения файлов. Сейчас 2 Гб это уже не так и много, но для большинства нужных файлов этого достаточно - я имею ввиду текстовые документы по работе, избранное и пр. не-видео контент. На Dropbox-е можно оплачивать 50 Гб и более, но это уже стоит от $10/месяц.
Работа с Dropbox проста - устанавливаете программу-клиент (есть версии для Windows, Mac и Linux), вводите свой логин/пароль (если их нет, регистрируетесь). Программа спросит вас, какую папку использовать для синхронизации. Все. В дальнейшем просто копируете файлы в эту папку и они доступны для доступа с другого компьютера. Причем есть режим для разрешения доступа к файлам (в папке Public
) любому пользователю Интернет (дальше параноикам можно НЕ ЧИТАТЬ!). В общем, все просто. Осталось только мелочь - периодически обновлять содержимое папки Dropbox свежими версиями файлов. Например, если вы хотите иметь общее избранное на нескольких компьютерах, вам надо будет вручную копировать избранное в папку синхронизации Dropbox-а. Как правило, вы будете вспоминать об этом сразу после нажатия кнопки завершения работы на рабочем компьютере в 18:05, т.е. домой вы едете устаревшим.
Предположим, что вы скачали версию для Windows и установили в каталог C:SyncDataDropbox
.
Символьные ссылки
Символьная ссылка (также симлинк от англ. Symbolic link, символическая ссылка) — специальный файл в UNIX-подобных операционных системах, для которого в файловой системе не хранится никакой информации, кроме одной текстовой строки. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке. Символьная ссылка занимает ровно столько места на файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела).
Целью ссылки может быть любой объект — например, другая ссылка, или даже несуществующий файл (в последнем случае при попытке открыть его должно выдаваться сообщение об отсутствии файла). Ссылка, указывающая на несуществующий файл, называется висячей.
Практически символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как позволяют одному файлу или каталогу иметь несколько имён и свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одного раздела и не могут ссылаться на каталоги).
Символьные ссылки в Windows, в отличие от жестких ссылок, могут указывать на файлы и директории в других томах.
Виды символьных ссылок в Windows:
- Символьные связи (junction points) — доступна с Windows 2000 (файловая система NTFS 5). Может указывать только на директории.
Команда —linkd
(Microsoft Windows Resource Kit) - Символическая ссылка (symbolic links) — доступна с Windows Vista. Может указывать и на файлы, и на директории.
Команда —mklink
Вот с командой mklink
мы и будем работать. Запуск команды возможен с правами администратора. Запуск команды без параметров даст следующий вывод:
Создание символической ссылки. MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение /D Создание символической ссылки на каталог. По умолчанию создается символическая ссылка на файл. /H Создание жесткой связи вместо символической ссылки. /J Создание соединения для каталога. Ссылка Имя новой символической ссылки. Назначение Путь (относительный или абсолютный), на который ссылается новая ссылка.
Нас будет интересовать режим /D - создание символической ссылки на каталог.
mklink
совпадет с уже существующей папкой на диске, то команда не будет выполнена. Т.е. если у нас есть папка d:folder1
, который мы хотим залинковать в папку c:copy
, то если у нас уже есть папка c:copy
, команда не выполнится! В таком случае нам надо удалить папку c:copy
(или переместить ее в другое место), выполнить команду "mklink /D c:copy d:folder1"
и после этого перенести содержимое старой папки c:copy
в созданную символьную ссылку c:copy
. Звучит трудновато, но как только начнете работать с mklink, сразу поймете!1. Автоматическая синхронизация с помощью символьных ссылок
Важно: метод скорее напоминает костыли в 21 веке - ознакомтесь с комментариями.
Наша задача состоит в том, чтобы при создании/удалении записи в папке "Избранное" на вашем рабочем компьютере эти изменения сразу же отображались бы в Dropbox.
Для начала давайте примем политическое решение: создадим в папке Избранное
папку Местное
. В эту папку мы будем помещать те ссылки, которые не предназначены для синхронизации. Далее с помощью команды mklink создадим в папке Избранное
символьную ссылку с именем Синхронизировать
, в которую будем сохранять только те ссылки, которые будут нас приследовать дома и на работе. OK, поехали.
Запускаем cmd
. Если вы не администратор, выполняем команду:
runas /user:administrator cmd
Вводим пароль администратора, в новом окне cmd от имени администратора выполняем команду:
C:Windowssystem32>
mklink /D C:UsersUserNameFavoritesСинхронизировать C:SyncDataDropboxСинхронизированноеИзбранное
где:
/D
- режим создания символьной ссылки,C:SyncDataDropboxСинхронизированноеИзбранное
- имя папки, которую Dropbox будет синхронизировать с сервером Amazon (где, собственно, Dropbox и хранит все, что мы ему отдаем),C:UsersUserNameFavoritesСинхронизировать
- символьная ссылка (а по-простому, ярлык-папка), в которую мы будем сохранять все ссылки, которые хотим увидеть на другом компьютере.
Все. Теперь вам надо будет проделать эту несложную процедуру дома. Сохранять все в одну папку я не захотел, все-таки может быть ситуация, когда вам не захочется переносить кое-какие ссылки из домашней коллекции на рабочий компьютер ;)
2. Автоматическая синхронизация с помощью бесплатных программ
Тоже своего рода "костыль" :) Да, не элегантно, не модно. Но - работает.
Например, с помощью Allway Sync. Фактически, просто создаем задачу синхронизации двух каталогов: папки Избранное
на компьютере и папки СинхронизированноеИзбранное
в Dropbox. Сейчас раздел в разработке (хотя что там разрабатывать? Просто словосочетание красивое) - надо сделать скриншот :) Собственно, все.
В использовании Dropbox есть плюс в том, что им и так часто кто пользуется, а так мы просто немного расширяем его область применения.
Опции sendmail
Обновлено: 29.06.2025
Пакет sendmail имеет ряд параметров, которые позволяют Вам настраивать выполнение ряда задач. Я рассмотрю лишь основные, полный перечень огромен.
Чтобы конфигурировать любые из этих параметров, Вы можете определять их в файле конфигурации m4, что является предпочтительным методом, или вставлять их непосредственно в файл sendmail.cf. Например, если нужно, чтобы sendmail запускал новый процесс для каждого сообщения почты, нужно добавить строку к файлу конфигурации m4:
define(`confSEPARATE_PROC',`true')
Соответствующая запись в файле sendmail.cf:
O ForkEachJob=true
Следующий список описывает общие параметры sendmail m4 и эквиваленты sendmail.cf:
- confMIN_FREE_BLOCKS (MinFreeBlocks)
-
Есть одна проблема с почтовой очередью: она растет. При большом числе писем, она может разрастись настолько, что на диске свободного места уже не будет. Поэтому есть опция, чтобы определить минимальное число дисковых блоков, которые должны быть свободны перед приемом письма (значение по умолчанию 100 блоков). Блоки в разных системах могут иметь разный размер, но обычно кратный 512 байтам.
- confME_TOO (MeToo)
-
При раскрытии псевдонимов отправитель письма может оказаться в списке получателей. Эта опция определяет, получит ли отправитель копию. Имеющие силу значения: "true" и "false" (значение по умолчанию false).
- confMAX_DAEMON_CHILDREN (MaxDaemonChildren)
-
При получении sendmail входящего соединения SMTP с удаленного хоста, для его обработки запускается отдельная копия sendmail. Но память-то у Вашей машины не резиновая! При большом количестве таких подключений кончится все, что угодно. Тем более, sendmail не относится к числу программ с низким потреблением ресурсов. Эта опция позволяет задать максимальное число копий, которые работают одновременно. Если лимит исчерпан, входящие соединения будут отклоняться до завершения работы какой-то копии. Значение по умолчанию: undefined (не определено).
- confSEPARATE_PROC (ForkEachJob)
-
При обработке очереди почты и посылке сообщений sendmail обрабатывает одно сообщение за раз. Когда эта опция включена, sendmail будет порождать по копии для каждого письма. Это особенно полезно, когда имеются некоторые сообщения, которые увязли в очереди потому, что есть проблемы с целевым хостом. (Значение по умолчанию: false).
-
При подключении sendmail выдает приветствие. По умолчанию, это сообщение содержит hostname, имя агента передачи почты, версию sendmail, локальную версию и текущую дату. RFC 821 определяет, что первым словом приветствия должно быть полным доменным именем компьютера, но остальная часть может быть произвольной. Вы можете определять здесь даже макрокоманды sendmail, они будут нормально работать! Единственные люди, которые это сообщение увидят, это администраторы, пытающиеся понять, почему не работает почта у них, и люди, которым интересна настройка Вашего сервера (например, хакеры). Слово "EMSTP" между первым и вторым словами служит сигналом удаленным хостам о поддержке этого протокола (значение по умолчанию: $j Sendmail $v/$Z; $b).
- confSMTP_LOGIN_MSG (SmtpGreetingMessage)
Источник: http://www.linuxsoft.ru/info/lib/lib/nag20/x15220.htm.
Построение файла sendmail.cf
Обновлено: 29.06.2025
Когда Вы завершили редактирование файла конфигурации m4, Вы должны его обработать, чтобы построить файл /etc/mail/sendmail.cf. Это делается так:
# m4 /usr/share/sendmail.cf/m4/cf.m4 vstout.uucpsmtp.mc >sendmail.cf
Эта команда вызывает макропроцессор m4 и передает ему имена двух файлов макроопределений. Затем m4 обрабатывает файлы в порядке поступления. Первый файл стандартный шаблон макрокоманд, обеспеченный исходным пакетом sendmail, второй, конечно, является файлом, содержащим наши собственные определения макрокоманд. Вывод команды направлен в файл /etc/mail/sendmail.cf, который является адресатом.
Вы можете теперь запустить sendmail с новой конфигурацией всех параметров.
Источник: http://www.linuxsoft.ru/info/lib/lib/nag20/x14903.htm
Порядок прохождения таблиц и цепочек IPTABLES
Обновлено: 29.06.2025
Порядок прохождения таблиц и цепочек IPTABLES
В этой главе мы рассмотрим порядок прохождения таблиц и цепочек в каждой таблице. Эта информация будет очень важна для вас позднее, когда вы начнете строить свои наборы правил, особенно когда в наборы правил будут включаться такие действия как DNAT, SNAT и конечно же TOS. Источник.
Общие положения
Когда пакет приходит на наш брандмауэр, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже.
Таблица 1. Порядок движения транзитных пакетов
Шаг |
Таблица |
Цепочка |
Примечание |
1 |
═ |
═ |
Кабель (т.е. Интернет) |
2 |
═ |
═ |
Сетевой интерфейс (например, eth0) |
3 |
Mangle |
PREROUTING |
Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр.. |
4 |
Nat |
PREROUTING |
Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях |
5 |
═ |
═ |
Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет - локальному приложению или на другой узел сети. |
6 |
Filter |
FORWARD |
В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации. |
7 |
Mangle |
FORWARD |
Далее пакет попадает в цепочку FORWARD> таблицы mangle, которая должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации. |
8 |
═ |
═ |
Принятие решения о дальнейшей маршрутизации, т.е. в этой точке, к примеру, решается на какой интерфейс пойдет пакет. |
9 |
Nat |
POSTROUTING |
Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскировка (Masquerading). |
10 |
Mangle |
POSTROUTING |
Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации. |
11 |
═ |
═ |
Выходной сетевой интерфейс (например, eth1). |
12 |
═ |
═ |
Кабель (пусть будет LAN). |
Как вы можете видеть, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables или что либо еще, но нас главным образом интересует iptables. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся через наш брандмауэр/роутер. Не используйте цепочку INPUT для фильтрации транзитных пакетов, они туда просто не попадают! Через эту цепочку движутся только те пакеты, которые предназначены данному хосту!
А теперь рассмотрим порядок движения пакета, предназначенного локальному процессу/приложению
Таблица 2. Для локального приложения
Шаг |
Таблица |
Цепочка |
Примечаниеt |
1 |
═ |
═ |
Кабель (т.е. Интернет) |
2 |
═ |
═ |
Входной сетевой интерфейс (например, eth0) |
3 |
Mangle |
PREROUTING |
Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр. |
4 |
Nat |
PREROUTING |
Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях. |
5 |
═ |
═ |
Принятие решения о маршрутизации. |
6 |
Mangle |
INPUT |
Пакет попадает в цепочку INPUT таблицы mangle. Здесь внесятся изменения в заголовок пакета перед тем как он будет передан локальному приложению. |
7 |
Filter |
INPUT |
Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. |
8 |
═ |
═ |
Локальный процесс/приложение |
Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD. И в заключение мы рассмотрим порядок движения пакетов, созданных локальными процессами.
Таблица 3. От локальных процессов
Шаг |
Таблица |
Цепочка |
Примечание |
1 |
═ |
═ |
Локальный процесс |
2 |
Mangle |
OUTPUT |
Здесь производится внесение изменений в заголовок пакета. Фильтрация, выполняемая в этой цепочке, может иметь негативные последствия. |
3 |
Nat |
OUTPUT |
Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра. |
4 |
Filter |
OUTPUT |
Здесь фильтруется исходящий траффик. |
5 |
═ |
═ |
Принятие решения о маршрутизации. Здесь решается - куда пойдет пакет дальше. |
6 |
Nat |
POSTROUTING |
Здесь выполняется Source Network Address Translation (SNAT). Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP. |
7 |
Mangle |
POSTROUTING |
Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра. |
8 |
═ |
═ |
Сетевой интерфейс (например, eth0) |
9 |
═ |
═ |
Кабель (т.е., Internet) |
Теперь мы знаем, что есть три различных варианта прохождения пакетов. Рисунок ниже более наглядно демонстрирует это.
Этот рисунок дает довольно ясное представление о порядке прохождения пакетов через различные цепочки. В первой точке принятия решения о маршрутизации (routing decision) все пакеты, предназначенные данному хосту направляются в цепочку INPUT, остальные - в цепочку FORWARD.
Обратите внимание также на тот факт, что пакеты, с адресом назначения на брандмауэр, могут претерпеть трансляцию сетевого адреса (DNAT) в цепочке PREROUTING таблицы nat и соответственно дальнейшая маршрутизация в первой точке будет выполняться в зависимости от произведенных изменений.
Настройка iptables и NAT
Обновлено: 29.06.2025
Задача: настроить шлюз в интернет для офиса на основе обычного компьютера с установленной Linux с двумя сетевыми картами.
Условимся, что внутренняя сетевая карта называется eth1, внешняя - eth0.
Чуть-чуть ликбеза. Мы настроим (1) forwarding (маршрутизацию) и (2) NAT (netowrk address translation).
(1) Маршрутизация (forwarding) в данном случае означает, что когда пакет из локальной сети в поисках "ya.ru" (или иного сайта или внешнего IP) попадает на наш шлюз, то шлюз должен знать, что такие пакеты надо передать на внешний интерфейс (eth0) - мол, летите, соколы, дальше. Дальше точно так же (ну, пусть не точно также, ну пусть и совсем не так же) от одного узла до другого провайдеры перекидывают наш пакет все дальше от нас и все ближе к цели.
(2) NAT. Как много в этом слове... Пример. Вася открывает сайт ya.ru (IP: 213.180.193.3). Т.к. в локальной сети IP-адреса локальные (не маршрутизируются в интернет, ну никак), то наш шлюз подменяет адрес источника пакета (ноутбук Васи, src=192.168.1.134) на свой собственный IP адрес (src=1.2.3.4), выданный провайдером. Сайт ya.ru будет считать, что IP Васи не 192.168.1.134, а 1.2.3.4. И ответный пакет ya.ru отправит нашему шлюзу. При получении ответа от удаленного сервера наш шлюз вспомнит, какая локальная машина запрашивала 213.180.193.3 и в ответном пакете поменяет dst с 1.2.3.4 на 192.168.1.134.
Такой NAT еще называют SNAT (Source NAT), т.к. изначально меняется адрес источника (src, source). Есть другой NAT - DNAT (destination nat, dst nat). Но морочить себе голову сейчас мы не дадим, не так ли ;)
Если в дальнейшем будет нужна статистика и пр., то настроить Squid будет не так и сложно.
Для простоты обозначений, наш шлюз будем называть сервер. Поехали...
1. Создаем скрипт правил iptables iptables.sh
Например, в директории /root создадим файл iptables.sh, дадим ему права на исполнение:
chmod +x /root/iptables.sh
Теперь поместим в этот файл следующий текст:
# Define vars
IF_EXT="eth0"
IF_INT="eth1"
IPT="/sbin/iptables"
# flush
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X
# loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# PROTECT FIREWALL
$IPT -N bad_packets
$IPT -P bad_packets ACCEPT
$IPT -A bad_packets -i $IF_EXT -s 10.0.0.0/8 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 172.16.0.0/12 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 192.168.0.0/12 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 127.0.0.0/8 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 0.0.0.0/8 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 169.254.0.0/16 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 192.0.2.0/24 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 204.152.64.0/23 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 224.0.0.0/3 -j DROP
$IPT -A bad_packets -i $IF_EXT -s 240.0.0.0/5 -j DROP
$IPT -A INPUT -j bad_packets
$IPT -A OUTPUT -j bad_packets
$IPT -A FORWARD -j bad_packets
# FORWARD chain
# #########################################
# allow new connections from local net to out
$IPT -A FORWARD -i $IF_INT -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# do not allow new connections from internet, but support established connections from local network
$IPT -A FORWARD -i $IF_EXT -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT
# NAT
# #########################################
# SNAT - local users to out internet
$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE
# INPUT chain
# #########################################
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $IF_INT -p tcp --dport 22 -j ACCEPT
# OUTPUT chain
# #########################################
# new local connections
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
2. Комментарии к скрипту iptables.sh
- Все секции снабжены минимальными комментариями, поэтому в них не запутается даже новичок.
- Наиболее "туманная" секция - # PROTECT FIREWALL, но во-первых, временно вы можете ее вообще убрать, а во-вторых, если задуматься, там всё просто. Мы защищаем наш сервер от атак, когда из внешней сети пытаются "прикинуться" внутренними адресами. Вот и все.
- Чтобы наш сервер в принципе мог выпускать во внешний мир клиентов локальной сети, обязательно надо включить forwarding (почти в самом начале скрипта):
# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forwardДанный параметр также может быть задан через параметр:
net.ipv4.ip_forward = 1 в файле /etc/sysctl.conf.
Чтобы изменения в файле sysctl.conf вступили в силу, выполните следующую команду:
sysctl -p /etc/sysctl.conf
- В секции # INPUT chain мы разрешаем клиентам локальной сети подключаться к серверу по ssh. Обратите внимание, несмотря на то, что к самому серверу можно обратиться только по ssh, клиенты локальной сети не будут ограничены в выходе в интернет. Цепочка INPUT не для них!
- В цепочке # OUTPUT chain мы разрешаем серверу обращаться во внешний мир (скачивать обновления, например). Для упрощения считаем, что мы доверяем нашему серверу и разрешаем ему любые исходящие соединения.
- Еще раз отмечу - цепочки INPUT и OUTPUT работают только для тех пакетов, которые адресованы локальной машине, в нашем случае это сам сервер.
- Фактически, пакет из локальной сети в интернет проходит две (упрощенно) цепочки: FORWARD -> POSTROUTING. Более детальное описание этапов прохождения пакетов через iptables смотрите в статье "Порядок прохождения таблиц и цепочек IPTABLES". Поэтому все ограничения клиентов локальной сети (разрешить ли ICQ, WWW, POP3 и т.п.) настраиваются правилами FORWARD (секция #FORWARD chain). Например, для того, чтобы разрешить доступ только к сайтам, пишем:
$IPT -A FORWARD -i $IF_INT -o $IF_EXT -dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Правило по-умолчанию ($IPT -A FORWARD -i $IF_INT -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT) естественно, удаляем либо комментируем символом #. - Для того, чтобы после перезагрузки правила iptables не стирались, после того, как выполните скрипт iptables.sh и убедитесь, что все работает так, как надо, выполните команду:
service iptables save
Эта команда сохранит настройки iptables. Эта команда подойдет для RHEL-основанных дистрибутивов. Для других не знаю. Если нужен универсальный метод - поместите запуск этого скрипта в автозагрузку. - Пожалуй, все. Естественно, если вы новичок, НИКОГДА не настраивайте правила iptables находясь не за клавиатурой самого сервера. Ведь если вы случайно запретите себе доступ, то придется ноги-в-руки-и-на-работу :) Если вы уже знаете, что делаете, это к вам не относится.
- Если есть вопросы, пишите!
Шифрование почты в Outlook
Обновлено: 29.06.2025
В статье описывается, как настроить S/MIME шифрование электронной почты в Outlook 2003 и Outlook 2007. S/MIME - это стандарт для шифрованию электронной почты, он интегрирован во многие почтовые клиенты (Outlook, Thunderbird, Apple Mail и др.). Отмечу, что описанный здесь метод шифрования почты не требует затрат, кроме приобретения почтового клиента Outlook. Но если сравнить стоимость Outlook и, скажем, PGP Desktop Email от Symantec, то Outlook окажется наименьшим злом, причем достаточно удобным и функциональным. Это продолжение статьи "Защита электронной почты. Шифрование почты. Получение сертификата (Comodo)" и предтеча статьи по созданию с помощью OpenSSL самоподписанного сертификата S/MIME.
Подразумевается, что у вас и вашего коллеги уже имеются сертификаты.
Настройка шифрования в Outlook
Настройка Outlook 2003 и 2007 практически идентична. Разница только в расположении параметров настройки.
В Outlook 2003 открываем Сервис -> Параметры -> закладка Безопасность -> кнопка Параметры
:
В Outlook 2007 открываем Сервис -> Центр управления безопасностью -> Защита электронной почты
:
Далее вводим имя конфигурации. Можно придумать любое, я выбрал «SHA1 – 3DES».

Настройки шифрования Outlook (Win XP)
Отмечаем опции «Настройка по умолчанию для этого формата» и «Настройка по умолчанию для всех сообщений».
Переходим к сертификату подписи. Нажимаем кнопку Выбрать
. В открывшемся окне выбираем полученный ранее сертификат и жмем Ок
. Сертификат шифрования должен подставиться автоматически, если нет, выбираем из списка.
Алгоритм хеширования оставляем по умолчанию – SHA1.
Алгоритм шифрования. В зависимости от установленной операционной системы (XP или Vista), набор доступных алгоритмов будет отличаться. Выбираем самый надежный алгоритм.
- Для XP – 3DES.
- Для Vista – AES (256-бит).
Эти настройки определяют максимальный уровень шифрования. Если у вас Vista + Outlook, а вам пишут из XP + Outlook, то письмо будет зашифровано 3DES. Также и в другую сторону, не смотря на то, что у вас выставлен алгоритм шифрования AES (256-бит), письмо для коллеги, работающем в XP, будет зашифровано с помощью алгоритма 3DES. 3DES считается надежным алгоритмом, но если вы хотите улучшить защиту и не переходить на Vista, то ваш выход – сменить почтовый клиент. Например поставить The Bat (есть собственный криптопровайдер с поддержкой AES 256).
Опция «Передавать сертификаты с сообщением» должна быть отмечена.
Обмен сертификатами
Теперь вы можете отправлять кому угодно подписанные сообщения электронной почты, т.е. теперь получатель с намного большей уверенностью сможет считать, что письмо от вас отправили именно вы, а не злоумышленник. Но нам этого мало. Нам необходимо иметь возможность шифровать содержимое электронной почты, а не просто подписывать её. Для этого мы должны обменяться сертификатами с нашим другом. Мы будем шифровать исходящую почту ключом нашего друга, а он, в свою очередь, получив от нас письмо, сможет его окрыть, используя свой ключ.
Для обмена ключами шифрования достаточно отправить друг другу подписанное (sign) сообщение.
Теперь важный для Outlook момент. После получения подписанного письма, отправителя необходимо добавить в адресную книгу.
Для этого открываем полученное письмо. В поле От, на адресе отправителя делаем правый клик, в меню выбираем Добавить в контакты Outlook
. Если контакт уже существует выбираем Обновить контакт
.
В данных контактного лица переходим на закладку сертификаты. Если все правильно, в списке будет отображен сертификат.
Нажимаем Сохранить и закрыть.
Теперь после привязки сертификата к контактному лицу, мы можем отправить ему зашифрованное письмо.
Обратите внимание, быстрый просмотр при выделении зашифрованного письма не работает. Чтобы прочитать содержимое нужно открыть письмо в отдельном окне.
Узнать каким алгоритмом зашифровано письмо, действительны ли сертификаты, можно нажав на кнопке с изображением замка. В открывшемся окне выделяем строку Уровень шифрования. Внизу в графе Описание будет указан алгоритм шифрования.
Переписка зашифрованными сообщениями S/MIME универсальна, т.е. зашифрованные письма, отправленные с Outlook, можно будет прочесть и в других почтовых клиентах, например, Thunderbird, или на мобильных клиентах, например, iPhone или Android. Главное, импортировать в iPhone или другое устройство или почтовый клиент закрытый ключ для расшифровки сообщений и открытый ключ получателя - для отправки. Проверить работу шифрования просто - если у получателя почты есть веб-интерфейс для доступа к почтовому ящику, то содержимое письма будет недоступно для просмотра, вместо этого в письме будет видно вложение smime.p7s.
*****
Источник: http://www.q2w3.ru/2009/07/28/268/
Шифрование почты. Получение сертификата (COMODO)
Обновлено: 29.06.2025
В этой статье речь пойдет о том где и как получить сертификат для шифрования электронной почты.
В настоящее время пользователям доступны две технологии обеспечения безопасности: PKI и PGP. О различиях этих технологий можно узнать по ссылке – PKI или PGP?.
Вся информация в данной статье относится к технологии PKI.
Условная цель
Итак, предположим, что нам надо наладить обмен зашифрованными письмами между двумя адресами: user1@q2w3.ru и user2@q2w3.ru.
Для этого вы должны получить сертификат на свой адрес (user1@q2w3.ru), а также ваш друг/коллега должен получить сертификат для своего адреса (user2@q2w3.ru).
В сети есть несколько центров сертификации, которые выдают сертификаты для электронной почты бесплатно:
- COMODO.COM (регистрация не требуется)
- THAWTE.COM (требуется регистрация)
Лично мне понравилось работать с COMODO. Для получения сертификата не пришлось отключать брандмауэр и понижать параметры безопасности браузера. Надо сказать, что при работе с thawte из Vista + IE7, получить сертификат мне так и не удалось не смотря на точное следование инструкции. В XP проблем не возникало…
Для получения сертификата я настоятельно рекомендую использовать Эксплорер. Особенно, если ваш почтовый клиент Outlook или Windows Mail (в XP Outlook Express).
Процедура получения сертификата
-
Открываем в Эксплорере ссылку http://www.comodo.com/home/internet-security/free-email-certificate.php
-
Нажимаем на большую красную кнопку FREE DOWNLOAD
-
Попадаем на страницу ввода данных сертификата.
Заполняем Имя (First Name), Фамилию (Last Name), адрес электронной почты (Email Address), страну (Country).
Advanced Private Key Options оставляем без изменений.
Revocation Password – это пароль для отмены сертификата (если сертификат с закрытым ключом утерян или попал к третьим лицам).
Comodo Newsletter – подписываться НЕ рекомендую, полезной информации ноль.
Когда все данные введены, нажимаем Agree & Continue -
На экране появится предупреждение (Подтверждаете запрос сертификата?):
Подтверждение запроса на получение сертификата
Нажимаем Да. -
После этого ждем пару минут и проверяем почту. Должно прийти похожее письмо от COMODO:
Если Эксплорер ваш браузер по умолчанию, нажимаем большую красную кнопку Click & Install Comodo Email Certificate. Если нет, копируем ссылку с помощью правого клика, запускаем Эксплорер вручную и открываем в нем скопированную ссылку. Следует отметить, что для получения сертификата открывать ссылку надо на том же самом компьютере и в том же самом браузере в котором вы создавали запрос на сертификат! -
Далее должно появиться предупреждение о том, что веб-сайт пытается импортировать сертификат на ваш компьютер:
Подтверждение импорта сертификата
Нажимаем Да. -
В случае успеха на web-странице появится красная надпись Successful. Но на всякий случай можно проверить корректность установки сертификата. Открываем в панели управления или в Эксплорере Свойства Интернет (Internet Options), далее переходим на закладку Содержание (Content), нажимаем кнопку Сертификаты (Certificates). На вкладке Личные (Personal) должен отображаться ваш новый сертификат. С помощью двойного щелчка можно посмотреть его свойства.
Проверка сертификата
Из этого же места (Личные сертификаты) можно экспортировать сертификат в файл - на случай переустановки Windows, или если этим сертификатом вы будете пользоваться в разных программах или на разных компьютерах. Запишите в отдельный файл пароль от сертификата и сохраните этот файл вместе с файлом сертификатом в папке резервного копирования - желательно, не на рабочем столе! Теперь вы всегда сможете установить сертификат где угодно.
Теперь можно переходить ко второй части – настройке почтового клиента.
*****
Источник: http://www.q2w3.ru/2009/07/28/223/

Принимаю заказы на настройку серверов, mikrotik и других роутеров, точек доступа, nginx и т.п. В пределах Санкт-Петербурга возможен выезд к заказчику. См. контакты.
Последние комментарии
Популярно:
Разделы статей:
Подскажите. подключение с ПК все работает все ок. Делал по вашей мурзилке.
Но при подключе...