One place for hosting & domains

      удаление

      Перечисление и удаление правил брандмауэра Iptables


      Введение

      Iptables — это брандмауэр, который играет важную роль в обеспечении сетевой безопасности большинства систем Linux. Хотя многие руководства по работе с Iptables научат вас создавать правила брандмауэра для обеспечения безопасности вашего сервера, в этом руководстве мы будем уделять особое внимание другому аспекту управления брандмауэром: вывод списка и удаление правил.

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

      • Вывод списка правил
      • Очистка счетчиков пакетов и байтов
      • Удаление правил
      • Сброс цепочек (удаление всех правил в цепочке)
      • Сброс всех цепочек и таблиц, удаление всех цепочек и прием любого трафика

      Примечание: при работе с брандмауэрами необходимо следить за тем, чтобы не заблокировать собственный доступ к серверу, запретив подключение по SSH (по умолчанию в этих целях используется порт 22). При потере доступа из-за настроек брандмауэра вам может потребоваться подключение к серверу через внеполосную консоль для восстановления доступа.

      Предварительные требования

      Это учебное руководство предполагает использование сервера Linux с установленной командой iptables и наличие у пользователя привилегий sudo.

      Если вам нужна помощь с данной начальной настройкой, воспользуйтесь нашим руководством по начальной настройке сервера Ubuntu 20.04. Вы также можете воспользоваться руководствами для Debian и CentOS

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

      Перечисление правил по спецификации

      Чтобы перечислить все действующие правила Iptables, запустите команду iptables с опцией -S:

      Output

      -P INPUT DROP -P FORWARD DROP -P OUTPUT ACCEPT -N ICMP -N TCP -N UDP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

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

      Перечисление списка правил конкретной цепочки

      Если вы хотите ограничить вывод конкретной цепочкой (INPUT, OUTPUT, TCP и т. д.), вы можете указать название цепочки сразу после опции -S. Например, для отображения всех спецификаций правил в цепочке TCP необходимо запустить следующую команду:

      Output

      -N TCP -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

      Теперь давайте рассмотрим альтернативный способ просмотра действующих правил Iptables в форме таблицы правил.

      Перечисление правил в виде таблицы

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

      Чтобы вывести все действующие правила Iptables в виде таблицы, запустите команду iptables с опцией -L:

      Эта команда будет выводить все действующие правила, отсортированные по цепочкам.

      Если вы хотите ограничить вывод конкретной цепочкой (INPUT, OUTPUT, TCP и т. д.), вы можете указать название цепочки сразу после опции -L.

      Давайте рассмотрим пример цепочки INPUT:

      Output

      Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID UDP udp -- anywhere anywhere ctstate NEW TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW ICMP icmp -- anywhere anywhere ctstate NEW REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable REJECT tcp -- anywhere anywhere reject-with tcp-reset REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

      Первая строка вывода указывает имя цепочки (в данном случае INPUT), за которым следует используемая по умолчанию политика (DROP). Следующая строка состоит из заголовков каждого столбца таблицы, после чего идут правила цепочки. Давайте посмотрим, что означает каждый заголовок:

      • target: если пакет отвечает правилу, заголовок target указывает, что с ним нужно сделать. Например, пакет можно принять, отклонить, записать или отправить другой цепочке для сопоставления с другими правилами.
      • prot: протокол, например tcp, udp, icmp или all
      • opt: данный параметр используется редко и отображает опции IP
      • source: исходный IP-адрес или подсеть трафика, либо anywhere (отовсюду)
      • destination: IP-адрес назначения или подсеть трафика, либо anywhere (везде)

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

      Отображение счетчиков пакетов и общего размера

      При выводе списка правил Iptables также можно отобразить количество пакетов и общий размер пакетов (в байтах), которые отвечают каждому конкретному правилу. Это часто может быть полезно, когда вы пытаетесь получить приблизительное представление о том, какие правила используются для различных пакетов. Чтобы сделать это, воспользуйтесь опциями -L и -v в одной команде.

      Например, давайте снова рассмотрим цепочку INPUT с опцией -v:

      • sudo iptables -L INPUT -v

      Output

      Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 DROP all -- any any anywhere anywhere ctstate INVALID 396 63275 UDP udp -- any any anywhere anywhere ctstate NEW 17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW 2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW 396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable 2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

      Обратите внимание, что список сейчас содержит два дополнительных столбца, pkts и bytes.

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

      Сброс счетчиков пакетов и общего размера

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

      Чтобы очистить счетчики для всех цепочек и правил, используйте опцию -Z отдельно:

      Чтобы очистить счетчики для всех правил конкретной цепочки, используйте опцию -Z и укажите название цепочки. Например, для очистки счетчиков цепочки INPUT воспользуйтесь следующей командой:

      Если вы хотите очистить счетчики для конкретного правила, укажите имя цепочки и номер правила. Например, для обнуления счетчиков первого правила в цепочке INPUT запустите следующую команду:

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

      Удаление правил по спецификации

      Одним из способов удаления правил Iptables является удаление правила по спецификации. Для этого вам нужно запустить команду iptables с опцией -D, указав далее спецификацию правила. Если вы хотите удалить правила с помощью этого метода, вы можете использовать команду для вывода списка правил iptables -S в качестве источника полезной информации.

      Например, если вы хотите удалить правило, которое отклоняет недействительные входящие пакеты (-A INPUT -m conntrack --ctstate INVALID -j DROP), запустите следующую команду:

      • sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

      Обратите внимание, что опция -A, используемая для обозначения положения правила в момент его создания, здесь не применяется.

      Удаление правил по цепочке и номеру

      Другой способ удаления правил Iptables состоит в использовании цепочки и номера строки. Чтобы определить номер строки правила, выведите список правил в формате таблицы и добавьте опцию --line-numbers:

      • sudo iptables -L --line-numbers
      [secondary_output Output]
      Chain INPUT (policy DROP)
      num  target     prot opt source               destination
      1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
      2    ACCEPT     all  --  anywhere             anywhere
      3    DROP       all  --  anywhere             anywhere             ctstate INVALID
      4    UDP        udp  --  anywhere             anywhere             ctstate NEW
      5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
      6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
      7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
      8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
      9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable
      10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
      ...
      

      Эта команда добавляет номер строки для каждой строки таблицы правил в столбце с заголовком num.

      Когда вы знаете, какое правило нужно удалить, запомните цепочку и номер строки правила. Затем запустите команду iptables -D, указав далее цепочку и номер правила.

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

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

      Сброс цепочек

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

      Примечание: будьте осторожны, чтобы не заблокировать собственный доступ к серверу через SSH в результате сброса цепочки с используемой по умолчанию политикой drop или deny. В этом случае вам может потребоваться подключение через консоль для восстановления доступа.

      Сброс отдельной цепочки

      Чтобы сбросить конкретную цепочку с последующим удалением всех правил в данной цепи, вы можете использовать опцию -F или ее эквивалент --flush, добавив в команду имя цепочки, которую вы хотите сбросить.

      Например, для удаления всех правил в цепочке INPUT запустите следующую команду:

      Сброс всех цепочек

      Чтобы сбросить все цепочки с последующим удалением всех правил брандмауэра, вы можете использовать опцию -F или ее эквивалент --flush без указания конкретной цепочки:

      Сброс всех правил, удаление всех цепочек и разрешение любого трафика

      Из этого раздела вы узнаете, как выполнить сброс всех правил брандмауэра, таблиц и цепочек, чтобы разрешить прием любого сетевого трафика.

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

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

      • sudo iptables -P INPUT ACCEPT
      • sudo iptables -P FORWARD ACCEPT
      • sudo iptables -P OUTPUT ACCEPT

      Затем выполните сброс таблиц nat и mangle, сбросьте все цепочки (-F) и удалите все цепочки, не используемые по умолчанию (-X):

      • sudo iptables -t nat -F
      • sudo iptables -t mangle -F
      • sudo iptables -F
      • sudo iptables -X

      Теперь ваш брандмауэр будет принимать любой сетевой трафик. Если вы сейчас попробуете вывести список ваших правил, то увидите, что он пуст, и остались только три используемые по умолчанию цепочки (INPUT, FORWARD и OUTPUT).

      Заключение

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

      Не забывайте, что любые изменения, вносимые с помощью команды iptables, если их не сохранить, исчезнут после перезагрузки сервера. Данная информация описана в разделе «Сохранение правил» руководства «Распространенные правила и команды брандмауэра».



      Source link

      Удаление образов, контейнеров и томов Docker


      Полезные советы по Docker

      Введение

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

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

      Использование этого руководства:

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

      Синтаксис замены команды command $(command), используемый в командах, доступен во многих популярных оболочках, включая bash, zsh и Windows Powershell.

      Очистка всех неиспользуемых или не связанных с контейнерами образов, контейнеров, томов и сетей

      В Docker имеется команда, очищающая все не связанные с контейнерами ресурсы, в том числе образы, контейнеры, тома и сети:

      Чтобы удалить все остановленные контейнеры и неиспользуемые образы (а не только образы, не связанные с контейнерами), добавьте в эту команду флаг -a:

      Удаление образов Docker

      Удаление одного или нескольких конкретных образов

      Используйте команду docker images с флагом -a, чтобы найти идентификатор удаляемых образов. Эта команда покажет вам все образы, включая промежуточные слои образов. Когда вы определитесь с составом удаляемых образов, вы можете передать их идентификаторы или теги в docker rmi:

      Список:

      Удаление:

      Удаление образов, не привязанных к контейнеру

      Образы Docker состоят из нескольких слоев. Несвязанные образы — это слои, не имеющие связей с каким-либо образами с тегами. У них нет никакого назначения, и они просто занимают место на диске. Их можно найти, добавив флаг фильтра -f со значением dangling=true в команду docker images. Если вы уверены, что хотите удалить их, вы можете использовать команду docker images purge:

      Примечание. Если вы создали образ и не пометили его тегами, он будет отображаться в списке несвязанных образов, поскольку он не привязан к образу с тегом. Этого можно избежать, указав тег при сборке образа. Также вы можете помечать тегами уже существующие образы с помощью комнады docker tag.

      Список:

      • docker images -f dangling=true

      Удаление:

      Удаление образов по шаблону

      Вы можете найти все образы, соответствующие определенному шаблону, используя комбинацию команд docker images и grep. Когда вы будете довольны, вы можете удалить их, используя awk для передачи идентификаторов в docker rmi. Эти утилиты не предоставляются Docker и могут быть доступны не во всех системах:

      Список:

      • docker images -a | grep "pattern"

      Удаление:

      • docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

      Удаление всех образов

      Для вывода всех образов Docker в системе нужно добавить флаг -a в команду docker images. Если вы уверены, что хотите удалить их все, добавьте флаг -q для передачи идентификатора образа в docker rmi:

      Список:

      Удаление:

      • docker rmi $(docker images -a -q)

      Удаление контейнеров

      Удаление одного или нескольких конкретных контейнеров

      Используйте команду docker ps с флагом -a для поиска имен или идентификаторов контейнеров, которые вы хотите удалить:

      Список:

      Удаление:

      • docker rm ID_or_Name ID_or_Name

      Удаление контейнера при выходе

      Если вы создаете контейнер, который вам не будет нужен после завершения его использования, вы можете использовать команду docker run --rm для его автоматического удаления при выходе.

      Запуск и удаление:

      • docker run --rm image_name

      Удаление всех контейнеров, из которых выполнен выход

      Вы можете найти контейнеры с помощью команды docker ps -a и отфильтровать их по статусу: created (создан), restarting (перезапускается), running (работает), paused (пауза) или exited (выполнен выход). Чтобы просмотреть список контейнеров, из которых выполнен выход, используйте флаг -f для фильтрации по статусу. Убедитесь, что вы хотите удалить эти контейнеры, и используйте флаг -q для передачи идентификаторов в команду docker rm.

      Список:

      • docker ps -a -f status=exited

      Удаление:

      • docker rm $(docker ps -a -f status=exited -q)

      Удаление контейнеров с использованием нескольких фильтров

      Фильтры Docker можно комбинировать, повторяя флаг фильтра с дополнительным значением. В результате выводится список контейнеров, соответствующих любому из указанных условий. Например, если вы хотите удалить все контейнеры со статусом Created (статус, который может возникнуть при запуске контейнера недопустимой командой) или Exited, вы можете использовать два фильтра:

      Список:

      • docker ps -a -f status=exited -f status=created

      Удаление:

      • docker rm $(docker ps -a -f status=exited -f status=created -q)

      Удаление контейнеров по шаблону

      Чтобы найти все контейнеры, соответствующие определенному шаблону, используйте сочетание команд docker ps и grep. Когда вы будете удовлетворены списком удаляемых контейнеров, используйте awk и xargs для передачи идентификаторов в команду docker rmi. Обратите внимание, что эти утилиты не поставляются Docker и могут быть доступны не во всех системах:

      Список:

      • docker ps -a | grep "pattern

      Удаление:

      • docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

      Остановка и удаление всех контейнеров

      Для просмотра контейнеров в системе используется команда docker ps. При добавлении флага -a будет выведен список всех контейнеров. Если вы уверены, что хотите удалить их, добавьте флаг -q для передачи их идентификаторов командам docker stop и docker rm:

      Список:

      Удаление:

      • docker stop $(docker ps -a -q)
      • docker rm $(docker ps -a -q)

      Удаление томов

      Удаление одного или нескольких томов — Docker 1.9 и выше

      Используйте команду docker volume ls для определения названий томов, которые вы хотите удалить. Затем вы можете удалить один или несколько томов с помощью команды docker volume rm:

      Список:

      Удаление:

      • docker volume rm volume_name volume_name

      Удаление несвязанных томов – Docker 1.9 и выше

      Поскольку тома существуют независимо от контейнеров, при удалении контейнера тома не удаляются автоматически. Если том существует, но не связан ни с какими контейнерами, он называется несвязанным томом. Чтобы найти такие тома и убедиться в необходимости их удаления, вы можете использовать команду docker volume ls с фильтром, чтобы в результатах выводились только несвязанные тома. Если список вас устроит, вы можете удалить все тома с помощью команды docker volume prune:

      Список:

      • docker volume ls -f dangling=true

      Удаление:

      Удаление контейнера и его тома

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

      Удаление:

      • docker rm -v container_name

      Заключение

      В этом руководстве рассказывается о некоторых распространенных командах, используемых для удаления образов, контейнеров и томов с помощью Docker. Существует много других комбинаций команд и флагов. Более полную информацию можно найти в документации Docker по командам docker system prune, docker rmi, docker rm и docker volume rm. Если вы хотели бы увидеть в этом руководстве часто встречающиеся задачи по очистке системы, задавайте вопросы и оставляйте свои предложения в комментариях.



      Source link

      Добавление и удаление пользователей в CentOS 8


      Введение

      Для добавления или удаления пользователей на сервере с ОС Linux необходимо выполнить следующее. В этом руководстве мы расскажем, как создавать учетные записи пользователя, назначать права sudo и удалять пользователей на сервере CentOS 8.

      Предварительные требования

      В этом обучающем руководстве вы вошли на сервер CentOS 8 как пользователь non-root user, но с привилегиями sudo. Если вы вошли в систему как пользователь root user, то сможете удалить часть sudo всех следующих команд, но они будут работать в любом случае.

      Добавление пользователей

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

      Для добавления нового пользователя нажмите:

      Далее вам нужно присвоить вашему пользователю пароль для входа в систему. Для этого воспользуйтесь командой passwd:

      Вам будет предложено ввести пароль дважды, чтобы подтвердить его. Теперь ваш новый пользователь настроен и готов к работе!

      Примечание. Если ваш сервер SSH не позволяет аутентификацию по паролю, вы не сможете войти в систему,используя новое имя пользователя. Подробную информацию о настройке аутентификации SSH по ключу для нового пользователя можно найти на шаге 5 Первоначальная настройка сервера с CentOS 8.

      Предоставление привилегий sudo пользователю

      Если ваш новый пользователь будет выполнять команды с привилегиями root (административные), вам нужно предоставить ему доступ к привилегиям sudo.

      Для этого добавьте пользователя в группу wheel (предоставляет доступ sudo всем участникам по умолчанию).

      Воспользуйтесь командой usermod для добавления пользователя в группу wheel:

      • sudo usermod -aG wheel sammy wheel

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

      Вам будет предложено ввести пароль учетной записи пользователя (не пароль root). После указания правильного пароля команда будет выполнена с привилегиями root.

      Управление пользователями с привилегиями sudo

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

      Чтобы увидеть, какие пользователи входят в группу wheel (и обладают привилегиями sudo), используйте команду lid. lid обычно используется для отображения того, в какие группы входит пользователь, но, если к команде добавить флаг -g, то можно увидеть, какие пользователи входят в группу:

      Output

      centos(uid=1000) sammy(uid=1001)

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

      Удаление пользователей

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

      Чтобы удалить пользователя с сохранением его файлов, используйте команду userdel​​​​​​:

      Если вы хотите удалить домашнюю директорию пользователя вместе с учетной записью, добавьте флаг -r в userdel:

      Используя эту команду, можно автоматически удалить пользователя из всех групп, куда он был добавлен, включая группу wheel, если применимо. Если, в дальнейшем, вы добавите пользователя с таким же именем, он будет добавлен в группу wheel заново и получит доступ sudo.

      Заключение

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

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



      Source link