11 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

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

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

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

Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu

Введение

В этой статье мы расскажем, как установить и настроить прокси-сервер.

Прокси-сервер (от англ. proxy — «представитель, уполномоченный»)
выступает в роли посредника в коммуникациях между вашим ПК/мобильным и Интернетом.

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

  • Обход ограничений доступа к определенным веб-ресурсам установленным администратором локальной сети.
  • Обход региональных ограничений доступа у определённых веб-ресурсов.
  • Анонимный доступ к веб-ресурсам путём сокрытия реального IP-адреса.

Среди всего многообразия прокси-серверов остановим свой выбор на открытом бесплатном кроссплатформенном сервере от Владимира ‘3APA3A’ Дубровина — 3proxy опубликованный под BSD-подобной лицензией. Текст лицензии.

Среди альтернатив можно выделить Squid, но он:

  • Сложен в настройках.
  • Потребляет больше ресурсов.
  • Не скомпилирован с поддержкой SSL по умолчанию и сложен для компиляции.

Также внимание заслуживает tinyproxy.

Преимущества и недостатки:

Он включает в себя:

  • HTTP прокси с поддержкой HTTPS и FTP.
  • SOCKSv4/SOCKSv4.5/SOCKSv5 прокси.
  • POP3 прокси.
  • SMTP прокси.
  • AIM/ICQ прокси.
  • MSN messenger / Live messenger прокси.
  • FTP прокси.
  • Кэширующий DNS прокси.
  • TCP и UDP портмапперы.

Так же доступны дополнительные возможности, такие как:

  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через ODBC и syslog.
  • Поддержка IPv6.
  • и ряд других.

К недостаткам можно отнести:

  • Отсутствие поддержки кеширования веб-страниц.
  • Отсутствие в официальных репозиториях некоторых linux-дистрибутивов (включая Debian и Ubuntu), но в репозиториях Gentoo, RedHat, Alt Linux присутствует.

Технические требования

  • Операционная система Debian GNU/Linux (версии с 7 по 9) или Ubuntu (версии с 14.04 по 17.04) любой разрядности (32/64 бита).
  • Пользователь с привилегиями root (как вариант доступ через sudo).

Шаг 1. Подготавливаем инструментарий

В связи с тем что он отсутствует в официальных репозиториях Debian и Ubuntu, мы будем устанавливать его из исходников.

Но перед этим установим всё необходимое для дальнейшей работы.

Шаг 2. Скачиваем и распаковываем исходники

Последняя версия 0.8.10 (на момент написания руководства).
Узнать последнюю версию можно на официальном сайте, при необходимости просто замените цифры на необходимые в следующих парах команд:

Шаг 3. Компилируем

Шаг 4. Устанавливаем

Копируем получившийся бинарный файл:

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

Узнаём UID и GID пользователя командой:

В ответ, например, получим:

Создаём файл настроек:

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Ctrl+U или F10)

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Комментарии начинаются со знака # и допустимы только с начала строки.
Рекомендуется вообще удалить комментарии для более стабильной работы 3proxy.
Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152—65535.

Другие примеры настроек можно посмотреть командами:

или же в одном из следующих руководств на которые ссылается официальный сайт:

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

Создаём файл с пользователями и паролями:

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Ctrl+U или F10)

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Где логин: username и пароль: strongpassword следует изменить на свои.

Читать еще:  Игры на телефон варкрафт. Итак, что нужно сделать, чтобы играть в Warcraft на планшете

Каждый новый пользователь указывается с новой строки.

Выставляем права доступа к файлам прокси-сервера:

Создаём папку для ведения логов и назначаем права на неё:

В случае наличия IPv6 на сервере,
рекомендуем запускать прокси со следующей строкой в /etc/3proxy/3proxy.cfg:

для сервера с IPv4:95.213.255.16 и IPv6:2002:5fd5:ff010::1 у вас же они будут иные.
В таком случае будет поддержка IPv6 на выходе с прокси,
например https://yandex.ru/internet отобразит оба адреса.

Шаг 5. Добавляем в автозагрузку и запускаем прокси-сервер

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Ctrl+U или F10)

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Ещё один вариант скрипта инициализации:

Делаем файл исполняемым:

Добавляем в автозагрузку:

В консоли мы увидим сообщение:

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg
в т.ч. к последней строке файла. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Также мы увидим его в списке запущенных процессов в ответе на команду:

