В сообщение переднего Мы видели конфигурацию IPTables для работы в качестве межсетевого экрана. Теперь мы можем увидеть, как создать эти сценарии, чтобы правила выполнялись автоматически при запуске системы, а также как мы можем на мгновение устранить или остановить эти правила.
Прежде чем приступить к написанию сценария и показать вам, как он выглядит, давайте немного поговорим о NAT и концепции того, что мы хотим делать с этим оборудованием.
NAT и контекст примера.
Когда мы говорим о NAT, мы можем спутать это с маршрутизацией, поскольку обе отвечают за соединение двух разных сетей друг с другом. На самом деле разница в том, что маршрутизация применяется для перехода из одной локальной сети в другую, и эта другая сеть может подключаться к маршрутизатору и выходить в Интернет.
В то время как, когда мы говорим о NAT, мы говорим о маршрутизации пакетов из локальной или частной сети в публичную сеть или Интернет. Он делает это, маскируя пакеты, помещая общедоступный IP-адрес, с которым они выходят в Интернет. Другими словами, нам не нужен маршрутизатор, поскольку публичный IP-адрес напрямую принадлежит компьютеру GNU / Linux.
Мы будем работать с этим под лозунгом, что мы используем наш Linux в качестве маршрутизатора / брандмауэра для выхода в Интернет из локальной сети. Но здесь могут возникнуть два сценария.
- Что наш линукс находится между роутером провайдера услуг и локальной сетью.
В этом случае между маршрутизатором и нашим Linux будет сеть, а между Linux и локальной сетью будет другая сеть. Это означает, что нашему маршрутизатору не нужно выполнять NAT как таковой, с простой маршрутизацией трафика, как описано в сообщение переднего Это было бы хорошо.
- Что у нашего Linux есть интерфейс, подключенный к локальной сети, и через другой интерфейс он получает напрямую общедоступный IP-адрес, по которому он перемещается.
Это означает, что наш Linux должен использовать NAT, чтобы пакеты могли достигать Интернета.
В целях этой небольшой лаборатории мы скажем, что наша Linux получает общедоступный IP-адрес напрямую и, таким образом, может тестировать эффекты NAT.
Затем для выполнения NAT мы используем синтаксис
iptables -t nat -A РАЗМЕЩЕНИЕ -O eth1 -j МАСКЕРАД
Где eth1 - это интерфейс, через который мы получаем общедоступный ip, то есть куда мы идем в Интернет.
Создание скрипта iptables
Предположим, что: 172.26.0.0 - это наша локальная сеть, а 81.2.3.4 - это общедоступный IP-адрес, с которым мы выходим в Интернет. (это статический ip). Имею интерфейсы eth0 (Локальная сеть)
eth1 (публичная сеть).
В основном он состоит из создания сценария, который можно вызвать из /etc/init.d/firestop (например). и из этого сценария мы можем запускать, останавливать или проверять состояние нашей конфигурации, как и любой системный демон.
Предположим, мои правила IPTABLES ТАКИЕ:
#! / bin / bash # Брандмауэр моего дома. # Имя файла / etc / firewall_on # Автор Jlcmux Twitter: @Jlcmux # # Базовая политика. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT для совместного использования Интернета с eth0 на eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4 # # Разрешить входящие соединения, инициированные моими iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT # # Авторизованный исходящий трафик iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A ВПЕРЕД -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
объяснение:
Сценарий в основном делает следующее:
- Сначала ограничьте всю навигацию, соединения и трафик. (Основные политики брандмауэра)
- Затем создайте NAT с местом назначения eth1. указывая, что у нас есть статический публичный IP «81.2.3.4»
- Открывает порты, необходимые для приема пакетов инициированных мной соединений.
- Принимает исходящий трафик HTTP, HTTPS и DNS.
Если мы хотим использовать наше оборудование для навигации, мы должны повторить строки и изменить FORWARD на INPUT или OUTPUT в зависимости от ситуации.
Отменить скрипт.
Теперь мы собираемся создать сценарий, который отменяет все вышеперечисленное и оставляет компьютер чистым от всего этого. (Для тестирования или мы просто хотим отключить брандмауэр).
#! / bin / bash # Брандмауэр моего дома. # Имя файла / etc / firewall_off # Автор Jlcmux Twitter: @Jlcmux # # Удаление правил iptables -F # # Применение политик по умолчанию (весь трафик принят) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Автоматизация.
Теперь мы должны создать сценарий внутри /etc/инит.д/ и сервис запускается автоматически, и мы можем управлять им более комфортно.
#! / bin / bash # Брандмауэр моего дома. # Имя файла /etc/init.d/ firewall # Автор Jlcmux Twitter: @Jlcmux case $ 1 в начале) / etc / firewall_on ;; стоп) / etc / firewall_off ;; статус) iptables -L ;; *) echo "Неверный синтаксис. Valid = /etc/init.d/ firewall start | stop | status ;; esac
объяснение:
Этот последний сценарий, который мы добавили /etc/инит.д/ с именем брандмауэр. Итак, если мы хотим управлять брандмауэром, мы можем использовать команду /etc/init.d/ firewall start. Таким же образом мы можем остановить это или увидеть состояние.
Теперь мы собираемся редактировать файл /etc/rc.local и ставим что-то вроде: /etc/init.d/ firewall start для начала с системой.
Также. Это вторая часть. Я надеюсь, что это принесло что-то вам всем. Далее мы видим прокси и IDS.
Если вы используете Debian, в репозитории есть пакет (iptables-persistent), который делает именно это, он сбрасывает текущие правила в /etc/iptables/rules.v4 или v6 в зависимости от того, что вы используете, а затем применяет их к вам. когда вы поднимаете систему.
На практике, чтобы очистить конфигурацию обычного межсетевого экрана iptables (а с моей точки зрения использование NAT было бы другим), в большинстве случаев будет достаточно сброса правил и сброса политик по умолчанию на ACCEPT.
Но теоретически, насколько я знаю, в дополнение к этому вам также необходимо очистить нестандартные строки и сбросить счетчики. Действия следует выполнять с учетом того, что помимо «фильтра» есть и другие таблицы, (для этого необходимо прочитать файл «/ proc / net / ip_tables_names»).
Между прочим, ортодоксальное мнение гласит, что брандмауэр должен быть включен раньше, чем сеть. Я не знаю, как это достигается в других системах Linux, но в типе Debian сценарий может быть адаптирован и помещен в каталог «/etc/network/if-pre-up.d/».
Хорошая защита всех. 😉
Здравствуйте, пост очень хороший. Я прочитал все 2 тома.
Жду следующего 🙂
Вопрос от моего незнания, мы продолжаем с iptables, но для нескольких версий ядра у нас есть nftables, я уже тестирую, вопросы в том, является ли nftables чем-то бета-версией по отношению к iptables? Будет ли iptables использоваться дольше?
Спасибо.
nftables включает в себя все функции iptables, ip6tables, arptables и ebtables, используя новую инфраструктуру как в пространстве ядра, так и в пространстве пользователя, что обеспечивает лучшую производительность и улучшенную функциональность. nftables заменит iptables и все другие упомянутые инструменты, но не на данный момент, по крайней мере, до тех пор, пока nftables как таковой не станет более широко использоваться.
очень хороший пост, я хотел прочитать больше, так как он очень хорошо объяснен .. привет спасибо большой вклад
Здравствуйте! Очень хорошие оба поста.
В качестве вклада вы можете добавить в конец этой части:
«Теперь мы собираемся отредактировать файл /etc/rc.local и поместить что-то вроде: /etc/init.d/firestop start, чтобы он запускался вместе с системой».
Добавьте это в rc.local.
если [-x /etc/init.d/ firewall]; тогда
/etc/init.d/ firewall start
fi
Это означает, что если «брандмауэр» имеет разрешения на выполнение, выполните его, если нет.
Если вы хотите, чтобы "брандмауэр" не запускался, вам просто нужно удалить разрешения.
Например: chmod + x /etc/init.d/ firewall
чтобы он запускался при каждом запуске или ...
chmod -x /etc/init.d/ брандмауэр
чтобы полностью отключить его.
Привет!