Меню

Iptables настройки при pptp



Настройка правил iptables в Linux

Введение

Iptables — это брандмауэр для Linux, используемый для мониторинга входящего и исходящего трафика и его фильтрации в соответствии с заданными пользователем правилами для исключения несанкционированного доступа к системе. При помощи Iptables можно разрешить на вашем сервере движение только определенного трафика. В данном руководстве мы рассмотрим использование Iptables для обеспечения безопасности веб-приложения.

Важно: В последних дистрибутивах RHEL/CentOS по умолчанию используется служба firewallD, уже установленная в системе. Если вы хотите использовать Iptables, сначала нужно ее отключить.

Для рассматриваемого примера используются VPS на Ubuntu 16.04 и локальная машина с SSH-клиентом

Основы Iptables

Все данные передаются по сети в виде пакетов. Ядро Linux предоставляет интерфейс для фильтрации пакетов входящего и исходящего трафика при помощи специальных таблиц. Iptables — это приложение командной строки и межсетевой экран для Linux, которым можно пользоваться для создания, поддержания работоспособности и проверки этих таблиц.

Можно создать несколько таблиц. В каждой таблице может содержаться несколько цепочек. Цепочка — это набор правил. Каждое правило определяет, что делать с пакетом, если он соответствует условиям. При соответствии пакета над ним выполняется целевое действие (TARGET). Это может быть проверка следующей цепочкой или один из следующих вариантов:

  • ACCEPT: разрешить передачу пакета.
  • DROP: запретить передачу пакета.
  • RETURN: пропустить текущую цепочку и перейти к следующему правилу в цепочке, которая ее вызвала.

В данном руководстве мы будем работать с одной из таблиц по умолчанию, которая называется фильтром (filter). В таблице фильтра есть три цепочки (набора правил):

  • INPUT – используется для контроля входящих пакетов. Можно разрешать или блокировать подключения по порту, протоколу или IP-адресу источника.
  • FORWARD – используется для фильтрации пакетов, приходящих на сервер, но перенаправляемых куда-либо еще.
  • OUTPUT – используется для фильтрации исходящих пакетов.

Пример настройки iptables

Давайте рассмотрим настройку iptables, на примере настройки доступа к web серверу.

Шаг 1 – Установка брандмауэра Iptables в Linux

1. Установка Iptables

Iptables предустановлен практически во всех дистрибутивах Linux, но если у вас его нет, в системах Ubuntu/Debian воспользуйтесь командами:

или в Centos/RedHat

2. Проверка текущего состояния Iptables

Эта команда позволит вам проверить состояние текущей конфигурации Iptables. Опция -L используется для выведения всех правил, а опция -v — для более подробной информации:

В рассматриваемом примере во всех трёх цепочках установлена политика по умолчанию ACCEPT. Ни в одной цепочке нет никаких правил. Давайте изменим цепочку INPUT для фильтрации входящего трафика.

Шаг 2 – Определение правил

Определение правила означает внесение его в список (цепочку). Вот пример команды Iptables с обычными опциями. Некоторые из них не являются обязательными.

Опция -A означает “append”, добавление правила в конец цепочки. Очень важным моментом является то, что правила в цепочке применяются последовательно, и если пакет удовлетворяет условиям одного из них, последующие применяться не будут. Это всегда нужно помнить при создании наборов правил. Таблица означает таблицу, в которой редактируются цепочки. По умолчанию это filter. Цепочка — имя цепочки, к которой мы добавляем правило. Интерфейс — сетевой интерфейс, для которого выполняется фильтрация трафика. Протокол указывает сетевой протокол, пакеты которого вы хотите фильтровать, источник — IP-адрес отправителя пакета, номер порта — порт на вашем сервере, для которого применяется правило. Эти и некоторые другие опции будут рассмотрены ниже при демонстрации соответствующих действий. Для более подробной информации о команде Iptables и ее опциях обратитесь к соответствующей man-странице.

Читайте также:  Настройка полей лазерного принтера

1. Разрешение трафика на локальном узле

Первым делом нам нужно обязательно разрешить трафик через интерфейс loopback. Чтобы связь между приложениями и базами данных на сервере продолжалась в обычном режиме.


Опция -A используется для добавления в цепочку INPUT правила, разрешающего все соединения для интерфейса lo. Это обозначение для интерфейса loopback, он используется для всей связи на локальном узле, например, связи между базой данных и веб-приложением на одной машине.

2. Разрешение подключений к портам HTTP, SSH и SSL

Нам требуется, чтобы в обычном режиме работали порты HTTP (порт 80), https (порт 443), ssh (порт 22). Для этого нужно выполнить следующие команды. В них мы при помощи опции -p указали протокол, а при помощи опции —dport (destination port, порт на принимающей стороне, в данном случае это ваш сервер) соответствующий каждому протоколу порт:

Теперь все TCP-подключения с этими номерами портов будут разрешены. На самом деле для подключения по порту ssh лучше разрешить не со всех ip адресов, а только с определенных. Для защиты вашего сервера, как это сделать написано ниже