Шаг 6. Открываем порт

Открываем порт (3128/tcp) на сервере.
Либо указываем свой, который указан в файле /etc/3proxy/3proxy.cfg

При использовании iptables:

Шаг 7. Настраиваем окружение

Множество программ (включая веб-браузеры) поддерживают работу через прокси по умолчанию. Интерфейс настроек у каждой свой.

Если же программа не поддерживает, то возможна настройка
работы всех соединений через прокси в параметрах используемой вами операционной системы.

Либо использование программы проксификатора.
Например такой как:

Настройки для браузера Google Chrome:
Для подключения к сети Google Chrome использует системные настройки прокси-сервера.
В случае Microsoft Windows это настройки можно также найти в Internet Explorer / MS Edge.

Форма с предложением ввода логина и пароля (username:strongpassword) появится, после первой попытки открытия любой веб-страницы.

Затем любые сервисы по проверки IP-адреса,
например, такие как:

сообщат IP-адрес вашего Vscale-сервера вместо текущего.

Шаг 8. Удаляем временные файлы

Шаг 9. (ОПЦИОНАЛЬНО) Удаляем 3Proxy

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

Заключение

Мы рассмотрели установку и базовую настройку 3proxy. Безусловно у данного прокси-сервера есть еще множество настроек, которые мы не затронули, в том числе настройку SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени, но это тема уже для отдельного руководства.

Таким образом после выполненных действий вы получаете свой собственный прокси-сервер, который более безопасен для вас, так как ваш трафик заведомо не будет перехвачен и проанализирован третьими лицами, от чего вы не застрахованы при использовании сторонних решений. Хотя с этой точки зрения более эффективна настройка VPN-туннеля с шифрованием.

3proxy может выступать в роли высоко-анонимного прокси-сервера. Признаком использования подобного может быть лишь принадлежность выходного IP-адреса сервера к пулу адресов закреплённых за хостинговой компанией при просмотре WHOIS-данных и PTR-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.

  • Facebook
  • Twitter
  • LinkedIn

Комментарии

Настройка socks прокси написано не раскрыта, а с грядущим закрытием телеграмма крайне полезная информация была бы. Не могли бы дополнить статью, что нужно сделать. Очень нужно. Всем

Danil Walk, в руководстве есть не меньше чем 3 ссылки на разные документации по данному прокси-серверу но расскажу как и SOCKS поднять. Документация в целом достаточно полная, по непонятным вопросом всегда можно вежливо спросить ведущего разработчика по email, или на том же Тостере как люди так и разработчик активно отвечают. Он кстати просматривал данную статью. Дал несколько советов по конфигам, совет по IPv6. Заметил что в шаге 5 не самый удачный пример скрипта-инициализации, но рабочий.

Должен предупредить: на данный момент обходить блокировки РКН с серверов расположенных на территории РФ — не лучшая идея. Особенности блокировок на стороне дата-центров я намеренно обсуждать здесь не хочу. Но сам лично наблюдал блокировки/заглушки web-страниц с серверов расположенных в МСК, СПБ. При подробном разборе ситуации, просмотре логов, трассировок и т.д. выяснялось что зачастую причиной были блокировки на стороне крупных транзитных операторов связи таких как ТрансТелеКом. На блокировки на стороне ТТК натыкаются порой и жители стран СНГ, некоторые хоть и имеют свои национальные аналоги РКН, но там блокировки именно российские проскакивают.

SOCKS-прокси

SOCKS-прокси имеют несколько версий протокола (SOCKSv4/SOCKSv4.5/SOCKSv5) и ряд особенностей.
Подробнее описано тут — https://3proxy.ru/howtor.asp

Читать еще:  Планшеты теряют свою популярность

Например SOCKSv4 не поддерживает IPv6 на уровне протокола, в SOCKSv5 есть поддержка IPv6 с помощью отдельного вида запроса, который должен быть реализован в клиентском приложении или соксификаторе. Авторизации по паролю поддерживаются в SOCKS так же как и через HTTP-прокси. SOCKSv5 имеет поддержку UDP.

В шаге-4 в конфиге /etc/3proxy/3proxy.cfg
вместо последней строчки, а можно одновременную работы с HTTP-прокси настроить — тогда просто добавить в конец строку:

Параметр (-p1080) это номер порта. Можно другой указать, но этот стандартный.

В шаге-6 при использовании Uncomplicated Firewall (UFW):

ВНИМАНИЕ!

Теперь фаерволл Кали сконфигурирован теперь так, что ВСЯКИЙ может попасть КУДА УГОДНО. Подобная конфигурация – лёгкий способ настроить Кали для начала тестирования на проникновения при сетевой настройке виртуальных операционных систем. Открытые настройки позволяют пинговать Кали из гостевой ОС (в качестве которых у вас на хозяйской Кали могут присутствовать гостевые системы семейства Windows). Вариант, когда виртуальная машина настраивается таким образом, чтобы и гостевая и хост-система взаимопинговались, рассмотрен в статье Сетевые настройки VirtualBox в Кали Линукс.

Защита системы: SSH + Google Authenticator

Кроме указанного способа вы также можете использовать двухфакторную аутентификацию для SSH, например Google Authenticator.

Далее запустите, чтобы установить.

На вашем телефоне должно быть установлено приложение Google Authenticator. Отредактируйте файл /etc/pam.d/sshd , добавив следующую строку:

Последнее, что необходимо сделать – сообщить SSH об установленном аутентификаторе, добавив следующую строку в /etc/ssh/sshd_config :

Теперь перезапустите SSH.

Теперь, когда вы будете входить в систему, используя SSH, вас попросят ввести код подтверждения. Ваш SSH стал более защищённым и надёжным.

Разрешение и блокировка указанных соединений Iptables

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

Воспользуемся командой –А. Она позволит добавить новое правило к уже имеющейся цепочке. Межсетевой экран начинает проверку с самого верха, проходя по каждому из правил до тех пор, пока не обнаружит совпадения или не закончит список.

В случае, когда необходимо разместить правила в определенное место (перед каким-то определенным), следует воспользоваться командой:

iptables -I [цепочка] [номер позиции по списку для нового правила]

Например, вам нужно удаленно подключиться к своему компьютеру. Скорее всего, вы будете использовать SSH для получения доступа, но при базовой настройке брандмауэра SSH-соединения запрещены. Другими словами, вам нужно разрешить безопасное подключение SSH к своему компьютеру. Для этого вы можете использовать команду ufw следующим образом:

Вы должны увидеть, что правило было добавлено.

Также можно разрешить доступ к порту с определенных компьютеров или сетей. Следующий пример разрешает на этом компьютере доступ по SSH с адреса 192.168.0.2 на любой IP адрес:

Замените 192.168.0.2 на 192.168.0.0/24 чтобы разрешить доступ по SSH для всей подсети.

Теперь вы можете закрепить оболочку на настольном компьютере. Конечно, чтобы сделать SSH-соединения более безопасными, всегда используйте авторизацию по ключу.

На этом все. Теперь Ubuntu намного безопаснее. Конечно, это не все. Существует целый ряд других шагов, которые вы можете предпринять, чтобы улучшить защиту операционной системы (использование более безопасного веб-браузера, шифрование данных с GnuPG, ограничение доступа к команде su, использование DNS-over-TLS и многое другое). Тем кто серьезно озабочен безопасностью Linux рекомендую провести аудит безопасности своей системы, подробно об этом в статье «Лучшие инструменты аудита безопасности Linux » .

Блокировка сканирования порта

Хакеры так и ждут возможности просканировать открытые порты на вашем сервере и взломать систему безопасности. Чтобы не допустить этого безобразия:

где block-scan — это название новой цепочки.

Надеюсь, что этот пост был максимально полезным для вас!

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Настройка iptables

Разрешим же необходимые порты:

# iptables -A INPUT -p udp -m udp —dport 137 -j ACCEPT
# iptables -A INPUT -p udp -m udp —dport 138 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 139 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 445 -j ACCEPT

Затем перезапустим службу Samba:

# service iptables restart

В некоторых случаях есть хосты, которые не должны иметь доступа к серверу Samba. Вы можете ограничить диапазон IP-адресов, которые могут успешно подключаться к серверу Samba. Вот пример команд, вместо приведенных выше:

Читать еще:  Как сменить пароль на мобильной почте майл. Как поменять пароль на почте майл ру

# iptables -A INPUT -p udp -m udp -s 192.168.0.0/24 —dport 137 -j ACCEPT
# iptables -A INPUT -p udp -m udp -s 192.168.0.0/24 —dport 138 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp -s 192.168.0.0/24 —dport 139 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp -s 192.168.0.0/24 —dport 445 -j ACCEPT

Этот пример позволит только хостам с IP-адресами между 192.168.0.1 и 192.168.0.254 связаться с сервером Samba.

Если требуется ограничить доступ только с одного хоста, используйте эти команды:

# iptables -A INPUT -p udp -m udp -s 192.168.0.1/32 —dport 137 -j ACCEPT
# iptables -A INPUT -p udp -m udp -s 192.168.0.1/32 —dport 138 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp -s 192.168.0.1/32 —dport 139 -j ACCEPT
# iptables -A INPUT -m state —state NEW -m tcp -p tcp -s 192.168.0.1/32 —dport 445 -j ACCEPT

Эта конфигурация позволит только хосту с IP-адресом 192.168.0.1 связаться с сервером Samba.

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

Всем привет, давайте рассмотрим ситуацию, что вы поставили нужную вам службу например Apache пытаетесь зайти по ip адресу в браузере а он не открывается, дело в том, что в CentOS по умолчанию все порты закрыты на iptable. Давайте этому научимся. НАм нужно открыть порты 443 и 80.

iptables -I INPUT -p tcp —dport 80 -m state —state NEW -j ACCEPT

iptables -I INPUT -p tcp —dport 443 -m state —state NEW -j ACCEPT

сохраняем это все дело

service iptables save

и перезапускаем iptable

/etc/init.d/iptables restart

Популярные Похожие записи:

  • ManageEngine ServiceDesk выполнил переадресацию слишком много раз
  • Ошибка Unable to Start or Connect to Virtual Disk Service в управлении дисками
  • Не открываются свойства коллекции RDS фермы
  • Как создать RAID массив через MegaCli
  • Защита Mikrotik от подбора паролей, за минуту
  • Перезапуск зависшей виртуальной машины в ESXi 6.5

9 Responses to Как открыть порт в CentOS

Иван, спасибо вам за сайт. Нашла тут хорошую инструкцию по установке Centos, но вот беда — доступа в инет с него не было. Пролистала ваши статьи и… «В CentOS по умолчанию все порты закрыты на iptables…». Приплыли. Открыла порты и всё в ажуре! Спасибо.

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

Оказалось, кривизна моих рук оставляет ждать лучшего. Эти команды вносят указанные правила в конфиг iptables, но указанные порты остаются закрытым по результатам проверки netstat -tlnd.
Открыты 22, 8000 и всё.

Бьюсь второй день, не помогает правка самого конфига (/etc/sysconfig/iptables) c последующим сохранением (service iptables save). После перезапуска службы /etc/init.d/iptables конфиг прежний. Подскажите, куда смотреть?

Добрый день а какая у вас версия Centos? Если 7 то там по умолчанию используется FirewallD а не iptable, если хотите его вернуть нужно выполнить
systemctl stop firewalld
systemctl disable firewalld

Устанавливаем его
yum install iptables-services
systemctl start iptables
systemctl enable iptables

можете еще добавить графический вариант
yum install system-config-firewall-tui
перезагрузка

а если настраивать FirewallD то там вот такой синтаксис firewall-cmd —permanent —add-port=№порта/протокол

Добрый день, отличный у вас сайт, такого крупного блога, который ведет один человек я не встречал. Спасибо.

Иван, у меня версия Centos 6.7. Может в этом проблема?

Ирина, добрый день попробуйте поставить утилиту yum install system-config-firewall-tui и открыть из графического режима. В 6 версии описанный в статье метод на моей практике работал всегда. А вы все делаете из под рутовой учетки?

Иван, сайт отличный, порты открылись, интернет потёк

Добрый день! нужна помощь, есть vps сервер, centos 7.3 к нему нужен доступ через браузер, к примеру 81.213.233.21:20025 или 81.213.233.21:10223 , открытый 22 и 10223 порт, это прокси сервер, пытаюсь открыть порт командой sudo firewall-cmd —zone=public —permanent —add-port=20025/tcp, sudo firewall-cmd —zone=public —permanent —add-port=20025/udp, пишет что он есть в зоне public, но доступа к нему нет, что уже только не пробовал, может нужно как-то пробросить порты? но как? уже не знаю что делать

Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector