Разное

Настройка debian sudo: Страница не найдена | Losst

Содержание

Настройка sudo под Linux

Настройка sudo под Linux

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

Редактировать файл sudoers «вручную» — плохая практика.
Для редактирования есть специальная команда visudo.
Она сама знает, где расположен файл sudoers, и отследит,
чтобы вы редактировали копия, файл всегда был целостным, а
копия была удалена.

visudo позволяет использовать любой редактор. Например,
вы можете использовать mcedit:

# EDITOR=mcedit visudo

Если вы допустите ошибку, то, при выходе из редактора
получите сообщение вида:

visudo: >>> /etc/sudoers: syntax error near line 73 <<<
What now?

В этом случае, лучше ввести букву «e» и продолжить редактирование.

Файл sudoers, обычно, содержит много комментариев.
В каждой системе/дистрибутиве они различны. Имеет смысл
ознакомиться с ними и, возможно, внести какие-то правки
глобальных настроек.

Особое внимание следует обратить на директивы

#include ...
#includedir ...

за ними скрывается ещё куча всего интересного.

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

##
## User privilege specification
##

Дальше полномочия описываются строчками вида:

[пользователь] [хост]=([кем может стать]) [что может сделать]

Простой пример

alex ALL=(root) /bin/mount /media/n78

Это означает, что пользователь alex, может
выполнить с правами root команду
/bin/mount /media/n78.

Обратите внимание, путь к команде mount указан полностью.
Это важно! Если этого не сделать, то sudo работать не будет.

Теперь пользователь alex может выполнить команду

$ sudo mount /media/n78

У него будет спрошен пароль (его, а не root).

Продвинутые правила sudo

Можно написать более сложные правила:

alex ALL=(ALL) ALL
alex ALL=(root) NOPASSWD: /bin/mount /media/n78
alex ALL=(root) NOPASSWD: /bin/umount /media/n78

Пользователь alex может выполнить монтирование от пользователя root
без пароля. И может выполнить любую команду от любого пользователя,
если укажет пароль.

Флаги

Более полный пример с использованием флагов:

# пользователь root может всё без ограничений
root ALL=(ALL) ALL
# пользователь alex может становиться пользователем
# operator, без указания пароля, и пользователем root
# с указанием пароля
alex ALL=(operator) NOPASSWD: ALL, (root) ALL
# пользователь temp должен всегда указывать не свой пароль,
# а пароль того, кем он хочет стать; он может становиться
# только пользователем alex и выполнять только одну команду
Defaults:temp targetpw
temp ALL=(alex) /bin/bash
# (этот пользователь предназначен только для удалённого
# входа в систему с использованием временного пароля,
# отсюда и название)

Флагов существует великое множество, смотрите документацию.

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

После того, как вы всё настроили, вы можете проверить,
как sudo интерпретирует ваши настройки. Это очень удобно.

Используйте команды:

$ sudo -l
$ sudo -ll
$ sudo -lU user_name

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





Отправить

Установка и настройка sudo в Debian 7

Список разделов

Sudo — это программа позволяющая администраторам давать ограниченные root права пользователям и вести журнал root активности. Базовая философия заключается в том, чтобы дать так мало прав, как это возможно, но при этом позволить людям нормально выполнять свои задачи. Отличие от команды su в том, что пользователь вводит пароль от своей учетной записи, а не пароль пользователя root.

Sudo в Debian имеет пятнадцатиминутный (может быть переопределен) таймаут после ввода пароля. Это значит, что когда вы первый раз ввели пароль рута, то у вас есть 15 минут в течение которых вы можете выполнить следующую команду без ввода пароля. Таймаут может быть немедленно сброшен с помощью команды sudo -k.

Установка sudo в Debian 7

aptitude install sudo

Во время установки создается конфигурационный файл /etc/sudoers и директория /etc/sudoers.d, о которых мы поговорим чуть позже.

Параметры команды sudo

-k [command] — позволяет сбросить таймаут до момента, когда необходимо будет снова вводить пароль. Если указать команду, которая может потребовать ввода пароля, то таймаут будет сброшен конкретно для этой команды.
-h — будет выведена небольшая подсказка на стандартный выход.
-V — отобразиться версия sudo и плагинов. Если запустить от root, то будут выведены все настройки.
-g group — позволяет задать от какой группы будет запущена команда.
-H — задает директорию, которая будет указана в переменной окружения HOME.
-i [command] — симулирует начальный вход. Если команда не указана, то будет произведен вход в систему, таким образом можно сделаться рутом вместо использования sudo su.
-l[l] [command] — если команда не указана, то будет выведен список доступных команд для вызвавшего пользователя (или пользователя указанного с параметром -U). Если указана команда и она доступна, то будет выведен полный путь до команды и доступные параметры. Если команда не доступна, то sudo закроется со статусом 1. Если использовать параметр -ll или указать -l два раза, то будет использован более подробный формат вывода.
-s [command] — будет запущена оболочка указанная в переменной окружения SHELL. Если указана команда, то она будет передана на исполнения запущенной оболочке.
-U user — совместно с параметром -l позволяет отобразить привилегии определенного пользователя. Доступ спискам привилегий по умолчанию есть у root и пользователей со всеми привилегиями (ALL).
-u user — указанная команда будет запущена от имени указанного пользователя, а не от root.
-v — позволяет продлить таймаут на 15 минут или на тот, который указан в sudoers), но не выполнять каких-либо команд.

Здесь указана большая часть доступных параметров, но не все. Чтобы посмотреть полный список используйте команду man sudo.

Настройка sudo в Debian 7

Рекомендуется все пользовательские настройки задавать в файлах в директории /etc/sudoers.d, а не в основном файле /etc/sudoers. То есть можно создать файл с любым названием в директории /etc/sudoers.d и уже в нем перечислить необходимые настройки.

Файл /etc/sudoers рекомендуется править  с помощью утилиты visudo, так как она блокирует файл и осуществляет проверку правильности написания директив при закрытии. visudo использует текстовый редактор по умолчанию, который можно переопределить в sudoers директивой вида:

Defaults    editor="/usr/bin/vi"

Синхронизация файла sudoers

Вообще говоря, утилита sudo является локальной, в ней нет встроенных механизмов для распространения единых настроек на множество серверов из одного центра. Для синхронизации можно использовать, к примеру, NFS, rsync или LDAP.

Пример содержимого файла sudoers

Когда читаешь руководство по настройке sudo в Debian, то довольно сложно что-то понять, но на примере все становится на свои места. Так что для начала рассмотрим пример из man sudoers:

# Алиасы содержащие имена пользователей
User_Alias     FULLTIMERS = millert, mikef, dowdy
User_Alias     PARTTIMERS = bostley, jwfox, crawl
User_Alias     WEBMASTERS = will, wendy, wim

# Runas алиасы содержащие имена пользователей или групп от которых будут запускаться команды
Runas_Alias    OP = root, operator
Runas_Alias    DB = oracle, sybase
Runas_Alias    ADMINGRP = adm, oper

# Алиасы для наборов хостов
Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\
               SGI = grolsch, dandelion, black :\
               ALPHA = widget, thalamus, foobar :\
               HPPA = boa, nag, python
Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias     SERVERS = master, mail, www, ns
Host_Alias     CDROM = orion, perseus, hercules

# Алиасы для наборов команд
Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
                       /usr/sbin/restore, /usr/sbin/rrestore
Cmnd_Alias     KILL = /usr/bin/kill
Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
Cmnd_Alias     HALT = /usr/sbin/halt
Cmnd_Alias     REBOOT = /usr/sbin/reboot
Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
                        /usr/local/bin/tcsh, /usr/bin/rsh, \
                        /usr/local/bin/zsh
Cmnd_Alias     SU = /usr/bin/su
Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

Далее мы переопределим некоторые значения установленные по умолчанию при компиляции. Мы хотим чтобы sudo вел лог через syslog с использованием auth во всех случаях. Мы мне хотим, чтобы сотрудники работающие полный день получали предупреждение от sudo, пользователь millert не должен вводить пароль и мы не хотим сбрасывать переменные окружения LOGNAME, USER or USERNAME когда выполняем команды от рута. Дополнительно на машинах в Host_Alias SERVERS мы храним дополнительный локальный лог-файл и убеждаемся, что будет логироваться год в каждой линии так как логи будут храниться несколько лет. Напоследок, в целях безопасности для команд в списке PAGERS мы отключаем возможность запускать другие команды.

# Переопределяем встроенные умолчания
Defaults               syslog=auth
Defaults>root          !set_logname
Defaults:FULLTIMERS    !lecture
Defaults:millert       !authenticate
[email protected]       log_year, logfile=/var/log/sudo.log
Defaults!PAGERS        noexec

Далее идет часть в которой определяется кто что может запускать.

root           ALL = (ALL) ALL
%wheel         ALL = (ALL) ALL

Мы позволяем руту и всем пользователям в группе wheel запускать любые команды на любом хосте от имени любого пользователя.

FULLTIMERS     ALL = NOPASSWD: ALL

Сотрудники работающие полный день (millert, mikef и dowdy) могут запускать любые команды на любом хосте без ввода пароля.

PARTTIMERS     ALL = ALL

Сотрудники работающие часть дня (bostley, jwfox и crawl) могут исполнять любые команды на любых хостах, но должны вначале пройти процедуру аутентификации.

jack           CSNETS = ALL

Пользователь jack может выполнять любые команды на машинах из списка CSNETS.

operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
               sudoedit /etc/printcap, /usr/oper/bin/

Оператор может выполнять команды ограниченные простой поддержкой системы. Эти команды связаны с созданием резервных копий, убийством процессов, системой печати, отключением системы и командами в директории /usr/oper/bin/.

joe            ALL = /usr/bin/su operator

Пользователь joe может использовать su только чтобы стать пользователем operator.

pete           HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

%opers         ALL = (: ADMINGRP) /usr/sbin/

Пользователи в группе opers могуть запускать команды из /usr/sbin/ от имени себя в сочетании с любой группой из Runas_Alias ADMINGRP (группы adm и oper).

Пользователь pete может менять пароль любого пользователя за исключением root на любой машине из списка HPPA. В данном случае не получится указать несколько имен пользователей в командной строке.

bob            SPARC = (OP) ALL : SGI = (OP) ALL

Пользователь bob может исполнять любые команды на машинах из групп SPARC и SGI от имени пользователей в Runas_Alias OP (root и operator).

jim            +biglab = ALL

Пользователь jim может запускать любые команды в сетевой группе biglab. Sudo понимает, что biglab — это сетевая группа благодаря префиксу “+”.

fred           ALL = (DB) NOPASSWD: ALL

Пользователь fred может выполнять любые команды от имени пользователей в Runas_Alias DB без авторизации.

john           ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*

На машинах в списке ALPHA пользователь john может использовать su чтобы стать любым пользователем кроме рута. При этом он не может использовать какие-либо параметры команды su.

jen            ALL, !SERVERS = ALL

Пользователь jen может запускать любые команды на любой машине кроме входящих в список SERVERS.

jill           SERVERS = /usr/bin/, !SU, !SHELLS

На любых машинах из списка SERVERS, jill может запускать любые команды за исключением содержащихся в списках SU и SHELLS.

steve          CSNETS = (operator) /usr/local/op_commands/

Пользователь steve может запускать любые команды в директории /usr/local/op_commands/ на машинах в сети CSNETS но только в качестве пользователя operator.

matt           valkyrie = KILL

На его персональной рабочей станции пользователю matt требуется возможность убивать процессы.

WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www

На хосте www любой пользователь в списке WEBMASTERS (will, wendy и wim) могут запускать любые команды от пользователя www (который владеет файлами сайтов) или просто становиться пользователем www с помощью команды su.

ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\
               /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM

Любой пользователь может монтировать или отмонтировать CD-ROM на машинах в списке CDROM без ввода пароля.

Далее подробно разберем разные элементы файла /etc/sudoers.

Формат файла sudoers

Файл sudoers содержит два типа записей: алиасы (обычные переменные) и спецификации пользователей (указывают кто, что и где может запускать).

Когда есть несколько спецификаций для одного пользователя, они применяются по порядку, то есть используется последняя.

В итоге форма спецификации имеет следующий вид:

кто    где = (от имени кого) что

В более полной форме:

кто    где = (от имени кого) что, (от имени кого) что :  где = (от имени кого) что, (от имени кого) что

Также можно указать от какой группы можно запускать команду:

кто    где = (от имени кого : от какой группы) что

Или даже более сложный вариант:

кто    где = (от имени кого, от имени кого : от какой группы, от какой группы) что, что

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

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

Пример:

user1    host1 = (op : opgr) /bin/ls

это правило говорит о том, что пользователь user1 может выполнить команду /bin/ls следующим образом:

$ sudo -u op /bin/ls

или

$ sudo -g opgr /bin/ls

или даже

$ sudo -u op -g opgr /bin/ls

Алиасы

Форма записи алиасов

Тип_алиаса    Имя = пункт 1, пункт 2 : Имя = пункт 3, пункт 4

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

Типы алиасов

User_Alias

Может содержать одно или более имен пользователей, id пользователей (с префиксом #), имен групп пользователей и их id (с префиксами % и %#, соответственно), сетевые группы (с префиксом +), не-юникосовые имена групп и ID (с префиксами %: и %:#, соответственно), а также алиасы пользователей (User_Aliases). Каждый пункт может предваряться символом восклицательного знака (“!”).

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

Runas_Alias

Данный алиас может содержать те же пункты, что и User_Alias. Обратите внимание, что имена и группы сравниваются как строки. Другими словами, два пользователя (группы) с разными именами, но с одинаковыми uid (gid) считаются различными. Если вы хотите указать все имена пользователей с одинаковым uid (к примеру, root и toor), вы можете использовать uid (#0 в нашем примере).

Host_Alias

Может состоять из одного или более имен хостов, IP адресов, сетей, сетевых групп (с префиксом +) и других алиасов. Повторимся, значение пункта может задано в отрицательном ключе с помощью символа восклицательного знака. Если вы не задали маску сети вместе с адресом сети, sudo проверит каждый сетевой интерфейс хоста и если адрес сети подойдет к одному из сетевых интерфейсов, будет использована соответствующая сетевая маска. Маска может быть задана либо в виде обычного IP-адреса (вида 255.255.255.0), либо в краткой форме в виден числа (количество бит, к примеру /24). Имя хоста может включать подстановочные знаки (о них чуть позже), но чтобы они работали необходимо, чтобы команда hostname выдавала полностью определенное доменное имя (fqdn). Стоит учесть, что sudo проверяет только реально существующие сетевые интерфейсы и IP-адрес 127.0.0.1 (localhost) использовать не удастся.

Cmnd_Alias

В список могут входить одна или более команд, директорий или других алиасов. Команда — это полностью определенное имя файла (то есть содержащее путь до файла), которое может содержать подстановочные символы. Простое имя файла позволяет пользователю запускать команду с любыми аргументами. Однако вы можете также указать аргументы командной строки (включая подстановочные символы). С другой стороны, можно указать “” чтобы предотвратить использование каких-либо аргументов с данной командой. Директория — это полностью определенный путь заканчивающийся символом ‘/’. Когда в Cmnd_Alias указана директория, пользователь может запускать любые файлы внутри этой директории (но не в ее поддиректориях).

Переопределение умолчаний

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

При записи Defaults для различных алиасов используются различные символы указывающие на тип алиаса:

'Defaults' '@' Host_List
'Defaults' ':' User_List
'Defaults' '!' Cmnd_List
'Defaults' '>' Runas_List

Параметрами могут быть флаги, целочисленные значения, строки и списки. Флаги являются булевыми и могут быть отключены с помощью оператора “!”. Значения могут быть заключены в двойные кавычки если они содержат несколько слов. Специальные символы могут быть экранированы с помощью обратной косой черты (\).

Списки имеют два оператора присваивания += и -=. Эти операторы используются для добавления и удаления из списка, соответственно.

Записи ‘Defaults’ обрабатываются в следующем порядке: вначале основные, для хостов и пользователей, затем runas и, наконец, для команд.

Полный список опций достаточно велик и мы не будем их здесь приводить. Если вы хотите их просмотреть, пожалуйста, воспользуйтесь командой man sudoers.

Ключевые слова

С командой может использоваться ноль или более ключевых слов. Существует восемь ключевых слов: NOPASSWD, PASSWD, NOEXEC, EXEC, SETENV, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT and NOLOG_OUTPUT.

NOPASSWD и PASSWD

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

user1    host1 = NOPASSWD: /bin/ls, /bin/ln, PASSWD: /bin/kill

NOEXEC и EXEC

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

user1    host1 = NOEXEC: /usr/bin/more

Информацию об остальных ключевых словах читайте в том же мане.

Подстановочные знаки

sudo позволяет использовать подстановочные знаки (а также, мета или глобальные символы) в именах хостов, путях и аргументах командной строки в файле sudoers. Стоит помнить, что это не регулярные выражения.

* — заменяет ноль или более любых символов.
? — заменяет любой один символ.
[…] — заменяет любой символ в заданном диапазоне.
[!…] — заменяет любой символ НЕ входящий в заданных диапазон.
\ — символ экранирования чтобы в именах можно было использовать специальные символы.

Также можно использовать классы символов. Однако, так как двоеточние (“:”) является специальным символом, то его приходится экранировать:

/bin/ls [[\:alpha\:]]*

это будет обозначать любой файл начинающийся с буквы.

Кроме того, прямая косая черта не заменяется подстановочными знаками. К примеру:

/usr/bin/*

соответствует /usr/bin/who, но не соответствует /usr/bin/X11/xterm.

Чтобы запретить использование аргументов командной строки, можно использовать двойные кавычки — «».

Включение содержимого других файлов в sudoers

Включение (“инклуд” от include) содержимого других файлов возможен с помощью директив #include и #includedir.

Это может использоваться в ситуации, когда у вас есть директивы для sudo общие для всех серверов и особые на каждом сервере. В таком случае можно создать два файла, к примеру, sudoers и sudoers.local. Затем второй инклудится в первый с помощью директивы (вместе со значком решетки):

#include /etc/sudoers.local

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

#include /etc/sudoers.%h

где вместо %h подставляется имя хоста.

Что касается директивы #includedir, то можно создать отдельную директорию, в которую можно складывать файлы и они будут автоматически включаться в файл sudoers. К примеру, в Debian после установки sudo создается директория /etc/sudoers.d/, а в файле /etc/sudoers добавлена директива:

#includedir /etc/sudoers.d

Стоит учесть, что файлы обрабатываются и сортируются лексически, а не по номерам. То есть, к примеру, файл /etc/sudoers.d/01_first будет обработан перед /etc/sudoers.d/10_second, но файл с именем /etc/sudoers.d/1_whoops будет обработан после /etc/sudoers.d/10_second, так как вначале названия отсутствует ноль.

Дополнительные специальные символы

Знак решетки (‘#‘) используется для создания комментариев, за исключением применения в директиве #include. Все символы от знака решетки до конца строки считаются комментарием.

ALL — является зарезервированным словом, которое обозначает все возможные значения. Может использоваться вместо любых алиасов и значений в полях “кто”, “где”, “от кого”, “что”. Не пытайтесь создавать алиасы с именем ALL.

Восклицательный знак (‘!‘) используется как логический оператор отрицания (not) и позволяет исключать определенные значения. К примеру, можно разрешить выполнять любые операции за исключением некоторых используя ALL и “!”.

Длинные строки можно разбивать на подстроки с помощью символа обратной косой черты (‘\‘) стоящего в конце каждой подстроки кроме последней.

Пробелы между элементами ‘=‘, ‘:‘, ‘(‘, ‘)‘ не обязательны. То есть их можно использовать, а можно не использовать.

Следующие символы необходимо экранировать с помощью символа обратной косой черты (‘\’):

!‘, ‘=‘, ‘:‘, ‘,‘, ‘(‘, ‘)‘, ‘\‘.

sudoedit

Если требуется отредактировать какой-либо текстовый файл, доступ к которому есть доступ только у другого пользователя или рута, то можно воспользоваться утилитой sudoedit, что быстрее, чем запускать редактор с помощью sudo. Также можно использовать ключи -u и -g для запуска от определенного пользователя или группы. По умолчанию будет использовать учетная запись рута.

Наверх

Опубликовано

Установка sudo в Debian 10 » BlogLinux.ru

Debian 10 вышел в релиз. Это прекрасная новость не только для постоянных пользователей Debian, но и для всего сообщества Linux. Однако, если вы установили дистрибутив, то скорее всего заметили, что обычный пользователь не может использовать sudo.

Конечно, если вы используете Ubuntu или Linux Mint такой проблемы не возникнет. В этой статье мы разберемся как выполняется установка sudo в Debian 10.

Что такое sudo?

Независимо от дистрибутива Linux, на ПК есть разные пользователи. Каждый из них имеет определенные роли и разрешения. Допустим, нужно установить какой-то пакет в Debian.  Выполнить эту операцию сможет только пользователь с правами root. Другие пользователи не имеют доступа к этому действию.

Утилита sudo – входит в набор программ GNU. Это небольшое приложение, выполняющее команды с привилегиями другого пользователя. Как правило, «другой» — это пользователь – root.

По умолчанию эта утилита в Debian не доступна. Но если вы используете Debian на персональном компьютере, можно без проблем её установить. Однако, если вы работаете с Debian на сервере, лучше этого делать не следует.  С помощью sudo вы сможете выполнять команды, к которым обычный пользователь не имеет доступа. К тому же, все выполняемые операции не регистрируются в системном журнале.

Установка sudo в Debian 10

Сначала устанавливаем sudo, а для этого нужно иметь доступ к пользователю root. Это очень важно. Откройте терминал, или подключитесь к серверу удаленно через SSH и переключитесь на пользователя root:

su

Затем введите пароль пользователя root. Теперь можно устанавливать sudo из репозиториев Debian:

apt install sudo

Утилита установится быстро. После этого измените файл /etc/sudoers, в котором находится вся конфигурация sudo. Можно использовать редактор nano или vim:

nano /etc/sudoers

В файле просто разобраться. В разделе спецификаций привилегий пользователя вы найдете строку, подобную этой:

root ALL=(ALL:ALL) ALL

Под ней нужно добавить своего пользователя, а остальное оставить прежним. Например, так:

имя_вашего_пользователя ALL=(ALL:ALL) ALL

Полезные настройки Sudoers для ‘sudo’ в Linux

Сегодня поговорим про полезные настройки Sudoers. В Linux и других Unix-подобных операционных системах только пользователь root может запускать все команды и выполнять определенные критические операции в системе, такие как установка и обновление, удаление пакетов, создание пользователей и групп, изменение важных файлов конфигурации системы и т. д.

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

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

Sudo позволяет разрешенному пользователю выполнять команду как пользователь root (или другой пользователь), как указано в политике безопасности:

  • Он читает и анализирует /etc/sudoers, просматривает параметры пользователя который обращается и его разрешения,
  • Затем запрашивает у этого пользователя пароль (обычно пароль пользователя, но он также может быть паролем целевого пользователя или может быть пропущен с тегом NOPASSWD),
  • После этого sudo создает дочерний процесс, в котором он вызывает setuid() для переключения на целевого пользователя
  • Затем он выполняет команду, заданную выше в качестве аргументов в дочернем процессе.

Ниже приведены конфигурации файлов /etc/sudoers для изменения поведения команды sudo с использованием записей по умолчанию.

$ sudo cat /etc/sudoers

 

/etc/sudoers File
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults logfile="/var/log/sudo.log"
Defaults lecture="always"
Defaults badpass_message="Password is wrong, please try again"
Defaults passwd_tries=5
Defaults insults
Defaults log_input,log_output

 

Типы записей по умолчанию
Defaults parameter, parameter_list #affect all users on any host
[email protected]_List parameter, parameter_list #affects all users on a specific host
Defaults:User_List parameter, parameter_list #affects a specific user
Defaults!Cmnd_List parameter, parameter_list #affects a specific command
Defaults>Runas_List parameter, parameter_list #affects commands being run as a specific user

 

Вы должны заметить, что опции неявно логичны и могут быть отключены с помощью ‘!‘. Операторы и списки имеют два дополнительных оператора присваивания, ‘+=’ (добавить в список) и ‘-=’ (удалить из списка).

Defaults parameter
OR
Defaults parameter=value
OR
Defaults parameter -=value
Defaults parameter +=value
OR
Defaults !parameter 

 

1. Установите Secure PATH

Это путь, используемый для каждой команды sudo, имеет два значения:

  • Используется, когда системный администратор не доверяет пользователям sudo и для этого создает безопасную переменную среды PATH
  • Чтобы отделить «корневой путь» и «путь пользователя», этот параметр не влияет только на пользователей, определенных exempt_group.

Чтобы установить его, добавьте строку:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

 

2. Включить sudo для сеанса входа в систему TTY.

Чтобы включить sudo из реального tty, но не с помощью скриптов cron или cgi-bin, добавьте строку:

Defaults requiretty

 

3. Запустите команду Sudo с помощью pty

Бывает, что злоумышленники пытаются запускать вредоносную программу с помощью sudo, которая разветвит фоновый процесс и он остается активным на терминале пользователя, даже после того как основная программа завершила свое выполнение.

Чтобы избежать такого сценария, вы можете настроить sudo на запуск команд только с помощью psuedo-pty с использованием параметра use_pty, независимо от того, включено ли ведение журнала ввода-вывода или нет:

Defaults  use_pty

 

4. Создайте файл журнала Sudo

По умолчанию sudo регистрируется через syslog(3). Однако, чтобы указать пользовательский файл журнала, используйте параметр logfile следующим образом:

Defaults  logfile="/var/log/sudo.log"

 

Чтобы записать имя хоста и год в пользовательском файле журнала, используйте параметры log_host и log_year следующим образом:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

 

Ниже приведен пример пользовательского файла журнала sudo:

 

 

5. Ведение журнала sudo при вводе/выводе

Параметры log_input и log_output позволяют sudo запускать команду в псевдо-tty и регистрировать все входные данные пользователя и все выходные данные, которые передаются на экран.

Каталог журнала ввода-вывода по умолчанию — /var/log/sudo-io, если есть порядковый номер сеанса, он также сохраняется в этом каталоге. Вы можете указать пользовательский каталог через параметр iolog_dir.

Defaults   log_input, log_output

 

Поддерживаются некоторые управляющие последовательности, такие как %{seq}, которая расширяется до монотонно возрастающего номера последовательности base-36, такого как 000001, где каждые две цифры используются для формирования нового каталога, например. 00/00/01, как в примере ниже:

$ cd / var / log / sudo-io /
$ ls
$ cd 00/00/01
$ ls
$ cat log

Вы можете просмотреть остальные файлы в этом каталоге, используя команду cat.

 

6. Извещение пользователя о Sudo

Чтобы извещать пользователей sudo о использовании пароля в системе, используйте параметр lecture, как показано ниже.

Он имеет 3 возможных значения:

  • Всегда — всегда уведомлять пользователя.
  • Один раз — уведомить пользователя при первом выполнении команды sudo (это используется, когда значение не указано)
  • Никогда — никогда не уведомлять пользователя.
Defaults   log_input, log_output

 

Кроме того, вы можете установить собственный файл уведомления с параметром lecture_file, введите соответствующее сообщение в файл:

Defaults  lecture_file="/path/to/file"

 

 

7. Вывод пользовательского сообщения при вводе неправильного пароля sudo

Когда пользователь вводит неверный пароль, в командной строке отображается определенное сообщение. По умолчанию сообщение «sorry, try again», вы можете изменить сообщение, используя параметр badpass_message, следующим образом:

Defaults  badpass_message="Password is wrong, please try again"

 

8. Увеличьте ограничение количества неверного ввода пароля для sudo

Параметр passwd_tries используется для указания количества попыток пользователя ввести пароль.

Значение по умолчанию — 3:

Defaults   passwd_tries=5 

 

Чтобы установить тайм-аут пароля (по умолчанию — 5 минут) с использованием параметра passwd_timeout, добавьте следующую строку:

Defaults   passwd_timeout=2

 

9. Пусть sudo ругается на вас, когда вы вводите неправильный пароль

Если пользователь вводит неверный пароль, sudo будет ругаться в терминале. Это автоматически отключит параметр badpass_message.

Defaults  insults

 

Спасибо за уделенное время на прочтение статьи!

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

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

 

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.

Что Вы получите?

  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.

Как проходит обучение?

  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.

А еще поможем Вам:

  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.

Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.

sudo — выполнение команд от имени root или другого пользователя.












&nbsp &nbsp
Команда sudo ( substitute user and do, подменить пользователя и выполнить ) позволяет строго определенным пользователям
выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root. Если быть точнее, то команда sudo позволяет выполнять программы от имени любого пользователя, но, если идентификатор или
имя этого пользователя не указаны, то предполагается выполнение от имени суперпользователя root. Таким образом, использование sudo позволяет выполнять привилегированные команды обычным пользователям без необходимости ввода пароля суперпользователя root . Список пользователей и перечень их прав по отношению к ресурсам системы может быть настроен оптимальным образом для обеспечения комфортной и безопасной работы. Например, команда sudo в Ubuntu Linux, используется в режиме, позволяющем выполнять любые задачи администрирования системы без интерактивного входа под учетной записью root.

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

Командная строка sudo может быть использована в следующих форматах:


sudo -h | -K | -k | -V

sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]

sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]

sudo [-AbEHknPS] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] []

sudo -e [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-u user] file

Параметры командной строки:

-A, —askpass — использовать вспомогательную программу для ввода пароля

-b, —background — выполнить команду в фоновом режиме

-C, —close-from=num — закрыть все дескрипторы файлов >= num

-E, —preserve-env — сохранить пользовательское окружение при выполнении команды

-e, —edit — редактировать файлы вместо выполнения команды

-g, —group=group — выполнить команду от имени или ID указанной группы

-H, —set-home — установить для переменной HOME домашний каталог указанного пользователя

-h, —help — показать справку и выйти

-h, —host=host — выполнить команду на узле (если поддерживается модулем)

-i, —login — запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду

-K, —remove-timestamp — полностью удалить файл с timestamp

-k, —reset-timestamp — объявить недействительным файл timestamp

-l, —list — показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды

-n, —non-interactive — автономный режим без вывода запросов пользователю

-P, —preserve-groups — сохранить вектор группы вместо установки целевой группы

-p, —prompt=prompt — использовать указанный запрос пароля

-S, —stdin — читать пароль из стандартного ввода

-s, —shell — запустить оболочку от имени указанного пользователя; также можно задать команду

-U, —other-user=user — в режиме списка показывать права пользователя

-u, —user=user — выполнить команду (или редактировать файл) от имени или ID указанного пользователя

-V, —version — показать сведения о версии и выйти

-v, —validate — обновить временную метку пользователя без выполнения команды

— прекратить обработку аргументов командной строки



Примеры использования команды

sudo:

sudo –l — отобразить список команд, доступных для выполнения текущему пользователю. Кроме списка команд отображаются параметры среды, которые будут применяться при их выполнении.

sudo –ll — отобразить список команд, доступных для выполнения текущему пользователю в длинном (расширенном) формате.

В данном формате вместо краткого синтаксиса для списка разрешенных команд в виде (ALL : ALL) ALL отображается подробное
описание прав пользователя:


Sudoers entry:

RunAsUsers: ALL

RunAsGroups: ALL

Команды: ALL

sudo lshw -C network — отобразить информацию о сетевом оборудовании с правами суперпользователя root

sudo –l –U user1 — посмотреть список команд, доступных для выполнения пользователю user1. Для выполнения данной команды пользователь должен быть root или иметь право на выполнение команды sudo -l, что обеспечивается настройками утилиты sudo в файле /etc/sudoers

sudo ipmitool sensor — выполнить команду ipmitool sensor с правами root .

sudo su — выполнить команду su, т.е. создать сеанс суперпользователя root

sudo -i — запустить командную оболочку с правами суперпользователя root. Для выполнения данной команды пользователь должен иметь право на выполнение программы оболочки в среде sudo, например — /bin/bash

sudo ls /usr/local/protected — получить список файлов каталога, доступного только root

sudo -u user2 ls ~ — получить список файлов домашнего каталога пользователя user2

sudo -u www vi ~www/htdocs/index.html — редактировать файл ~www/htdocs/index.html от имени пользователя www

sudo -g adm view /var/log/syslog — просмотреть файл системного журнала, доступного только суперпользователю root и членам группы adm

sudo -u user1 -g users2 vi /home/users2/textfile.txt — редактировать текстовый файл как пользователь user1, с принадлежностью к первичной группе users2

sudo -E /usr/bin/firefox — запустить браузер firefox от имени суперпользователя root, сохранив параметры среды текущего пользователя. Возможность выполнения команд с сохранением среды пользователя должна быть разрешена параметром SETENV в настройках файла
конфигурации sudo

Файл конфигурации

/etc/sudoers

Настройки sudo определяется содержимым файла /etc/sudoers. Поскольку ошибочные данные в данном файле могут привести к серьезным проблемам доступа к ресурсам системы, рекомендуется выполнять его изменение с помощью специального редактора sudoedit ( в некоторых дистрибутивах — visudo ), который поддерживает функции проверки синтаксиса и значительно снижает риск создания неработоспособной конфигурации sudo.

Содержимое файла /etc/sudoers определяет имена пользователей и групп, перечень выполняемых программ, необходимость введения паролей, и некоторые другие настройки, связанные с формированием переменных окружения при смене пользователя. Кроме данного файла, настройки sudo могут определяться содержимым файлов из каталога /etc/sudoers.d , что позволяет структурировать систему предоставления прав на использование sudo в виде набора файлов с осмысленными именами, что полезно при большом количестве пользователей и сложной системе разграничения прав. Имена файлов конфигураций в каталоге /etc/sudoers.d могут быть любыми, но их содержимое должно полностью соответствовать формату файла /etc/sudoers.

Синтаксис настроек в файле /etc/sudoers позволяет использовать специальные псевдонимы ( Alias-ы ), с помощью которых значительно упрощается как настройка, так и восприятие конфигурационной информации sudo.

В файле конфигурации /etc/sudoers возможно использование четырех разновидностей псевдонимов:

User_Alias — списки пользователей, для которых настраивается политика использования sudo.

Runas_Alias — списки пользователей, от имени которых может быть задано выполнение команд через sudo.

Host_Alias — списки узлов, с которых выполняется подключение к системе.

Cmnd_Alias — списки команд, использующиеся в настройках, выполняемых директивами файла /etc/sudoers

Примеры:

Host_Alias ADMCOMPS = localhost, server, admin — определяет псевдоним ADMCOMPS, который определяет группу компьютеров с именами localhost, server, admin.

Host_Alias MAILSERVERS = 192.168.0.100, smtp2 — определяет группу из двух компьютеров с указанными IP и именем. Возможно использование
адресов подсетей.

User_Alias ADMINS = jsmith, admusr — определяет группу ADMINS, в которую входят пользователи с именами jsmith и admusr.

Аналогичным образом можно создать псевдонимы для различных наборов команд, доступных для выполнения в sudo:

## Группа команд, для работы в сети, псевдоним Networking

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

# Группа команд для управления установкой и удалением программ, псевдоним SOFTWARE

Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

# Группа команд для управления системными службами, псевдоним SERVICES

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

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

Основная часть настроек в файле /etc/sudoers задает правила, определяющие, какие пользователи, каких компьютеров, какие команды могут выполнять. Формат записей:

user MACHINE=COMMANDS

user — имена или псевдонимы пользователей.

MACHINE — имена или псевдонимы компьютеров

COMMANDS — секция команд, включающая имена или псевдонимы команд и
дополнительные параметры.

Обычно, в файле /etc/sudoers присутствует директива, разрешающая выполнение пользователю root любых команд при любом подключении к системе:


## Allow root to run any commands anywhere 
root ALL=(ALL) ALL


Аналогичным образом можно разрешить выполнение через sudo всех команд для пользователя, например, с именем user

user ALL=(ALL) ALL

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

user ALL=(ALL) NOPASSWD: /usr/bin/su, /usr/bin/drakxconf — пароль будет запрашиваться при выполнении пользователем user через sudo всех команд, кроме su и drakxconf

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

ADMINS localhost=(ALL) NOPASSWD:ALL — разрешить группе пользователей, определенной псевдонимом “ADMINS” выполнять любые команды при подключении через петлевой интерфейс “localhost” без ввода пароля..

ADMINS ALL= NETWORKING, SOFTWARE — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнять группы команд, объединенные псевдонимами “NETWORKING” и “SOFTWARE”.

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

%users localhost=/sbin/shutdown -h now — разрешить локальным пользователям выключение компьютера.

%operators ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom — разрешить членам группы “operators” монтирование и размонтирование указанных устройств.

%powerusers ALL=NETWORKING, NOPASSWD: /usr/bin/su — разрешить членам группы “powerusers” выполнять команды группы “NETWORKING” с вводом пароля и команду “su” без пароля.

Довольно часто возникает необходимость исключения разрешения на выполнение отдельных команд из списка, объединенных псевдонимом . В этом случае, перед именем команды или псевдонима ставится восклицательный знак – !

ADMINS ALL= ALL, !NETWORKING — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнение всех команд, кроме команд, объединенных псевдонимом “NETWORKING”

В следующем примере, используется конфигурация команд, разрешающая выполнение через sudo для всех пользователей группы “ADMINS”, всех команд, кроме команд смены оболочки :

ADMINS ALL= ALL, !/bin/bash, !/usr/bin/su

Кроме настроек доступа, в файле /etc/sudoers присутствуют директивы Defaults, определяющие некоторые
настройки путей исполняемых файлов и создание переменных окружения при выполнении команд:


Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Defaults env_reset

Defaults env_keep = «COLOS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS»

Defaults env_keep += «MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE»

Defaults env_keep += «LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES»

Defaults env_keep += «LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE»

Defaults env_keep += «LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY»

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


Defaults timestamp_timeout=1

В данном случае, если команда sudo будет выполняться не позже, чем через 1 минуту после ввода пароля для предыдущей команды, то повторно пароль запрашиваться не будет.
Если значение “timestamp_timeout” сделать равным нулю, то пароль будет запрашиваться при каждом запуске sudo, если сделать отрицательным ( -1 ), — то повторный ввод пароля не будет запрашиваться никогда.

Для исключения возможности выполнения sudo-команд при подключении через ssh без авторизации, по умолчанию, должна использоваться команда “ssh –t “:


# Disable «ssh hostname sudo «, because it will show the password in clear.

# You have to run «ssh -t hostname sudo «.

#

Defaults requiretty


Для определения дополнительного каталога с файлами конфигурации пользователей sudo
используется директива:


## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

#includedir /etc/sudoers.d

Подробную справку по использовании sudo можно получить с помощью команд:

man sudo

man sudoers

Сайт проекта sudo ( на английском языке )

Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети














В начало страницы &nbsp &nbsp &nbsp | &nbsp &nbsp &nbsp На главную страницу сайта

Fail2ban ▷ Настройка на Linux: Debian, Ubuntu, CentOS

В этой статье мы вновь вернемся к теме безопасности сервера и расскажем, как защитить VPS при помощи программы Fail2ban. Основное ее предназначение — защита хоста от несанкционированного доступа, что возможно благодаря тщательному отслеживанию сетевой активности на основных портах и чтению журналов записей (лог-файлов). Программа особенно эффективна против так называемых brute-force атак, поскольку она нейтрализует атакующего таким образом, что все пакеты, отправленные с устройства, IP-адрес которого по той или иной причине попал в черный список, отбрасываются. Блокировка настраивается путем внесения изменений в правила iptables. Итак, приступим к настройке арендованного VPS сервера.

Содержание

Установка на Ubuntu 14.04

1. Для установки программы Fail2ban выполните следующие команды:

sudo apt-get update 
sudo apt-get install fail2ban

2. Для того, чтобы установленное программное обеспечение работало должным образом, вам необходимо внести поправки в конфигурационный файл. По умолчанию таковым является /etc/fail2ban/jail.conf.

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

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Далее вам нужно будет выполнять редактирование только /etc/fail2ban/jail.local. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.

3. Откройте файл jail.local для редактирования одной из команд: Если вам удобнее работать с редактором nano:

sudo nano /etc/fail2ban/jail.local

Если для вас предпочтительнее редактор vi:

sudo vi /etc/fail2ban/jail.local

Обратите внимание на секцию [DEFAULT].

Она содержит в себе основные правила, заданные по умолчанию для Fail2ban.

ignoreip — значения этого параметра говорят о том, какие IP-адреса блокироваться не будут вовсе. Если вы хотите, чтобы Fail2ban игнорировал при проверке несколько IP-адресов, их необходимо указать в значении ignoreip через пробел.

bantime — данный параметр означает время в секундах, в течение которого подозрительный IP будет заблокирован. Изначально его значение составляет 10 минут.

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

maxretry — допустимое число неуспешных попыток получения доступа к серверу. При превышении указанного значения IP попадает в бан.

Ниже будут представлены другие секции, при помощи которых можно настроить защиту различных сервисов, установленных на ваш виртуальный сервер, например, ssh, ftp и прочих. Подробная процедура их настройки будет рассмотрена в конце данной статьи в разделе «Настройка Fail2ban».

4. После редактирования jail.local обязательно сделайте перезапуск Fail2ban командами

sudo service fail2ban restart
tail /var/log/fail2ban.log

Установка Fail2ban на CentOS 6.*

1. Чтобы установить программу на виртуальный сервер, выполните поочередно такие команды:

yum update
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install fail2ban

2. По аналогии с п. 2 в инструкции для Ubuntu создайте локальную копию конфигурационного файла и откройте этот файл для редактирования командами:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

3. Активируйте защиту своего VPS там, где нужно, редактируя содержимое jail.local. Подробная инструкция по настройке представлена далее в разделе «Настройка Fail2ban». Внимательно следите за корректностью пути к файлу хранения логов в значении параметра logpath.

4. После редактирования конфигурационного файла перезапустите Fail2ban командой

sudo service fail2ban restart

Установка Fail2ban на Debian 7

1. Установка программы на VPS выполняется следующим набором команд:

apt-get update && apt-get upgrade
sudo apt-get install fail2ban

2. Повторите п. 2 из двух предыдущих разделов для создания локальной копии конфигурационного файла jail.conf:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

3. Настройка алгоритма работы Fail2ban задается точно таким же образом, как и для операционных систем Ubuntu и CentOS. Вам необходимо активировать нужные секции jail.local ([ssh], [apache] и прочие, в зависимости от портов, защиту которых вы хотите активировать) и сохранить результаты редактирования конфигурационного файла. Более подробное описание этой процедуры представлено ниже в разделе «Настройка Fail2ban».

4. После правки конфигурационного файла выполните перезапуск Fail2ban командой

sudo service fail2ban restart

Настройка Fail2ban

Первым делом настройте защиту своего VPS по протоколу SSH при помощи программы Fail2ban. Для этого найдите в файле jail.local секцию [ssh].

Она должна быть активна по умолчанию. Тем не менее, на всякий случай, убедитесь, что в значении параметра enabled установлено true, а не false.

Укажите значения параметров, на основании которых Fail2ban должен выполнять отслеживание активности:

filter — фильтр, который будет использоваться. По умолчанию это /etc/fail2ban/filter.d/sshd.conf;

action — действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d;

logpath — полный путь к файлу, в который будет записываться информация о попытках получения доступа к VPS.

findtime — время в секундах, в течение которого наблюдается подозрительная активность;

maxretry — разрешенное количество повторных попыток подключения к серверу;

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

Стоит обратить внимание на тот факт, что вовсе необязательно прописывать значения вышеуказанных параметров в каждой секции. Если их не упоминать, в действие вступят настройки, указанные в главном разделе [DEFAULT]. Главное, чтобы для переменной enabled было указано значение true.

Защита протокола SSH

Рассмотрим применение параметров реагирования более детально. Пример конфигурации Fail2ban на порту SSH:

[ssh]
enabled = true
port 	= ssh
filter = sshd
action = iptables[name=sshd, port=ssh, protocol=tcp]
	sendmail-whois[name=ssh, dest=****@yandex.ru, sender=fail2ban@***.ru]
logpath = /var/log/auth.log
maxretry = 3
bantime = 600

Запись выше означает, что, если выполнено более 3 неудачных попыток подключения к VPS через основные порты SSH, то IP-адрес, с которого выполнялась авторизация, попадет в бан на 10 минут. Правило запрета будет добавлено в iptables. В то же время владелец сервера получит уведомление на e-mail, указанный в значении переменной dest, о том, что указанный IP был заблокирован за попытку получения несанкционированного доступа по протоколу SSH. Также в сообщении будет указана WHOIS информация о заблокированном IP. Пример такого уведомления от Fail2ban:

Hi,

The IP 61.147.103.113 has just been banned by Fail2Ban after
3 attempts against SSH.

Here are more information about 61.147.103.113:

% [whois.apnic.net]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html

% Information related to '61.147.0.0 - 61.147.255.255'

inetnum: 61.147.0.0 - 61.147.255.255
netname: CHINANET-JS
descr: CHINANET jiangsu province network
descr: China Telecom
descr: A12,Xin-Jie-Kou-Wai Street
descr: Beijing 100088
country: CN
admin-c: CH93-AP
tech-c: CJ186-AP
mnt-by: MAINT-CHINANET
mnt-lower: MAINT-CHINANET-JS
mnt-routes: maint-chinanet-js
changed: [email protected] 20020209
changed: [email protected] 20030306
status: ALLOCATED non-PORTABLE
source: APNIC

role: CHINANET JIANGSU
address: 260 Zhongyang Road,Nanjing 210037
country: CN
phone: +86-25-86588231
phone: +86-25-86588745
fax-no: +86-25-86588104
e-mail: [email protected]
remarks: send anti-spam reports to [email protected]
remarks: send abuse reports to [email protected]
remarks: times in GMT+8
admin-c: Ch460-AP
tech-c: CS306-AP
tech-c: CN142-AP
nic-hdl: CJ186-AP
remarks: www.jsinfo.net
notify: [email protected]
mnt-by: MAINT-CHINANET-JS
changed: [email protected] 20090831
changed: [email protected] 20090831
changed: [email protected] 20090901
source: APNIC
changed: [email protected] 20111114

person: Chinanet Hostmaster
nic-hdl: CH93-AP
e-mail: [email protected]
address: No.31 ,jingrong street,beijing
address: 100032
phone: +86-10-58501724
fax-no: +86-10-58501724
country: CN
changed: [email protected] 20070416
changed: [email protected] 20140227
mnt-by: MAINT-CHINANET
source: APNIC

% Information related to '61.147.0.0/16AS23650'

route: 61.147.0.0/16
descr: CHINANET jiangsu province network
country: CN
origin: AS23650
mnt-by: MAINT-CHINANET-JS
changed: [email protected] 20030414
source: APNIC

% This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (UNDEFINED)

Regards,

Fail2Ban

В качестве значения переменной sender после fail2ban@ укажите домен либо хостнейм VPS.

Важно! Для того чтобы сообщение о блокировке злоумышленника отправлялось на ваш e-mail, необходимо наличие почтового сервера на VPS.

Дополнительно для защиты SSH активируйте следующую секцию:

[ssh-ddos]
enabled = true
port 	= ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2

Для хранения больших списков заблокированных IP-адресов можно использовать комбинацию Netfilter/Iptables и IPsets. Чтобы настроить работу Fai2ban таким образом, активируйте раздел [ssh-iptables-ipset4]:

[ssh-iptables-ipset4]
enabled = true
port 	= ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 300
maxretry = 3
bantime = 600

После правки конфигурационного файла сохраните внесенные изменения.

Аналогичным образом можно защитить и прочие сервисы.

Защита почтового сервера

Ниже представлены примеры настроек конфигурационного файла для защиты почтового сервера postfix.

[postfix]
enabled = true
port 	= smtp,ssmtp,submission
action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp]
filter = postfix
logpath = /var/log/mail.log
bantime = 86400
maxretry = 3
findtime = 3600
ignoreip = 127.0.0.1

Важно! Следите за тем, чтобы путь к файлу хранения логов (logpath) был указан корректно. В противном случае перезапуск Fail2ban завершится сообщением об ошибке. Если какой-то из лог-файлов отсутствует на вашем VPS, вы можете его создать самостоятельно командой touch, например, touch /var/log/mail.log. Обязательно назначьте ему необходимые права доступа командой chmod 755 /var/log/mail.log

[sasl]
enabled = true
port 	= smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = postfix-sasl
action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp]
logpath = /var/log/mail.log
bantime = 86400
maxretry = 3
findtime = 3600

Защиту почтового сервера dovecot можно активировать следующим образом:

[dovecot]
enabled = true
port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap,port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 3
findtime = 3600
bantime = 86400

Пример конфигурации jail.local для защиты roundcube:

[roundcube-auth]
enabled = true
filter = roundcube-auth
port 	= http,https
logpath = /var/log/mail.log
action = iptables-multiport[name=roundcube, port="http,https"]
bantime = 86400
maxretry = 3
findtime = 3600

Защита веб-сервера (apache)

Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:

[apache]
enabled = true
port 	= http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-multiport]
enabled = true
port 	= http,https
filter 	= apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-noscript]
enabled = true
port 	= http,https
filter = apache-noscript
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-overflows]
enabled = true
port 	= http,https
filter = apache-overflows
logpath = /var/log/apache2/error.log
maxretry = 2

Как вы уже могли заметить, в используемых выше секциях файла jail.local отсутствуют значения параметра action. В этом случае при обнаружении атаки на сервис apache программа Fail2ban будет выполнять действие, определенное в секции [DEFAULT], а именно action = iptables-multiport. Это значит, что атакующий IP-адрес будет заблокирован в iptables при помощи так называемого модуля multiports. Модуль multiports позволяет настроить правило сразу для диапазонов портов.

Защита FTP сервера

Для защиты FTP-сервера vsftpd с помощью Fail2ban можно использовать следующие параметры:

[vsftpd]
enabled = true
port 	= ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
action = iptables[name=VSFTPD, port=21, protocol=tcp]
bantime = 600
maxretry = 3
findtime = 1800

Не забудьте о необходимости перезапуска Fail2ban после каждого редактирования конфигурационного файла.

На этом настройка Fail2ban завершена. Ознакомиться с полным списком правил, которыми программа будет руководствоваться при мониторинге активности на вашем VPS, можно с помощью команды sudo iptables –L

Основные моменты по установке и настройке программы рассмотрены. В случае, если какой-то IP-адрес будет заблокирован Fail2ban по ошибке, удалить его из черного списка можно командой:

sudo fail2ban-client set JAIL unbanip IP

Где JAIL — название секции конфигурационного файла jail.local, в соответствии с правилами которой была активирована блокировка, IP — адрес, который нужно разблокировать.

Пример команды разблокировки:

sudo fail2ban-client set ssh-iptables unbanip 61.147.103.113

Как изменить файл Sudoers | Как настроить пользовательские правила

Вступление

Разделение привилегий является одной из фундаментальных парадигм безопасности, реализованных в Linux и Unix-подобных операционных системах. Обычные пользователи работают с ограниченными привилегиями, чтобы уменьшить объем своего влияния на свою собственную среду, а не на более широкую операционную систему.

У специального пользователя, называемого root, есть привилегии суперпользователя. Это административная учетная запись без ограничений, которые имеются у обычных пользователей. Пользователи могут выполнять команды с привилегиями «суперпользователя» или «root» несколькими способами.

В этой статье мы обсудим, как правильно и безопасно получать rootпривилегии, уделяя особое внимание редактированию /etc/sudoersфайла.

Мы выполним эти шаги на сервере Ubuntu 16.04, но большинство современных дистрибутивов Linux должны работать аналогичным образом.

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

Как получить корневые привилегии

Существует три основных способа получения rootпривилегий, которые различаются по уровню сложности.

Вход как корень

Самый простой и самый прямой метод получения rootпривилегий — это просто войти в свой сервер в качестве rootпользователя с самого начала.

Если вы входите на локальный компьютер (или используете вне конфигурированный доступ к консоли, если используете DigitalOcean), просто введите «root» в качестве своего имени в приглашении для входа и введите rootпароль при запросе.

Если вы регистрируетесь через SSH, укажите rootпользователя до IP-адреса или имени домена в строке подключения SSH:

  • ssh root@server_domain_or_IP

Если вы не настроили SSH-ключи для rootпользователя, введите rootпароль при появлении запроса.

Используйте «su», чтобы стать корнем

Вход в систему, как rootправило, не рекомендуется, потому что легко начать использовать систему для не административных задач, что опасно.

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

Мы можем сделать это, вызвав suкоманду, которая означает «заменить пользователя». Чтобы получить rootпривилегии, просто введите:

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

Когда вы закончите задачи, требующие rootпривилегий, вернитесь к нормальной оболочке, набрав:

Используйте «sudo» для выполнения команд как корень

Последний и самый сложный способ получения rootпривилегий, которые мы обсудим, — это sudoкоманда.

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

В отличие от этого susudoкоманда запрашивает пароль пользователя, вызывающего команду, а не rootпароль.

Из-за его последствий для безопасности sudoдоступ по умолчанию не предоставляется пользователям и должен быть настроен до того, как он будет функционировать правильно. Если вы следовали первоначальному руководству по настройке сервера , вы уже выполнили конфигурацию bare-bones.

В следующем разделе мы обсудим, как изменить конфигурацию более подробно.

Что такое Visudo?

Команда sudoнастраивается через файл, расположенный в /etc/sudoers.

Предупреждение

Никогда не редактируйте этот файл с помощью обычного текстового редактора! Всегда используйте visudoкоманду вместо этого!

Поскольку неправильный синтаксис в /etc/sudoersфайле может оставить вас в системе, где невозможно получить повышенные привилегии, важно использовать visudoкоманду для редактирования файла.

Команда visudoоткрывает текстовый редактор, как обычно, но он сохраняет синтаксис файла при сохранении. Это предотвращает ошибки конфигурации из sudoопераций блокировки , которые могут быть единственным способом получения rootпривилегий.

Традиционно visudoоткрывается /etc/sudoersфайл с помощью viтекстового редактора. Однако Ubuntu настроил visudoна использование nanoтекстового редактора.

Если вы хотите изменить его vi, выполните следующую команду:

  • sudo update-alternatives —config editor

Output

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Выберите номер, который соответствует выбору, который вы хотите сделать.

В CentOS вы можете изменить это значение, добавив следующую строку ~/.bashrc:

  • export EDITOR=`which name_of_editor`

Отправьте файл, чтобы выполнить изменения:

После того, как вы настроили visudo, выполните команду для доступа к /etc/sudoersфайлу:

Как изменить файл Sudoers

Вам будет представлен /etc/sudoersфайл в выбранном текстовом редакторе.

Я скопировал и вложил файл из Ubuntu 16.04, удалив комментарии. В /etc/sudoersфайле CentOS есть еще много строк, некоторые из которых мы не будем обсуждать в этом руководстве.

/ и т.д. / sudoers

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

root    ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

Давайте посмотрим, что делают эти строки.

Строки по умолчанию

В первой строке «По умолчанию env_reset» сбрасывается среда терминала для удаления любых пользовательских переменных. Это мера безопасности, используемая для очистки потенциально опасных переменных окружающей среды от sudoсеанса.

Вторая строка Defaults mail_badpassсообщает системе об отправке уведомлений о неудачных sudoпопытках пароля настроенному mailtoпользователю. По умолчанию это rootучетная запись.

Третья строка, начинающаяся с «Defaults secure_path = …», указывает PATH(места в файловой системе, в которой операционная система будет искать приложения), которые будут использоваться для sudoопераций. Это предотвращает использование путей пользователя, которые могут быть вредными.

Пользовательские привилегированные линии

Четвертая строка, определяющая привилегии rootпользователя sudo, отличается от предыдущих строк. Давайте посмотрим, что означают разные поля:

  • root ALL=(ALL:ALL) ALL
    В первом поле указывается имя пользователя, которое правило применимо к ( root).
  • demo ALL=(ALL:ALL) ALL
    Первый «ALL» указывает, что это правило применяется ко всем хостам.
  • demo ALL=(ALL:ALL) ALL
    Это «ВСЕ» указывает, что rootпользователь может запускать команды как все пользователи.
  • demo ALL=(ALL:ALL) ALL
    Это «ВСЕ» указывает, что rootпользователь может запускать команды как все группы.
  • demo ALL=(ALL:ALL) ALL
    Последний «ВСЕ» указывает, что эти правила применяются ко всем командам.

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

Групповые привилегированные линии

Следующие две строки аналогичны линиям привилегий пользователя, но они определяют sudoправила для групп.

Имена, начинающиеся с «%», указывают имена групп.

Здесь мы видим, что группа «admin» может выполнять любую команду как любой пользователь на любом хосте. Аналогичным образом, sudoгруппа может иметь одинаковые привилегии, но может также выполняться как любая группа.

Включена линия /etc/sudoers.d

Последняя строка может выглядеть как комментарий на первый взгляд:

/ и т.д. / sudoers

. . .

#includedir /etc/sudoers.d

Это действительно начать с #, который обычно указывает на комментарий. Однако эта строка фактически указывает, что файлы в /etc/sudoers.dкаталоге будут также получены и применены.

Файлы в этом каталоге соответствуют тем же правилам, что и /etc/sudoersсам файл. Любой файл, который не заканчивается ~и который не имеет .в нем, будет считан и применен к sudoконфигурации.

Это в основном предназначено для приложений для изменения sudoпривилегий при установке. Включение всех связанных правил в один файл в /etc/sudoers.dкаталоге позволяет легко увидеть, какие привилегии связаны с этими учетными записями, и легко ли отменить учетные данные, не пытаясь /etc/sudoersнапрямую манипулировать файлом.

Как и в случае с /etc/sudoersсамим файлом, вы всегда должны редактировать файлы в /etc/sudoers.dкаталоге visudo. Синтаксис для редактирования этих файлов:

  • sudo visudo -f /etc/sudoers.d/file_to_edit

Как предоставить пользователям Sudo привилегии

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

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

Например, на Ubuntu 16.04 sudoгруппа имеет полные права администратора. Мы можем предоставить пользователю эти же привилегии, добавив их в группу следующим образом:

  • sudo usermod -aG sudo username

Команда gpasswdтакже может использоваться:

  • sudo gpasswd -a username sudo

Они оба совершают одно и то же.

В CentOS это обычно wheelгруппа, а не sudoгруппа:

  • sudo usermod -aG wheel username

Или, используя gpasswd:

  • sudo gpasswd -a username wheel

В CentOS, если добавление пользователя в группу не работает сразу, вам может потребоваться отредактировать /etc/sudoersфайл, чтобы раскомментировать имя группы:

/ и т.д. / sudoers

. . .
%wheel ALL=(ALL) ALL
. . .

Как настроить пользовательские правила

Теперь, когда мы знакомы с общим синтаксисом файла, давайте создадим некоторые новые правила.

Как создать псевдонимы

sudoersФайл может быть организован более легко группировать вещи с различными видами «псевдонимы».

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

/ и т.д. / sudoers

. . .
User_Alias      GROUPONE = abby, brent, carl
User_Alias      GROUPTWO = brent, doris, eric, 
User_Alias      GROUPTHREE = doris, felicia, grant
. . .

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

/ и т.д. / sudoers

. . .
GROUPTWO    ALL = /usr/bin/apt-get update
. . .

Если мы не укажем пользователя / группу для запуска, как указано выше, по sudoумолчанию rootпользователю.

Мы можем разрешить членам команды GROUPTHREEзавершить работу и перезагрузить компьютер, создав «псевдоним команды» и используя это в правиле для GROUPTHREE:

/ и т.д. / sudoers

. . .
Cmnd_Alias      POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
GROUPTHREE  ALL = POWER
. . .

Мы создаем псевдоним POWERкоманды, который содержит команды для выключения и перезагрузки компьютера. Затем мы разрешаем членам GROUPTHREEвыполнять эти команды.

Мы также можем создавать псевдонимы «Запуск от имени», которые могут заменить часть правила, определяющего пользователя для выполнения команды как:

/ и т.д. / sudoers

. . .
Runas_Alias     WEB = www-data, apache
GROUPONE    ALL = (WEB) ALL
. . .

Это позволит любому, кто участвует GROUPONEв выполнении команд в качестве www-dataпользователя или apacheпользователя.

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

Как заблокировать правила

Существует несколько способов, которыми вы можете добиться большего контроля над тем, как sudoреагировать на вызов.

Команда, updatedbсвязанная с mlocateпакетом, относительно безвредна для однопользовательской системы. Если мы хотим разрешить пользователям выполнять его с rootпривилегиями без ввода пароля, мы можем сделать следующее правило:

/ и т.д. / sudoers

. . .
GROUPONE    ALL = NOPASSWD: /usr/bin/updatedb
. . .

NOPASSWDявляется «тегом», что означает, что пароль не запрашивается. Он имеет команду сопутствующей команды PASSWD, которая является поведением по умолчанию. Тег релевантен для остальной части правила, если не будет отменен его «близнецом» тегом позже по строке.

Например, у нас может быть такая строка:

/ и т.д. / sudoers

. . .
GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
. . .

Еще один полезный тег NOEXEC, который можно использовать для предотвращения некоторых опасных действий в определенных программах.

Например, некоторые программы, такие как «меньше», могут порождать другие команды, введя это из интерфейса:

!command_to_run

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

Чтобы ограничить это, мы могли бы использовать такую ​​строку:

/ и т.д. / sudoers

. . .
username  ALL = NOEXEC: /usr/bin/less
. . .

Разнообразная информация

Есть еще несколько фрагментов информации, которые могут быть полезны при работе с ними sudo.

Если вы указали, что пользователь или группа «запускаются как» в файле конфигурации, вы можете выполнять команды как те пользователи, используя флаги «-u» и «-g», соответственно:

  • sudo -u run_as_user command
  • sudo -g run_as_group command

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

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

Если, с другой стороны, вы хотите « sudoперенести » команду, чтобы вам не было предложено позже или возобновить sudoаренду, вы всегда можете ввести:

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

Если вам просто интересно, какие права определены для вашего имени пользователя, вы можете ввести:

В этом списке будут указаны все правила в /etc/sudoersфайле, которые применяются к вашему пользователю. Это дает вам представление о том, что вам будет или не будет разрешено делать с sudoлюбым пользователем.

Существует много раз, когда вы выполняете команду, и она терпит неудачу, потому что вы забыли ее предисловие sudo. Чтобы избежать повторного ввода команды, вы можете воспользоваться функцией bash, которая означает «повторить последнюю команду»:

Двойной восклицательный знак повторит последнюю команду. Нам предшествовало sudoбыстрое изменение непривилегированной команды на привилегированную команду.

Для некоторой забавы вы можете добавить следующую строку в свой /etc/sudoersфайл visudo:

/ и т.д. / sudoers

. . .
Defaults    insults
. . .

Это приведет sudoк возврату глупого оскорбления, когда пользователь вводит неверный пароль sudo. Мы можем использовать sudo -kдля очистки предыдущего sudoкэшированного пароля, чтобы попробовать:

Output

[sudo] password for demo:    # enter an incorrect password here to see the results
Your mind just hasn't been the same since the electro-shock, has it?
[sudo] password for demo: 
My mind is going. I can feel it.

Заключение

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

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

Как создать пользователя Sudo в Debian

Команда sudo (сокращение от Super-user do) — это программа, позволяющая пользователям выполнять команды с привилегиями безопасности другого пользователя, по умолчанию — пользователя root.

В этом руководстве мы покажем вам, как создать нового пользователя в системе Debian и предоставить ему доступ sudo.

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

Создайте пользователя sudo #

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

1. Войдите на свой сервер. #

Сначала войдите в систему как пользователь root:

  ssh root @ server_ip_address  

2. Создайте новую учетную запись пользователя. #

Создайте новую учетную запись пользователя с помощью команды adduser . Не забудьте заменить имя пользователя желаемым именем пользователя:

  adduser username  

Команда предложит вам установить и подтвердить новый пароль пользователя.Убедитесь, что пароль для новой учетной записи максимально надежный (комбинация букв, цифр и специальных символов).

  Добавление имени пользователя ...
Добавление новой группы «имя пользователя» (1001) ...
Добавление нового пользователя username (1001) с группой username ...
Создание домашнего каталога `/ home / username '...
Копирование файлов из `/ etc / skel '...
Новый пароль:
Введите повторно новый пароль:
passwd: пароль успешно обновлен
  

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

  Изменение информации о пользователе для имени пользователя
Введите новое значение или нажмите ENTER для значения по умолчанию.
    Полное имя []:
    Номер комнаты []:
    Рабочий телефон []:
    Домашний телефон []:
    Другой []:
Информация верна? [Д / Н]
  

3. Добавьте пользователя в группу

sudo #

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

  usermod -aG sudo username  

Протестируйте доступ sudo #

Переключитесь на вновь созданного пользователя:

  su - username  

Используйте команда sudo для запуска команды whoami :

  sudo whoami  

Если у пользователя есть доступ sudo, то вывод команды whoami будет root :

  root
  

Как использовать sudo #

Чтобы использовать sudo, просто добавьте к команде префикс sudo и пробел:

  sudo ls -l / root  

При первом использовании sudo в сеансе вы будете предлагается ввести пароль пользователя:

  [sudo] пароль для имени пользователя:
  

Заключение #

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Как использовать Sudo в Debian, CentOS и FreeBSD

Используете другую систему?

Использование пользователя sudo для доступа к серверу и выполнения команд на корневом уровне является очень распространенной практикой среди системных администраторов Linux и Unix.Использование пользователя sudo часто связано с отключением прямого корневого доступа к своему серверу, чтобы предотвратить несанкционированный доступ.

В этом руководстве мы рассмотрим основные шаги по отключению прямого корневого доступа, созданию пользователя sudo и настройке группы sudo в CentOS, Debian и FreeBSD.

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

  • Недавно установленный сервер Linux с предпочитаемым вами дистрибутивом.
  • Текстовый редактор, установленный на сервере, будь то nano, vi, vim, emacs.

Шаг 1. Установка sudo

Debian

  apt-get install sudo -y
  

CentOS

  yum install sudo -y
  

FreeBSD

  cd / usr / ports / security / sudo / && make install clean
  

или

  pkg установить sudo
  

Шаг 2. Добавление пользователя sudo

Пользователь sudo — это обычная учетная запись пользователя на машине Linux или Unix.

Debian

  adduser mynewusername
  

CentOS

  adduser mynewusername
  

FreeBSD

  adduser mynewusername
  

Шаг 3: Добавление нового пользователя в колесную группу

(необязательно)

Группа wheel — это группа пользователей, которая ограничивает количество людей, которые могут su получить root-права. Добавление пользователя sudo в группу wheel совершенно необязательно, но желательно.

Примечание: В Debian группа sudo часто встречается вместо wheel . Однако вы можете вручную добавить группу wheel с помощью команды groupadd . В этом руководстве мы будем использовать группу sudo для Debian.

Разница между

wheel и sudo .

В CentOS и Debian пользователь, принадлежащий к группе wheel , может выполнить команду su и напрямую перейти к root .Между тем, пользователь sudo сначала использовал бы sudo su . По сути, нет никакой реальной разницы, за исключением синтаксиса, используемого для того, чтобы стал root , и пользователи, принадлежащие к обеим группам, могут использовать команду sudo .

Debian

  usermod -aG sudo mynewusername
  

CentOS

  usermod -aG wheel mynewusername
  

FreeBSD

  pw group mod wheel -m mynewusername
  

Шаг 4. Убедитесь, что ваш файл

sudoers настроен правильно

Важно убедиться, что файл sudoers , расположенный в / etc / sudoers , настроен правильно, чтобы позволить пользователям sudo эффективно использовать команду sudo .Для этого мы просмотрим содержимое / etc / sudoers и редактируем его, где это возможно.

Debian

  vim / и т. Д. / Sudoers
  

или

  visudo
  

CentOS

  vim / и т. Д. / Sudoers
  

или

  visudo
  

FreeBSD

  vim / и т. Д. / Sudoers
  

или

  visudo
  

Примечание: Команда visudo откроет файл / etc / sudoers с помощью системного текстового редактора (обычно vi или vim) .

Начните просмотр и редактирование ниже этой строки:

  # Разрешить членам группы sudo выполнять любую команду
  

Этот раздел / etc / sudoers часто выглядит так:

  # Разрешить членам группы sudo выполнять любую команду
% sudo ALL = (ВСЕ: ВСЕ) ВСЕ
  

В некоторых системах вы можете не найти % wheel вместо % sudo ; в этом случае это будет строка, под которой вы начнете изменять.

Если строка, начинающаяся с % sudo в Debian или % wheel в CentOS и FreeBSD, не закомментирована (с префиксом #) , это означает, что sudo уже настроен и включен. Затем вы можете перейти к следующему шагу.

Шаг 5. Разрешение пользователю, который не принадлежит ни к группе

wheel , ни к группе sudo , выполнять команду sudo

Можно разрешить пользователю, не входящему ни в одну из групп пользователей, выполнять команду sudo , просто добавив их в / etc / sudoers следующим образом:

  anotherusername ВСЕ = (ВСЕ) ВСЕ
  

Шаг 6. Перезагрузка сервера SSHD

Чтобы применить изменения, внесенные вами в / etc / sudoers , вам необходимо перезапустить сервер SSHD следующим образом:

Debian

  / etc / init.d / sshd перезапуск
  

CentOS 6

  /etc/init.d/sshd перезапуск
  

CentOS 7

  systemctl перезапустить sshd.service
  

FreeBSD

  /etc/rc.d/sshd start
  

Шаг 7: Тестирование

После перезапуска сервера SSH выйдите из системы, а затем снова войдите в нее как пользователь sudo , затем попытайтесь выполнить некоторые команды тестирования следующим образом:

  sudo время безотказной работы
судо whoami
  

Любая из следующих команд позволит пользователю sudo стать root .

  судо су -
судо -i
sudo -S
  

Примечания:

  • Команда whoami вернет root в сочетании с sudo .
  • Вам будет предложено ввести пароль пользователя при выполнении команды sudo , если вы явно не укажете системе не запрашивать пароли у пользователей sudo . Обратите внимание, что это не рекомендуется.

Дополнительно: разрешение

sudo без ввода пароля пользователя

Как объяснялось ранее, это не рекомендуется и включен в данное руководство только в демонстрационных целях.

Чтобы позволить вашему пользователю sudo выполнять команду sudo без запроса пароля, добавьте суффикс строки доступа в / etc / sudoers с NOPASSWD: ALL следующим образом:

 % sudo ВСЕ = (ВСЕ: ВСЕ) ВСЕ NOPASSWD: ВСЕ
  

Примечание: Вам необходимо перезапустить сервер SSHD, чтобы изменения вступили в силу.

Шаг 8: Отключите прямой root-доступ

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

Сначала откройте / etc / ssh / sshd_config с помощью вашего любимого текстового редактора и найдите строку, содержащую следующую строку. Он может иметь префикс # .

  PermitRootLogin
  

Независимо от префикса или значения параметра в / etc / ssh / sshd_config , вам необходимо изменить эту строку на следующее:

  PermitRootLogin нет
  

Наконец, перезапустите сервер SSHD.

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

На этом наш урок завершен.

Хотите внести свой вклад?

Вы можете заработать до 300 $ , добавляя новые статьи

Как установить sudo на минимальный сервер Debian

После установки Debian для работы в качестве сервера вы можете заметить, что в нем отсутствует что-то важное — sudo.Джек Уоллен проведет вас через процесс установки sudo и включения его для пользователя.

Изображение: Джек Уоллен

Debian — отличная платформа для ваших серверов. Когда вы переходите с Debian, вы знаете, что получаете невероятно стабильную и надежную операционную систему, которая была опробована, протестирована и оказалась достаточно хорошей, чтобы служить основой для многих других дистрибутивов Linux.

Однако знаете ли вы, что при установке Debian будет отсутствовать важный пакет — по крайней мере, один, от которого вы, вероятно, стали зависеть при выполнении административных задач в Linux. Этот пакет — sudo. Верно. При установке Debian, если вам нужно позаботиться об административных задачах, вы должны выполнить su для пользователя root (как нам приходилось возвращаться в старые времена), выполнить свои команды, а затем запомнить выход из пользователя root.

Для многих это проблема безопасности, ожидающая своего часа. Если вы попадаете в эту категорию, вы, вероятно, предпочли бы, чтобы ваши серверы Debian включали sudo.Хорошие новости … это не только возможно, это просто.

Я проведу вас через процесс установки sudo на минимальный сервер Debian 8. Вы заметите, что если вы работаете со стандартной установкой Debian (например, с настольной установкой), sudo, вероятно, включен, поэтому вам не придется беспокоиться о такой установке. Но для тех, кто установил минимальную версию Debian, потребуется установка sudo.

См .: Как установить минимальный сервер Debian

Установка sudo

Первое, что необходимо сделать, это установить пакет sudo.Для этого войдите на минимальный сервер Debian как root. Перед установкой sudo давайте обновим и обновим операционную систему с помощью следующих команд:

 apt update
подходящее обновление 

Обратите внимание: при обновлении ядра потребуется перезагрузка, чтобы изменения вступили в силу. Из-за этого вы можете захотеть запустить вышеуказанные команды в непроизводственные периоды, перезагрузить сервер (если применимо), а затем установить sudo позже.

Чтобы установить sudo, введите команду:

 apt install sudo 

После завершения команды устанавливается sudo.Мы еще не закончили. На данный момент единственный пользователь, который может использовать sudo, — это root, и это не отвечает нашим потребностям. Давай изменим это.

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

Чтобы пользователь без полномочий root мог использовать sudo, их нужно либо добавить в файл sudoers с помощью visudo, , либо добавить в группу sudo. Поскольку это Debian, все участники группы sudo имеют полный доступ к sudo. Поэтому вместо того, чтобы возиться с файлом sudoers, мы собираемся добавить наших пользователей в группу sudo.Я всегда считал этот метод более чистым в Debian. Для этого откройте окно терминала su для пользователя root и введите следующую команду:

 usermod -aG sudo ИМЯ ПОЛЬЗОВАТЕЛЯ 

Где USERNAME — имя добавляемого пользователя.

Как только пользователь выйдет из системы и снова войдет в систему, он получит полный доступ к sudo. На этом этапе вам больше не нужно входить на минимальный сервер Debian с правами root, чтобы все было сделано. Войдите в систему как пользователь, принадлежащий к группе sudo, и вы получите полные права администратора на своем сервере.

Важный шаг

Последнее, что вам нужно, — это войти на сервер Debian как пользователь root. Не делай этого. Именно по этой причине был создан sudo — чтобы администраторы не входили в систему как root и не могли оказаться уязвимыми для атак. Установите sudo, добавьте пользователей в эту группу и забудьте об этом корневом пользователе, если в этом нет крайней необходимости. Это важный шаг в обеспечении безопасности вашего сервера Debian.

Информационный бюллетень для инсайдеров по кибербезопасности

Усильте защиту ИТ-безопасности вашей организации, следя за последними новостями, решениями и передовыми практиками в области кибербезопасности.Доставка по вторникам и четвергам

Зарегистрироваться Сегодня

См. Также

Все о Sudo в системе Debian 10 Buster — Linux-совет

Итак, вы недавно перешли на Debian 10, и вам нужен способ для себя или кого-то еще, чтобы иметь возможность выполнять в системе операции с ограниченными правами доступа.Эти операции включают в себя задачи, связанные с информацией и конфиденциальностью, такие как изменение конфигурации системы, управление пользователями, редактирование всех файлов, установка / удаление программного обеспечения и обновление вашей системы и ее компонентов. В качестве первой учетной записи пользователя по умолчанию после установки «root» — самый мощный пользователь Debian, который может выполнять все вышеперечисленное. Хотя имя «root» происходит от доступа и разрешений этого пользователя в корневом каталоге, его также называют администратором, супервизором и суперпользователем.

Итак, если root может делать все, что такое sudo и зачем нам нужны пользователи sudo в нашем Debian?

Sudo или «superuser do» — это набор привилегий, которые администратор / root может предоставить другим пользователям, чтобы они также могли выполнять некоторые операции с ограниченными полномочиями в Debian, сохраняя при этом высокий уровень безопасности и полномочий на система.

Один из способов предоставить пользователям права доступа — просто поделиться с ними корневым паролем, не вдаваясь в суть sudo, но у Linux есть свои причины:

  • Sudo предоставляет временные привилегии пользователям, которые могут быть в любой момент отозваны пользователем root.Если бы вместо этого мы поделились своим корневым паролем, потребовалось бы изменить его, когда привилегии должны были быть прекращены.
  • Постоянная работа с правами суперпользователя не является хорошей практикой безопасности, так как можно по ошибке нарушить важные системные настройки. Поэтому лучше переключиться на sudo, а затем обратно, когда ограниченная операция будет завершена.
  • Все команды, выполняемые как sudo, регистрируются вместе с именем пользователя, который их выполнил. Это обеспечивает подотчетность и аудит для всех таких пользователей

В этой статье мы объясним, как вы можете сделать следующее в системе Debian 10 Buster:

  1. Предоставить пользователю права sudo
  2. Использовать sudo после его предоставления
  3. Удалить привилегию sudo у пользователя
  4. Проверить, какие пользователи имеют права sudo в системе

Примечание: Обратите внимание, что только авторизованный пользователь может выполнять все эти операции в Debian.

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

В большинстве установок Debian по умолчанию не устанавливается утилита sudo. Поэтому сначала мы установим его на наш Debian — от имени администратора. Откройте приложение Терминал через панель поиска Application Launcher, а затем войдите в систему как root с помощью следующей команды:

Система спросит у вас пароль для root; при условии, что вы войдете в систему как root.

Теперь выполните следующие команды, чтобы установить sudo в вашей системе:

# apt-get update
# apt-get install sudo

Утилита sudo теперь должна быть установлена ​​в вашем Debian.

Файл / etc / sudoers содержит список пользователей, имеющих права sudo в системе. Хотя это текстовый файл, мы не рекомендуем открывать его в любом из доступных текстовых редакторов. Одна небольшая ошибка может стоить пользователю доступа к правам sudo навсегда.

Поэтому давайте воспользуемся наиболее предпочтительным и безопасным способом редактирования файла sudoers, выполнив следующую команду:

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

% пользователь ВСЕ = (ВСЕ: ВСЕ) ВСЕ

Я добавил пользователя с именем «sana» в качестве пользователя sudo.Выйдите из файла, нажав Ctrl + X. Затем введите Y, чтобы сохранить измененный файл.

Теперь пользователь помечен как пользователь sudo и может выполнять множество привилегированных операций на вашем Debian.

Как использовать Sudo после того, как он был предоставлен

Войдите в систему как пользователь, которому предоставлены права sudo в Debian, а затем откройте приложение «Терминал». Давайте теперь проверим логин sudo, а также можем ли мы выполнить какие-либо операции с ограниченными полномочиями.

Если вы введете следующую команду для установки проигрывателя VLC, вы получите сообщение об ошибке, показанное на скриншоте:

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

$ sudo apt-get install vlc

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

После проверки как sudo начнется процесс установки, как показано выше.

Как удалить права пользователя Sudo

Процесс удаления пользователя из списка sudoers так же прост, как его добавление. От имени пользователя root или пользователя sudo откройте файл sudoers следующим образом:

Или,

Затем удалите или закомментируйте строку, которая помечает пользователя как sudo.

Сохраните файл, и указанный пользователь больше не распознается системой как авторизованный пользователь sudo.

Как проверить, какие пользователи имеют права Sudo в системе

Это хорошая административная проверка, чтобы время от времени видеть, каким пользователям предоставлены права sudo в системе. Это помогает решить, чей статус sudo следует сохранить, а чей отпустить. Мы ищем способ составить список членов группы «sudo».

Следующее использование команды getent в Linux позволит администратору проверить, какие пользователи имеют права sudo в вашем Debian:

Если вы хотите проверить, является ли определенный пользователь членом группы sudo, вы можете использовать команду Linux groups следующим образом:

Прочитав эту статью, вы не только сможете различать термины sudo, root, администратор, супервизор и т. Д., Но и безопасно управлять тем, которым вы хотите предоставить права sudo в вашем Debian.

Как добавить пользователя в Sudoers в Debian 10 Buster — devconnected

В сегодняшнем руководстве мы увидим, как добавить пользователя в sudoers в дистрибутивах Debian.

Команда sudo позволяет авторизованным пользователям выполнять команды от имени другого пользователя, который по умолчанию является пользователем root.

Есть два способа добавить пользователя в sudoers: вы можете добавить этого пользователя в группу sudo или вы можете добавить этого пользователя в файл sudoers, расположенный по адресу и т. Д.

Вот подробности двух методов.

I — Добавление существующего пользователя в группу sudo

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

  $ apt-get обновить
$ apt-get install sudo  

Первый способ — добавить пользователя в группу sudo.

Для этого воспользуемся командой «usermod» с большой буквы G (для групп)

  $ sudo usermod -a -G пользователь sudo  

Вы также можете использовать команду gpasswd для выдачи прав sudo.

  $ sudo gpasswd -a bob sudo
Добавление пользователя в группу sudo  

Убедитесь, что пользователь принадлежит к группе sudo с помощью команды groups.

  $ su - пользователь
(пароль для пользователя)

$ группы
пользователь sudo  

Теперь вы можете выполнить sudo-запрос в Debian 10.

В зависимости от конфигурации, выбранной вами в процессе установки Debian 10, вы можете иметь или не иметь доступ к учетной записи root. Если вы выбрали пароль для своей учетной записи root, вы сможете подключиться к ней.В противном случае учетная запись администратора по умолчанию — это та, которую вы создали в процессе установки.

II — Добавление существующего пользователя в файл sudoers

Файл sudoers находится по адресу / etc / sudoers .

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

Однако вы никогда не должны изменять файл sudoers с помощью текстового редактора.

Сохранение плохого sudoers может лишить вас возможности когда-либо снова получить права sudo.

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

  $ Судо Визудо  

Это то, что вы должны увидеть.

В конце файла добавьте новую строку для пользователя.

  john ALL = (ВСЕ: ВСЕ) ВСЕ  

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

Однако, если вы хотите удалить эту проверку пароля, вы можете установить опцию NOPASSWD .

  john ALL = (ВСЕ: ВСЕ) NOPASSWD: ALL  

Если вы хотите, чтобы проверка пароля пропускалась на более длительный период времени, вы можете перезаписать параметр timestamp_timeout (в минутах) в вашем файле sudoers.

  # / и т.д. / sudoers
#
# Этот файл ДОЛЖЕН быть отредактирован с помощью команды 'visudo' от имени пользователя root.
#
# См. Справочную страницу для получения подробной информации о том, как написать файл sudoers.#

По умолчанию env_reset
По умолчанию mail_badpass
По умолчанию secure_path = / sbin: / bin: / usr / sbin: / usr / bin
По умолчанию timestamp_timeout = 30  

III — Добавление группы в файл sudoers

Через visudo вы можете добавить всю группу в sudoers.

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

Чтобы добавить группу в файл sudoers, просто добавьте символ процента в начало файла.

 % sysadmins ALL = (ВСЕ: ВСЕ) NOPASSWD: ВСЕ  

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

  $ su - пользователь
$ группы
пользователь sysadmins  

Вы можете проверить свои новые права sudo, изменив пароль, например

  $ sudo пароль  

IV — Наиболее частые ошибки

  • пользователя нет в файле sudoers.Об этом инциденте будет сообщено.

Это стандартное сообщение об ошибке, которое вы получаете, когда пользователь не принадлежит к группе sudo в Debian 10.

При добавлении этого пользователя в файл sudoers в Debian это сообщение об ошибке больше не должно появляться.

Как: настроить sudo в Debian

По-видимому, программа установки Debian не устанавливает и не активирует sudo по умолчанию. Это означает, что команда sudo не найдена, единственный доступный метод повышения привилегий — это стать пользователем root с помощью команды su.Поскольку мне нравится sudo и я использую его ежедневно, я решил установить и настроить его на виртуальной машине Debian.

Установить пакет sudo в Debian

Это самый первый шаг, который вам нужно сделать: использовать apt для установки sudo. Конечно, вам нужно стать пользователем root, прежде чем вы это сделаете (поэтому вы должны знать пароль пользователя root для установки Debian ):

  [адрес электронной почты защищен]: ~ $ su -
Пароль:
[электронная почта защищена]: ~ # apt install sudo
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие НОВЫЕ пакеты:
  судо
0 обновлено, 1 установлено заново, 0 удалено и 0 не обновлено.Необходимо получить 0 B / 1,245 kB архивов.
После этой операции будет использовано 3 886 КБ дополнительного дискового пространства.
Выбор ранее невыбранного пакета sudo.
(Чтение базы данных… В настоящее время установлено 174742 файлов и каталогов.)
Подготовка к распаковке… / sudo_1.8.27-1_amd64.deb…
Распаковка sudo (1.8.27-1)…
Настройка sudo (1.8.27-1)…
Обработка триггеров для man-db (2.8.5-2)…
Обработка триггеров для systemd (241-5)…
[электронная почта защищена]: ~ # sudo
использование: sudo -h | -K | -k | -V
использование: sudo -v [-AknS] [-g группа] [-h хост] [-p приглашение] [-u пользователь]
использование: sudo -l [-AknS] [-g группа] [-h хост] [-p приглашение] [-U пользователь] [-u пользователь] [команда]
использование: sudo [-AbEHknPS] [-r роль] [-t тип] [-C номер] [-g группа] [-h хост] [-p приглашение] [-T тайм-аут] [-u пользователь] [VAR = значение] [-i | -s] []
использование: sudo -e [-AknS] [-r роль] [-t тип] [-C номер] [-g группа] [-h хост] [-p приглашение] [-T тайм-аут] [-u пользователь] файл …  

Настроить файл / etc / sudoers

/ etc / sudoers — это основной файл конфигурации для команды sudo.Он содержит список пользователей и групп, которым разрешено становиться root (или становиться другими пользователями, вызывая команду su от имени root).

Вот файл по умолчанию в Debian 10 Buster:

  [адрес электронной почты защищен]: ~ # cat / etc / sudoers
#
# Этот файл ДОЛЖЕН быть отредактирован с помощью команды 'visudo' от имени пользователя root.
#
# Пожалуйста, рассмотрите возможность добавления локального контента в /etc/sudoers.d/ вместо
# непосредственно изменяя этот файл.
#
# См. Справочную страницу для получения подробной информации о том, как написать файл sudoers.
#
По умолчанию env_reset
По умолчанию mail_badpass
По умолчанию secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
# Спецификация псевдонима хоста
 
# Спецификация псевдонима пользователя
 
# Спецификация псевдонима команды
 
# Спецификация привилегий пользователя
root ВСЕ = (ВСЕ: ВСЕ) ВСЕ
 
# Разрешить членам группы sudo выполнять любую команду
% sudo ALL = (ВСЕ: ВСЕ) ВСЕ
 
# См. Sudoers (5) для получения дополнительной информации о директивах "#include":
#includedir / etc / sudoers.d  

Я выделил 3 наиболее важных элемента этого файла на этой ранней стадии:

  root ALL = (ALL: ALL) ALL  

Это строка, которая позволяет вам отлаживать команды sudo как пользователь root.

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

 % sudo ALL = (ALL: ALL) ALL  

Наконец, эта часть включает дополнительные файлы конфигурации из каталога /etc/sudoers.d:

  #includedir / etc / sudoers.d  

… это означает, что вам не нужно редактировать файл / etc / sudoers , но вместо этого вы можете создать определенный файл в /etc/sudoers.d и назвать его самоописательно, например:

  /etc/sudoers.d/web-server-admins  

означает, что этот файл будет содержать имена пользователей и привилегии, требуемые администраторами веб-сервера (обычно такие команды, как остановка / запуск веб-сервера Apache или nginx).

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

Добавить пользователя в группу sudo

Шаг 1. Прежде чем приступить к работе с

, убедитесь, что sudo недоступен.

Это необходимо запускать от имени обычного пользователя, а не от имени пользователя root:

  [адрес электронной почты защищен]: ~ $ sudo -i
[sudo] пароль для серых:
серого нет в файле sudoers. Об этом инциденте будет сообщено.
[email protected]: ~ $  

Давайте проверим мои группы, чтобы убедиться, что среди них нет sudo:

  [адрес электронной почты защищен]: ~ $ id greys
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)  

Шаг 2: добавьте пользователя в группу sudo

Отлично, теперь пора добавить серых пользователей в группу sudo (мы должны снова стать root, чтобы запустить команду usermod)

  [адрес электронной почты защищен]: ~ # usermod -a -G sudo greys
[электронная почта защищена]: ~ # серого идентификатора
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 27 (sudo), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)  

Как видите, я теперь член группы sudo!

Шаг 3: Выйдите из системы и войдите снова, чтобы членство в группе было распознано

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

  [адрес электронной почты защищен]: ~ $ id
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 27 (sudo), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)  

так что да, мы теперь члены группы sudo… Это момент истины! Попробуем стать root:

  [адрес электронной почты защищен]: ~ $ sudo -i
[электронная почта защищена]: ~ # id
uid = 0 (root) gid = 0 (root) groups = 0 (root)  

На сегодня все!

См. Также

Как добавить пользователя в Sudoers в Debian

При установке новой системы Debian создается учетная запись root по умолчанию.Пользователь root имеет полный доступ к системе и привилегии и может делать в системе практически все, что не может обычный пользователь. Некоторые из задач, выполняемых только пользователем root, включают установку, обновление, обновление и удаление пакетов программного обеспечения, изменение файлов конфигурации, запуск и остановку системных служб, а также завершение работы и перезагрузку сервера. Пользователь root обладает широкими полномочиями, но чрезвычайно опасен, поскольку выполненные действия невозможно отменить. Некоторые команды, если они введены, могут сделать систему непригодной для использования.

Чтобы снизить этот риск, необходимо добавить нового обычного пользователя, а затем назначить пользователю привилегии root для выполнения повседневных административных привилегий, когда это необходимо. Это возможно, введя sudo перед командой, которая временно повысит права пользователя.

В этом руководстве мы расскажем, как создать нового пользователя, а затем добавить пользователя в группу sudoers в Debian.

Шаг 1: Войдите на свой сервер

Для начала войдите на свой сервер Debian как пользователь root через SSH

 # ssh root @ IP-адрес сервера 

Шаг 2. Создайте новую учетную запись пользователя

Чтобы создать нового пользователя в системе Linux, мы собираемся использовать команду adduser , за которой следует имя пользователя

Синтаксис показан ниже:

 # имя пользователя adduser 

В нашем случае мы добавим нового пользователя с именем jack.

 # приводной разъем 

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

Пример вывода

После успешной установки пароля команда запросит у вас дополнительную информацию о пользователе, как показано ниже. Заполните необходимые данные и, наконец, нажмите кнопку «Y» на клавиатуре в конце приглашения, чтобы сохранить изменения.

Если вы хотите опустить всю эту информацию, просто нажмите ENTER , чтобы принять значения по умолчанию.

Информация о новом пользователе хранится в файле / etc / password . Поэтому для просмотра информации о пользователе запустите

 # кот / etc / passwd 

Шаг 3. Добавьте нового пользователя в группу sudoers

Чтобы добавить вновь созданного пользователя в группу sudoers, используйте команду usermod, как показано в синтаксисе ниже:

 # usermod -aG имя пользователя sudo 

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

 # usermod -aG Судо Джек 

Вы можете проверить, добавлен ли пользователь в группу sudo, выполнив команду id.

Следующий вывод показывает, что пользователь jack добавлен в группу sudo:

 # id jack
uid = 1000 (jack) gid = 1000 (jack) группы = 1000 (jack), 27 (sudo) 

Вы также можете использовать команду gpasswd для добавления пользователя в группу sudo.

В следующем примере я добавил пользователя johnny в группу sudo с помощью gpasswd:

 # gpasswd -a Джонни Судо
Добавление пользователя johnny в группу sudo 

Примечание. Если вы получаете сообщение «sudo: command not found», установите пакет sudo с помощью apt-get:

 $ apt-get install sudo 

Шаг 4: Тестирование пользователя с помощью sudo

Последний шаг — подтверждение, есть ли у нового пользователя привилегии sudo.

Переключитесь на нового пользователя, как показано

 # su - домкрат 

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

 $ судо whoami 

Далее следует список из нескольких моментов, о которых следует помнить, работая как пользователь root.

Добавить комментарий

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