Назад | Перейти на главную страницу

selinux boolean allow_user_postgresql_connect не действует

Я настраиваю новую систему, содержащую базу данных postgresql, и пытаюсь заблокировать, какие машины могут открывать соединение с базой данных.

Я пытаюсь использовать логическое значение allow_user_postgresql_connect для достижения этой цели, но до сих пор не смог заставить его блокировать любые соединения.

Я тестирую с двумя серверами БД и клиентом, как показано ниже. Оба RHEL6u2 работают под управлением postgres 8.4.7-2;

DB# getenforce
Enforcing
DB# getsebool allow_user_postgresql_connect
allow_user_postgresql_connect --> on
DB# service postgresql start
starting postgresql service:              [  OK  ]

Client# getenforce
Enforcing
Client# getsebool allow_user_postgresql_connect
allow_user_postgresql_connect --> off

Client-> psql -h DB "sslmode=require dbname=mydb" postgres
connects

Я пробовал все комбинации включения / выключения allow_user_postgresql_connect на двух машинах, но не смог заставить его отклонить соединение.

Как следует установить этот bool, чтобы пользователь на машине не мог подключиться к базе данных?

Я новичок в SElinux, поэтому могу упустить что-то очевидное.

Почему вы пытаетесь использовать для этого SELinux? Postgres уже имеет совершенная система аутентификации и авторизации, который вы должны использовать для этого (среди прочего, потому что он помещает неудачные входы в логическое место: журналы Postgres).

Если вы пытаетесь еще больше защитить систему, не позволяя неавторизованным системам подключаться к порту Postgres вообще, то, вероятно, у вас есть список авторизованных систем (IP-адресов) и вы можете настроить правило брандмауэра, которое блокирует трафик с неавторизованных хостов.

Попытка заставить SELinux подчиниться чему-то вроде этого кажется мне попыткой вбить квадратный стержень в слот для кредитной карты.