[Linux] Подробное объяснение iptables брандмауэра
[Linux] Подробное объяснение iptables брандмауэра

1. Обзор защитной стены

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

  1. Блокировать портзаблокировать IP
  2. Реализация функции NAT
  3. Общий доступ в Интернет
  4. Сопоставление портов (переадресация портов), сопоставление ip

2. Брандмауэр

2.1 Существительное

  1. Таблица: Контейнер, используемый для хранения цепей,Самая большая концепция брандмауэра.
  2. Цепочка: контейнер, используемый для хранения правил.
  3. политика: разрешить или запретить правила,Будущее написание произведений брандмауэр-полоска по различным правилам брандмауэра.

2.2 Правила использования

1. Брандмауэр Слои фильтрации Да, собственно согласно правилам конфигурации порядок сверху вниз , фильтруется спереди назад. 2. если Матч успешен правила, то есть дать понять, что это отклонять (DROP) Все еще получаю (ACCEPT) , Пакет данных больше не будет соответствовать новым правилам вниз. 。 3. В правилах if нет четкого указания, что да блокирует или пропускает, то есть да не имеет соответствующих правил и соответствует по нисходящей до тех пор, пока не прибудет. Соответствовать правилам по умолчанию Получите чистый блок или пас. 4. брандмауэр Правила по умолчанию да Оно будет сопоставлено только в том случае, если соблюдены все правила.

Тогда возникает вопрос,еслидаотклонять правила,Куда нам его положить?

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

2.3 Таблицы и цепочки

2.3.1 Введение

iptables разделен на 4 таблицы и пять цепочек. 4 таблицы: необработанная таблица, таблица преобразования, таблица фильтров, таблица nat. Пять цепочек: ВХОД, ВЫХОД, ВПЕРЕД. 、PREROUTING、POSTROUTING В таблице все да строчными буквами, а в цепочке все да прописными буквами.

2.3.2Описание каждой таблицы

Здесь мы в основном представляем таблицу фильтров и таблицу nat, остальные используются редко.

1) таблица фильтров

Реализуйте функцию брандмауэра: заблокируйте или разрешите IP-адрес порта.

таблица фильтров

Акцент: в основном это связано с самим Хозяином и на самом деле отвечает за функцию Хозяин (фильтрация пакетов данных, входящих и исходящих из Хозяин) таблицы. фильтры указывают таблицу, используемую iptables по умолчанию. таблица Настроить три цепочки (цепочки) Рабочий сценарий предприятия: межсетевой экран хоста

INPUT

Отвечает за фильтрацию пакетов со всех адресов цели и собственных адресов. С точки зрения непрофессионала: Просто фильтруйте пакеты данных, поступающие в Хозяин. ( Могут ли пакеты данных попадать на сервер?)

OUTPUT

проходя мимо : Отвечает за пересылку пакетов данных, проходящих через хост. Играть роль пересылки и НАТ Отношения очень важны, о чем будет подробно рассказано позже. режим LVS NAT, net.ipv4.ip_forward=0

FORWARD

Обрабатывать пакеты для всех адресов источника и собственного адреса С точки зрения непрофессионала: просто обрабатывает пакеты данных, отправленные из Хозяина.

2) таблица НАТ

Реализуйте функцию nat:

  • Обеспечьте общий доступ в Интернет (сервер внутренней сети обращается к внешней сети)
  • Сопоставление портов и сопоставление IP-адресов

таблица НАТ

Отвечает за трансляцию сетевых адресов, то есть источника и места назначения. ИП адрес и порт конверсия. Приложение: оно не имеет ничего общего с самим хостом. Обычно оно используется для совместного использования локальной сети или специальных служб преобразования портов. Сценарий работы: 1. Используется для корпоративной маршрутизации ( зебра ) или шлюз ( iptables ), поделиться Интернетом ( ПОСТРАУТИНГ ) 2. Делайте внутренние и внешние ИП Сопоставление адресов один к одному ( ДМЗ ), сопоставление аппаратного брандмауэра ИП на внутренний сервер, FTP Служить ( ПРЕДВАРИТЕЛЬНАЯ ПРОГРАММА ) 3.ВЕБ , сопоставление одного порта, прямое сопоставление 80 порт ( ПРЕДВАРИТЕЛЬНАЯ ПРОГРАММА ) Эта таблица определяет 3 цепь, ест Функция эквивалентна Интернету. ACL контроль. и сетевые коммутаторы ACL похожий

OUTPUT

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

PROROUTING

Когда пакет данных достигает межсетевого экрана, правила выполняются до принятия решения о маршрутизации. Используйте да, чтобы изменить адрес назначения пакета данных, Порт назначения и т. д. Просто при получении письма перепишите адрес получателя по правилам. Например: поместите общедоступную сеть IP : xxx.xxx.xxx.xxx подключен к локальной сети xx.xx.xx.xx на сервере. еслида web Об услугах можно сообщить 80 Преобразование в сервер локальной сети 9000 в порту 10.0.0.61 8080( Порт назначения ) ----nat---à 10.0.0.7 22

POSTROUTING

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

блок-схема:

2.4 Конфигурация среды

нам нужно иметьrootРазрешения(В этой статье проверяются вседасуществоватьrootв пользовательской среде)

//Скачиваем iptables [root@VM-8-13-centos ~]# yum install -y iptables-services //Записываем файл конфигурации навсегда в файл cat >>/etc/rc.local<<EOF modprobe ip_tables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state EOF //Проверяем, есть ли файл да уже в iptables [root@VM-8-13-centos ~]# lsmod |egrep 'filter|nat|ipt'

//Отключаем брандмауэр [root@VM-8-13-centos ~]# systemctl отключен firewalld [root@VM-8-13-centos ~]# systemctl отключить firewalld //Запускаем службу iptables [root@VM-8-13-centos ~]# systemctl start iptables.service [root@VM-8-13-centos ~]# systemctl включить iptables.service //Просмотр статуса службы iptables [root@VM-8-13-centos ~]# статус systemctl iptables.service

//Просмотр правил в фильтре [root@VM-8-13-centos ~]# iptables -nL

2.5Командные параметры iptables

параметр

значение

Посмотреть таблицу

-L

Показать все правила в таблице

-n

Не ставьте порт или ip Обратное разрешение имени (Посмотреть время таблицы быстрее)

Укажите таблицу

-t

Укажите таблица (по умолчанию, если не указано) filter поверхность)

Укажите ссылку (добавление/вставка/удаление заголовка)

-A

добавить Добавить, чтобы добавить позволять правила класса

-I

insert Добавьте правило в начало цепочки 1 полоска отклонять Правила класса располагаются вверху всех правил.

-D

удалить удалить

-N

Добавить пользовательскую цепочку

-X

Удалить пользовательскую цепочку

-P

Исправлять Правила по умолчанию

параметр

значение

-p

протокол протокол TCP/UDP/ICMP/все

--doprt

Порт назначения dest destination Укажите порт плюс соглашение -p tcp (Причина, по которой да--да здесь, заключается в том, чтобы открыться с помощью -dпараметр районной точки)

--sport

Исходный порт источник источник

-s

источник источник IP

-d

место назначения Цель IP

-m

Укажите модуль многопортовый

-i

вход При вводе с какой сетевой карты заходит?

-o

вывод С какой сетевой карты поступает вывод?

параметр

значение

-j

действие после завершения полоски : ОТКАЗАТЬ/ПРИНЯТЬ/ОТКЛОНИТЬ

DROP REJECT отклонять DROP Выбросьте данные Никакая информация не будет возвращена пользователю REJECT отклонять Вернуться к отклонить информацию (Разница между ними в том, что один что-то выбрасывает, не сказав вам об этом, а другой берет что-то и говорит, что это ему не нравится.)

параметр

значение

-F

сброс очищает все правила и не обрабатывает правила по умолчанию

-x

Удалить пользователя Пользовательская цепочка

-Z

Очистка счетчика нулевой цепочки (счетчик пакетов и счетчик байтов пакетов)

Использование следующей комбинации:

iptables Команды и параметры

Укажите таблицу

Укажите цепочку ( Вставлять / Добавить / удалить )

ip

Особые требования ( Порт , ИП, протокол )

Порт

действие

iptables

-t nat

-A INPUT

-s

-p tcp/udp/icmp

--dport Порт назначения

-j DROP

-I

-d

--sport источник Порт

-j REJECT

-D

-j ACCEPT

Я считаю, что уже ошеломляюще видеть так много приезжающих,отлично,Давайте рассмотрим следующие случаи

2.6 Настройка правил таблицы фильтров

2.6.1 Резервное копирование и восстановление

Резервное копирование: iptables-save >/etc/sysconfig/iptables Мы можем использовать cat для просмотра этого каталога. Это правило, которое мы изначально сохранили. Мы записываем текущий контент в файл конфигурации и сохраняем его.

Восстановление: iptables-restore </etc/sysconfig/iptables Давайте сначала воспользуемся им iptable -F очищает правила, а затем использует восстановление.

2.6.2 Случай 1: Запретить доступ к порту 22

Давайте сначала iptables -F очищает правила, а затем добавляет правила: [root@VM-8-13-centos ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP В настоящее время вы можете обнаружить, что наш облачный сервер вышел напрямую.

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

2.6.3Случай2:заблокировать IP заблокировать айпи

Старое правило — сначала очистить правила, а затем добавить правила:

[root@VM-8-13-centos ~]# iptables -I INPUT -s 106.52.90.67 -j DROP В это время мы скопировали окно и пропинговали + IP-адрес нашего собственного облачного сервера. В это время мы обнаружили, что да не может получать пакеты данных, которые прибывают сами.

Потому что мы забанили собственный IP. Мы входим iptables -nL Ознакомьтесь с правилами в этой таблице часов. В этой таблице часов много правил. Когда нам нужно посчитать время удаления, нам также нужно посчитать полоску удаления, тогда мы можем ввести: [root@VM-8-13-centos ~]# iptables -nL --line-number

Вы можете посмотреть, куда приезжать, отображаемые сейчас правила будут пронумерованы. Наши правила удаления первой полоски: [root@VM-8-13-centos ~]# iptables -D INPUT 1 На этом этапе, после того как мы удалим правила запрета, мы сможем снова выполнить пинг.

2.6.4Случай3:Разрешается подключаться только указанному Параграфу.

выбрать Aliyun⽩listФункция:Defaultдаотклонять открыть Порт Параграф Метод 1: Используйте ! Исключать iptables -I INPUT ! -s 106.52.90.0/24 -j DROP В приведенном выше случае мы знаем, как заблокировать один IP-адрес. Фактически, нам нужно только добавить восклицательный знак, чтобы разрешить подключение только к этому IP-адресу. приезжать Многие люди здесь в замешательстве. Что означает 0/24да? В сети реализован CIDR (бесклассовый Inter-Domain Маршрутизация) используется для указания IP-адреса. и Соответствующая длина префикса сети. Эта длина говорит нам, сколько цифр в IP-адресе, а остальные цифры в да Хозяин-адресе. существовать106.52.90.0/24середина,106.52.90.0/24дасеть Адрес,/24Указывает маску подсети,То есть первые 24 дасеть адреса да,назад8Кусочекда Хозяинадрес。это означает этосетьсерединаиметь 2^8 - 2 = 254 Пригодный для использования адрес хоста, поскольку ни сетевой адрес, ни широковещательный адрес не могут использоваться для хоста. Следовательно, 106.52.90.0/24 представляет собой содержащий 106.52.90.0 приезжать 106.52.90.255 Все IP-адреса внутри сети. Такое обозначение очень распространено при указании сетевых диапазонов. Способ второй:Исправлятьцепь Правила по умолчанию Изменено на отклонять добавить разрешение [root@VM-8-13-centos ~]# iptables -A INPUT -s 106.52.90.0/24 -j ACCEPT [root@VM-8-13-centos ~]# iptables -P INPUT DROP //Изменить обратно [root@VM-8-13-centos ~]# iptables -P INPUT ACCEPT

2.6.5 Случай 4: указание нескольких портов

параметр:-m multiport Если вы добавите этот параметр в параметр, это означает, что вам необходимо настроить несколько портов. [root@VM-8-13-centos ~]# iptables -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT еслида Не нужно добавлять несколько последовательных портов, просто используйте двоеточие:, чтобы соединить их. [root@VM-8-13-centos ~]# iptables -I INPUT -p tcp --dport 1024:65535 -j DROP Это забанит все порты 1024приезжать65535.

2.6.6 Случай 5: Сопоставление типа ICMP

  • ICMP (Internet Control Message Protocol) Отчет по контролю Интернета ⽂протокол,ICMP используется для проверки связи.
  • Все ядро ​​сайта

Через правила брандмауэра контрольда Могу ли я пропинговать? //icmp-type8 Восьмая функция даicmpпротокола, также известная как функция дапинга. [root@VM-8-13-centos ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP по параметру ядра контроль Запрещено пинговаться [root@VM-8-13-centos ~]# cat /etc/sysctl.conf #/proc/sys/net/ipv4/icmp_echo_ignore_all net.ipv4.icmp_echo_ignore_all = 1 [root@VM-8-13-centos ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 [root@VM-8-13-centos ~]# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all [root@VM-8-13-centos ~]# #net.ipv4.icmp_echo_ignore_all=1 Пишите⼊приезжать /etc/sysctl.conf[root@oldboy-m01 ~]# #sysctl -p [root@VM-8-13-centos ~]# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

2.6.7Случай6:Соответствие статусу сети (состояние соединения TCP/IP)
  • -m state --state
  • НОВИНКА: Уже или начнется новое соединение.
  • УСТАНОВЛЕНО: Соединение установлено.
  • СВЯЗАННО: Запускается новое соединение
  • НЕДЕЙСТВИТЕЛЬНО: незаконно и неузнаваемо

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Указав соответствующий статус соединения,Пакеты можно фильтровать и обрабатывать в зависимости от состояния соединения. Например,ты можешь установитьбрандмауэр Правило разрешает прохождение только установленных соединений(ESTABLISHED),Тем самым повышая безопасность сети.

2.6.8 Случай 7: Ограничение скорости параллелизма

-m limit Модуль ограничения -m limit --limit n/{second/minute/hour}: Объяснение: Скорость запроса «n» в течение указанного времени — это скорость, за которой следует время: секунды. точка час Например: -м limit --limit 10/minute #Только 10 пакетов за такт точки Генерируется каждые 6 секунд --limit-burst [n] Объяснение: Число запросов, которые разрешено пройти за один и тот же период. «n» — это число. Если не указано, значение по умолчанию — 5. тест: #ping icmp протокол Тест iptables -F iptables -I INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT iptables -A INPUT -p tcp --dport -j ACCEPT iptables -P INPUT DROP

2.7 nat

2.7.1 Общий доступ в Интернет

принцип:

  1. Когда мой IP-адрес в локальной сети хочет отправить сообщение на IP-адрес Baidu,Прежде чем я смогу его найти, мне нужно сначала преобразовать его в общедоступный IP-адрес.
  2. Источникip в пакете сообщения if по-прежнему является IP-адресом моей локальной сети после входа в общедоступную сеть.,Поэтому, когда Baidu хочет отправить мне посылку,Вы не сможете найти приезжать в общедоступной сети. поэтому,Мы прошли процесс трансляции адреса SNAT-источника от брандмауэрчаса.,Мы заменим исходный IP на публичный IP.,Таким образом, вы сможете найти жилье, когда вернетесь.

действовать:

//параметр установлен на 1, чтобы включить функцию переадресации IP [root@VM-8-13-centos ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf //Обновить [root@VM-8-13-centos ~]# sudo sysctl -p //использовать iptables Установите правила пересылки для пересылки пакетов данных внутри локальной сети наружу. [root@VM-8-13-centos ~]# sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Здесь предполагается eth0 да подключается к сетевому интерфейсу внешней сети, вам необходимо заменить его именем сетевого интерфейса, который вы фактически используете. Если вы не уверены в имени интерфейса, вы можете использовать ifconfig команда для просмотра. //Устанавливаем правила брандмауэра по мере необходимости, чтобы разрешить илиотклонить определенный сетевой трафик. Например, чтобы разрешить трафик внутри локальной сети: sudo iptables -A INPUT -i eth1 -j ACCEPT

2.7.2 Сопоставление портов

Иногда пользователи общедоступной сети хотят использовать локальную сеть через определенный порт в локальной сети.,Затем мы можем использовать сопоставление портов. Сопоставьте порт IP-адреса локальной сети, который нам нужен, с определенным портом на управляющей машине.,Для достижения цели серфинга в Интернете.

//Устанавливаем IP-адрес локальной сети на порт 22 из 10.0.8.13 картографированиеприезжать IP-адрес назначения — это IP-адрес общедоступной сети. Номер порта 9000 от 106.52.90.67.

//Причина, почему да-да здесь с точки зрения пакетов данных,Пакет да исходит от другого Хозяина,Цель ipда Мы хотим найти публичный IP-адрес приезжающего.

[root@VM-8-13-centos ~]# iptables -t nat -A PREROUTING -d 106.52.90.67 -p tcp --dport 9000 -j

DNAT --to-destination 10.0.8.13:22

Примечание. Прежде чем мы сделали это в разделе «Общий», необходимо отметить еще кое-что. доступ в Интернет говорит о технологии прибытия SNAT, иначе вы не сможете найти путь прибытия при обратной передаче данных.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose