PostgreSQL е добре позната система за управление на релационни бази данни, която може да се похвали със сигурна среда за разработчици и потребители. Но тъй като отдалечената работа продължава да бъде част от новото нормално състояние на всеки бизнес, ИТ специалистите са изправени пред нов набор от предизвикателства, когато става въпрос за управление на сигурността и достъпността на техните сървъри.
Използването на bastion сървър за достъп до PostgreSQL база данни добавя допълнителен слой сигурност. Но тъй като бастионните сървъри трябва да действат като защитни стени, е необходимо да използвате тунел за защитена обвивка (SSH), за да намалите нивото на излагане на частна мрежа.
Много инструменти за управление на база данни на PostgreSQL могат да автоматизират този процес на свързване, но взаимодействието с обвивката изисква ръчно създаване на SSH тунел. Разбирането на процеса и предпазните мерки със сигурност може да помогне на вашата компания да поддържа защитени бази данни.
Предимства от създаването и използването на SSH тунел за защитена обвивка
SSH тунелирането се използва в мрежовите комуникации повече от тридесет години и е също толкова уместно за днешните компютърни нужди.
Разработчиците постоянно се обръщат към протоколите на SSH Secure Shell, за да управляват достъпа до база данни на всички видове сървъри, включително PostgreSQL. Сигурният отдалечен достъп е от решаващо значение днес, особено когато 50% от устройствата на работното място са мобилни (мобилните устройства са сред най-уязвимите за кибератаки). Това прави още по-важно организациите да могат дистанционно да управляват устройства и потребителски достъп до техните мрежи.
Компаниите, обработващи големи количества данни, трябва да предоставят на служителите експресен достъп до основните бази данни и да предприемат проактивен подход към сигурността на базата данни. Използването на SSH протоколи е номер едно в осигуряването на защитен достъп на потребителите от отдалечени сървъри. Освен това улеснява удостоверяването на автоматизирани програми. Следователно бизнесът може да изпълнява ежедневните си задачи по-ефективно.
Тъй като стандартите за сигурност най-накрая настигат мобилните устройства и отдалечените сървъри, можем да очакваме да видим подобрение и на протоколите за криптиране и удостоверяване. Гъвкавостта и оперативната съвместимост са бъдещето на IoT сигурността. Все пак SSH протоколите ще продължат да бъдат стандартна част в обозримо бъдеще.
Как работи SSH?
SSH протоколите ви позволяват да контролирате отдалечено достъпа до вашите сървъри в интернет в защитена среда. Не само първоначалната връзка е силно защитена, но и цялата комуникационна сесия между двете страни. Потребителите могат да влизат в отдалечен сървър, като използват отворен SSH Secure Shell тунел или други SSH Secure Shell клиенти.
Сървърът търси връзка с отворен порт. След като намери такъв, сървърът трябва да удостовери връзката. Той определя дали е създадена защитена среда за комуникация и прехвърляне на файлове. Ако връзката е инициирана от клиента, клиентът трябва да удостовери сървъра в допълнение към предоставянето на своите идентификационни данни.
Когато и двете страни са удостоверени и връзката е установена, протоколът за криптиране SSH гарантира постоянната поверителност на всички предавания на данни между сървъра и клиента.
Има три типа криптиране, които SSH тунелите използват за защита на връзките:
- симетрично криптиране
- асиметрично криптиране
- хешове.
Симетрично криптиране се използва за времетраенето на връзката, за да запази комуникацията сигурна. И клиентът, и сървърът споделят един и същ секретен ключ за криптиране и декриптиране на данни. Този алгоритъм е сигурен, тъй като действителният ключ никога не се обменя. По-скоро и двете страни споделят обществена информация, от която могат независимо да извлекат ключа.
Асиметрично криптиране , за разлика от тях, изисква както публичен, така и частен ключ. Използва се в началото на процеса на тунелиране за удостоверяване на сървърите. Сървърът ще използва публичен ключ за криптиране на тези данни и клиентът трябва да ги удостовери с частен ключ. Тъй като конкретен частен ключ е единственото нещо, което може да декриптира съобщения, криптирани с публичния ключ, това помага за удостоверяване на страните, търсещи връзка.
Криптографско хеширане създава уникален подпис за набора от данни. Това е полезно при SSH връзка, тъй като позволява на сървъра да знае дали MAC е приемлив. Съвпадащ хеш може да бъде създаден само от частта от данни, идентична с тази, която е създала оригинала. По този начин хеширането може да се използва за проверка на входа, за да се гарантира, че е правилен.
SSH удостоверяване
След установяване на криптирането се извършва процес на удостоверяване. Най-простата форма на удостоверяване е използването на парола. Въпреки че това е лесен начин за клиентите, той също е много лесен за злонамерени автоматизирани скриптове. Дори криптирана парола има ограничена сложност. Това го прави несигурен. Използването на асиметрични ключове е често срещана мярка вместо използването на пароли.
След като се установи публичен ключ, клиентът трябва да предостави частния ключ, който върви с публичния ключ. Без тази комбинация удостоверяването е неуспешно. Това помага да се гарантира, че криптираните данни не могат да бъдат декриптирани от натрапник.
Целият процес на удостоверяване се договаря по време на настройката и само страни с допълнителни ключове могат да комуникират. Този процес също прави процеса на влизане бърз. Така че е оптимално за автоматизирани процедури.
Процесът на удостоверяване ще варира в зависимост от следните фактори:
- вида база данни, която се защитава
- отношението и местоположението на сървъра
- разрешенията на потребителя в сървъра.
Страхотното при използването на SSH протокол е, че целият процес е криптиран и силно защитен.
Настройте SSH тунел
Ако искате да взаимодействате с база данни с помощта на обвивката, трябва да знаете как да създадете SSH тунел. Въпреки че използването на автоматизирано приложение за управление на SSH може да бъде удобно, много администратори на бази данни предпочитат да настроят инструменти за управление на база данни от нулата, защото взаимодействието с обвивката е най-добрият начин за отстраняване на грешки, одит и максимален контрол.
Използването на SSH тунел е много сигурен начин за отваряне на сесия без страх от загуба на данни или хакване (стига да затваряте сесиите си и да наблюдавате сървърите си).
Ето как да създадете SSH тунел:
Проверете Bastion сървъра
За да създадете SSH Secure Shell тунел, трябва да знаете имената на хостовете на сървъра на bastion и базата данни PostgreSQL, както и вашето потребителско име на сървъра на bastion. Изпълнете командата:
$ ssh <username>@<bastion_server>
След това въведете паролата си, когато се появи подходящият прозорец.
Отворете SSH тунел
Отворете тунела, като използвате тази команда:
$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>
Оставете прозореца отворен, за да поддържате връзката. Номерата на два порта са съответно за вашия компютър и за отдалечения сървър.
Потвърдете връзката си
За да сте сигурни, че вашият тунел е отворен и свързан със сървъра на PostgreSQL, използвайте следната команда:
$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"
Вижте дали таблиците са върнати. Ако са, значи връзката ви е била успешна и сигурна.
Няколко стъпки по избор могат да увеличат ефективността на вашия достъп от хоста на бастиона до SQL сървъра. Имайте предвид обаче, че автоматизирането на достъп през цялото време не е сигурна стратегия. Разумно е винаги да влизате, когато искате да отворите SSH тунел, за да запазите сесиите напълно поверителни.
Създаване на потребителски профил
За да избегнете необходимостта от въвеждане на пароли всеки път, можете да създадете профил на сървъра на bastion. За да направите това, трябва да добавите своя SSH ключ към сървъра, като използвате следната команда:
$ ssh-copy-id <username>@<bastion_server>
След това вашият ключ ще се използва автоматично всеки път, когато искате да влезете. Той обаче има както положителни, така и отрицателни аспекти. По-удобно е, но трябва да сте сигурни, че имате други протоколи за сигурност, за да защитите машината от злонамерен софтуер или кражба. Ако някой друг получи достъп до вашата машина, той може да успее автоматично да влезе във вашите сървъри, тъй като ключът ви е запазен.
Актуализирайте своя SSH конфигурационен файл
Може да е сложно да запомните точните имена и номера на портовете на сървърите, към които искате да се свържете. Ето защо той е част от тунелния протокол SSH Secure Shell.
Вие следите имената на хостове и се удостоверявате с вашето потребителско име. Това е част от това, което прави SSH връзката сигурна на първо място. Но има начин да конфигурирате вашата процедура, за да направите достъпа по-бърз и по-лесен, без напълно да автоматизирате процеса. Можете да добавите запис към вашия SSH конфигурационен файл:
Домакин бастион-производство
- Име на хост
- Потребител
- LocalForward localhost:port_number
:port_number
След това изпълнете командата:
$ ssh bastion-production
Сега можете да се свържете само с една стъпка.
Съвети за поверителност на SSH
Наложително е базите данни да бъдат защитени. Данните са най-ценната валута в света и с нарастването на софтуера за откуп и други киберпрестъпления, неуспехът да защити данните на клиентите е неприемлив пропуск.
Целият смисъл на използването на bastion сървъра на първо място е да защитите вашата база данни. Въпреки това, няколко погрешни стъпки биха оставили сървърите ви широко отворени за всеки да влезе.
Ето няколко съвета как да останете в безопасност, докато използвате SSH тунели за свързване към PostgreSQL сървъри:
Правилно удостоверяване на отдалечени работници
Ако вашата организация използва SSH за дистанционно свързване, тогава всеки трябва да знае основите на цифровата хигиена. Използвайте базирано на ключ удостоверяване, което е защитено със силна парола. Проверката в две стъпки за всяко влизане също е добро място за начало, както и да се гарантира, че публичните SSH ключове са автентични.
Ограничете SSH влизанията само до тези, които се нуждаят от тях, и задайте привилегии, които отразяват задачите на потребителите.
Деактивирайте пренасочването на портове
Само около половината от разработчиците прилагат процедури за предотвратяване на пренасочване на портове. Пренасочването на портове може да ви остави отворени за криптирани комуникации с неодобрени потребители и сървъри. По този начин хакерите могат да влязат направо във вашата база данни. Филтрирайте всичките си връзки през сървъра на бастиона и помислете за използването на чук на портове, преди да разрешите връзка.
Уверете се, че използвате най-новия софтуер и вашите SSH връзки отговарят на най-новите стандарти за съответствие.
Често одит
Използвайте инструмент за непрекъснат мониторинг в допълнение към редовните ръчни одити. Ограничете връзките си само до онези, които са необходими, и не забравяйте да проверите за промени в настройките на конфигурацията, които не са били одобрени предварително.
Като следите кой влиза и какъв вид дейност е ангажиран, можете да ограничите повърхността на атаката и да улесните откриването на уязвимостите от самото начало.
Заключение
Използването на криптирани SSH тунели е сигурен начин за достъп до PostgreSQL бази данни от отдалечени сървъри. Процесът поддържа криптиране за продължителността на свързаните сесии. Въпреки че автоматизираните SSH програми са полезни за повтарящи се задачи и други административни системни процеси, отварянето на SSH тунел ръчно може да бъде от полза. В този случай можете лесно да идентифицирате целия трафик и комуникация, вместо да използвате автоматизирана версия или клиент.
Ако използвате PostgreSQL или която и да е система за управление на база данни SQL, трябва да знаете как да използвате SSH тунелиране. Това може да бъде от решаващо значение за наблюдението и управлението на системните процеси и трансферите на данни.
SSH протоколите осигуряват изключително сигурна връзка и спазването на допълнителни предпазни мерки ще ви помогне да поддържате целостта на вашите сървърни връзки.