Где лежат пароли в базе 1С 8.3 и как закрыть их от подбора
Содержание
1С:Предприятие 8.3 не хранит пароли пользователей в открытом виде. В самой информационной базе, в служебной таблице пользователей, лежит только хеш пароля — результат одностороннего преобразования. При входе платформа хеширует введённый пароль и сравнивает результат с сохранённым. Поэтому ни администратор, ни программист не может «посмотреть» пароль сотрудника, а только назначить новый.
Слабое место не в том, как 1С обеспечивает безопасность хеша, а вокруг него: открытый доступ к файлу базы, пароли в ярлыках и скриптах, общий логин к СУБД, отсутствие политики сложности. Механизм общий для платформы и одинаков в Бухгалтерии, ЗУП, УТ и других типовых конфигурациях.
Где лежит список пользователей и что в нём записано
Пользователи информационной базы — это объекты платформы, а не справочник конфигурации. Их видно в Конфигураторе: Администрирование → Пользователи. Справочник «Пользователи» в режиме 1С:Предприятие (в конфигурациях на БСП) лишь связан с ними и хранит дополнительные сведения
: ФИО, физлицо, группы доступа.
Физически список хранится внутри базы, в служебной таблице V8Users:
- 📁 файловая база — внутри файла
1Cv8.1CD, рядом с данными учёта; - 🗄️ клиент-серверная база
— таблица
v8usersв базе данных на MS SQL Server или PostgreSQL.
В записи пользователя лежат имя, полное имя, признак «Показывать в списке выбора», способы аутентификации, роли, основной интерфейс и язык. Пароль представлен хешем. Сама запись дополнительно закодирована, поэтому прочитать её обычным SELECT в понятном виде не выйдет.
Из этого следуют три практических вывода:
- Пользователи переезжают вместе с базой. Выгрузка
.dtсодержит их список и хеши паролей. - Тот, кто скопировал файл
1Cv8.1CDили резервную копию, унёс с собой и хеши всех пользователей. - Файл
ibases.v8iсо списком баз на рабочем месте паролей не содержит — там только пути и параметры подключения.
Если пользователь видит в окне входа заполненное имя, это не «сохранённый пароль». Платформа запоминает последнее введённое имя на компьютере, а пароль спрашивает каждый раз, если он задан.
Как устроен хеш пароля и почему он не вечен
Хеш — это строка фиксированной длины, из которой нельзя математически получить исходный пароль. Но если пароль простой, его можно подобрать: перебрать миллионы вариантов, захешировать каждый и сравнить с сохранённым значением.
В публичных разборах платформы 8.x описано, что в записи пользователя хранится хеш SHA-1 без соли, причём два значения: от пароля как он есть и от пароля в верхнем регистре. SHA-1 считается быстрым алгоритмом, а отсутствие соли означает, что одинаковые пароли дают одинаковый хеш в любой базе. Для перебора это удобно: пароль из 6 цифр по такому хешу подбирается на обычном компьютере за секунды.
В новых версиях платформы механизм хранения и проверки усиливали. Точную схему для своей сборки смотрите в описании изменений версии платформы. Практический вывод от версии не зависит:
| Длина и состав пароля | Стойкость к подбору по украденному хешу |
|---|---|
| 6 цифр, дата рождения, «123456» | подбирается практически сразу |
| 8 символов, только строчные буквы | часы, иногда минуты |
| 10–12 символов: буквы разного регистра, цифры, знаки | для перебора уже непрактично |
| Фраза из 4–5 случайных слов | непрактично и легко запоминается |
Хеш защищает пароль, только пока сам пароль сложный и файл базы не попал в чужие руки. Поэтому дальше всё сводится к двум задачам: не давать доступа к хешам и не допускать простых паролей.
Аутентификация в клиент-серверной базе: какие пароли где
В клиент-серверном варианте паролей несколько, и их часто путают. Каждый хранится в своём месте.
| Учётная запись | Для чего | Где хранится |
|---|---|---|
| Пользователь информационной базы | вход в 1С | хеш в таблице v8users базы данных |
| Пользователь СУБД (например, логин SQL) | подключение сервера 1С к базе данных | в настройках кластера, в реестре сервера 1С |
| Администратор кластера | управление кластером через консоль или rac | в реестре кластера |
| Администратор центрального сервера | управление агентом сервера | в реестре кластера |
Пользователь 1С никогда не подключается к SQL напрямую. Клиент обращается к агенту сервера 1С (порт 1540), тот передаёт его менеджеру кластера (1541) и рабочим процессам. К СУБД ходит уже рабочий процесс сервера 1С под логином, который указали при создании базы в поле пользователя сервера баз данных.
Реестр кластера — это файл 1CV8Clst.lst в каталоге службы, по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541\. В нём лежат параметры баз, включая данные для подключения к СУБД. Доступ к каталогу srvinfo должен быть только у учётной записи службы сервера 1С и администраторов.
Отдельный способ входа — аутентификация операционной системы. Пользователю 1С сопоставляют доменную учётную запись Windows, и вход идёт без ввода пароля 1С. В этом случае пароль 1С можно не задавать вовсе, а политику сложности и блокировку обеспечивает домен.
Если у пользователя включены оба способа (1С:Предприятие и ОС), пароль 1С всё равно работает. Простой пароль при включённой доменной аутентификации — открытая дверь для входа с чужого компьютера.
Политики паролей и блокировка при переборе
Требования к паролям задают в двух местах: на уровне платформы и в самой конфигурации.
Параметры платформы
В Конфигураторе откройте Администрирование → Параметры информационной базы. Там задаются:
- 🔢 минимальная длина пароля пользователей;
- 🔐 проверка сложности пароля — платформа не примет пароль, похожий на имя пользователя или на простую последовательность, и потребует символы разных групп: строчные и прописные буквы, цифры, знаки;
- 🚫 в свежих версиях платформы — защита от перебора: число неудачных попыток входа и время блокировки после них.
Набор полей в этом окне зависит от версии платформы: на старых сборках последних пунктов может не быть.
Настройки в конфигурациях на БСП
В Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых конфигурациях есть свой набор параметров: Администрирование → Настройки пользователей и прав → Настройки входа. Здесь обычно настраивают отдельно для внутренних и внешних пользователей:
- минимальную длину и требование сложного пароля;
- срок действия пароля и предупреждение о его окончании;
- запрет повторять несколько последних паролей;
- автоматический запрет входа для пользователей, которые долго не заходили.
Настройки конфигурации работают поверх платформенных: платформа проверяет свои параметры при любой смене пароля, конфигурация добавляет свои правила при смене через её формы.
Сброс пароля и восстановление доступа
Пароль в 1С нельзя восстановить, его можно только заменить. Порядок зависит от того, кто остался с правами администратора.
Администратор доступен
Сменить пароль сотруднику можно двумя способами:
- В режиме 1С:Предприятие:
Администрирование → Настройки пользователей и прав → Пользователи, откройте карточку и задайте новый пароль командой установки пароля. - В Конфигураторе:
Администрирование → Пользователи, двойной щелчок по пользователю, вкладка «Основные», поля «Пароль» и «Подтверждение пароля».
Хорошая практика — после сброса включить флажок, требующий от пользователя сменить пароль при первом входе (в конфигурациях на БСП такой есть в карточке). Тогда временный пароль, сказанный по телефону, живёт до первого входа.
В конфигурациях на БСП меняйте пароль через карточку в режиме 1С:Предприятие. Так изменения попадут и в учётную запись платформы, и в связанный элемент справочника «Пользователи», а запись отразится в журнале регистрации.
Пароль администратора утерян
Это ситуация, которую нельзя решить кнопкой. Безопасные варианты:
- 🔁 восстановить базу из резервной копии, где пароль известен, и перенести недостающие данные;
- 👥 найти другого пользователя с правом «Администрирование» — его прав хватает, чтобы сбросить пароль первому;
- 🛠️ для клиент-серверной базы — поручить администратору СУБД вмешательство в служебную таблицу пользователей на копии базы.
Последний вариант работает так: если платформа не находит ни одного пользователя, она пускает в базу без аутентификации. Этим пользуются только для своей базы, только на копии и только с полной резервной копией.
Ручные правки служебных таблиц 1С без резервной копии могут сделать базу неработоспособной. Перед вмешательством сделайте копию средствами СУБД, а все сеансы пользователей будут прерваны — выбирайте нерабочее время.
Пароль администратора кластера
Если забыли пароль администратора кластера сервера 1С, не пересоздавайте кластер. Остановите службу сервера 1С в нерабочее время (все сеансы оборвутся), восстановите файл реестра кластера из резервной копии или обратитесь к администратору сервера, который его настраивал.
Как пароли утекают в обход хеша
Чаще всего пароль уходит не через взлом хеша, а через открытый текст в служебных файлах. Проверьте эти места:
- 🖥️ ярлыки и
.bat-файлы с параметрами запуска1cv8.exe ENTERPRISE /S"server\base" /N"Админ" /P"пароль". Пароль после/Pлежит открытым текстом; - ⏰ планировщик Windows — задачи регламентной выгрузки
.dtили пакетного обновления, где пароль прописан в команде; - 🔗 внешние системы — сайты, сервисы обмена и скрипты, подключающиеся через COM или строку соединения с
Usr=иPwd=; - 🌐 публикация на веб-сервере — в файле
default.vrdстрока соединения может содержать имя и пароль пользователя, под которым идёт подключение; - 💾 резервные копии — файлы
.dtи копии1Cv8.1CDна общем сетевом диске или флешке содержат хеши всех пользователей.
Пример того, как не надо делать в пакетном файле:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Base" /N"Администратор" /P"12345" /DumpIB"D:\Backup\base.dt"
Для таких задач заведите отдельного технического пользователя с минимально нужными правами и сложным паролем. Файл скрипта храните в каталоге, доступном только учётной записи, под которой он запускается.
Как защитить учётные записи от компрометации
Список ниже — то, что реально снижает риск. Пункты расположены от самых простых к требующим администратора.
- Уберите администраторов из списка выбора. В свойствах пользователя снимите флажок «Показывать в списке выбора»: злоумышленнику придётся угадывать ещё и имя.
- Разделите права. Повседневная работа — под обычной учётной записью, «Полные права» — только для настройки и обновлений.
- Включите вход через Windows для сотрудников в домене. Пароль 1С тогда можно не задавать, а сложность и блокировку обеспечит политика домена.
- Закройте файл базы. Для файловой базы права на каталог — только у пользователей 1С и администраторов, без «Все: полный доступ». Каталог базы не должен быть доступен из гостевой сети.
- Отдельный логин СУБД на каждую базу, а не
saилиpostgres. Логину хватает прав на свою базу. - Публикуйте базы в интернет только по HTTPS. Без шифрования имя и пароль при входе через тонкий клиент или браузер передаются по сети в доступном для перехвата виде.
- Смотрите журнал регистрации. Фильтр по событию входа (
Сеанс. Аутентификация, а также ошибки аутентификации) покажет серию неудачных попыток под одним именем. - Отключайте ушедших сотрудников в день увольнения. В конфигурациях на БСП для этого в карточке есть запрет входа в программу. Удалять пользователя не нужно: его имя останется в истории документов.
Не превращайте политику в формальность. Пароль из 12 символов, записанный на стикере у монитора, защищает хуже, чем фраза из четырёх слов, которую сотрудник помнит.