17.7. ÐаÑиÑа Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑеÑвеÑа #
Ðогда ÑеÑÐ²ÐµÑ ÑабоÑаеÑ, злонамеÑеннÑй полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÑÑавиÑÑ Ñвой ÑеÑÐ²ÐµÑ Ð²Ð¼ÐµÑÑо него. Ðднако еÑли ÑеÑÐ²ÐµÑ Ð¾ÑклÑÑÑн, локалÑнÑй полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ð¸ÑÑ Ð½Ð¾ÑмалÑнÑй ÑеÑвеÑ, запÑÑÑив Ñвой ÑобÑÑвеннÑй. ÐодделÑнÑй ÑеÑÐ²ÐµÑ ÑÐ¼Ð¾Ð¶ÐµÑ ÑиÑаÑÑ Ð¿Ð°Ñоли и запÑоÑÑ ÐºÐ»Ð¸ÐµÐ½Ñов, Ñ
оÑÑ Ð½Ðµ ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ даннÑе, Ñак как каÑалог PGDATA бÑÐ´ÐµÑ Ð·Ð°ÑиÑÑн Ð¾Ñ ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑоÑонними полÑзоваÑелÑми. Ð¢Ð°ÐºÐ°Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ð° возможна поÑомÑ, ÑÑо лÑбой полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ
; клиенÑ, Ñо Ñвоей ÑÑоÑонÑ, не Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð½Ð°ÑÑжиÑÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ, еÑли его не наÑÑÑоиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно.
Ðдин из ÑпоÑобов пÑедоÑвÑаÑиÑÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ
подклÑÑений â иÑполÑзоваÑÑ ÐºÐ°Ñалог Unix-ÑокеÑов (unix_socket_directories), в коÑоÑÑй ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¸ÑаÑÑ ÑолÑко пÑовеÑеннÑй локалÑнÑй полÑзоваÑелÑ. ÐÑо не Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð·Ð»Ð¾Ð½Ð°Ð¼ÐµÑÐµÐ½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑоздаÑÑ Ð² ÑÑом каÑалоге Ñвой Ñайл ÑокеÑа. ÐÑли Ð²Ð°Ñ Ð±ÐµÑпокоиÑ, ÑÑо некоÑоÑÑе пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñи ÑÑом могÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ ÑокеÑа в /tmp и, Ñаким обÑазом, вÑÑ Ð¶Ðµ бÑдÑÑ ÑÑзвимÑми, ÑоздайÑе пÑи загÑÑзке опеÑаÑионной ÑиÑÑÐµÐ¼Ñ ÑимволиÑеÑкÑÑ ÑÑÑÐ»ÐºÑ /tmp/.s.PGSQL.5432, ÑказÑваÑÑÑÑ Ð½Ð° пеÑемеÑÑннÑй Ñайл ÑокеÑа. Ðозможно, вам Ñакже пÑидÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑкÑÐ¸Ð¿Ñ Ð¾ÑиÑÑки /tmp, ÑÑÐ¾Ð±Ñ Ð¾Ð½ не ÑдалÑл ÑÑÑ ÑÑÑлкÑ.
Также клиенÑÑ Ð¼Ð¾Ð³ÑÑ Ð·Ð°ÑиÑиÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑе подклÑÑениÑ, ÑÑÑановив в паÑамеÑÑе requirepeer Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, коÑоÑÑй должен владеÑÑ ÑеÑвеÑнÑм пÑоÑеÑÑом, подклÑÑÑннÑм к ÑокеÑÑ.
ÐÐ»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ TCP-Ñоединений можно либо иÑполÑзоваÑÑ ÑеÑÑиÑикаÑÑ SSL и пÑовеÑÑÑÑ ÑеÑÑиÑÐ¸ÐºÐ°Ñ ÑеÑвеÑа Ñо ÑÑоÑÐ¾Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñов, либо пÑименÑÑÑ ÑиÑÑование GSSAPI (или и Ñо, и дÑÑгое пÑи иÑполÑзовании незавиÑимÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений).
ÐÐ»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ SSL ÑеÑÐ²ÐµÑ Ð½Ð°Ð´Ð¾ наÑÑÑоиÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½ пÑинимал ÑолÑко подклÑÑÐµÐ½Ð¸Ñ hostssl (Ñм. Раздел 19.1) и имел клÑÑ Ð¸ ÑеÑÑиÑикаÑÑ SSL (Ñм. Раздел 17.9). Тогда TCP-ÐºÐ»Ð¸ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÐ´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº ÑеÑвеÑÑ Ñ Ð¿Ð°ÑамеÑÑом sslmode=verify-ca или verify-full и Ñ Ð½ÐµÐ³Ð¾ должен бÑÑÑ ÑÑÑановлен ÑооÑвеÑÑÑвÑÑÑий коÑневой ÑеÑÑиÑÐ¸ÐºÐ°Ñ (Ñм. ÐодÑаздел 32.19.1). Ðак ваÑианÑ, можно пÑименÑÑÑ ÑиÑÑемнÑй пÑл ЦС, пÑедоÑÑавлÑемÑй ÑеализаÑией SSL. Ð ÑÑом ÑлÑÑае Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи пÑинÑдиÑелÑно пÑименÑеÑÑÑ Ñежим sslmode=verify-full, Ñак как полÑÑение ÑеÑÑиÑикаÑов, подпиÑÑваемÑÑ
пÑблиÑнÑм ЦС, ÑвлÑеÑÑÑ Ð¾Ð±ÑÑной пÑакÑикой.
ÐÐ»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом во вÑÐµÐ¼Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑеÑевой аÑÑенÑиÑикаÑии по паÑÐ¾Ð»Ñ Ñ Ð¼ÐµÑодом scram-sha-256 ÑледÑÐµÑ ÑдоÑÑовеÑиÑÑÑÑ, ÑÑо подклÑÑение к ÑеÑвеÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾ SSL-пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¸ Ñ Ð¾Ð´Ð½Ð¸Ð¼ из меÑодов, заÑиÑаÑÑиÑ
Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑоединениÑ, коÑоÑÑе опиÑÐ°Ð½Ñ Ð² пÑедÑдÑÑем абзаÑе. ÐÑоме Ñого, ÑеализаÑÐ¸Ñ SCRAM в libpq не заÑиÑÐ°ÐµÑ Ð½Ð° пÑоÑÑжении вÑего пÑоÑеÑÑа обмена инÑоÑмаÑией пÑи аÑÑенÑиÑикаÑии, однако иÑполÑзование паÑамеÑÑа ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ channel_binding=require позволÑÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð¸Ð·Ð¸ÑоваÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑоединениÑ. ÐлоÑмÑÑленник, иÑполÑзÑÑÑий подÑÑавной ÑеÑÐ²ÐµÑ Ð´Ð»Ñ Ð¿ÐµÑеÑ
ваÑа даннÑÑ
пÑи обмене по SCRAM, Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑибегнÑÑÑ Ðº оÑлайн-анализÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¿ÑÑаÑÑÑÑ Ð¾Ð¿ÑеделиÑÑ Ñ
еÑиÑованнÑй паÑÐ¾Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñа.
ÐÐ»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ GSSAPI ÑеÑÐ²ÐµÑ Ð½Ð°Ð´Ð¾ наÑÑÑоиÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½ пÑинимал ÑолÑко подклÑÑÐµÐ½Ð¸Ñ hostgssenc (Ñм. Раздел 19.1) и Ð´Ð»Ñ Ð½Ð¸Ñ
иÑполÑзовалаÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ gss. TCP-ÐºÐ»Ð¸ÐµÐ½Ñ Ð² ÑÑом ÑлÑÑае должен подклÑÑаÑÑÑÑ Ñ Ð¿Ð°ÑамеÑÑом gssencmode=require.