В продолжение начатой мной темы Настройка веб-сервера в домашних условиях. Статья является логическим ее продолжением и посвящена вопросам повышения безопасности "домашнего веб-сервера".
Несмотря на то, что это продолжение, будут рассмотрены некоторые новые компоненты. Так, вместо веб-сервера IIS будет рассмотрен Apache, вместо Windows XP в качестве платформы для веб-сервера будет рассмотрена Windows 7. Основные направления повышения безопасности - виртуализация сервера (виртуальная машина Oracle VirtualBox), отказ от файлового варианта работы базы данных в пользу PostgreSQL и некоторые фичи при настройке сети.
Все настройки будут описаны исходя из того, что "домашняя сеть" находится за роутером. Если в вашем конкретном случае роутер не используется и интернет подключен напрямую к компьтеру - нужно будет поэксперементировать с настройками виртуального сетевого адаптера виртуальной машины. Возможно нужно будет сменить тип подключения на NAT. Подробнее можно прочитать в инструкции к VirtualBox.
Что нам понадобится:
1. Виртуальная машина Oracle VirtualBox. Виртуальная машина позволяет эмулировать работу полноценного компьютера. Фактически вы получите два компютера на базе одного. VirtualBox распространяется бесплатно. Если лень гуглить в поисках ссылки, то скачать его можно с родного сайта здесь.
2. Дистрибутив Windows 7. Будем ставить его на виртуальную машину. Можно было конечно и Ubuntu поставить, но выбрал Win7 из соображений большей пользователеориентированности и распространенности, да простят меня nix-адепты. Если как-нибудь соберусь испытать свзяку с Ubuntu - результатами поделюсь.
3. Веб-сервер Apache. Будем использовать версию 2.2. Ссылка на скачивание здесь.
4. Платформа 1С:Предприятие 8.2 последней версии.
5. Сервер баз данных PostgreSQL 8.4.3-3.1C, адаптированный для работы с 1С. Ссылка на скачивание здесь.
Пошаговая инструкция:
1. Устанавливаем виртуальную машину на компьютер. Выбираем тип ОС - Windows 7. Настройка виртуального сетевого адаптера - "Сетевой мост".
Создать машину очень просто - пошаговый мастер создания поможет выполнить операцию от начала и до конца.
После создания виртуальной машины нужно поставить на нее ОС. Для этого следует в менеджере машин в свойствах машины добавить виртуальный оптический привод и подключить к нему образ установочного диска ОС.
Далее следует запустить машину. Вам будет предложено выполнить загрузку с оптического привода. Грузимся - устанавливаем ОС.
После этого в свойствах машины следует произвести настройку виртуального адаптера сети. Тип подключения выбираем "Сетевой мост". В свойстве "имя" связываем виртуальный адаптер с физическим.
Далее нужно удалить виртуальные сети хоста, чтобы они не мешали. Для этого открываем "Файл" - "Настройки..." - "Сеть". Удаляем виртуальные сети из списка.
DHCP-сервер на роутере назначит виртуальному адаптеру сети свой IP-адрес, на который позже мы настроим перенаправление http-трафика.
2. На виртуальную машину ставим платформу 1С 8.2 (серверная установка). Здесь все стандартно. Помним, что пользователь, от имени которого будет запускаться сервер 1С (обычно при установке предлагается создать пользователя USR1CV82) будет тем пользователем, от имени которого осуществляются файловые операции на сервере.
3. Также на виртуалку устанавливаем сервер БД PostgreSQL. Необходимо помнить, что при установке нужно выбрать кодировку сервера и клиента UTF8.
Если по какой-то причине у вас перестала запускаться служба сервера PostgreSQL, найдите в папке с установленным Postgre файл postmaster.pid и удалите его.
4. Ставим Apache на виртуалку. В папке с установленным веб-сервером ищем файл httpd.conf - это файл настроек. Меняем прослушку порта с 80 на другое значение порта.
5. Настраиваем роутер. Перенаправляем http-запросы с публичного 80 порта, на приватный, указанный нами в настройках Apache на предыдущем шаге на IP-адрес виртуальной машины.
6. Прописываем базу (разворачиваем на PostgreSQL). Публикуем развернутую базу на веб-сервере.
Apache чувствителен к регистру в имени виртуального хоста. Помним про это при указании URL-адреса базы в бпаузере.
Можно использовать алиасы в файле настроек веб-сервера httpd.conf для назначения дополнительных имен хостов или обход чувствительности регистра веб-сервера.
7. Для удобства создаем батники на старт и на остановку виртуальной машины. Батник на старт прописываем в автозагрузку.
8. Для пущей надежности при разработке конфигураций желательно предусматривать роль с запретом запуска внешних обработок. Соответственно, если вы планируете демонстрировать свою разработку через интернет, то лучше выдавать демо-доступ интернет пользователям именно с такой ролью.
9. Также для повышения безопасности можно настроить права доступа к файлам и папкам файловой системы сервера встроенными средствами самой ОС (хотя это и не обязательно, если мы установили запрет для роли 1С на выполнение внешних обработок). Для этого в свойствах файлов или папок нужно перейти на закладку "Безопасность" и задать соответствующие разрешения или запреты для пользователя, от имени которого будут совершаться файловые операции - мы помним, что это USR1CV82. Следует быть остарожными с этими настройками и не "пережать" их. Подробнее об этом механизме читайте в документации к ОС.
В настройках брандмауэра Windows 7 на виртуалке запрещаем исходящие сетевые подключения. Для этого открываем настройки брандмауэра и переходим по ссылке "Дополнительные параметры". Правой кнопкой мыши открываем свойства корневого элемента политик брандмауэра и выбираем блокировку исходящих подключений.
Ну вот вроде бы и все. Всем удачи в настройках.