Рубрики
Uncategorized

Iptables: введение

Безопасность сервера является одним из крошечных элементов в разработке приложений, которые нельзя игнорировать. Это может … помечено с devops.

Безопасность сервера является одним из крошечных элементов в разработке приложений, которые нельзя игнорировать. Это может сделать или сделать тебя. Как таковой, давая адекватное внимание к нему нельзя переоценить.

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

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

Что такое iPtables?

Согласно wikipedia, iptables — это программа прикладного пространства для пользовательского пространства, которая позволяет системным администратором настроить таблицы, предоставляемые брандмауэром ядра Linux (реализованные в виде различных модулей NetFilter) и цепями и правилами его магазинов.

IPTables существует во многих ароматах Linux. Среди всех брандмауэров с открытым исходным кодом доступны сегодня, это стандартный брандмауэр, в комплекте с большинством распределения Linux, такими как Ubuntu, CentOS и Fedora.

Стандартные iptables обычно разбиты на 3 единицы, в противном случае известные как цепочки. Эти цепи входные, прямые и выходные данные.

Цепи ввода — эта цепочка контролирует поведение входящего трафика. Если пользователь доступа к веб-сайту на сервере, iptables постарается сопоставить входящий запрос к правилу, которое было определено в входной цепочке. Это правило, как правило, будет проверять, какой порт назначения порта 80 говорит о веб-трафике.

0 0 Принять TCP — любое любое любое место в любом месте TCP DPT: http

Выход — эта цепь управляет каждой исходящей связью. Как правило, весь трафик, генерируемый хостом сервера E.G A пинг запрос.

ВПЕРЕД — Эта цепочка контролирует все сетевые пакеты, направляемые через сервер.

Прежде чем идти дальше, важно выделить 3P IPTables: Пакет, порт и протокол. Пакет — блок данных, передаваемых через сеть. Подумайте о пакете, как почта, доставленная Mailman. Порт — порт является логическим местом соединения. Имеет числовое обозначение; 80, 22, 443 и др. Протокол — набор правил, регулирующих обмен или передачу данных между устройствами. E.G: TCP, UDP.

Основы

Чтобы настроить правило, мы выполняем следующее:

sudo iptables -a. Ввод -i lo. -j ПРИНИМАТЬ

Команда выше чтения «Принимайте трафик на интерфейсе петли на входной цепи. Интерфейс Loopback Вот является интерфейс виртуального сетевого взаимодействия, который компьютер использует в общении с самим собой, поэтому термин, обратная связь.

Чтобы проверить интерфейс петля на машине Linux, запустите

ifconfig lo. .

Чтобы настроить правила iptables для HTTP-трафика, мы запустим

sudo iptables -a ввод -P tcp —dport 80 -J принять

sudo iptables -a ввод 3 -P TCP —dport 80 -J принять

«Принять все трафик HTTP (TCP), который идет в порт назначения 80, где -P это протокол, -j прыгает и - Диспорт это порт назначения и - это приложение.

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

До сих пор мы видели, как принять трафик к конкретному порту. Хотя это здорово, также важно, чтобы мы устанавливаем правила отбросить нежелательный трафик.

sudo iptables -a ввод -P tcp —dport 443 -j drop

Вышеупомянутое правило говорит о каждая трафика HTTPS, ударяя наши серверы. Если вы внимательно обратите внимание, правила принятия и падения трафика, близко напоминающие себя, единственное исключение вот то, что при принятии трафика используются принять, отброс трафика использует падение.

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

sudo iptables -a ввод -P tcp —dport 3306 -j ОТКЛОНЯТЬ

Когда клиент пытается получить доступ к этому порту, они получит сообщение о том, что подключение к порту 3306 было отказано. Это конкретное правило предотвращает подключение внешнего клиента к базе данных MySQL.

Просмотр и удаление правил для просмотра действующих правил iptables, мы будем работать sudo iptables -l -n или sudo iptables -l. -В где означает многолетнее.

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination

При настройке правил может быть все весело и отлично, приходит время, когда вам нужно удалить существующее правило; Либо, потому что вам больше не нужно указанное правило, или он был настроен неправильно. Есть два способа удаления правила:

Метод 1.

sudo iptables -d вход 3

Удалить 3-е правило от входной цепочки. Нумерация здесь не 0 основано, но он начинается с 1.

Метод 2.

sudo iptables -d input -p tcp —dport 3306 -j ПРИНИМАТЬ

Удалить то же самое правило по его параметрам.

Хотя два метода достигают общей цели — удаление правила — важно обратить внимание на разницу. Способ 1 удаляет практически любое правило, которое на третьей цепи. В случае, когда индекс не существует, возвращается сообщение об ошибке. Метод 2 гораздо более специфичен, хотя и влагосвяз. Это ориентируется только на конкретное правило, и риск удаления другого правила по ошибке минимален.

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

Anisible — один из немногих инструментов, которые упрощает управление конфигурацией, оркесторирование и развертывание. Это позволяет предсказуемым образом строить и настроить серверы. После того, как вы узнаете на основе брандмауэров через iptables, мы попытаемся автоматизировать весь процесс.

Давайте создадим Anisible PlayBook, чтобы автоматизировать нашу конфигурацию iptables. В этом PlayBook мы идем принять соединения с следующим портом 22 (SSH), 80 (HTTP), 443 (HTTPS) и 3306 (MySQL), и мы бросаем каждый другой запрос, который не соответствует этому правилу.

Если вы новичок в управлении Anbible и Configuration, здесь есть отличный грунт — http://docs.ansible.com/

***
- name: Install iptables Persistent
  apt: name=netfilter-persistent state=present update_cache=true

- name: Set Loop Back Rule
  iptables: chain=INPUT action=append in_interface=lo jump=ACCEPT comment='Accept all loop back traffic'

- name: Set Established Connection Rule
  iptables: chain=INPUT ctstate='ESTABLISHED,RELATED' jump=ACCEPT comment='Let all established connection stay'

- name: Set SSH Port 22 SSH Rule
  iptables: chain=INPUT jump=ACCEPT protocol=tcp destination_port=22 comment='Accept all SSH traffic'

- name: Set HTTP Port 80 HTTP Rule
  iptables: chain=INPUT jump=ACCEPT protocol=tcp destination_port=80 comment='Accept all HTTP traffic'

- name: Set HTTP Port 443 SSL Rule
  iptables: chain=INPUT jump=ACCEPT protocol=tcp destination_port=443 comment='Accept all SSL traffic'

- name: Set HTTP Port 3306 SSL Rule
  iptables: chain=INPUT jump=ACCEPT protocol=tcp destination_port=3306 comment='Accept all MySQL traffic'

- name: Drop Any Traffic Without Rule
  iptables: chain=INPUT jump=DROP comment='Drop traffic for rules that did not match'

Этот пост был первоначально опубликован на cyberomin.github.io

Оригинал: «https://dev.to/cyberomin/iptables-an-introduction»