Я настраиваю новую систему, содержащую базу данных 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 подчиниться чему-то вроде этого кажется мне попыткой вбить квадратный стержень в слот для кредитной карты.