3. Фильтрация пакетов по источнику

Если вам нужно принимать или отклонять пакеты по IP-адресу или диапазону IP-адресов источника, можно указать их при помощи опции -s. Например, чтобы принимать пакеты с адреса 192.168.1.3:

вместо хоста также можно указать и полностью сеть, например для разрешения подключения по ssh только с локальной сети 192.168.1.0/24 пропишите правило

Отклонение команд с IP-адреса задаётся аналогичной командой с опцией DROP:

Если нужно отклонять или принимать пакеты с диапазона IP-адресов, вам потребуется воспользоваться модулем Iprange с опцией -m и при помощи параметра —src указать диапазон:

4. Запрет всего остального трафика

Важно: после определения правил обязательно нужно запретить остальной трафика, в целях исключения несанкционированного доступа к серверу через другие открытые порты.

Эта команда отклоняет весь трафик, кроме указанных выше портов. Теперь можно проверить свои правила командой:

Как мы видим для интерфейса loopback у нас разрешен любой трафик, по портам 80 и 443 можно подключиться с любого ip. А по порту 22 можно подключиться только с сети 192.168.1.0/24. Не забудьте сохранить настройки, иначе после перезагрузке вы потеряете все изменения. Как сохранить написано ниже.

Удаление правил iptables

Если нужно удалить все правила и прописать все заново с чистого листа, можно воспользоваться командой очистки (flush):

Она удаляет все существующие правила. Если вам нужно удалить конкретное правило, воспользуйтесь опцией -D. Сначала при помощи опции —line-numbers выведите пронумерованный список всех правил:


Для удаления правила нужно указать цепочку и номер в списке. В нашем случае это цепочка INPUT и номер 3.

Настройка NAT (MASQUERADE)

Большинство организаций получает от своих интернет-провайдеров ограниченное количество публично доступных IP-адресов, поэтому администратору требуется разделять доступ к Интернету, не выдавая каждому узлу сети публичный IP-адрес. Для доступа к внутренним и внешним сетевым службам узлы локальной сети используют внутренний (частный) IP-адрес. Граничные маршрутизаторы (межсетевые экраны) могут получать входящие соединения из Интернета и передавать их нужным узлам локальной сети и наоборот, направлять исходящие соединения узлов удаленным интернет-службам. Такое перенаправление сетевого трафика может быть опасным, особенно учитывая доступность современных средств взлома, осуществляющих подмену внутренних IP-адресов и таким образом маскирующих машину злоумышленника под узел вашей локальной сети. Чтобы этого не случилось, в Iptables существуют политики маршрутизации и перенаправления, которые можно применять для исключения злонамеренного использования сетевых ресурсов. Политика FORWARD позволяет администратору контролировать маршрутизацию пакетов в локальной сети. Например, чтобы разрешить перенаправление всей локальной сети, можно установить следующие правила (в примере предполагается, что внутренний IP-адрес брандмауэра/шлюза назначен на интерфейсе eth1):

Читайте также:  Virtualbox настройка в дебиан

Эти правила предоставляют системам за шлюзом доступ к внутренней сети. Шлюз направляет пакеты от узла локальной сети к узлу назначения и наоборот (опции -o и -i), передавая их через устройство eth1.

Важно: по умолчанию в большинстве дистрибутивов Linux перенаправление отключено. Чтобы его включить, нужно внести изменения в файл конфигурации /etc/sysctl.conf. Найдите там такую строчку net.ipv4.ip_forward = 0 и измените 0 на 1:

Разрешение перенаправления пакетов внутренним интерфейсом брандмауэра позволяет узлам локальной сети связываться друг с другом, но у них не будет доступа в Интернет. Чтобы обеспечить узлам локальной сети с частными IP-адресами возможность связи с внешними публичными сетями, нужно настроить на брандмауэре трансляцию сетевых адресов (NAT). Создадим правило:

В этом правиле используется таблица NAT, поэтому она указывается в явном виде (-t nat) и указана встроенная цепочка этой таблицы POSTROUTING для внешнего сетевого интерфейса eth0 (-o eth0). POSTROUTING позволяет изменять пакеты, когда они выходят из внешнего интерфейса шлюза. Целевое действие -j MASQUERADE заменяет (маскирует) частный IP-адрес узла внешним IP-адресом шлюза. Это называется IP-маскарадингом.

Проброс портов

Если в вашей внутренней сети есть сервер, который должен быть доступен извне, можно воспользоваться целевым действием -j DNAT цепочки PREROUTING в таблице NAT и указать IP-адрес и порт места назначения, на которые будут перенаправляться входящие пакеты, запрашивающие соединение с вашей внутренней службой. Например, если нужно перенаправлять входящие HTTP-запросы по порту 80 на выделенный HTTP-сервер Apache по адресу 172.31.0.23, выполните команду:

Данное правило определяет использование встроенной цепочки PREROUTING в таблице NAT для перенаправления входящих HTTP-запросов на порт 80 указанного IP-адреса 172.31.0.23. Такой способ трансляции сетевых адресов называется перенаправлением или пробросом портов.

Сохранение изменений в iptables

Созданные нами правила сохранены в оперативной памяти. Это означает, что при перезагрузке нам нужно будет заново из определить. Чтобы сохранить из после перезагрузки, нужно выполнить следующую команду:

Она сохраняет текущие правила в файл конфигурации системы, который используется для перенастройки таблиц во время перезагрузки. Эту команду нужно выполнять после каждого изменения правил. Для отключения брандмауэра просто очистите все правила и сохраните изменения:

Восстановление настроек

Если вы еще не сохраняли настройки, и хотите вернуться к первоначальным настройкам. Используйте iptables-restore.

Заключение

В данном руководстве мы рассмотрели основные моменты работы с Iptables: разрешение трафика только на определенных портах, фильтрацию пакетов по источнику, основы настройки трансляции сетевых адресов (NAT) и сохранение правил после перезагрузки. Однако, важно заметить, что iptables работает только с трафиком ipv4. Если ваш VPS поддерживает ipv6, нужно установить отдельные правила при помощи ip6tables.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Установка и настройка VPN сервера на Debian, Ubuntu Linux используя pptp и arno-iptables-firewall

Эта инструкция описывает установку и настройку PPTP сервера под управлением Debian GNU/Linux Squeeze.

PPTP — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.

Читайте также:  Cisco коммутатор настройка порта

IP адрес сервера в локалке пусть будет 192.168.0.1
IP адреса в VPN будут 192.168.2.0/24

Начинаем установку необходимых программ:

Теперь приступаем к настройке.

Первым делом открываем в редакторе файл /etc/pptpd.conf и дописываем в конец следующие строки:

Добавляем в файл /etc/ppp/pptpd-options следующие строки:

Сохраняем конфигурационный файл и создаем файл лога командой:

Переходим к настройке паролей в файле /etc/ppp/chap-secrets
Добавляем по примеру:

После этого перезапускаем pptpd:

Переходим к настройке нашего скрипта файрвола arno-iptables-firewall, который создаёт правила для iptables на основе конфигурационных файлов.

# Разрешаем протокол GRE для всех:
Вносим переменную DC_OPEN_IP в файл /etc/arno-iptables-firewall/firewall.conf

В файл /etc/arno-iptables-firewall/debconf.cfg вносим переменную DC_OPEN_IP и открываем протокол GRE для сервера
было:

Перезагружаем ARNO командой:

Если же вы используете самописный скрипт iptables, тогда необходимо добавить следующие строки в свой скрипт:

Теперь можно пинговать наш сервер 192.168.0.1 и пользоватся интернетом через него.

На этом настройка VPN сервера на PPTP закончена, если Вам понадобится подключится к VPN сервер из Windows, Вам достаточно почитать инструкцию: Инструкция подключения к серверу PPTPD из Windows.

С Вами был Сергей Лазаренко, если Вам понравилась статья, подписывайтесь на получение обновлений с сайта на свою почту. А также прошу поделится с друзьями данной инструкцией нажав на иконку Вашей социальной сети.

После труда, принято немножко отдохнуть, потому посмотрим интересный видео ролик о подводной охоте на сома:

Источник

[iptables]Помощь в настройке pptp

Если кому-то будет интересно — подскажите как правильно настраивать iptables для работы с pptp. Маны по iptables освоенны. Потихоньку разбираюсь в настройке, но не все понимаю в самой технологии pptp.

Как я вижу работу этой системы: мне необходимо открыть все действительные адреса интернета (за исключением адресов для приватных сетей) для прохождения по интерфейсу ppp0 в обе стороны. Ограничить порты, с которых может приходить пакет (пусть пока что будет только 80). При этом в eth0 открыть прохождение пакетов до адреса, через который проходят pptp пакеты сети.

P.S.: Понятно, что все это можно найти, глубоко раскопав гугл и яндекс.
Но иногда так хочется живого общения =)

Re: [iptables]Помощь в настройке pptp

на eth0 открыть доступ к хосту который является pptp сервером для протокола gre и tcp порт 1723, этого будет достаточно. иногда надо разрешить прохождение icmp пакетов, тк провайдер может пинговать твой хост, и в случае непрохождения пинга убить сессиию.

Ну а ппп0 настраивать как вздумается. Вопрос в том какие команды писать, или стоит ли их писать вообще?

Re: [iptables]Помощь в настройке pptp

Просто когда я настраиваю подключение по pptp я добавляю в route 2 хоста (DNS сервера) и путь к ним. После установки соединения доступ к ним можно не обеспечивать?

/*если кому-то интересно — интернет через Golden-telecom aka Beeline*/

Re: [iptables]Помощь в настройке pptp

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

у меня тоже голдентелеком, я по дхцп принимаю только маску, ип и роуты. днс и дефолт гейт не принимаю.

Источник

Adblock
detector