Обновить README.md

This commit is contained in:
leo 2024-10-06 10:03:18 +05:00
parent fc5ccc8c7b
commit 6b38d26708

View File

@ -1,4 +1,3 @@
### Backup all databases & files
**Based on the:** https://lohvynenko.com/ru/blog/a-way-to-get-daily-postgresql-backups-from-docker-swarm.html
@ -12,50 +11,3 @@
* В скрипте `remote-backup.sh` приведен пример для удаленной синхронизации папки `backups` с другим сервером.
* Скрипт должен быть запущен на другом сервере, нужно правильно указать настройки адреса сервера, пути, и кроме того, на сервере должен быть установлен ключ SSH для доступа.
-------------------------------------------
Использование rsync для создания резервных копий на удаленный сервер, при котором инициатором подключения выступает сервер бэкапов, является хорошей практикой, повышающей безопасность ваших данных. Вот несколько советов, чтобы выполнить это правильно и надежно:
1. **Инвертируйте подключение**:
- Запускайте rsync с сервера бэкапов (сервер B), чтобы подключаться к основному серверу (сервер A) и забирать данные. Таким образом, у злоумышленника, который может получить контроль над сервером A, не будет прямого доступа к серверу B.
2. **Используйте SSH**:
- Обязательно используйте SSH для передачи данных, чтобы обеспечить шифрование соединения. Rsync может работать через SSH (например, `rsync -avz -e ssh user@serverA:/path/to/data /local/path`).
3. **Настройте управление доступом**:
- Ограничьте доступ к серверу A только для пользователя, который выполняет резервное копирование.
- Используйте ключи SSH для аутентификации, и храните закрытый ключ на сервере B.
4. **Модифицируйте права на ключи**:
- Ограничьте права файлового доступа на закрытые ключи, чтобы только соответствующий пользователь мог их читать (`chmod 600`).
5. **Используйте ограничения SSH**:
- Ограничьте команды, которые могут быть выполнены с использованием ключа SSH, назначив предопределенную команду в файле `authorized_keys` на сервере A. Это можно сделать следующим образом:
```plaintext
command="rsync --server -logDtprze.iLsfx --delete --numeric-ids . /path/to/data",no-agent-forwarding,no-port-forwarding,no-pty ssh-rsa AAAA... user@hostname
```
6. **Регулярные проверки и уведомления**:
- Настройте уведомления о сбоях и настраивайте регулярные проверки целостности данных.
Вот пример настроек, чтобы запустить резервное копирование с сервера B (сервера бэкапов):
1. На сервере B создайте ключ SSH (если он еще не создан):
```sh
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
```
2. Скопируйте публичный ключ на сервер A:
```sh
ssh-copy-id user@serverA
```
3. На сервере B настройте cron job или systemd timer для регулярного выполнения rsync. Пример крон-задачи для ежедневного выполнения копирования в 2:00 ночи:
```plaintext
0 2 * * * /usr/bin/rsync -avz -e ssh user@serverA:/path/to/data /local/path/to/backups
```
Использование этих техник значительно повысит безопасность вашего резервного копирования и уменьшит вероятность компрометации сервера бэкапов в случае взлома основного сервера.