Какие лучшие практики настройки SSH для вебсервера?

Доброго дня!

Задался вопросом, как лучше настроить доступы SSH на сервере.
Имеется Debian 8 / EasyEngine (весь Web-стек [nginx, php, mariadb, redis] работает от имени .юзера www-data)

Есть root на debian сервере, но использовать его каждый раз не хочется по понятным причинам. Сейчас настроен доступ по открытому ключу.

Основной вопрос что делать с юзером www-data? Т/к это вебсервер понятно что нужно иногда заходить по SFTP и заливать/изменять данные. От root это делать также не удобно т/к перевыставляются права и скрипты не работают, картинки не грузятся. До этого у меня был сервер с настроенным chroot (каждый сайт имел своего юзера от которого и требовалось заходить - никаких проблем с безопасностью и изменением прав файлов). Теперь непонятно как быть - заходить по SFTP под юзером www-data как-то стремно, тем более что у него вся авторизация выключена по умолчанию, пробовал - не получилось, нужно конфиги менять (но если кто-то прописал юзеру все эти запреты, наверно не просто так?). Пермишшены на папки на сайте в основном 755, на файлы 644 и менять это не хочется. Хочется прозрачно, залил - работает, без дерганья консоли и исправления прав каждый раз.

Итак что делать? Разрешать доступ для юзера www-data или создавать другого юзера и как-то нахимичить ему те же права, что и у www-data?

Какие еще лучшие практики настройки SSH/SFTP лучше использовать в моем случае?
Я собираюсь настроить юзера для sudo/ходить им же по sftp/ssh, сделать только авторизацию по ключу, перенести порт ssh, закрыть все порты кроме 80, ssh, и порт для утилит EasyEngine (кстати как лучше закрыть порты, может есть особенности ну там ничего не отдавать в ответ или отдавать что-то специальное чтобы разрывать шаблон ботам?). Поделитесь секретами настройки.
  • Вопрос задан
  • 1714 просмотров
Решения вопроса 1
bigton
@bigton
Web-программист
Добавить пользователя в группу www-data и настроить в ssh для группы umask

vi /etc/ssh/sshd_config // добавляем в конец файла

Subsystem sftp internal-sftp
Match Group www-data
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f USER -u 002
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
vvpoloskin
@vvpoloskin
Инженер связи
Если не сильно заморачиваться, то можно заливать данные от вашего пользователя, предварительно добавив его в группу www-data, а на нужные папки разрешить запись для членов группы.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
уровни:

-1) отключение root,
0) смена порта по умолчанию на подальше (типа 33833)
1) авторизация по ключу
2) двухфакторная аутентификация
3) knock knock закрытие порта

каждый включает в себя предыдущие
Ответ написан
@shuraosipov
По воводу SSH
1. запретить ssh login для root
2. изменить порт, на котором работает sshd c 22 на любой другой.
3. явно указать в конфиг файле, что будет использоваться ssh version 2.
4. ограничить доступ по SSH только для конкретных пользователей (директива AllowUsers).
5. использовать KeyBased Authentication с сильным ключом.
6. В iptables разрешить доступ по ssh/sftp только с определенных ip адресов.
7. Используй chroot jails для пользователей, которые будут логиниться по ssh/sftp.

Что касается прав доступа и вебсервера:
1. Создать учетную запись (sftp_uploader), которая будет использоваться для загрузки и обновления файлов на веб сервере.
2. Создать отдельную группу (site_operations), выдать группе права на папку с картинками /var/www/pictures
3. Добавить в группу пользователя site_operations и www-data.
4. Выставить права chmod -R 2770 /var/www/pictures. 2 означает SGID. Все файлы, которые будут изменяться/добавляться в папке /var/www/pictures будут иметь ID группы site_operations. Так как пользователи www-data и sftp_uploader состоят в этой группе, то оба аккаунта будут иметь доступ к файлам, также не потребуется переустанавливать права доступа.
5. Для предоставлния прав доступа вместо группы можно использовать ACL.
6. Для пользователя www-data изменить дефолтный shell на /sbin/nologin

Общесистемные:
1. Дроп ICMP пакетов (не отвечать на ping)
2. Обновить ядро, yum.
3. Держать как можно меньше софта на машине.
Ответ написан
Комментировать
kompi
@kompi
nullstack devoops
Нужные права - форс группы на home www-data и выставление rw для группы (для новых файлов/папок) через umask или ACL.
Ответ написан
@res2001
Developer, ex-admin
Напишите элементарный скрипт, который бы менял права на файлы/папки и запускайте после каждого изменения.
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы