Шифрование и секретность в Linux
Аутентификация и шифрованиеАутентификация и шифрование В этой главе рассматриваются базовые принципы аутентификации и шифрования клиентских сеансов на сервере PostgreSQL В частности, описаны настройка файла pg_hb
Аутентификация клиента
Аутентификация клиента Аутентификация клиентов занимает центральное место в PostgreSQL. Без нее пришлось бы либо пожертвовать возможностью удаленного подключения, либо слепо разрешать к
Аутентификация с использованием паролей
Аутентификация с использованием паролей Пароли используются для подтверждения личности пользователей PostgreSQL и предотвращения посторонних подключений. В PostgreSQL 7.1.x пароли хранятся
Таблица 8 1 Структура таблицы pg_shadow
Таблица 8.1. Структура таблицы pg_shadow Поле Тип usenatne name usesysld integer- usecreatedb boolean uset
Листинг 8 1 Простой файл pgjiba conf
Листинг 8.1. Простой файл pgjiba.conf # PostgreSQL HOST ACCESS CONTROL FILE f # Configured Hosts: local all trust host all 127.0.0.1 255.255.255.255 trust host booktown 192.168
Листинг 8 2 Проверка прав доступа
Листинг 8.2. Проверка прав доступа testdb=# SELECT relname as "Relation", relacl as "Access permissions" testdb-# FROM pg_class testdb-# WHERE relkind IN Cr', 'V.
Структура файла pg_hba conf
Структура файла pg_hba.conf Конфигурационный файл pg_hba.conf содержит серию записей, определяющих параметры аутентификации клиентов с заданных хостов. Структура этого файла позволяет
Листинг 8 3 Разделение полей в
Листинг 8.3. Разделение полей в записях pg_hba.conf пробелами и табуляциями host all 127.0.0.1 255.255.255.255 trust host all 127.0.0.1 255.255.255.255 trust Файл pg_hba.conf может со
Листинг 8 4 Комментарии в файле pgjiba conf
Листинг 8.4. Комментарии в файле pgjiba.conf # Book Town host entries # # host all 127.0.0.1 255.255.255.255 trust Хостовые записи, содержащиеся в файле pg_hba.conf, делятся на
Листинг 8 5 Синтаксис записей файла pg_hba conf
Листинг 8.5. Синтаксис записей файла pg_hba.conf # Запись типа "local" local база_дднных метод^аутентификации [ параметр ] # Запись типа "host" host база_данных
Примеры записей в файле pg_hba conf
Примеры записей в файле pg_hba.conf В этом разделе приведены некоторые примеры записей в файле pg_hba.conf. Запись, приведенная в листинге 8.6, разрешает подключиться к любой (all) б
Листинг 8 6 Один доверенный хост
Листинг 8.6. Один доверенный хост host all 192.168.1.10 255.255.255.255 trust Следующая запись (листинг 8.7) запрещает подключение всем пользователям с IP-адреса 192.168.1.10. Для этого
Листинг 8 7 Запрет доступа с одного хоста
Листинг 8.7. Запрет доступа с одного хоста host all 192.168.1.10 255.255.255.255 reject Следующая запись (листинг 8.8) разрешает подключение к базе данных templatel с хоста 192.168.1
Листинг 8 8 Один хост одна база данных
Листинг 8.8. Один хост, одна база данных host templatel 192.168.1.10 255.255.255.255 crypt Запись в листинге 8.9 разрешает доступ к базам данных без пароля из небольшой подсети. Подс
Листинг 8 9 Доверенная подсеть
Листинг 8.9. Доверенная подсеть host all 192.168.1.0 255.255.255.240 trust Запись, приведенная в листинге 8.10, разрешает доступ с любого хоста из блока 192.168.1 к базе данных booktown
Листинг 8 10 Доверенная подсеть
Листинг 8.10. Доверенная подсеть host booktown 192.168.1.0 255.255.255.0 trust Вспомните, о чем говорилось выше: при проверке очередного подключения записи файла pg_hba.conf последовател
Файл pgjdent conf
Файл pgjdent.conf Если в хостовой записи указан метод аутентификации ident, PostgreSQL использует файл pgjdent.conf для отображения идентификационного имени пользователя на имя пользов
Листинг 8 11 Выбор режима аутентификации
Листинг 8.11. Выбор режима аутентификации ident в файле pgajiba.conf host booktown 192.168.1.3 255.255.255.255 ident sales host all 192.168.1.4 255.255.255.255 ident audit Содержимое
Листинг 8 12 Пример файла pgjdent conf
Листинг 8.12. Пример файла pgjdent.conf # MAP IDENT POSTGRESQLJJSERNAME sales jdrake sales sales jworsley sales audit, auditor sales audit auditor postgres Файл, приведенный
Листинг 8 13 Конфигурирование
Листинг 8.13. Конфигурирование с использованием ключевого слова sameuser host booktown 192.168.1.0 255.255.255.0 ident sameuser В этой конфигурации любой компьютер из сетевого блока
Отказ в аутентификации
Отказ в аутентификации Если попытка аутентификации завершается неудачей, PostgreSQL обычно предоставляет содержательную информацию об ошибке, не ограничиваясь простым отказом. Ниже пер
Шифрование сеанса
Шифрование сеанса В эпоху электронных коммуникаций приходится уделять особое внимание вопросам конфиденциальности и защиты данных. Едва ли не каждый день приходится слышать о новых жерт
Встроенная поддержка SSL
Встроенная поддержка SSL В PostgreSQL предусмотрена возможность активизации встроенной поддержки SSL при помощи ключа конфигурации - -with-ssl. Этот вариант особенно удобен в тех случа
SSH/OpenSSH
SSH/OpenSSH OpenSSH является превосходным средством внешнего шифрования обмена данными между клиентом и сервером. Профессионалы в области безопасности и системные администраторы фактич
Листинг 8 14 Создание туннеля SSH на сервере PostgreSQL
Листинг 8.14. Создание туннеля SSH на сервере PostgreSQL [user@local ~]$ ssh -L 4001:remotehost:5432 userPremotehost user@remotehost's password: [user@remote -]$ [user@local -]$ p
Настройка и использование пакета Stunnel
Настройка и использование пакета Stunnel Хотя встроенная поддержка SSL и OpenSSH обеспечивают надежный, хорошо защищенный обмен данными с PostgreSQL, у этих инструментов имеются свои о
OpenSSL
OpenSSL Программный пакет OpenSSL был разработан группой, входящей в сообщество Open Source. Это довольно мощный инструментарий, позволяющий реализовать в системе протокол SSL (Secure
Stunnel
Stunnel Stunnel представляет собой оболочку SSL, то есть позволяет наделить поддержкой SSL демона, не рассчитанного на безопасный обмен данными. При помощи Stunnel можно установить защи
Запуск Stunnel
Запуск Stunnel Существует два варианта работы Stunnel в системе: использование inetd или запуск двоичного файла Stunnel в режиме демона. Второй вариант считается пред-лочтительным, пос
Запуск Stunnel в режиме демона
Запуск Stunnel в режиме демона Запуск Stunnel в режиме демона не вызывает проблем при подключении как к локальным, так и к удаленным базам данных. Чтобы использовать Stunnel для подклю
Листинг 8 15 Использование Stunnel
Листинг 8.15. Использование Stunnel при удаленных подключениях [user@remote -]$ # Запуск сервера на удаленном компьютере [user@remote -]$ stunnel -P/tmp/ -p -/stunnel.pern -d 9000
Листинг 8 16 Локальный запуск Stunnel
Листинг 8.16. Локальный запуск Stunnel [user@local -]$ stunnel -P/tmp/ -p -/stunnel-3.15/stunnel.pern -d 9000 -r 5432 [user@local -]$ stunnel -P/tmp/ -c -d 5433 -r local host:9000
Запуск Stunnel с использованием inetd
Запуск Stunnel с использованием inetd Если вы предпочитаете, чтобы на серверной стороне экземпляры Stunnel запускались по запросу, вместо режима демона можно воспользоваться службой in
Листинг 8 17 Примерная запись inetd
Листинг 8.17. Примерная запись inetd pgssl stream tcp nowait root /usr/sbin/stunnel -P/tmp/ -p /root/my.pern -r 5432 В листинге 8.17 указан пользователь root, но по соображениям безопасн
Листинг 8 18 Примерная запись xinetd
Листинг 8.18. Примерная запись xinetd # Конфигурация xinetd для pgssl. service pgssl { disable = no socket_type = stream protocol = tcp wait = no user = root server = /us
Выводы
Выводы После завершения всех описанных действий вы сможете установить защищенное подключение к базе данных PostgreSQL из любого клиента PostgreSQL. В psql можно воспользоваться следующ