до этого момента в курсе мы писали все правила vip-таблиц прямо на консоли, и они
загружались в оперативную память, если у нас есть брандмауэр с большим количеством правил, гораздо проще написать все эти
правила в сценарии, сделать этот сценарий исполняемым, а затем запустить но если нам просто нужно простое правило, которое
отбрасывает трафик с определенного IP-адреса или позволяет определенной службе взаимодействовать
с внешним миром, мы можем просто написать это правило в терминале Linux,
давайте посмотрим несколько живых примеров, если я хочу написать Правило iptables на Linux-терминале Я просто
пишу правило как root iptables минус ввод минус p icmp минус j drop следующий Правило отбрасывает
весь входящий трафик icmp на эту Linux-машину важно отметить, что правила iptables, записанные
на терминале, не сохраняются после перезапуска системы, если вы перезагрузите систему, вы потеряете
все правила, и вы скажете хорошо, хорошо, но мне нужно писать все правила при каждом запуске компьютера,
конечно, вы этого не сделаете, если хотите, чтобы ваши правила iptables чтобы они сохранялись после перезапуска системы,
вы записываете их в сценарий оболочки, сделайте этот сценарий исполняемым и настройте сценарий для
автоматического запуска во время загрузки, давайте приступим к работе и посмотрим, как мы создаем сценарий с правилами iptable,
а затем запустим сценарий, помните, что скрипт - это просто текстовый файл, содержащий команды оболочки,
я собираюсь создать скрипт, используя мой предпочтительный текстовый редактор, который в вашем случае является vi,
если вы не использовали vi, прежде чем попробовать простой редактор, такой как nano pico или даже блокнот, vi
- очень хороший и эффективный редактор, но это не самый простой для использования в Linux.
Имя скрипта будет firewall1.sh первая строка скрипта будет выглядеть так:
знак решетки восклицательный знак, а путь к bash называется shebang
и он сообщает оболочке, с какой программой интерпретировать скрипт при его выполнении в этом примере
скрипт должен интерпретироваться и запускаться оболочкой bash, если вы напишете другой скрипт
, скажем, скрипт python, который вы пишете здесь, путь к интерпретатору python eter наиболее распространенным вариантом
является использование bash, и внутри файла я просто напишу некоторые правила iptables, например, я напишу
правило, которое отбрасывает весь входящий трафик ssh, поэтому трафик на порт 22 и другие правила,
которые отбрасывают исходящий трафик на порт 80 и 443, так что трафик http и https и первые таблицы липидов
минус вход минус btcp минус минус порт 22 минус j отбрасывают входящий трафик на порт 22.
и два правила, которые отбрасывают исходящий трафик http и https iptables минус выход x исходящий трафик
минус ptcp минус минус порт 80 минус j drop и другое правило для https iptables минус вывод
минус ptcp минус минус d порт 443 минус j drop ОК, вот вывод, я сохраняю
сценарий, сделайте его исполняемым, а затем запустите его,
и мы видим правила
правило, отбрасывающее входящий трафик ssh, и правила, отбрасывающие исходящий трафик http и https,
важно знать, что если я запускаю сценарий, используя его имя, например данные брандмауэра 1, sh,
поэтому без точки, которая является текущим рабочим каталогом, d косая черта я получаю сообщение об ошибке,
команда не найдена, это происходит потому, что текущий рабочий каталог не принадлежит пути linux,
поэтому оболочка не ищет сценарий внутри текущего каталога,
она ищет команды только в этих каталогах,
вот где оболочка ищет команды, поэтому вам нужно либо добавить текущий рабочий
каталог в путь, либо запустить сценарий, используя косую черту через точку и имя сценария,
на самом деле он говорит, взять сценарий из текущего рабочего каталога, который является этим, и запустить
теперь предположим, что мы хотим изменить что - то в нашем сценарии, например я не хочу, чтобы блокировать исходящий
HTTPS трафик больше логическая вещь, чтобы сделать, это открыть скрипт
заменить эту строку сохранить скрипт и запустить его снова в этом примере я снова выполнил скрипт,
если мы перечислим iptables брандмауэра минус vnl, мы увидим, что есть больше правил, которые мы ожидали
, в скрипте есть только три правила, но больше правил в оперативной памяти на самом деле
каждое правило кажется удвоенным t Чтобы прояснить этот момент, я снова выполню сценарий,
теперь в оперативной памяти еще больше правил, что-то не так, что могло быть
каждый раз, когда я выполнял сценарий, правила из сценария, поэтому эти переменные были добавлены
к цепочки iptables я визуализирую сценарий три раза, поэтому у меня есть девять правил, и это не то, что мы хотим
в результате, когда я запускаю сценарий брандмауэра, я ожидаю, что загружаются
только эти правила из сценария. как мы это делаем, хорошая практика - добавить в начале скрипта iptables
minus f это запустит все цепочки таблицы фильтров и начнется с нового нового брандмауэра.
Я открываю файл, и в начале я добавляю iptables минус f, это мигает
все цепочки, которые я сохраняя файл и запуская его снова,
мы замечаем, что были загружены только правила из сценария, все остальные правила были сброшены.
Важное замечание: если у вас есть правила также для других цепочек и таблиц, например, правила для
создания сети, вы также должны смыть те блесы и цепочки, давайте посмотрим, что это такое.
Я добавляю правило, которое будет выполнять s net, оно будет транслировать частные IP-адреса из сети
10.0.0.0.8 в общедоступный IP- адрес этой Linux-машины в этом случае x-router iptables
minus t-net является обязательным для указания таблицы минус пост-маршрутизация
минус IP-адреса, которые будут преобразованы, это вся
сеть
минус исходящий интерфейс
минус js net и два источника, и я напишу случайный IP-адрес, я полагаю, это общественность внутрибрюшинно
не фокусируется на сети будет иметь целый раздел на
этом я экономлю сценарий, а затем запустить его и я буду использовать ее много раз,
когда я буду перечислять чистый фильтр, мы видим, существует множество правил,
есть четыре правила, а не одно, как в моем сценарии,
оно добавило правило для публикации цепочки маршрутизации и не фильтрует каждый раз, когда я выполняю сценарий,
эта проблема будет решена путем также мигания сетевой таблицы в начале файла script
здесь в начале i напишите таблицы IP минус t net минус
f я сохраняю сценарий и запускаю его Айн
я могу запустить его столько раз, сколько я хочу там будет один чистый правило правило из
сценария Ip таблиц минус т чистый минус V и л и есть только одно правило, хорошо, что все спасибо