Настройка безопасности для сервера СУБД PostgreSQL

Часто устанавливая связку Сервер 1С – Сервер PostgreSQL обходятся обычной настройкой сервера или серверов, например по принципу описанному в статье “Установки 1С-сервера + PostgreSQL на виртуалке с Ubuntu 20.04”. Однако не мешало бы усилить безопасность доступа к серверу баз данных и оградить наши данные от лишнего внимания.

Содержание:

  1. Смена пароля пользователя postgres.
  2. Проверка сетевых настроек сервера PostgreSQL.
  3. Установка межсетевого экрана iptables.
  4. Установка правил доступа к PostgreSQL серверу через брандмауэр iptables.
  5. Закрываем доступ по SSH из вне.
  6. Сохраняем установленные правила брандмауэра iptables.

Итак рассмотрим несколько дополнительных мер для повышения безопасности Cервера БД PocstgreSQL.

Повторим уже описанный в указанной статье шаг после установки PostgreSQL на Ubuntu

1. Смена пароля пользователя postgres

Зайдем в postgres shell

$ psql

и зададим пароль для пользователя postgres

$ alter user postgres with encrypted password ' Ваш пароль';
alter user postgres

Пароль успешно поменяли, и на этом можно было бы успокоиться, но как всегда есть НО.

Postgres shell пишет историю командной строки в файл .psql_history, убедиться в этом легко:

выйдем из postgres shell командой \q и посмотрим на наш файл:

$ cat .psql_history;

Ну вот, как и предполагалось, все записано буква-в-букву.

Удалим файл истории командной строки и затем опять попробуем посмотреть его:

$ rm .psql_history;
$ cat .psql_history;
Теперь всё правильно!

Теперь переключимся обратно в root, выполнив exit и настроим свой конфиг pg_hba.conf (поищите тут /var/lib/pgpro/1c-14/data/pg_hba.conf), убедившись, что у вас есть следующая строка

local all postgres md5

Если такой строки нет, — надо добавить. Вы можете использовать редактор Linux-a, но самый простой способ это сделать — воспользоваться WinSCP, подключиться к серверу — перейти в директорию, где находится файл pg_hba.conf и открыть его для редактирования, внести изменения и сохранить.

После этого возвращаемся в PuTTY и перегружаем сервер

Вы можете воспользоваться любым из методов остановить и потом запустить сервис сервера postgres, или перегрузить (с остановкой) restart и (без остановки, а только с перезагрузкой конфигов) reload.

Например: Остановим сервис

$ systemctl stop postgrespro-1c-14

Посмотрим статус сервера PostgreSQL (убедимся что он остановлен)

$ systemctl status postgrespro-1c-14

И запустим сервер PostgreSQL заново

$ systemctl start postgrespro-1c-14

Для порядка можно еще раз посмотреть статус и убедиться что сервер работает.

2. Проверка сетевых настроек сервера PostgreSQL

Проверяем торчит ли postgres наружу и смотрим порт :5432 – это наш постгрес

$ ss -tunapl

Естественно, если ничего до этого не настраивали – он будет виден из внешней сети, повернем ситуацию в свою сторону!

3. Установка межсетевого экрана iptables

Проверяем установлен ли межсетевой экран iptables (под рутом):

$ iptables -h

если есть хелп, выводится на экран, значит межсетевой экран iptables уже стоит,
если нет, то устанавливаем:

$ apt-get install iptables

Чтобы узнать версию установленного межсетевого экрана, введите эту команду в терминале:

$ sudo iptables --version

Чтобы остановить или запустить экран

$ sudo service ufw stop
$ sudo service ufw start

Чтобы вывести список установленных правил:

$ sudo iptables -S

4. Установка правил доступа к PostgreSQL серверу через брандмауэр iptables:

Для начала устанавливаем разрешения для IP

$ iptables -P INPUT ACCEPT
$ iptables -P FORWARD ACCEPT
$ iptables -P OUTPUT ACCEPT
$ iptables -A INPUT -i lo -j ACCEPT

оставляем доступ 1С серверу и нам для администрирования по IP адресам.

а) разрешаем доступ для сервера 1с (если он на другом сервере)

$ iptables -A INPUT -s IP_адрес_1С_сервера/32 -j ACCEPT 

б) разрешаем для доступа себе (как то же мы должны подключаться к PostgreSQL Серверу)

$ iptables -A INPUT -s Наш_IP_адрес/32 -j ACCEPT 

потом запрещаем подключения к постгрес извне остальным (порт Postgres 5432)

$ iptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

5. Закрываем доступ по SSH из вне

Теперь закрываем порт ssh (22).

$ -A INPUT -p tcp -m tcp --dport 22 -j DROP

и проверяем

$ iptables -S
Все правила установлены в межсетевой экран iptables

6. Сохраняем установленные правила брандмауэра iptables

Запомните, что любые изменения, вносимые с помощью команды iptables исчезнут после перезагрузки сервера, если их не сохранить. 😉

Первым делом надо установить сохранялку:

$ apt install netfilter-persistent iptables-persistent

далее после добавления правил – сохраним их в наш межсетевой экран

$ netfilter-persistent save

Осталось проверить на практике сможем ли мы подключиться к нашему серверу из сети с “чужого” IP например попробуйте подключиться напрямую к серверу PostgreSQl программой PGAdmin, ну и для очистки совести попробуйте к этому же серверу подключиться по SSH с чужого IP. Надеюсь результат Вас порадует. А попрактиковаться можно например на виртуалке.

Спасибо за внимание!

Один Ответ

  1. eldebra:

    Спасибо за информацию, я нашел в ней ответ на свой вопрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *