Как защитить сервер Linux
Ограничьте, кто может использовать sudo
Почему
sudo позволяет учетным записям выполнять команды от имени других учетных записей, включая root. Мы хотим убедиться, что только нужные нам учетные записи могут использовать sudo.
Цели
привилегии sudo ограничены теми, кто входит в указанную нами группу.
Примечания
Возможно, ваша сборка уже сделала это, или у вас уже есть специальная группа, предназначенная для этой цели, поэтому сначала проверьте.
Debian создаёт группу sudo. Чтобы просмотреть пользователей, которые входят в эту группу (таким образом, имеют привилегии sudo):
Шаги
1 - Создайте группу:
2 - Добавьте учетную запись(и) в группу:
Вам нужно будет сделать это для каждой учетной записи на вашем сервере, которой нужны привилегии sudo.
3 - Создайте резервную копию файла конфигурации sudo /etc/sudoers:
4 - Отредактируйте файл конфигурации
5 - Скажите sudo, чтобы только пользователи из группы sudousers могли использовать sudo, добавив эту строку, если ее еще нет:
Ограничьте, кто может использовать sudo
Почему
sudo позволяет учетным записям выполнять команды от имени других учетных записей, включая root. Мы хотим убедиться, что только нужные нам учетные записи могут использовать sudo.
Цели
привилегии sudo ограничены теми, кто входит в указанную нами группу.
Примечания
Возможно, ваша сборка уже сделала это, или у вас уже есть специальная группа, предназначенная для этой цели, поэтому сначала проверьте.
Debian создаёт группу sudo. Чтобы просмотреть пользователей, которые входят в эту группу (таким образом, имеют привилегии sudo):
cat /etc/group | grep "sudo"
Шаги
1 - Создайте группу:
sudo groupadd sudousers
2 - Добавьте учетную запись(и) в группу:
sudo usermod -a -G sudousers user1
sudo usermod -a -G sudousers user2
sudo usermod -a -G sudousers ...
Вам нужно будет сделать это для каждой учетной записи на вашем сервере, которой нужны привилегии sudo.
3 - Создайте резервную копию файла конфигурации sudo /etc/sudoers:
sudo cp --archive /etc/sudoers /etc/sudoers-COPY-$(date +"%Y%m%d%H%M%S")
4 - Отредактируйте файл конфигурации
sudo /etc/sudoers:
sudo visudo
5 - Скажите sudo, чтобы только пользователи из группы sudousers могли использовать sudo, добавив эту строку, если ее еще нет:
%sudousers ALL=(ALL:ALL) ALL
❤1
📌 Объединение файлов командой cat
Команда
Основные способы объединения файлов
1. Объединение двух и более файлов в один
Формат команды:
Этот вариант соединяет содержимое
2. Добавление содержимого к существующему файлу
Формат команды:
Эта команда добавляет содержимое
3. Объединение всех файлов в директории
Если нужно объединить все текстовые файлы в текущей директории в один файл:
Этот вариант объединяет все файлы с расширением
Практическое применение
1. Лог-файлы: Объединение нескольких логов в один:
2. Конфигурационные файлы: Создание общего файла конфигурации:
3. Архивы данных: Объединение частей архивов или дампов БД:
Проверка результата объединения
После выполнения команды можно проверить содержимое объединённого файла командой:
Или с постраничным просмотром:
Команда
cat
(сокращение от «concatenate») в Linux и других UNIX-подобных системах широко используется для работы с текстовыми файлами. Одной из её ключевых возможностей является объединение (конкатенация) нескольких файлов в один.Основные способы объединения файлов
1. Объединение двух и более файлов в один
Формат команды:
cat file1.txt file2.txt > result.txt
Этот вариант соединяет содержимое
file1.txt
и file2.txt
и записывает его в result.txt
. Если result.txt
уже существует, он будет перезаписан.2. Добавление содержимого к существующему файлу
Формат команды:
cat file1.txt >> result.txt
Эта команда добавляет содержимое
file1.txt
в конец result.txt
, сохраняя уже имеющуюся информацию.3. Объединение всех файлов в директории
Если нужно объединить все текстовые файлы в текущей директории в один файл:
cat *.txt > all_files_combined.txt
Этот вариант объединяет все файлы с расширением
.txt
в all_files_combined.txt
.Практическое применение
1. Лог-файлы: Объединение нескольких логов в один:
cat /var/log/syslog.1 /var/log/syslog.2 > syslogs_combined.log
2. Конфигурационные файлы: Создание общего файла конфигурации:
cat config_part1.conf config_part2.conf > full_config.conf
3. Архивы данных: Объединение частей архивов или дампов БД:
cat backup_part1.sql backup_part2.sql > full_backup.sql
Проверка результата объединения
После выполнения команды можно проверить содержимое объединённого файла командой:
cat result.txt
Или с постраничным просмотром:
less result.txt
❤3👍1
Примеры скриптов PowerShell для системного администрирования
Управление текущим расположением
Работа с файлами и папками
Работа с файлами, папками и разделами реестра
Работа с записями реестра
https://bookflow.ru/primery-skriptov-powershell-dlya-sistemnogo-administrirovaniya/
Управление текущим расположением
Работа с файлами и папками
Работа с файлами, папками и разделами реестра
Работа с записями реестра
https://bookflow.ru/primery-skriptov-powershell-dlya-sistemnogo-administrirovaniya/
❤1
MikroTik Winbox 4 - Dark Mode активирован🔥
Кроссплатформенная нативная версия для Windows, Mac и Linux
https://mikrotik.com/download
Кроссплатформенная нативная версия для Windows, Mac и Linux
https://mikrotik.com/download
👍2❤1
Основные команды Linux: Управление пользователями и группами
аналогичны всем вышеуказанным для useradd
-b
– Базовый каталог по умолчанию, в котором создаются домашние каталоги пользователей. Обычно это / home, а пользовательские каталоги — /home/$ USER.-c “text text”
– Текстовая строка для описания id, содержащая, например, полное имя пользователя.-e YYYY-MM_DD
– Дата, когда учетная запись потеряет силу или будет заблокирована.-G gr1,gr2,gr3
– Список дополнительных групп, которым принадлежит пользователь.-o
– Позволяет создать пользователя с неуникальным id.-u
– Неотрицательное цифровое значение id пользователя, которое должно быть уникальным, если не определено иначе опцией -o. По умолчанию используется самое маленькое значение, не меньше, чем UID_MIN, причем больше, чем id любого из существующих пользователей.usermod user
– изменение настроек пользователя с именем user в системеаналогичны всем вышеуказанным для useradd
-L
– блокировка учетной записи-U
– разблокировка учетной записиuserdel user
– удаляет пользователя user из системы-r
– удаление домашнего каталога пользователяusers
– Выдаются имена пользователей, которые в текущий момент зарегистрированы в системеgroupadd group
– добавление (создание) новой группы group в системе-f
– Выйти со статусом успешного выполнения, если группа уже существует. Удобна при написании скриптов, когда нет необходимости проверять, существует ли группа, прежде чем пытаться ее создавать.-g
– Задать id группы вручную.-o
– Разрешить группу с неуникальным id.groupmod group
– изменение информации о группе group в системе-n group2
задание нового имени group2groupdel group
– удаление группы group из системыpasswd user
– изменяет/устанавливает пароль пользователя user-l
– блокирование учетной записи-d
– удаление пароля учетной записи (блокирование)-f
– установка даты прекращения полномочий-n
– минимальное время действия пароля в днях-x
– максимальное время действие пароля в днях-w
– число дней появления предупреждения об окончании действия пароля-i
– число дней, после которых пароль потеряет силу и учетка заблокируется.-S
– вывод сообщения о статусе пользователяgpasswd group
– изменяет/устанавливает пароль группы group (Наличие пароля группы позволяет пользователям временно войти в группу при помощи команды newgrp, если им известен пароль группы.)id who
– просмотр информации о пользователе/группе who (принадлежность к группам, UID, GID)ulimit
– ограничение пользовательских ресурсов:-a
– отображение всех возможных ресурсов-f
– ограничение размера файла-t
– процессорное время❤1
Топ 4 лучших типа сервисов Kubernetes в одной диаграмме.
▪️ ClusterIP
ClusterIP - это стандартный и наиболее распространенный тип службы. Kubernetes назначает сервису ClusterIP внутренний IP-адрес кластера. Это делает службу доступной только в пределах кластера.
▪️ NodePort
Это позволяет вывести сервис за пределы кластера, добавив общекластерный порт поверх ClusterIP. Мы можем запросить сервис по NodeIP:NodePort.
▪️ LoadBalancer
Этот способ раскрывает сервис извне, используя балансировщик нагрузки облачного провайдера.
▪️ ExternalName
Сопоставляет службу с доменным именем. Обычно это используется для создания службы в Kubernetes для представления внешней базы данных.
▪️ ClusterIP
ClusterIP - это стандартный и наиболее распространенный тип службы. Kubernetes назначает сервису ClusterIP внутренний IP-адрес кластера. Это делает службу доступной только в пределах кластера.
▪️ NodePort
Это позволяет вывести сервис за пределы кластера, добавив общекластерный порт поверх ClusterIP. Мы можем запросить сервис по NodeIP:NodePort.
▪️ LoadBalancer
Этот способ раскрывает сервис извне, используя балансировщик нагрузки облачного провайдера.
▪️ ExternalName
Сопоставляет службу с доменным именем. Обычно это используется для создания службы в Kubernetes для представления внешней базы данных.
❤1
Объединение файлов командой cat
Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого.
Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка:
А в другом:
То после объединения мы получим файл с двумя строками:
То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например).
Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду:
Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду:
Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого.
Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка:
My text file 1
А в другом:
My text file 2
То после объединения мы получим файл с двумя строками:
My text file 1
My text file 2
То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например).
Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду:
cat file1 file2 > file12
Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду:
cat file1 file2 file3 file4 > myfile
❤1
Как найти и удалить пустые директории в Linux
Иногда после установки, удаления или переноса файлов остаются пустые директории, которые засоряют систему. Вот простой способ их найти и удалить одной командой!
Пояснение:
*
*
*
Лучше сначала проверить, что будет удалено:
❗️Подсказка: если хочешь обработать всю систему, используй
Отличный способ навести порядок в
Иногда после установки, удаления или переноса файлов остаются пустые директории, которые засоряют систему. Вот простой способ их найти и удалить одной командой!
find /path/to/search -type d -empty -delete
Пояснение:
*
-type d
— ищем только директории*
-empty
— фильтруем пустые*
-delete
— удаляем найденноеЛучше сначала проверить, что будет удалено:
find /path/to/search -type d -empty
❗️Подсказка: если хочешь обработать всю систему, используй
/
, но будь осторожен — удали что-то нужное, и можно сломать систему. Лучше исключить важные каталоги, например:
find / -type d -empty -not -path "/proc/*" -not -path "/sys/*" -not -path "/dev/*" -delete
Отличный способ навести порядок в
/tmp
, /var/log
, /home
и других местах!❤1
❗️Типы DNS-записей, которые стоит знать
Разбираемся с основными DNS-записями, которые помогают доменам работать корректно!
▪️A (Address) – привязывает домен к IPv4-адресу. Самый распространенный тип записи.
▪️CNAME (Canonical Name) – позволяет создать псевдоним для домена, перенаправляя его на другой домен.
▪️TXT (Text) – добавляет текстовые данные в DNS. Используется для SPF (защита e-mail) и других проверок.
▪️AAAA – аналог A-записи, но для IPv6-адресов.
▪️SRV (Service Record) – задаёт хост и порт для сервисов (например, VoIP), используется с A-записями.
▪️PTR (Pointer Record) – выполняет обратное разрешение: сопоставляет IP-адрес с доменным именем.
▪️NS (Name Server) – указывает авторитетные DNS-серверы для домена, помогая направлять запросы.
▪️MX (Mail Exchange) – направляет почтовый трафик на нужный сервер, работает с A-записями.
Эти записи критически важны для работы сайтов, почты и сервисов. Если управляете доменами – сохраните себе!
Разбираемся с основными DNS-записями, которые помогают доменам работать корректно!
▪️A (Address) – привязывает домен к IPv4-адресу. Самый распространенный тип записи.
▪️CNAME (Canonical Name) – позволяет создать псевдоним для домена, перенаправляя его на другой домен.
▪️TXT (Text) – добавляет текстовые данные в DNS. Используется для SPF (защита e-mail) и других проверок.
▪️AAAA – аналог A-записи, но для IPv6-адресов.
▪️SRV (Service Record) – задаёт хост и порт для сервисов (например, VoIP), используется с A-записями.
▪️PTR (Pointer Record) – выполняет обратное разрешение: сопоставляет IP-адрес с доменным именем.
▪️NS (Name Server) – указывает авторитетные DNS-серверы для домена, помогая направлять запросы.
▪️MX (Mail Exchange) – направляет почтовый трафик на нужный сервер, работает с A-записями.
Эти записи критически важны для работы сайтов, почты и сервисов. Если управляете доменами – сохраните себе!
❤3
📌 Автоматизация задач (cron, systemd timers, Ansible)
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
Пример: запуск скрипта каждый день в 3:30 утра:
1.3. Управление cron
- Просмотр текущего crontab:
- Редактирование crontab:
- Удаление crontab:
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (`/etc/systemd/system/myscript.service`):
2. Создайте unit-файл для таймера (`/etc/systemd/system/myscript.timer`):
2.2. Управление таймерами
- Включение таймера:
- Проверка состояния таймера:
- Просмотр логов:
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
Для CentOS/RHEL:
3.2. Базовая структура Ansible
3.3. Пример Playbook
Файл
Запуск:
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
Всем доброй ночи!
Автоматизация — ключевой элемент эффективного администрирования серверов. В данном руководстве рассмотрены три основных инструмента автоматизации:
- cron — классический планировщик задач в UNIX-подобных системах.
- systemd timers — альтернатива cron, интегрированная в systemd.
- Ansible — инструмент управления конфигурацией и автоматизации.
1. Использование cron
cron позволяет запускать команды и скрипты по расписанию.
1.1. Основные файлы cron
- /etc/crontab — системный crontab.
- /etc/cron.d/ — каталог для пользовательских crontab-файлов.
- /var/spool/cron/crontabs/ — файлы crontab для отдельных пользователей.
1.2. Формат записи crontab
* * * * * /путь/к/команде аргументы
| | | | |
| | | | +---- День недели (0 - вс, 6 - сб)
| | | +------ Месяц (1-12)
| | +-------- День месяца (1-31)
| +---------- Часы (0-23)
+------------ Минуты (0-59)
Пример: запуск скрипта каждый день в 3:30 утра:
30 3 * * * /usr/local/bin/myscript.sh
1.3. Управление cron
- Просмотр текущего crontab:
crontab -l
- Редактирование crontab:
crontab -e
- Удаление crontab:
crontab -r
- Логи cron хранятся в /var/log/syslog (Ubuntu/Debian) или /var/log/cron (CentOS/RHEL).
2. Использование systemd timers
Systemd timers — альтернатива cron, предоставляющая больше возможностей, включая логирование и гибкость настроек.
2.1. Создание таймера
1. Создайте unit-файл для сервиса (`/etc/systemd/system/myscript.service`):
[Unit]
Description=Запуск скрипта
[Service]
ExecStart=/usr/local/bin/myscript.sh
2. Создайте unit-файл для таймера (`/etc/systemd/system/myscript.timer`):
[Unit]
Description=Таймер для myscript.service
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
2.2. Управление таймерами
- Включение таймера:
systemctl enable --now myscript.timer
- Проверка состояния таймера:
systemctl list-timers
- Просмотр логов:
journalctl -u myscript.service --no-pager
3. Автоматизация с Ansible
Ansible позволяет управлять серверами без установки агентов.
3.1. Установка Ansible
Для Debian/Ubuntu:
sudo apt update && sudo apt install -y ansible
Для CentOS/RHEL:
sudo yum install -y epel-release
sudo yum install -y ansible
3.2. Базовая структура Ansible
inventory/hosts # Список серверов
playbooks/
install_apache.yml # Пример Playbook
roles/
common/ # Роли Ansible
3.3. Пример Playbook
Файл
install_apache.yml
:
- hosts: webservers
become: yes
tasks:
- name: Установить Apache
apt:
name: apache2
state: present
Запуск:
ansible-playbook -i inventory/hosts playbooks/install_apache.yml
Заключение
- Используйте cron для простых задач.
- Применяйте systemd timers, если важны логи и интеграция с systemd.
- Автоматизируйте масштабные задачи с Ansible.
❤1
20 лучших скриптов Powershell для Active Directory
Работая много лет, я столкнулся со многими проблемами в качестве системного администратора windows. Иногда создание пользователей или групп в домене занимает значительное время. Это процесс можно автоматизировать, чтобы сэкономить время. В данной статье есть скрипты DNS powershell, скрипты DHCP powershell и мой собственный репозиторий powershell.
https://itmozg.ru/20-luchshih-skriptov-powershell-dlja-active-directory/
Работая много лет, я столкнулся со многими проблемами в качестве системного администратора windows. Иногда создание пользователей или групп в домене занимает значительное время. Это процесс можно автоматизировать, чтобы сэкономить время. В данной статье есть скрипты DNS powershell, скрипты DHCP powershell и мой собственный репозиторий powershell.
https://itmozg.ru/20-luchshih-skriptov-powershell-dlja-active-directory/
❤3
Подборка часто используемых команд для первоначальной настройки устройств MikroTik: имя устройства, DNS сервера, Email, время, доступы и т.д.
Установки имени устройства
Установка своих DNS серверов и отключение получения их по DHCP
Настройка email клиента для работы с Yandex.Mail
Для корректной работы разрешите в настройках профиля авторизацию SMTP по обычному паролю или [рекомендуется] используйте пароли приложений (почта)
Настройка синхронизации времени по NTP и MikroTik Cloud Time (Москва)
Изменение количества строк системного лога
Очистка системного лога (оставляет сообщение о смене настроек лога)
Контроль доступа с IP адресов домена
Это позволяет использовать DynamicDNS для записей своего домена, и получать доступ к устройству с IP адресов, которые будут резолвится с домена. RouterOS будет сам обновлять записи и access-list при изменении записи в домене.
Обратите внимание, в конце 2 строки с move. Это сделано для того, чтобы правило корректно двигалось на первое место при включенном fasttrack (то есть первое место), а также при отключенном (на нулевое место)
Отключение ненужных служб доступа (web тоже отключается, осторожно)
Фикс MTU (нужен редко, но метко)
Заблокировать доступ к WiFi по MAC-адресу
Поместить клиента WiFi в отдельный VLAN по MAC-адресу
Настройка пароля и безопасности WiFi на default профиль
Включение пробросов портов SSH
Установки имени устройства
/system identity set name=MyHomeMikrotik
Установка своих DNS серверов и отключение получения их по DHCP
/ip dns set servers=8.8.8.8,1.1.1.1
/ip dhcp-client set [find ] use-peer-dns=no
Настройка email клиента для работы с Yandex.Mail
Для корректной работы разрешите в настройках профиля авторизацию SMTP по обычному паролю или [рекомендуется] используйте пароли приложений (почта)
/tool e-mail
set address=smtp.yandex.ru [email protected] password=example-pass port=587 start-tls=yes [email protected]
Настройка синхронизации времени по NTP и MikroTik Cloud Time (Москва)
/system ntp client set enabled=yes server-dns-names=time.google.com,0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org
/system clock set time-zone-autodetect=no
/system clock set time-zone-name=Europe/Moscow
/ip cloud set update-time=yes
Изменение количества строк системного лога
/system logging action set memory memory-lines=10000
Очистка системного лога (оставляет сообщение о смене настроек лога)
/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=10000
Контроль доступа с IP адресов домена
Это позволяет использовать DynamicDNS для записей своего домена, и получать доступ к устройству с IP адресов, которые будут резолвится с домена. RouterOS будет сам обновлять записи и access-list при изменении записи в домене.
Обратите внимание, в конце 2 строки с move. Это сделано для того, чтобы правило корректно двигалось на первое место при включенном fasttrack (то есть первое место), а также при отключенном (на нулевое место)
/ip firewall address-list
add address=access.example.con list=DomainIPsAccess
/ip firewall filter
add action=accept chain=input src-address-list=DomainIPsAccess comment="Allow DomainIPsAccess"
move [find comment="Allow DomainIPsAccess"] 1
move [find comment="Allow DomainIPsAccess"] 0
Отключение ненужных служб доступа (web тоже отключается, осторожно)
/ip service disable www,ftp,api,api-ssl,telnet
/ip service enable ssh,winbox
/ip service set ssh address=""
/ip service set winbox address=""
Фикс MTU (нужен редко, но метко)
/ip firewall mangle
add chain=postrouting out-interface-list=WAN protocol=tcp tcp-flags=syn,!ack action=change-mss new-mss=clamp-to-pmtu comment="MTU Fix" passthrough=yes
Заблокировать доступ к WiFi по MAC-адресу
/interface wireless access-list authentication=no mac-address=8A:EA:B7:2E:38:C1
Поместить клиента WiFi в отдельный VLAN по MAC-адресу
/interface wireless access-list
add interface=all mac-address=8A:EA:B7:2E:38:C1 vlan-id=99 vlan-mode=use-tag
Настройка пароля и безопасности WiFi на default профиль
/interface wireless security-profiles set default mode=dynamic
-keys authentication-types=wpa2-psk unicast-ciphers=aes-ccm group-ciphers=aes-ccm
wpa2-pre-shared-key=bigpassword
Включение пробросов портов SSH
/ip ssh set forwarding-enabled=both
❤1