Чому користувачеві «bin» потрібна оболонка для входу?


27

Під час аудиту /var/log/auth.logодного з моїх публічних веб-серверів я виявив таке:

Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure; 
    logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53  user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53 
    port 50647 ssh2

Спочатку рум'яна виглядає як типовий sshспам для входу від випадкових хакерів; проте, придивившись ближче, я помітив щось інше. Більшість провалених /var/log/auth.logзаписів invalid userв них кажуть , як ця:

Jan  9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales 
    from 123.212.43.5 port 10552 ssh2

Занепокоєння цього невдалого повідомлення для входу binполягає в тому, що він є дійсним користувачем, у /etc/passwdякого навіть є оболонка для входу:

[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh

Я думав , що покрив все облікові за замовчуванням , які можуть Ввійти віддалено , коли я відключив PermitRootLoginв /etc/ssh/sshd_config; відкриття цього запису відкрило нові можливості в моєму параноїдальному розумі. Якщо якимось чином служби підпадали bin, то віддалено можливо, що хтось міг якось вставити ssh ключ у binкаталог користувача із запущеної служби на коробці, тому я хотів би повністю відключити вхід для binкористувача, якщо це можливо.

Запитання

  • Цей сервер віддалений і дорогий для виправлення (тобто я заплачу за віддалені руки, щоб підключити KVM, плюс прокат KVM). Я намагаюся розібратися, що можу зламати, якщо я зміню /etc/passwdзапис на binтакий:

    bin:x:2:2:bin:/bin:/bin/false

  • Я запустив наступні команди, намагаючись розібратися, для чого binпотрібно ... Однак у цих командах не було файлів, і я не міг знайти жодних процесів, якими володіє bin. Що все-таки робить binкористувач?

    $ sudo find / -group bin

    $ sudo find / -user bin

  • Чи є інші користувачі, яким слід встановити оболонки для входу /bin/false? FYI, я вже /bin/falseна www-data.

  • Я занадто параноїчний?

Я запускаю Debian, якщо це має значення.


Питання, пов’язане з цим, є unix.stackexchange.com/questions/485505 .
JdeBP

Відповіді:


22

Користувач, який має дійсну оболонку і не має пароля, все ще може входити в систему методами, що не базуються на паролях, найпоширенішим є ключ ssh. Дійсна оболонка необхідна для виконання завдань cron. Дійсна оболонка також необхідна для su bin -c 'wibble'роботи (принаймні, на Linux su bin -s /bin/sh -c 'wibble'також буде працювати).

У випадку з binбільшістю систем ніколи не виконується команда, як binу звичайній роботі, тому встановлення оболонки /bin/falseбуло б нормальним.

Немає ризику будь-якої прямої атаки, що дозволить binувійти через SSH, оскільки це вимагатиме створення /bin/.ssh/authorized_keysяк користувача binабо як root. Іншими словами, єдиний спосіб ввійти - це бути. Однак наявність дійсної оболонки збільшує ризик неправильної конфігурації. Він також може дозволити деякі віддалені атаки іншими службами, ніж SSH; наприклад, користувач повідомляє, що зловмисник може встановити пароль daemonдистанційно через Samba, а потім використовувати цей пароль для входу через SSH.

Ви можете підключити отвір SSH, перерахувавши імена користувачів системи в DenyUsersдирективі /etc/ssh/sshd_config(на жаль, не можете використовувати числовий діапазон). Або, навпаки, ви можете ввести AllowGroupsдирективу і дозволити лише тим групам, які містять фізичних користувачів (наприклад, usersякщо ви надаєте всім фізичним користувачам цю групу).

У Debian ( №274229 , № 330882 , № 581899 ) є помилки , які наразі відкриті та віднесені до списку бажань. Я схильний погоджуватися, що це помилки і користувачі системи повинні мати /bin/falseсвою оболонку, якщо не здається, що потрібно інакше.


6

Вам не доведеться турбуватися про них як користувачів. Вони є "користувачами" в розумінні груп безпеки, а не користувачами в сенсі "вхід і використання" людей. Якщо ви заглянете в "/ etc / shadow", ви побачите, що всі ці "користувачі" не мають паролів ("x" або "!" Замість довгосоленого хешу). Це означає, що ці користувачі не можуть увійти, незважаючи ні на що.

З цього приводу я не знаю, чи корисно змінити "/ bin / sh" на "/ bin / false" для всіх цих користувачів. Оскільки програми працюють під цими групами, це може не дати їм виконувати команди, які їм потрібно. Я б залишив їх як "/ bin / sh".

Не потрібно турбуватися про цих користувачів. Дбайте лише про створених вами користувачів (і тих, хто має хеші в "/ etc / shadow")


1
Справедлива думка про відсутність хешу /etc/shadow, але якщо служба працює як користувач, теоретично можливо, хтось вставить sshключ для входу, ні?
Майк Пеннінгтон

Тільки якщо вони вже увійшли до вашого облікового запису з привілеями root ... в такому випадку ці користувачі найменше хвилюються :-P
Кріс,

Я не впевнений, що згоден з усіма переліченими вами обмеженнями. Якби це було правдою, відкриті rpcdпорти не були б проблемою; однак я особисто був свідком результатів віддаленого подвигу на старій машині Solaris, куди зловмисник отримав доступ через rpcексплуатацію на коробці. rhostsбув увімкнутий та записаний цим rpcкористувачем (не пам'ятаю більше конкретних даних ... це було років тому) ... Так само, якщо вони можуть зробити ~/.ssh/authorized_keysдля користувача, який міг би увійти, тоді це все ще здається ризиком (навіть без пароль в /etc/shadow)
Майк Пеннінгтон

Так, але цей подвиг був не через SSH. Програми зазвичай виконуються під власним користувачем (як ви вже говорили). Експлоатація в програмі (наприклад, експлуатування переповнення буфера) може змусити зловмисного користувача отримати доступ до оболонки, до якої ця програма має доступ. Однак цій програмі потрібен такий доступ, щоб робити все, що призначена для виконання цієї програми (інакше вона не може отримати доступ до речей, які їй потрібні). Ось чому важливо забезпечити правильність встановлення дозволів. Експлуатація демона rpc - досить велика проблема, яку можна вирішити оновленням програмного забезпечення (або обмеженням).
Кріс

1
Вибачте, вибігла з кімнати. Зміна оболонки, до якої може отримати доступ програма, усуває цю проблему, але це створює більше проблем із тим, що програма насправді повинна робити. Я подумав, що ви спочатку мали на увазі, що зловмисний користувач може запустити SSH через того користувача, якого він не може (якщо я не встановив ключ, як я вважаю, як ви сказали). Ви можете вирішити цю невелику проблему шляхом, в sshd_config, поставивши "AllowUsers <username> <username> ...", щоб дозволити доступ лише SSH конкретним користувачам.
Кріс

1

Я вважаю, що це не проблема, оскільки для того, щоб встановити відкритий ключ SSH у binдомашньому каталозі ( /bin), зловмисник повинен мати кореневий доступ до файлової системи, а це означає, що ви все одно перекручені.

Якщо ви хочете, ви можете відключити всі методи аутентифікації для binкористувача в конфігурації sshd за допомогою MatchUserблоку.

Однак це виглядає так, що користувач bin не використовується в сучасних системах, що виробляються в Debian, і є суто киданням традицій або існує для дотримання деяких стандартів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.