Pull to refresh

«Опасная» паранойя

Reading time3 min
Views1.5K
Давным давно в эру модемов я увлекался сетевой безопасностью. Время прошло, паранойя осталась.
В наше время уже мало кто пользуется ftp, на смену пришли более удобные вещи, такие как svn, которые не явно, но заменяют ftp и избавляют от головной боли многих. Я же разработчик-одиночка, делаю все, от дизайна и верски, до программирование и оптимизации сервера под конкретную задачу. Поэтому мне удобней юзать старые добрые ftp итп. Я не говорю что svn мне не нужен, я активно им пользуюсь, но лишь для создания ревизий. Обновление софта на сервере осуществляю по ftp, кхм… точнее по sftp. Собственно о чем и хотел поговорить.
Когда я задумался о безопасности своего сервера, я мог представить что меня могут логировать или троянить, что могут тупо получить физ. доступ к компу итп, это все банальности. Но что делать, если «узкое» место в безопасности вашей системы — интернет-провайдер, поставщик услуг? Конечно, конечно, они отвечают за свои действия и их хлеб совсем другой бизнес. Но вот их сотрудники… Никого не оскорбляя перейдем к делу.
Что нужно иметь, чтобы построить безопасную систему с доступом к FTP и прочим сервисам (например mysql)?
Статья расчитана на людей, которые имеют свои серверные мощности, либо имеют доступ к «рулю» на них.

FTP


Забываем что такое FTP и сносим с сервера все что с ним связано. Если у нас есть SSH доступ, более нам ничего и не пригодится. Любой современный FTP клиент (SmartFTP, CuteFTP) умеет работать как с ftp over ssh, так и с sftp. Разберем пример с CuteFTP, у меня стоит 8.0 Pro версия.

File -> New -> SFTP (SSH2)



Забиваем логин и пасс от шелла…


Соответственно CuteFTP ругнется на ключи, говорим что да, это все хорошо, и вуаля, у нас эмуляция ftp.
Правда, тут мы теряем много функционала, который предоставляют такие гиганты как proftpd. Но если вам и вашим разработчикам ftp нужен для загрузки файлов и не более, то нет ничего проще. Добавляете нового пользователя в систему и у него тут же есть доступ на sftp.

MySQL


Соответственно, мои mysql базы осуществляют коннекты только с локальных IP. Как же поступить, если phpmyadmin и подобный софт не устраивает или просто хочется GUI? Разберем пример SSH тоннеля на примере как раз MySQL.
Есть GUI, которые сами делают SSH тоннель, такие как SQLyog. Но лично у меня на неё выработан рвотный рефлекс. Мне нравится QB своим функционалом и простотой. Однако он не умеет делать тоннель до мускуля по ssh.
Сначала немного теории. Смысл простой. У нас есть mysql на сервере, которая не коннектится ни с кем, кроме локальных айпишников. Имея доступ на SSH, мы можем организовать так называемый «тоннель», мы коннектимся на него и уже из него коннектимся к базе. База видит локальный IP и пропускает нас, все просто. Основная задача — автоматизировать данный процесс.
Для этого нам пригодится Putty.

1. Создаем новое подключение, как-нибудь его называем.

2. Идем в Connection -> SSH -> Tunnels и добавляем новый тоннель. В поле «Source port» вписываем локальный порт, на куда будет выведен один конец нашего тоннеля. Локально у меня мускуля нет, поэтому я указываю стандартный 3306 чтобы не парится. Если же у вас есть локальный мускуль на этом порту, пишите 3307 или любой, какой душе угодно. В поле «Destination» пишем адрес: порт, куда прокладываем другой конец тоннеля. В нашем случае это будет localhost:3306 (там, где обитает база на сервере). Жмем кнопку «Add».

3. Возвращаемся в окно Session, сохроняем сессию и жмем «Open». Вводим логин и пароль и вуаля, теперь на порту, который мы указали в «Source port» у нас висит то, что висло на порту, что мы указали в «Destination». Открываем QB и коннектимся.


Собственно, если пример с FTP является уникальным для FTP, то второй пример показывает способ реализовать любой локальный для удаленного сервера сервис, как локальный сервис для вас через SSH, что в разы безопаснее обычных подключений.

Подобная схема работает на моих серверах. У меня же стоит NAV, все свои пароли я помню, сплю я спокойно и вам того советую =)
Tags:
Hubs:
+11
Comments11

Articles

Change theme settings