110.1 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
110 Безпека |
Тема: |
110.1 Виконання завдань з адміністрування безпеки |
Урок: |
1 з 1 |
Вступ
Безпека є обов’язковою умовою адміністрування системи. Як хороший системний адміністратор Linux, ви повинні стежити за низкою речей, таких як спеціальні дозволи на файли, застарілі паролі користувачів, відкриті порти та сокети, обмеження використання системних ресурсів, робота з користувачами, які ввійшли в систему, і підвищення привілеїв за допомогою su
і sudo
. На цьому уроці ми розглянемо кожну з цих тем.
Перевірка файлів із набором SUID і SGID
Крім традиційного набору дозволів read, write і execute, файли в системі Linux також можуть мати деякі спеціальні дозволи, такі як SUID або SGID-біти.
SUID-біт дозволить запустити файл із правами власника файлу. У числовому форматі він представлений як 4000
і символьно представлений s
або S
у біті дозволу execute власника. Класичним прикладом виконуваного файлу з набором SUID-дозволів є passwd
:
carol@debian:~$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 63736 jul 27 2018 /usr/bin/passwd
s
у нижньому регістрі в rws
вказує на наявність SUID у файлі разом із дозволом execute. Велике S
натомість (rwS
) означає, що основний дозвіл execute не встановлено.
Note
|
Ви дізнаєтесь про |
З іншого боку, SGID-біт можна встановити як для файлів, так і для каталогів. З файлами його поведінка еквівалентна SUID, але привілеї належать власнику групи. Однак, якщо його встановити для каталогу, він дозволить усім створеним у ньому файлам успадкувати право власності на групу каталогу. Подібно до SUID, SGID символьно представлено або s
, або S
у біті дозволу execute групи. У числовому форматі він представлений як 2000
. Ви можете встановити SGID для каталогу за допомогою chmod
. Ви повинні додати 2
(SGID) до традиційних дозволів (755
у нашому випадку):
carol@debian:~$ ls -ld shared_directory drwxr-xr-x 2 carol carol 4096 may 30 23:55 shared_directory carol@debian:~$ sudo chmod 2755 shared_directory/ carol@debian:~$ ls -ld shared_directory drwxr-sr-x 2 carol carol 4096 may 30 23:55 shared_directory
Щоб знайти файли зі встановленим SUID чи SGID або з обома, ви можете скористатися командою find
і опцією -perm
. Ви можете використовувати як числові, так і символьні значення. Значення, у свою чергу, можуть передаватися окремо або перед ними ставитися тире (-
) або коса риска (/
). Суть полягає в наступному:
-perm numeric-value
або-perm symbolic-value
-
знайти файли виключно зі спеціальним дозволом
-perm -numeric-value
або-perm -symbolic-value
-
знайти файли зі спеціальним дозволом та іншими дозволами
-perm /numeric-value
або-perm /symbolic-value
-
знайти файли зі спеціальним дозволом (та іншими дозволами)
Наприклад, щоб знайти файли з тільки SUID, встановленим у поточному робочому каталозі, ви скористаєтеся такою командою:
carol@debian:~$ find . -perm 4000 carol@debian:~$ touch file carol@debian:~$ chmod 4000 file carol@debian:~$ find . -perm 4000 ./file
Зауважте, що, оскільки файлів для яких встановлено тільки SUID не було, ми створили файл, щоб показати яким буде результат. Ви можете виконати цю ж команду в символьному позначенні:
carol@debian:~$ find . -perm u+s ./file
Щоб знайти файли, що відповідають SUID (незалежно від будь-яких інших дозволів) у каталозі /usr/bin/
, ви можете використати одну з наступних команд:
carol@debian:~$ sudo find /usr/bin -perm -4000 /usr/bin/umount /usr/bin/newgrp /usr/bin/gpasswd /usr/bin/chfn /usr/bin/mount /usr/bin/passwd /usr/bin/chsh /usr/bin/sudo /usr/bin/su carol@debian:~$ sudo find /usr/bin -perm -u+s /usr/bin/umount /usr/bin/newgrp /usr/bin/gpasswd /usr/bin/chfn /usr/bin/mount /usr/bin/passwd /usr/bin/chsh /usr/bin/sudo /usr/bin/su
Якщо ви шукаєте файли в одному каталозі з установленим SGID-бітом, ви можете виконати find /usr/bin/ -perm -2000
або find /usr/bin/ -perm -g+s
.
Нарешті, щоб знайти файли з будь-яким із двох спеціальних дозволів, додайте 4
і 2
і використовуйте /
:
carol@debian:~$ sudo find /usr/bin -perm /6000 /usr/bin/dotlock.mailutils /usr/bin/umount /usr/bin/newgrp /usr/bin/wall /usr/bin/ssh-agent /usr/bin/chage /usr/bin/dotlockfile /usr/bin/gpasswd /usr/bin/chfn /usr/bin/mount /usr/bin/passwd /usr/bin/chsh /usr/bin/expiry /usr/bin/sudo /usr/bin/bsd-write /usr/bin/crontab /usr/bin/su
Керування паролями та старіння
Як зазначено вище, ви можете використовувати утиліту passwd
, щоб змінити свій власний пароль як звичайний користувач. Крім того, ви можете передати опцію -S
або --status
, щоб отримати інформацію про статус вашого облікового запису:
carol@debian:~$ passwd -S carol P 12/07/2019 0 99999 7 -1
Ось розбивка семи полів, які ви отримуєте у вихідних даних:
carol
-
Ім’я користувача для входу.
P
-
Вказує, що користувач має дійсний пароль (
P
); інші можливі значення:L
для заблокованого пароля таNP
для відсутності пароля. 07.12.2019
-
Дата останньої зміни пароля.
0
-
Мінімальний вік у днях (мінімальна кількість днів між змінами пароля). Значення
0
означає, що пароль можна змінити в будь-який час. 99999
-
Максимальний вік у днях (максимальна кількість днів, протягом яких пароль дійсний). Значення
99999
вимкне термін дії пароля. 7
-
Період попередження в днях (кількість днів до закінчення терміну дії пароля, коли користувач отримає попередження).
-1
-
Період неактивності пароля в днях (кількість неактивних днів після закінчення терміну дії пароля до блокування облікового запису). Значення
-1
видалить неактивний обліковий запис.
Окрім звітування про стан облікового запису, ви використовуватимете команду passwd
як користувач root, щоб здійснювати базове обслуговування облікового запису. Ви можете заблокувати та розблокувати облікові записи, змусити користувача змінити свій пароль під час наступного входу та видалити пароль користувача за допомогою опцій -l
, -u
, -e
та -d
відповідно.
Щоб перевірити ці параметри, тут зручно ввести команду su
. За допомогою su
ви можете змінити користувачів під час сеансу входу. Отже, наприклад, використаємо passwd
як root, щоб заблокувати пароль для carol
. Потім ми зайдемо як carol
і перевіримо стан нашого облікового запису, щоб переконатися, що пароль — насправді — заблоковано (L
) і його неможливо змінити. Нарешті, повернувшись до користувача root, ми розблокуємо пароль для carol
:
root@debian:~# passwd -l carol passwd: password expiry information changed. root@debian:~# su - carol carol@debian:~$ passwd -S carol L 05/31/2020 0 99999 7 -1 carol@debian:~$ passwd Changing password for carol. Current password: passwd: Authentication token manipulation error passwd: password unchanged carol@debian:~$ exit logout root@debian:~# passwd -u carol passwd: password expiry information changed.
Крім того, ви також можете заблокувати та розблокувати пароль користувача за допомогою команди usermod
:
- Заблокувати пароль користувача
carol
-
usermod -L carol
абоusermod --lock carol
. - Розблокувати пароль користувача
carol
-
usermod -U carol
абоusermod --unlock carol
.
Note
|
За допомогою перемикачів |
Окрім passwd
і usermod
, найпрямішою командою для роботи з паролем і старінням облікового запису є chage
(“змінити вік”). Як root ви можете передати chage
перемикач -l
(або --list
), а потім ім’я користувача, щоб на екрані виводилися поточний пароль користувача та інформація про закінчення терміну дії облікового запису; як звичайний користувач, ви можете переглядати власну інформацію:
carol@debian:~$ chage -l carol Last password change : Aug 06, 2019 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Запустіть команду chage
без параметрів і лише після імені користувача. Тоді вона поводитиметься інтерактивно:
root@debian:~# chage carol Changing the aging information for carol Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2020-06-01]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
Варіанти зміни різних налаштувань chage
є такими:
-m days username
або--mindays days username
-
Вкажіть мінімальну кількість днів між змінами пароля (наприклад:
chage -m 5 carol
). Значення0
дозволить користувачеві змінити свій пароль у будь-який час. -M days username
або--maxdays days username
-
Вкажіть максимальну кількість днів, протягом яких пароль буде дійсним (наприклад:
chage -M 30 carol
). Щоб вимкнути термін дії пароля, прийнято надавати цій опції значення99999
. -d days username
або--lastday days username
-
Вкажіть кількість днів після останньої зміни пароля (наприклад:
chage -d 10 carol
). Значення0
змусить користувача змінити свій пароль під час наступного входу. -W days username
або--warndays days username
-
Вкажіть кількість днів, протягом яких користувачеві буде нагадано про закінчення терміну дії пароля.
-I days username
або--inactive days username
-
Вкажіть кількість неактивних днів після закінчення терміну дії пароля (наприклад:
chage -I 10 carol
) — те саме, щоusermod -f
абоusermod --inactive
. Коли ця кількість днів мине, обліковий запис буде заблоковано. Проте зі значенням0
обліковий запис не буде заблоковано. -E date username
або--expiredate date username
-
Вкажіть дату (або кількість днів з епохи — 1 січня 1970 року), коли обліковий запис буде заблоковано. Зазвичай він виражається у форматі
YYYY-MM-DD
(наприклад:chage -E 2050-12-13 carol
).
Note
|
Ви можете дізнатися більше про |
Виявлення відкритих портів
Коли справа доходить до спостереження за відкритими портами, у більшості систем Linux присутні чотири потужні утиліти: lsof
, fuser
, netstat
і nmap
. Ми розглянемо їх у цьому розділі.
lsof
означає “список відкритих файлів”, що не дрібниця, враховуючи, що для Linux все є файлом. Насправді, якщо ви введете lsof
у терміналі, ви отримаєте великий список звичайних файлів, файлів пристроїв, сокетів тощо. Однак для цього уроку ми зосередимося переважно на портах. Щоб надрукувати список усіх мережних файлів “Internet”, запустіть lsof
з опцією -i
:
root@debian:~# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 357 root 7u IPv4 13493 0t0 UDP *:bootpc sshd 389 root 3u IPv4 13689 0t0 TCP *:ssh (LISTEN) sshd 389 root 4u IPv6 13700 0t0 TCP *:ssh (LISTEN) apache2 399 root 3u IPv6 13826 0t0 TCP *:http (LISTEN) apache2 401 www-data 3u IPv6 13826 0t0 TCP *:http (LISTEN) apache2 402 www-data 3u IPv6 13826 0t0 TCP *:http (LISTEN) sshd 557 root 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED) sshd 569 carol 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED)
Окрім служби bootpc
, яка використовується DHCP, вихідні дані показують дві служби, які прослуховують з’єднання — ssh
і веб-сервер Apache (http
), а також два встановлені з’єднання SSH. Ви можете вказати певний хост за допомогою запису @ip-address
, щоб перевірити наявність його з’єднань:
root@debian:~# lsof -i@192.168.1.7 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 557 root 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED) sshd 569 carol 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED)
Note
|
Щоб вивести лише мережні файли IPv4 та IPv6, використовуйте параметри |
Так само ви можете фільтрувати за портом, передавши опцію -i
(або -i@ip-address
) аргументу :port
:
root@debian:~# lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 389 root 3u IPv4 13689 0t0 TCP *:ssh (LISTEN) sshd 389 root 4u IPv6 13700 0t0 TCP *:ssh (LISTEN) sshd 557 root 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED) sshd 569 carol 3u IPv4 14701 0t0 TCP 192.168.1.7:ssh->192.168.1.4:60510 (ESTABLISHED)
Кілька портів розділяються комами (діапазони вказуються через тире):
root@debian:~# lsof -i@192.168.1.7:22,80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 705 root 3u IPv4 13960 0t0 TCP 192.168.1.7:ssh->192.168.1.4:44766 (ESTABLISHED) sshd 718 carol 3u IPv4 13960 0t0 TCP 192.168.1.7:ssh->192.168.1.4:44766 (ESTABLISHED)
Note
|
Кількість опцій, доступних для |
Наступною у списку мережних команд є fuser
. Її головна мета полягає в тому, щоб знайти “користувача файлу”, що передбачає знання того, які процеси отримують доступ до яких файлів; вона також надає іншу інформацію, наприклад тип доступу. Наприклад, щоб перевірити поточний робочий каталог, достатньо запустити fuser
. Однак, щоб отримати трохи більше інформації, зручно використовувати параметр verbose (-v
або --verbose
):
root@debian:~# fuser . /root: 580c root@debian:~# fuser -v . USER PID ACCESS COMMAND /root: root 580 ..c.. bash
Розберемо результат:
- File
-
Файл, про який ми отримуємо інформацію (
/root
). - Стовпець
USER
-
власник файлу (
root
). СтовпецьPID
: Ідентифікатор процесу (580
). - Стовпець
ACCESS
-
Тип доступу (
..c..
). Один з:c
-
Поточний каталог.
e
-
Запускається виконуваний файл.
f
-
Відкрити файл (пропущено в режимі відображення за замовчуванням).
F
-
Відкрити файл для запису (пропущено в режимі відображення за замовчуванням).
r
-
Кореневий каталог.
m
-
mmap-файл або спільна бібліотека.
.
-
Заповнювач (пропущено в режимі відображення за замовчуванням).
- Стовпець
COMMAND
-
Команда, пов’язана з файлом (
bash
).
За допомогою параметра -n
(або --namespace
) ви можете знайти інформацію про мережні порти/сокети. Ви також повинні вказати мережний протокол і номер порту. Таким чином, щоб отримати інформацію про веб-сервер Apache, ви запустите таку команду:
root@debian:~# fuser -vn tcp 80 USER PID ACCESS COMMAND 80/tcp: root 402 F.... apache2 www-data 404 F.... apache2 www-data 405 F.... apache2
Note
|
|
Тепер перейдемо до netstat
. netstat
— це дуже універсальний мережевий інструмент, який переважно використовується для виведення “мережної статистики”.
Без опцій netstat
відображатиме як активні підключення до Інтернету, так і сокети Unix. Через розмір виведеного списку ви можете захотіти передати його вихідні дані через less
:
carol@debian:~$ netstat |less Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.1.7:ssh 192.168.1.4:55444 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 10509 /run/systemd/journal/syslog unix 3 [ ] DGRAM 10123 /run/systemd/notify (...)
Щоб вивести лише порти та сокети, які “прослуховуються”, використовуйте параметри -l
або --listening
. Параметри -t
/--tcp
і -u
/--udp
можна додати для фільтрації за протоколом TCP і UDP відповідно (їх також можна поєднати в одній команді). Так само -e
/--extend
покаже додаткову інформацію:
carol@debian:~$ netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:bootpc 0.0.0.0:* carol@debian:~$ netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]:http [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:smtp [::]:* LISTEN carol@debian:~$ netstat -lute Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN root 13729 tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN root 14372 tcp6 0 0 [::]:http [::]:* LISTEN root 14159 tcp6 0 0 [::]:ssh [::]:* LISTEN root 13740 tcp6 0 0 localhost:smtp [::]:* LISTEN root 14374 udp 0 0 0.0.0.0:bootpc 0.0.0.0:* root 13604
Якщо ви не вкажете опцію -l
, будуть показані лише встановлені з’єднання:
carol@debian:~$ netstat -ute Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 0 192.168.1.7:ssh 192.168.1.4:39144 ESTABLISHED root 15103
Якщо вас цікавить лише числова інформація про порти та хости, ви можете використати опцію -n
або --numeric
, щоб вивести лише номери портів та IP-адреси. Зверніть увагу, як ssh
перетворюється на 22
при додаванні -n
до команди вище:
carol@debian:~$ netstat -uten Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 0 192.168.1.7:22 192.168.1.4:39144 ESTABLISHED 0 15103
Як можете бачити, ви можете створити дуже корисні та продуктивні команди netstat
, комбінуючи деякі з її параметрів. Перегляньте man-сторінки, щоб дізнатися більше та знайти комбінації, які найкраще відповідають вашим потребам.
Нарешті, ми представимо nmap
— або “network mapper”. Ще одна дуже потужна утиліта, цей сканер портів виконується шляхом зазначення IP-адреси або імені хоста:
root@debian:~# nmap localhost Starting Nmap 7.70 ( https://nmap.org ) at 2020-06-04 19:29 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000040s latency). Other addresses for localhost (not scanned): ::1 Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Окрім одного хосту, nmap
дозволяє сканувати:
- декілька хостів
-
розділивши їх пробілами(наприклад,
nmap localhost 192.168.1.7
). - діапазони хостів
-
за допомогою тире (наприклад,
nmap 192.168.1.3-20
). - підмережі
-
за допомогою символу підстановки або нотації CIDR (наприклад,
nmap 192.168.1.*
абоnmap 192.168.1.0/24
). Ви можете виключити окремі хости(наприклад,nmap 192.168.1.0/24 --exclude 192.168.1.7
).
Щоб просканувати певний порт, скористайтеся опцією -p
, а потім номером порту або назвою служби (nmap -p 22
і nmap -p ssh
дадуть той самий результат):
root@debian:~# nmap -p 22 localhost Starting Nmap 7.70 ( https://nmap.org ) at 2020-06-04 19:54 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.000024s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
Ви також можете сканувати кілька портів або діапазонів портів, використовуючи коми та тире відповідно:
root@debian:~# nmap -p ssh,80 localhost Starting Nmap 7.70 ( https://nmap.org ) at 2020-06-04 19:58 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.000051s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
root@debian:~# nmap -p 22-80 localhost Starting Nmap 7.70 ( https://nmap.org ) at 2020-06-04 19:58 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.000011s latency). Other addresses for localhost (not scanned): ::1 Not shown: 57 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 1.47 seconds
Ще два важливі та зручні параметри nmap
:
-F
-
запустити швидке сканування 100 найпоширеніших портів.
-v
-
отримати докладне виведення (
-vv
виведе ще більш докладний результат).
Note
|
|
Обмеження на логіни користувачів, процеси та використання пам’яті
Ресурси в системі Linux не безмежні, тому як системний адміністратор ви повинні забезпечити хороший баланс між обмеженнями користувачів на ресурси та належним функціонуванням операційної системи. ulimit
може допомогти вам у цьому.
ulimit
має справу з м’якими і жорсткими обмеженнями, визначеними параметрами -S
і -H
відповідно. Без параметрів або аргументів ulimit
відобразить блоки програмного файлу поточного користувача:
carol@debian:~$ ulimit unlimited
З опцією -a
ulimit
покаже всі поточні м’які обмеження (те саме, що -Sa
); щоб відобразити всі поточні жорсткі обмеження, використовуйте -Ha
:
carol@debian:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 (...) carol@debian:~$ ulimit -Ha core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 (...)
Доступні ресурси оболонки визначаються такими параметрами, як:
-b
-
максимальний розмір буфера сокета
-f
-
максимальний розмір файлів, записаних оболонкою та її дочірніми елементами
-l
-
максимальний розмір, який можна заблокувати в пам’яті
-m
-
максимальний розмір резидентного набору (RSS) — поточна частина пам’яті, яку зберігає процес в основній пам’яті (RAM)
-v
-
максимальний обсяг віртуальної пам’яті
-u
-
максимальна кількість процесів, доступних для одного користувача
Таким чином, щоб відобразити обмеження, ви будете використовувати ulimit
, за яким слідує опція -S
(м’який) або -H
(жорсткий) і параметр ресурсу; якщо не вказано ні -S
, ні -H
, будуть показані м’які обмеження:
carol@debian:~$ ulimit -u 10000 carol@debian:~$ ulimit -Su 10000 carol@debian:~$ ulimit -Hu 15672
Подібним чином, щоб установити нові обмеження для певного ресурсу, ви вкажете -S
або -H
, а потім відповідний параметр ресурсу та нове значення. Це значення може бути числом або спеціальними словами soft
(поточний м’який ліміт), hard
(поточний жорсткий ліміт) або unlimited
(без обмеження). Якщо не вказано ні -S
, ні -H
, буде встановлено обидва обмеження. Наприклад, давайте спочатку прочитаємо поточне значення максимального розміру для файлів, написаних оболонкою та її дочірніми елементами:
root@debian:~# ulimit -Sf unlimited root@debian:~# ulimit -Hf unlimited
Тепер давайте змінимо значення з unlimited
на 500
блоків, не вказуючи ні -S
, ні -H
. Зверніть увагу, як змінюються м’які та жорсткі обмеження:
root@debian:~# ulimit -f 500 root@debian:~# ulimit -Sf 500 root@debian:~# ulimit -Hf 500
Нарешті, ми зменшимо лише м’яке обмеження до 200
блоків:
root@debian:~# ulimit -Sf 200 root@debian:~# ulimit -Sf 200 root@debian:~# ulimit -Hf 500
Жорсткі обмеження може збільшити лише користувач root. З іншого боку, звичайні користувачі можуть зменшувати жорсткі обмеження та збільшувати м’які обмеження до значення жорстких обмежень. Щоб зробити нові граничні значення постійними під час перезавантаження, ви повинні записати їх у файл /etc/security/limits.conf
. Цей файл також використовується адміністратором для застосування обмежень для окремих користувачів.
Note
|
Майте на увазі, що не існує man-сторінки |
Робота з зареєстрованими користувачами
Інша ваша робота як системного адміністратора передбачає відстеження користувачів, які ввійшли в систему. Є три утиліти, які можуть допомогти вам із цими завданнями: last
, who
і w
.
last
виводить список останніх користувачів, які входили в систему, з найновішою інформацією вгорі:
root@debian:~# last carol pts/0 192.168.1.4 Sat Jun 6 14:25 still logged in reboot system boot 4.19.0-9-amd64 Sat Jun 6 14:24 still running mimi pts/0 192.168.1.4 Sat Jun 6 12:07 - 14:24 (02:16) reboot system boot 4.19.0-9-amd64 Sat Jun 6 12:07 - 14:24 (02:17) (...) wtmp begins Sun May 31 14:14:58 2020
Враховуючи скорочений лістинг, ми отримуємо інформацію про двох останніх користувачів у системі. Перші два рядки розповідають нам про користувача carol
; наступні два рядки про користувача mimi
. Інформація така:
-
Користувач
carol
на терміналіpts/0
з хосту192.168.1.4
розпочав свій сеансSat Jun 6
о14:25
і все щезнаходиться в ній (logged in)
. Система з використанням ядра4.19.0-9-amd64
була запущена (reboot system boot
)Sat Jun 6
о 14:24` ідосі працює (still running)
. -
Користувач
mimi
на терміналіpts/0
з хоста192.168.1.4
розпочала свою сесіюSat Jun 6
в12:07
і закінчила об14:24
(сесія тривала загалом(02:16)
години). Система — використовуючи ядро4.19.0-9-amd64
— запустилася (reboot system boot
)Sat Jun 6
в12:07
і вимкнулася14:24
(загалом вона працювала(02:17)
години).
Note
|
Рядок |
Ви можете передати команді last
ім’я користувача, щоб відображалися лише записи для цього користувача:
root@debian:~# last carol carol pts/0 192.168.1.4 Sat Jun 6 14:25 still logged in carol pts/0 192.168.1.4 Sat Jun 6 12:07 - 14:24 (02:16) carol pts/0 192.168.1.4 Fri Jun 5 00:48 - 01:28 (00:39) (...)
Щодо другого стовпця (терміналу), pts
означає Pseudo Terminal Slave — на відміну від TeleTYpewriter або tty
терміналу; 0
відноситься до першого (рахунок починається з нуля).
Note
|
Щоб перевірити помилкові спроби входу, запустіть |
Утиліти who
і w
зосереджені на користувачах, які зараз увійшли в систему, і вони досить схожі. Перша показує, хто ввійшов, а друга також показує інформацію про те, що вони роблять.
Без параметрів who
відобразить чотири стовпці, що відповідають користувачу, який увійшов у систему, терміналу, даті й часу та імені хоста:
root@debian:~# who carol pts/0 2020-06-06 17:16 (192.168.1.4) mimi pts/1 2020-06-06 17:28 (192.168.1.4)
who
приймає низку опцій, серед яких можна виділити наступні:
-b
,--boot
-
Показати час останнього завантаження системи.
-r
,--runlevel
-
Показати поточний рівень виконання.
-H
,--heading
-
Друкує заголовки стовпців.
Порівняно з who
, w
дає трохи докладнішу інформацію:
root@debian:~# w 17:56:12 up 40 min, 2 users, load average: 0.04, 0.12, 0.09 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT carol pts/0 192.168.1.4 17:16 1.00s 0.15s 0.05s sshd: carol [priv] mimi pts/1 192.168.1.4 17:28 15:08 0.05s 0.05s -bash
У верхньому рядку надається інформація про поточний час (17:56:12
), як довго система працює (up 40 min
), кількість користувачів, які зараз увійшли в систему (2 users
) і значення середнього навантаження (load average: 0.04, 0.12, 0.09
). Ці значення відносяться до кількості завдань у черзі виконання, усередненої за останні 1, 5 і 15 хвилин відповідно.
Потім ви знайдете вісім колонок; давайте розберемо їх:
USER
-
Логін користувача.
TTY
-
Назва терміналу, на якому перебуває користувач.
FROM
-
Віддалений хост, з якого користувач увійшов.
LOGIN@
-
Час входу.
IDLE
-
Час простою.
JCPU
-
Час, використаний усіма процесами, підключеними до tty (включно з поточними фоновими завданнями).
PCPU
-
Час, використаний поточним процесом (той, що відображається під
WHAT
). WHAT
-
Командний рядок поточного процесу.
Подібно до who
, ви можете передати w
імена користувачів:
root@debian:~# w mimi 18:23:15 up 1:07, 2 users, load average: 0.00, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT mimi pts/1 192.168.1.4 17:28 9:23 0.06s 0.06s -bash
Базова конфігурація та використання sudo
Як уже зазначалося в цьому уроці, su
дозволяє вам переключитися на будь-якого іншого користувача в системі, якщо ви введете пароль цільового користувача. У випадку користувача root повідомлення пароля (багатьом) користувачам створює ризик для системи та є дуже поганою практикою безпеки. Основним використанням su
є su - target-username
. Однак, якщо змінити на root, цільове ім’я користувача є необов’язковим:
carol@debian:~$ su - root Password: root@debian:~# exit logout carol@debian:~$ su - Password: root@debian:~#
Використання тире (-
) забезпечує завантаження цільового середовища користувача. Без нього старе середовище користувача буде збережено:
carol@debian:~$ su Password: root@debian:/home/carol#
З іншого боку, є команда sudo
. За допомогою неї ви можете виконати команду як користувач root або будь-який інший користувач. З точки зору безпеки, sudo є набагато кращим варіантом, ніж su, оскільки вона має дві основні переваги:
-
щоб запустити команду від імені root, вам не потрібен пароль користувача root, а лише пароль користувача, який її викликає, відповідно до політики безпеки. Політикою безпеки за замовчуванням є
sudoers
, як зазначено в/etc/sudoers
і/etc/sudoers.d/*
. -
sudo
дозволяє запускати окремі команди з підвищеними привілеями замість того, щоб запускати цілком нову підоболонку для root, як це робитьsu
.
Основним використанням sudo
є sudo -u target-username command
. Однак, щоб запустити команду від імені користувача root, параметр -u target-username
не потрібен:
carol@debian:~$ sudo -u mimi whoami mimi carol@debian:~$ sudo whoami root
Note
|
|
Файл /etc/sudoers
Головний конфігураційний файл sudo
's — це /etc/sudoers
(існує також каталог /etc/sudoers.d
). Це місце, де визначаються привілеї користувачів sudo
. Іншими словами, тут ви вказуєте, хто може виконувати які команди, а саме які користувачі на яких машинах, а також інші налаштування. Використовується такий синтаксис:
carol@debian:~$ sudo less /etc/sudoers (...) # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL (...)
Специфікація привілеїв для користувача root така: ALL=(ALL:ALL) ALL
. Це перекладається так: користувач root (root
) може входити з усіх хостів (ALL
), як усі користувачі та всі групи ((ALL:ALL)
), і виконувати всі команди (ALL
). Те саме стосується членів групи sudo
— зверніть увагу, як назви груп ідентифікуються, починаючи зі знака відсотка (%
).
Таким чином, щоб користувач carol
міг перевіряти статус apache2
з будь-якого хосту як будь-який користувач або група, ви додасте такий рядок у файл sudoers
:
carol ALL=(ALL:ALL) /usr/bin/systemctl status apache2
Можливо, ви захочете позбавити carol
незручності від необхідності вводити свій пароль для запуску команди systemctl status apache2
. Для цього ви зміните рядок, щоб він виглядав так:
carol ALL=(ALL:ALL) NOPASSWD: /usr/bin/systemctl status apache2
Скажімо, тепер ви хочете обмежити свої хости 192.168.1.7 і ввімкнути carol
для запуску systemctl status apache2
від імені користувача mimi
. Ви б змінили рядок таким чином:
carol 192.168.1.7=(mimi) /usr/bin/systemctl status apache2
Тепер ви можете перевірити статус веб-сервера Apache як користувач mimi
:
carol@debian:~$ sudo -u mimi systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-09 13:12:19 CEST; 29min ago (...)
Якщо carol
має бути підвищено до системного адміністратора, і ви хочете надати їй усі привілеї, найпростішим підходом було б включити її до спеціальної групи sudo
з usermod
і опцією -G
(ви також можете хочете використовувати опцію -a
, яка гарантує, що користувача не буде видалено з інших груп, до яких він може належати):
root@debian:~# sudo useradd -aG sudo carol
Note
|
У сімействі дистрибутивів Red Hat група |
Замість того, щоб безпосередньо редагувати /etc/sudoers
, вам слід просто використати команду visudo
від імені користувача (наприклад: visudo
), яка відкриє /etc/sudoers
за допомогою попередньо визначеного текстового редактора. Щоб змінити текстовий редактор за замовчуванням, ви можете додати опцію editor
як налаштування Defaults
в /etc/sudoers
. Наприклад, щоб змінити редактор на nano
, потрібно додати такий рядок:
Defaults editor=/usr/bin/nano
Note
|
Крім того, ви можете вказати текстовий редактор за допомогою змінної середовища |
Окрім користувачів і груп, ви також можете використовувати псевдоніми в /etc/sudoers
. Ви можете визначити три основні категорії псевдонімів: псевдоніми хостів (Host_Alias
), псевдоніми користувача (User_Alias
) і псевдоніми команд (Cmnd_Alias
). Ось приклад:
# Host alias specification Host_Alias SERVERS = 192.168.1.7, server1, server2 # User alias specification User_Alias REGULAR_USERS = john, mary, alex User_Alias PRIVILEGED_USERS = mimi User_Alias ADMINS = carol, %sudo, PRIVILEGED_USERS, !REGULAR_USERS # Cmnd alias specification Cmnd_Alias SERVICES = /usr/bin/systemctl * # User privilege specification root ALL=(ALL:ALL) ALL ADMINS SERVERS=SERVICES # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Розглядаючи цей зразок файлу sudoers
, давайте пояснимо три типи псевдонімів трохи детальніше:
- Псевдоніми хостів
-
включають список розділених комами імен хостів, IP-адрес, а також мереж і мережних груп (перед ними стоїть
+
). Також можна вказати мережні маски. Псевдонім хостаSERVERS
містить IP-адресу та два імені хостів:Host_Alias SERVERS = 192.168.1.7, server1, server2
- Псевдоніми користувачів
-
включають розділений комами список користувачів, визначений як імена користувачів, групи (починаються з
%
) і мережних груп (перед+
). Ви можете виключити окремих користувачів за допомогою!
. Псевдонім користувачаADMINS
, наприклад, включає користувачаcarol
, членів групиsudo
і тих членів псевдоніма користувачаPRIVILEGE_USERS
, які не належать до псевдоніму користувачаREGULAR_USERS
:User_Alias ADMINS = carol, %sudo, PRIVILEGED_USERS, !REGULAR_USERS
- Псевдоніми команд
-
включають список команд і каталогів, розділених комами. Якщо вказано каталог, будь-який файл у цьому каталозі буде включено, але підкаталоги ігноруватимуться. Псевдонім команди
SERVICES
включає одну команду з усіма її підкомандами, як зазначено зірочкою (*
):Cmnd_Alias SERVICES = /usr/bin/systemctl *
У результаті специфікації псевдоніма рядок ADMINS SERVERS=SERVICES
у розділі User privilege specification
інтерпретується як: усі користувачі, що належать до ADMINS
, можуть використовувати sudo
для запуску будь-якої команди в SERVICES
на будь-якому сервері в SERVERS
.
Note
|
Існує четвертий тип псевдонімів, які можна включити в |
Вправи до посібника
-
Заповніть наступну таблицю щодо спеціальних дозволів:
Спеціальний дозвіл Числове представлення Символьне представлення Знайти файли з лише цим дозволом SUID
SGID
-
Відображення файлів із лише встановленим бітом
SUID
абоSGID
зазвичай не дуже практично. Виконайте такі завдання, щоб довести, що ваші пошуки можуть бути продуктивнішими:-
Знайдіть усі файли з
SUID
(та іншими дозволами), встановленими в/usr/bin
: -
Знайдіть усі файли з
SGID
(та іншими дозволами), встановленими в/usr/bin
: -
Знайдіть усі файли з
SUID
абоSGID
, встановленими в/usr/bin
:
-
-
chage
дозволяє змінити інформацію про закінчення терміну дії пароля користувача. Як root заповніть наступну таблицю, вказавши правильні команди для користувачаmary
:Значення Команди chage
Зробіть пароль дійсним протягом 365 днів.
Примусьте користувача змінити пароль під час наступного входу.
Установіть мінімальну кількість днів між змінами пароля на 1.
Вимкніть термін дії пароля.
Дозвольте користувачу змінити свій пароль у будь-який час.
Встановіть період попередження на 7 днів і термін дії облікового запису до 20 серпня 2050 року.
Роздрукуйте інформацію про термін дії поточного пароля користувача.
-
Заповніть наступну таблицю відповідною мережевою утилітою:
Дія Команда(и) Показати мережні файли для хоста 192.168.1.55 на порту 22 за допомогою
lsof
.Показати процеси, які звертаються до стандартного порту веб-сервера Apache на вашій машині за допомогою
fuser
.Перерахувати всі udp сокети, які прослуховуються, на вашій машині за допомогою
netstat
.Просканувати порти від
80
до443
на хості192.168.1.55
за допомогоюnmap
. -
Виконайте такі завдання щодо резидентного розміру (RSS) і
ulimit
як звичайний користувач:-
Відображення м’яких обмежень на максимальний RSS:
-
Показати жорсткі обмеження на максимальний RSS:
-
Встановіть м’які обмеження на максимальний RSS до 5000 кілобайт:
-
Встановіть жорсткі обмеження на максимальний RSS до 10 000 кілобайт:
-
Нарешті, спробуйте збільшити жорстке обмеження на максимальний RSS до 15 000 кілобайт. Ви можете зробити це? Чому?
-
-
Розгляньте наступний рядок виведення команди
last
і дайте відповіді на запитання:carol pts/0 192.168.1.4 Sun May 31 14:16 - 14:22 (00:06)
-
Чи
carol
підключилася з віддаленого хосту? Чому? -
Як довго тривала сесія
carol
? -
Чи була
carol
підключена через справжній класичний текстовий термінал? Чому?
-
-
Розгляньте наступну частину файлу
/etc/sudoers
і дайте відповідь на запитання нижче.# Host alias specification Host_Alias SERVERS = 192.168.1.7, server1, server2 # User alias specification User_Alias REGULAR_USERS = john, mary, alex User_Alias PRIVILEGED_USERS = mimi User_Alias ADMINS = carol, %sudo, PRIVILEGED_USERS, !REGULAR_USERS # Cmnd alias specification Cmnd_Alias WEB_SERVER_STATUS = /usr/bin/systemctl status apache2 # User privilege specification root ALL=(ALL:ALL) ALL ADMINS SERVERS=WEB_SERVER_STATUS # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Чи може
alex
перевірити статус веб-сервера Apache на будь-якому хості? Чому?
Дослідницькі вправи
-
Крім
SUID
іSGID
, існує третій спеціальний дозвіл: sticky bit. Зараз він переважно використовується в таких каталогах, як/tmp
, щоб запобігти звичайним користувачам видаляти або переміщувати файли, окрім своїх власних. Виконайте такі завдання:-
Встановіть sticky bit на
~/temporal
: -
Знайдіть каталоги з sticky bit (та будь-якими іншими дозволами), встановленими у вашому домашньому каталозі:
-
Зніміть sticky bit з
~/temporal
:
-
-
Коли пароль користувача заблоковано за допомогою
passwd -l username
абоusermod -L username
, як ви можете дізнатися про це, переглянувши файл/etc/shadow
? -
Яка команда
usermod
є аналогомchage -E date username
абоchage --expiredate date username
? -
Надайте дві різні команди
nmap
для сканування всіх 65535 портів на локальному хості:
Підсумки
У цьому уроці ви навчилися виконувати низку завдань адміністрування безпеки. Були розглянуті наступні теми:
-
Пошук файлів зі спеціальним набором дозволів
SUID
іSGID
. -
Встановлення та зміна паролів користувачів і робота з інформацією про вік паролів.
-
Використання низки мережних утиліт для виявлення відкритих портів на хостах/мережах.
-
Встановлення обмежень на системні ресурси.
-
Перевірка користувачів, які входили до системи або які зараз увійшли в систему.
-
Базове використання та конфігурація
sudo
(через файл/etc/sudoers
).
Команди та файли, які розглянуто в цьому уроці:
find
-
Шукати файли в ієрархії каталогів.
passwd
-
Змінити пароль користувача.
chmod
-
Змінити біти режиму файлу.
chage
-
Змінити інформацію про термін дії пароля користувача.
lsof
-
Вивести перелік відкритих файлів.
fuser
-
Ідентифікація процесів за допомогою файлів або сокетів.
netstat
-
Виведення мережних підключень.
nmap
-
Інструмент дослідження мережі та сканер портів.
ulimit
-
Отримати та встановити ліміти користувачів.
/etc/security/limits.conf
-
Файл конфігурації для застосування обмежень для користувачів.
last
-
Вивести список останніх користувачів, які входили в систему.
lastb
-
Вивести список невдалих спроб входу.
/var/log/wtmp
-
База даних логінів користувачів.
who
-
Показати, хто ввійшов.
w
-
Показати, хто ввійшов і що вони роблять.
su
-
Змінити користувача або стати суперкористувачем.
sudo
-
Виконати команду від імені іншого користувача (включаючи суперкористувача).
/etc/sudoers
-
Файл конфігурації за умовчанням для політики безпеки
sudo
.
Відповіді до вправ посібника
-
Заповніть наступну таблицю щодо спеціальних дозволів:
Спеціальний дозвіл Числове представлення Символьне представлення Знайти файли з лише цим дозволом SUID
4000
s
,S
find -perm 4000
,find -perm u+s
SGID
2000
s
,S
find -perm 2000
,find -perm g+s
-
Відображення файлів із лише встановленим бітом
SUID
абоSGID
зазвичай не дуже практично. Виконайте такі завдання, щоб довести, що ваші пошуки можуть бути продуктивнішими:-
Знайдіть усі файли з
SUID
(та іншими дозволами), встановленими в/usr/bin
:find /usr/bin -perm -4000
абоfind /usr/bin -perm -u+s
-
Знайдіть усі файли з
SGID
(та іншими дозволами), встановленими в/usr/bin
:find /usr/bin -perm -2000
абоfind /usr/bin -perm -g+s
-
Знайдіть усі файли з
SUID
абоSGID
, встановленими в/usr/bin
:find /usr/bin -perm /6000
-
-
chage
дозволяє змінити інформацію про закінчення терміну дії пароля користувача. Як root заповніть наступну таблицю, вказавши правильні команди для користувачаmary
:Значення Команди chage
Зробіть пароль дійсним протягом 365 днів.
chage -M 365 mary
,chage --maxdays 365 mary
Примусьте користувача змінити пароль під час наступного входу.
chage -d 0 mary
,chage --lastday 0 mary
Установіть мінімальну кількість днів між змінами пароля на 1.
chage -m 1 mary
,chage --mindays 1 mary
Вимкніть термін дії пароля.
chage -M 99999 mary
,chage --maxdays 99999 mary
Дозвольте користувачу змінити свій пароль у будь-який час.
chage -m 0 mary
,chage --mindays 0 mary
Встановіть період попередження на 7 днів і термін дії облікового запису до 20 серпня 2050 року.
chage -W 7 -E 2050-08-20 mary
,chage --warndays 7 --expiredate 2050-08-20 mary
Роздрукуйте інформацію про термін дії поточного пароля користувача.
chage -l mary
,chage --list mary
-
Заповніть наступну таблицю відповідною мережевою утилітою:
Дія Команда(и) Показати мережні файли для хоста 192.168.1.55 на порту 22 за допомогою
lsof
.lsof -i@192.168.1.55:22
Показати процеси, які звертаються до стандартного порту веб-сервера Apache на вашій машині за допомогою
fuser
.fuser -vn tcp 80
,fuser --verbose --namespace tcp 80
Перерахувати всі udp сокети, які прослуховуються, на вашій машині за допомогою
netstat
.netstat -lu
,netstat --listening --udp
Просканувати порти від
80
до443
на хості192.168.1.55
за допомогоюnmap
.nmap -p 80-443 192.168.1.55
-
Виконайте такі завдання щодо резидентного розміру (RSS) і
ulimit
як звичайний користувач:-
Відображення м’яких обмежень на максимальний RSS:
ulimit -m
,ulimit -Sm
-
Показати жорсткі обмеження на максимальний RSS:
ulimit -Hm
-
Встановіть м’які обмеження на максимальний RSS до 5000 кілобайт:
ulimit -Sm 5000
-
Встановіть жорсткі обмеження на максимальний RSS до 10 000 кілобайт:
ulimit -Hm 10000
-
Нарешті, спробуйте збільшити жорстке обмеження на максимальний RSS до 15 000 кілобайт. Ви можете зробити це? Чому?
Ні. Після встановлення звичайні користувачі не можуть збільшити жорсткі обмеження.
-
-
Розгляньте наступний рядок виведення команди
last
і дайте відповіді на запитання:carol pts/0 192.168.1.4 Sun May 31 14:16 - 14:22 (00:06)
-
Чи
carol
підключилася з віддаленого хосту? Чому?Так, IP-адреса віддаленого хоста вказана в третьому стовпці.
-
Як довго тривала сесія
carol
?Шість хвилин (як показано в останньому стовпчику).
-
Чи була
carol
підключена через справжній класичний текстовий термінал? Чому?Ні,
pts/0
у другому стовпці вказує на те, що підключення було здійснено через графічний емулятор терміналу (він же Pseudo Terminal Slave).
-
-
Розгляньте наступну частину файлу
/etc/sudoers
і дайте відповідь на запитання нижче.# Host alias specification Host_Alias SERVERS = 192.168.1.7, server1, server2 # User alias specification User_Alias REGULAR_USERS = john, mary, alex User_Alias PRIVILEGED_USERS = mimi User_Alias ADMINS = carol, %sudo, PRIVILEGED_USERS, !REGULAR_USERS # Cmnd alias specification Cmnd_Alias WEB_SERVER_STATUS = /usr/bin/systemctl status apache2 # User privilege specification root ALL=(ALL:ALL) ALL ADMINS SERVERS=WEB_SERVER_STATUS # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Чи може
alex
перевірити статус веб-сервера Apache на будь-якому хості? Чому?Ні, оскільки він є членом
REGULAR_USERS
, а ця група користувачів виключена зADMINS
; єдині користувачі (крімcarol
, членів групиsudo
іroot
), які можуть запускатиsystemctl status apache2
наSERVERS
.
Відповіді до дослідницьких вправ
-
Крім
SUID
іSGID
, існує третій спеціальний дозвіл: sticky bit. Зараз він переважно використовується в таких каталогах, як/tmp
, щоб запобігти звичайним користувачам видаляти або переміщувати файли, окрім своїх власних. Виконайте такі завдання:-
Встановіть sticky bit на
~/temporal
:chmod +t temporal
,chmod 1755 temporal
-
Знайдіть каталоги з sticky bit (та будь-якими іншими дозволами), встановленими у вашому домашньому каталозі:
find ~ -perm -1000
,find ~ -perm /1000
-
Зніміть sticky bit з
~/temporal
:chmod -t temporal
,chmod 0755 temporal
-
-
Коли пароль користувача заблоковано за допомогою
passwd -l username
абоusermod -L username
, як ви можете дізнатися про це, переглянувши файл/etc/shadow
?Знак оклику з’явиться у другому полі одразу після імені користувача, якого це стосується (наприклад,
mary:!$6$gOg9xJgv…
). -
Яка команда
usermod
є аналогомchage -E date username
абоchage --expiredate date username
?usermod -e date username
,usermod --expiredate date username
-
Надайте дві різні команди
nmap
для сканування всіх 65535 портів на локальному хості:nmap -p 1-65535 localhost
таnmap -p- localhost