- Установка дополнительной лицензии Hyper-V Windows Server 2016 в Hetzner
- 1. Заказываем дополнительный IP-адрес и получаем виртуальный MAC
- 2. Создаем виртуальную машину
- Установка Windows Server
- Результат
- hetzner, как поставить свою ОС на аукционный сервер?
- Установка ОС на сервер в ДЦ hetzner
- Что нам потребуется для настройки сервера Hetzner?
- Как установить windows hetzner
- Царский блог
- Философия программирования
- Настройка сервера с нуля на примере VPS от Hetzner’а
- Hetzner.de – выбираем сервер
- Заказываем сервер
- Operating systems without pre-installed control panel
- Operating systems with pre-installed control panel
- Рабочая среда в Windows 10
- Настройка DNS
- Первые шаги
- Язык и timezone
- Синхронизация времени
- Устанавливаем LEMP-стек: NGINX + PHP 7.0 + MySQL
- NGINX
- PHP 7.0
- MySQL
- Связываем Nginx с PHP, создаём сайты
- PHP конфиг
- Настраиваем NGINX
- Добавляем 4-ый сайт: site2.ru — web4
- Настройка FTP сервера
- Настройка почты — Postfix + Dovecot
- Шаг 1: Инсталлируем пакеты и устанавливаем сертификат
- Шаг 2: Создаём базу данных MySQL, виртуальные домены, пользователей и альясы
- Шаг 3: Конфигурируем Postfix
- Шаг 4: Конфижим Dovecot
- Поздравляю! Мы успешно настроили наш почтовый сервер и теперь можно приступать к тестам!
- Шаг 5: Добавляем и конфигурирем SpamAssassin
- Инсталлируем SpamAssassin
- Устанавливаем права доступа
- Займемся непосредственно конфигурацией
- Ага, а тесты?!
- FAIL2BAN
Установка дополнительной лицензии Hyper-V Windows Server 2016 в Hetzner
Дано: выделенный сервер с арендованной лицензионной Windows Server 2016 Standart. Установить дополнительную ОС в виртуальную машину Hyper-V.
Арендованная ОС Windows Server 2016 в ДЦ Hetzner поставляется по лицензии SPLA. В нее входит одна дополнительная лицензия для установки Windows Server на виртуальную машину Hyper-V. Предположим что роль гипервизора уже установлена и настроена.
1. Заказываем дополнительный IP-адрес и получаем виртуальный MAC
С помощью кнопки «Order additional IP» заказываем дополнительный IP-адрес. После того как он появится в панели управления нужно нажать на синюю кнопку возле нового IP-адреса и заказать отдельный MAC-адрес.
2. Создаем виртуальную машину
Процедура установки доп. лицензии ОС Windows Server на Hyper-V имеет 2 тонкости:
- Потребуется загрузка с помощью PXE и, следовательно, «Устаревший сетевой адаптер» (Legacy Network Adapter). Значит, мы можем cоздать ВМ Hyper-V только 1-го поколения.
- Виртуальный жесткий диск необходимо подключать в IDE-контроллер. В случае его установки в SCSI-контроллер, вы увидите следующую ошибку:
Для сетевого адаптера присваиваем статический MAC-адрес и устанавливаем в BIOS загрузку с него:
Установка Windows Server
Если мы все сделали правильно, то при пуске виртуальной машины через несколько секунд появится Hetzner PXE Boot Menu:
Далее в панели Robot на вкладке Windows/Additional IP активируем установку Windows:
После чего будет выдан пароль для первого входа в Windows:
Перезагружаем нашу виртуальную машину не меняя настроек и наблюдаем загрузку образа по сети:
После ожидания 5-10 минут появляется Windows Boot Manager:
Результат
После ожидания примерно 20-30 минут Windows установлен, активирован и готов ко входу:
hetzner, как поставить свою ОС на аукционный сервер?
Офтопик.
Да, мне стыдно, но больше спросить негде. И не гуглится что-то.
Именно на железный сервер напрямую.
Да, мне стыдно, но больше спросить негде.
А саппорт слабо спросить, да?
Так быдло-с, онли русско говорящий.
Так купил бы у реселлеров сервер, например у вкусносервера и все тебе поддержка сделала бы.
За теже деньги, между прочим.
ну так пиши в англоязычный саппорт, либо на винфак же.
Пойду гляну ваши цены.
Но мне он нужен только на месяц. Потому на аукцион и смотрел.
100-130 евро за месяц, и без платежа (тоже под сотку) за установку.
Я бы даже подкинул 20 евро за эту дурацкую 2012ю венду, но на аукционные вроде нельзя.
Если вариант 1 по какимм-то причинам не сработал.
Вариант 2. Заказать LARA (KVM в простонародье), если канал у тебя жирный, его дают на 2 часа бесплатно, и там, если не ошибаюсь в виртуальный привод можно примонтировать нужный тебе iso, а потом поставить с него систему.
Вариант 3. Если канал у твоего провайдера слабоват, попросить ДЦ записать нужный образ на диск, сам диск воткнуть в сервер (услуга платная), затем опять таки, подключить LARA и поставить систему с вставленного диска.
Там всё расписано, в том числе и на их вики. При покупке, по-моему, высылаются все инструкции.
В двух словах: тебе дают сервак на котором по сети загрузят некий rescue-linux. Дальше делай с ним что хочешь: хоть в chroot ставь, хоть в qemu. В случае фейла ты всегда можешь 1) загрузить тачку обратно в rescue mode 2) запустить её в виртуализации. Короче, там есть что потыкать в панели управления.
На счёт того как ставить винду ищи на вики.
А ЛАРА вроде единоразово 126 евро просит.
если вопрос технического сорта, то:
у железных серверов есть всякие ipmi и прочие штуки для таких дел.
У тебя вместе с сервером, будет панель управления на https://robot.your-server.de/ вот от туда, по идее, должен быть доступен заказ LARA на пару часов бесплатно. (Левое меню после авторизации — Support — Requests — Server requests — Remote Console (LARA)) Если ничего подобного нет — пиши в саппорт того места, где дедик заказывал и уточняй как LARA заказать.
То что за 126 евро — это, скорее всего, постоянный KVM, который за твоим сервером закрепляется. Такой брать смысла нет, если нужно только поставить ОС.
И да, если средства позволяют — когда ты только закажешь сервер с аукциона, тебе его отдадут в рискмоде. После, ты получшь доступы в https://robot.your-server.de/server Там ты для сервера сможешь заказать установку винды, за доп. плату, разумеется.
У них есть русскоязычный супорт. И аукционные сервера поддерживают офтопик.
http://wiki.hetzner.de/index.php/Windows_Server_2012/ru
Но я лично этим не занимался спроси у поддержки сначала.
Хм. Да за месяц я готов дать 25 евро за венду. Хотя жаль, что это 2к12, а не 2к8. Просто казалось, что там для аукционных оно недоступно. Я же отказ от сервера сразу после покупки оформлю. Что бы через месяц забрали.
По поводу аренды на месяц не скажу ничего, но по идее, если во время отменить, то проблем быть не должно. Во всяком случае я не припомню.
Винду, сразу когда забираешь аукционный дедик, ты не закажешь. Тебе сервер просто в рескью отдадут, ну и доступы в панельку. А вот уже из панельки сможешь и IP заказать, если понадобится, и винду. Собственно, на отмену ты сервер тоже сможешь из панельки поставить (если, конечно, не через реселлера будешь брать, который тебе может немного урезанную панельку выдать).
Да панельку я изнутри видел. У меня 3 впски там.
Интересно, каковы шансы, что не взлетит сетап венды на хардварный рейд собравший том.
Я уже очень давно не касаюсь винды, ни на десктопе, ни на серверах тем более. К сожалению даже примерно не подскажу какова вероятность такого исхода.
Should the server which has been ordered not support the operating system you require, for example, or if you should not be satisfied with the configuration of the server for other reasons, the order may be cancelled free of charge by support request via the Robot within two weeks after delivery. In this case, we should be grateful, if you could state the reason for the cancellation.
Я правильно понимаю, что если установка офтопика не взлетит ни одним способом, то я напишу тикет, и мне вернут бабло на карточку?
Гуд. Пасиба.
Тогда можно брать.
Не успел одну штуку сделать, а офлайновый сервак вернул уже.
Установка ОС на сервер в ДЦ hetzner
Покупая сервер у Hetzner Вы столкнетесь с тем что установка ОС платная. При том, что сотрудники hetzner Вам только поставят ОС и на этом работа их будет завершена. Это конечно очень дорого и не выгодно. У Вас есть варианты решения:
- Купить установку ОС у Hetzner, а затем самостоятельно настроить сервер или заплатить еще и за настройку аутсорсеру
- Установить и настроить ОС самостоятельно
- Обратиться к нам, мы установим и настроим сервер под Ваши задачи, а так же обеспечим поддержку сервера
Предоставляем услуги «под ключ», например, Вы купили сервер для сайта: наши специалисты установят ОС, веб сервер, базу данных, почтовый сервер, панель управления сервером, настроят оптимальным образом параметры сервера для лучшей производительности, настроят фаервол и другие параметры безопасности, перенесут сайт, настроят ДНС. В результате Вы получите полностью рабочий сайт на купленном сервере.
Или же задача получить виртуальные машины на сервере, тогда мы установим ОС, нужную систему виртуализации (например установка VMWare ESXi на сервер в ДЦ Hetzner), все настроим, распределим ресурсы, установим консоль для управления, создадим виртуальные машины.
Что нам потребуется для настройки сервера Hetzner?
- Доступ к панели управления Hetzner
Данная панель располагается web-адресу http://robot.your-server.de/
Когда Вы будете оформлять аренду сервера, Hetzner пришлет вам данные для входа в панель управления услугами, письмо будет отправлено с адреса [email protected] с темой письма Ihre Robot-Zugangsdaten
Письмо от хецнер, обычно содержит одну и туже информацию на двух языках, с начало на немецком затем на английском языках.
Текст на английском выглядит таким образом:
Если на сервере установлена ОС и её требуется переустановить, сменить конфигурацию или настроить, понадобятся эти данные.
В письме от Hetzner Вам прийдет IP сервера и пароль пользователя root с [email protected]
Письмо будет иметь тему « Ihr bestellter Server» и аналогично предыдущему содержит дублирующую информацию на двух языках.
Когда стоит задача с переносом доменного имени и сайта, необходим доступ к управлению доменом. Это доступ к панели, где был куплен домен, либо же Вы самостоятельно можете внести изменения по нашим рекомендациям.
Любые задачи по установке ОС, настройке сервера Hetzner, обращайтесь [email protected], или раздел контакты.
Как установить windows hetzner
Администратор
Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1
[b]Способ установки пиратской своей копии Windows на Hetzner VServer:[/b]
1. Качаем или создаем образ нужной Windows.
2. Устанавливаем на рабочий ПК QEMU для Windows (ссылку можно найти в гугле).
3. Создаем образ диска в QEMU и устанавливаем на него Windows из образа.
4. В панели управления выбираем rescue mode, перезагружаем VServer, заходим по ssh и создаем 2 раздела NTFS.
5. Первый раздел делаем загрузочным.
6. Загружаем образ диска с установленной (нашей) Windows, созданный QEMU на сервер во второй раздел NTFS. Можно использовать любой sftp-клиент или ftp сервер.
7. Монтируем в системе rescue mode наш образ например в /mnt и копируем файлы установленного нами «своего» Windows на первый (загрузочный) раздел VServer.
8. Устанавливаем в rescue mode утилиту ms-sys.
9. С помощью данной утилиты исправляем Windows MBR на загрузочном разделе VServer.
10. Перезагружаем VServer.
11. С помощью Remote Konsole дальше настраиваем Windows.
Царский блог
Философия программирования
Настройка сервера с нуля на примере VPS от Hetzner’а
Hetzner.de – выбираем сервер
Итак, закажем и настроим свой собственный VPS. Заходим на https://www.hetzner.de/, в верхнем меню выбираем VServer (виртуальный сервер). Давайте выберем средний по цене, но вроде как с неплохими характеристиками: vServer CX30
Обратим внимание на цену: на немецком он предлагается за 14,16€ / Monat (14,16 евро в месяц), а после переключения на русский язык или USA: € 11.90 per month / 11,90€ / месяц.
Что за? Да, немцы своим дороже что ли продают? У них денег, видимо больше. Да ладно, переведём евро на рубли, сейчас Яндекс показывает 63,57 руб./ 1EUR – курс ЦБ РФ на 28/12/2016. Округлим до 65, получается сумма менее 1.000 руб: 11,90€ * 65 руб. = 773.50 руб/месяц.
Я думаю, неплохо, особенно после того как посмотрим на предлагаемую конфигурцию сего чуда:
Benefits: 2 vCores, RAM 4 GB RAM, SSD 100 GB, Connection: 1 Gbit/s NIC, Traffic: 8 TB, Snapshots: 3. Что в переводе на русский означает 2 ядра (виртуальных), 4 гига оперативки, диск на 100 гигов (SSD), скорость связи 1 Гигабит/секунда, предел трафика – 8 Терабайт. Сразу замечу, что в комментарии указано, что при превышении предела трафика за месяц скорость подключения снизится до 10 Мегабит в секунду, но сервер по прежнему будет доступен. Да, и ещё в комплектацию входит поддержка до 3 снэпшотов, так что при желании можно откатиться.
Заказываем сервер
Ну что, друзья, неплохо за такие деньги или как? ОК, поехали! Вперед, без сомнений, этот сервер будет наш. Нажимаем кнопочку “Order now” (“Заказать” – да, сайт Hetzner.de поддерживает русский в том числе, да вообще много языков, но вот насчёт самой тех.поддержки не уверен, думаю, английским обойдёмся если что). А сама админка сервера (https://robot.your-server.de/server) у меня на английском, я честно говоря, доволен и так.
Далее нам предстоит выбрать систему из списка:
Operating systems without pre-installed control panel
- CentOS 6.8 minimal
- CentOS 7.2 minimal
- Debian 8.6 LAMP
- Debian 8.6 minimal
- openSUSE 42.1 minimal
- Ubuntu 16.04.1 LTS minimal
- Ubuntu 16.10 minimal
- Windows Server 2012 R2 Datacenter Edition (Price (monthly): € 130.25 / Setup (once): € 0.00)
- Windows Server 2012 R2 Standard Edition (Price (monthly): € 21.01 / Setup (once): € 0.00)
Operating systems with pre-installed control panel
- CentOS 7.2 + cPanel
- CentOS 7.2 + Plesk
- Debian 8.6 + Plesk
- Ubuntu 16.04.1 LTS + Plesk
- Windows Server 2012 R2 Datacenter Edition + Plesk (Price (monthly): € 130.25 / Setup (once): € 0.00)
- Windows Server 2012 R2 Standard Edition + Plesk (Price (monthly): € 21.01 / Setup (once): € 0.00)
То есть два списка – без контроль-панели и с ней (cPanel/Plesk).
Ребята, мы выбираем – Ubuntu 16.10 minimal без всяких панелей. Это минимальная система, в ней как я понял, дополнительно будут установлены основные системные утилиты (coreutils) и SSH. Как раз то, что нам нужно. Всё остальное – NGINX/PHP/MYSQL/POSTFIX/DOVECOT/PUREFTPD/SpamAssassin/FAIL2BAN и т.д. и т.п. (по-русски etc.) мы установим сами, своими собственными ручками, тем более это не так уж и сложно и не так уж и долго, в частности благодаря APT‘у.
На нашем сервере будет работать 3-4 сайта на NGINX/PHP-FPM, крутится радио и, возможно, экспериментальный сайтик на node.js. Также мы поставим FFMPEG и ImageMagic для беспрепятственной обработки видео/аудио/графики.
Итак, далее идёт опция – выбрать SSH-доступ ч/з пароль или через ключи, я выбрал пароль, но это дело вкуса, тем более потом всегда можно всё поменять.
Потом, если у Вас нет аккаунта на Hetzner.de, Вам предложат его создать, ничего особенного, доволньо небольшая форма, и опосля предложат ввести данные своей банковской карты. Так как я этому сайту доверяю (кто не знает Hetzner.de?) я без страха ввожу все нужные данные и… получаю сервер в свои руки.
Рабочая среда в Windows 10
Мне на почту пришло письмо буквально через 5-10 минут, что сервер готов к работе, здесь же мне указали рутовый пароль и ip-адрес нашего сервера. Итак, открываем свой любимый SSH-клиент, например, Putty и поехали!
Да, кстати, в своей Windows 10 я использую связку WinSCP + Putty. То есть захожу на файловую систему сервера под рутом через WinSCP по SFTP протоколу, здесь же могу копировать/удалять/править в виндовом редакторе (мой любимый сейчас AkelPad) любой файл, а нажав на кнопочку Ctrl+P (Open session in PuTTY) я моментально, без ввода пароля, попадаю в консоль PuTTY (конечно, всё это надо настроить в WinSCP предварительно, что делается буквально в несколько кликов мышки).
Настройка DNS
Лично я использую бесплатный Hurricane Electric Free DNS Management – https://dns.he.net/
А Hetzner.de предлагает подобную вещь за:
Это 15,97 евро * 65 рублей = 1038,05 рублей. Это разовая оплата. Чем он лучше бесплатного? На бесплатный нельзя полагаться на 100%, хотя мы работаем с Hurricane Electric несколько лет и ни разу не было проблем (в отличие от https://entrydns.net/, который часто глючил, а потом стал просить денег, хоть и не больших).
Но тут нам раздумывать нечего – видите надпись – Free of charge for dedicated root server and vServer customers? Да, для нашего виртульаного сервера он должен быть бесплатным. Но при заходе на https://robot.your-server.de/ мы нигде не видим ссылку на что-то подобное NS/DNS. Оказывается, его просто надо заказать дополнительно – заходим по ссылкам: Ordering – Domain Administration – Nameserver Robot – Order Product и видим:
Да, везде нули, в данном случае это хорошо, он для нас действительно вроде как бесплатен.
Но, повторяюсь, я использую Hurricane Electric, поэтому здесь не стал заказывать.
Как настроить начальные и самые необходимые NS записи для сайтов рассказано здесь, на этом блоге (на примере Hurricane Electric Free DNS Management) – http://atzar.ru/hurricane-electric-free-dns-management/. На Hetzner’е, думаю, настравается всё подобным образом. Настраиваем всё под наш новый ip сервера.
Первые шаги
Итак, смотрим, что уже у нас в действительности есть, держа в уме, что всё же это виртуалка, а не полноценный сервер. Но у нас пока нет десятков тысяч – миллионов клиентов, чтобы держать полноценный сервер или кластер таких серверов.
Все команды я будут выполнять от рута, так как у меня нет паранойи по этому поводу, ты через sudo сможешь накосячить также как и не через sudo. Да ладно, это дело в куса а не принципа.
Нас встречает приглашние вида:
root@Ubuntu-1610-yakkety-64-minimal
Заздадим Fully Qualified Domain Name:
# hostname beotiger
# echo beotiger > /etc/hostname
# vim /etc/hosts
ip-адрес нашего сервера site2.ru
Теперь перелогинимся и получим приглашение root@beotiger
Итак, версия:
# uname -a
Linux beotiger 4.8.0-32-generic #34-Ubuntu SMP Tue Dec 13 14:30:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/issue
Ubuntu 16.10 \n \l
Сколько памяти свободно:
# free -h
total used free shared buff/cache available
Mem: 3.9G 218M 2.8G 17M 841M 3.4G
Swap: 0B 0B 0B
Дисковое пространство:
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 8.7M 387M 3% /run
/dev/sda1 94G 2.1G 87G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 396M 0 396M 0% /run/user/0
Итак, видим, что наша пока пустая система сжирает 218Мегабайт оперативки и 2.1Гиг нашего диска. Посмотрим, что будет после установки всех нужных нам сервисов! Для удобного просмотра состояние системы и процессов можно установить htop:
# apt install htop
Язык и timezone
Лично я предпочитаю английский в документации, сказывается давняя паранойя о плохом переводе. Поэтому локаль не меняю. А время всё же поменяю на московское, а то в логах буду путаться (я живу по московскому времени):
Выбираем пояс Europe/Moscow, и ребутнемся, вспомним времена Win98 (чтобы все наши уже запущенные службы стали использовать новый часовой пояс в логах и т.п.):
Синхронизация времени
Внимание! NTP не нужен, если есть timesyncd и мы не собираемся выступать в роли ntpd сервера. Пакет: systemd: /lib/systemd/systemd-timesyncd
# timedatectl status
Local time: Fri 2016-12-30 12:13:22 MSK
Universal time: Fri 2016-12-30 09:13:22 UTC
RTC time: Fri 2016-12-30 09:13:22
Time zone: Europe/Moscow (MSK, +0300)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Строка NTP synchronized: yes говорит о том, что время синхронизируется успешно.
Устанавливаем LEMP-стек: NGINX + PHP 7.0 + MySQL
LAMP: Linux Apache MySQL PHP – минимальная готовая среда веб-разработки. Linux у нас есть, Apache мы поменяем на Nginx. Т.е. LAMP -> LEMP (Linux Nginx MySQL PHP). Итак, ставим, настраивать будем позже:
NGINX
NGINX самая простая и мощная вещь, как раз то, что я люблю больше всего:
# apt install nginx
Всё, у нас есть рабочий сервер. Уже можно зайти на http://ip-нашего-сервера и узреть стандартную дефолтную страницу nginx. Дефолтная папка сайта /var/www/html. Мы её трогатиь не будем, когда поставим PHP/MySQL, займёмся детальной настройкой и связкой NGINX+PHP7 (напомню, будем добавлять несколько сайтов)
Текущая версия nginx:
# nginx -v
nginx version: nginx/1.10.1 (Ubuntu)
Посмотреть текущие модули nginx (где-то видел хак на stackoverflow):
# 2>&1 nginx -V | tr — — ‘\n’ | grep _module
http_ssl_module
http_stub_status_module
http_realip_module
http_auth_request_module
http_addition_module
http_dav_module
http_geoip_module
http_gunzip_module
http_gzip_static_module
http_image_filter_module
http_v2_module
http_sub_module
http_xslt_module
stream_ssl_module
mail_ssl_module
В стандартном nginx-пакете есть только самые необохдимые модули. Если Вам нужны допонлительные модули, например, MP4, совсем не обязательно перекомпилировать nginx с сорцов.
Добавить модули в nginx можно так (ещё не пробовал):
# apt install nginx-extras
Возможная конфигурация с использованием модуля mp4:
location /video/ <
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;
mp4_limit_rate on;
mp4_limit_rate_after 30s;
>
Смотрим, что содержиться в nginx-extras:
# apt show nginx-extras
Package: nginx-extras
Version: 1.10.1-0ubuntu1.2
Priority: optional
Section: universe/httpd
Source: nginx
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Kartik Mistry
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,886 kB
Provides: httpd, httpd-cgi, nginx
Depends: nginx-common (= 1.10.1-0ubuntu1.2), perl (>= 5.22.2-3), perlapi-5.22.2, libc6 (>= 2.14), libexpat1 (>= 2.0.1), libgd3 (>= 2.1.0
), libgeoip1, libluajit-5.1-2, libpam0g (>= 0.99.7.1), libpcre3, libperl5.22 (>= 5.22.2), libssl1.0.0 (>= 1.0.2
beta3), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25), zlib1g (>= 1:1.1.4)
Suggests: nginx-doc (= 1.10.1-0ubuntu1.2)
Conflicts: nginx-core, nginx-full, nginx-light
Breaks: nginx (
Много всего, нужно ли оно нам сейчас?! Как подключать/отключать нужные модули при запуске сервера/службы?
PHP 7.0
Конечно, будем стаить семёрку. По заявлению многих, она намного быстрее пятёрки. Не знаю, не проверял, но охотно верю! Заметьте, что пакет PHP7.0, который описывается так:
php7.0/yakkety,yakkety,yakkety,yakkety 7.0.8-3ubuntu3 all
server-side, HTML-embedded scripting language (metapackage)
предложит нам поставить apache, я не знаю почему, что в головах творится у этих собирателей пакетов под Юбунту? Сами смотрите:
Nooooooooo, тут нажимаем n, нет, nicht, nope, ни в коем случае. Вы что творите, сборщики пакетов для Убунты?
Пакет php7.0-fpm:
php7.0-fpm/yakkety,yakkety 7.0.8-3ubuntu3 amd64
server-side, HTML-embedded scripting language (FPM-CGI binary)
ИЗ: https://php-fpm.org/
PHP-FPM (FastCGI Process Manager) альтернатива PHP FastCGI со множеством новых полезных возможностей, подходящих для сайтов любых размеров, особенно для загруженных сайтов. Включают: Адаптивный запуск процессов! Статистика! These features include: Adaptive process spawning (NEW!) Basic statistics (ala Apache’s mod_status) (NEW!)
Итак, мы видим, что установились основные пакеты PHP7.0 — common, cli (для вызова PHP из командной строки), fpm — как раз то, что нам нужно для связи с NGINX, нашим вебсервером, json — полезная штука, мы её применяем практически во всех наших проектах, особенно основанных на AJAX, opcache — кэширование, readline — возможность проводить с PHP сессию типа интерактивного шелла, подробнее см. здесь: http://php.net/manual/en/features.commandline.interactive.php
Доустановим некоторые наиболее важные и нужные PHP-пакеты, часто используемые не только в наших проектах:
curl — общение с сетью из PHP ч/з удобный CURL API, gd — рисование графических примитов и текста, mbstring — поддержка мультибайтовых строк, mcrypt — криптование, кому оно сейчас не треба)), mysql и sqlite3 — именно эти БД я использую в своих проектах, вам могут понадобиться другие БД, например pgsql или sybase. Вообще список доступных пакетов PHP 7 можно посмотреть например так:
MySQL
Кто-то ставит MariaDB, возможно, ожидая подвоха от Oracle, но я как-то прикипел к MySQL:
# apt install mysql-server
Reading package lists. Done
Building dependency tree
Reading state information. Done
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.0-5
libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl
libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl
libtimedate-perl liburi-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common
mysql-server-5.7 mysql-server-core-5.7
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.0-5
libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl
libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl
libtimedate-perl liburi-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common
mysql-server mysql-server-5.7 mysql-server-core-5.7
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 20.3 MB of archives.
After this operation, 172 MB of additional disk space will be used.
Твикать mysql пока не будем, если нагрузки будут большими, тогда пусть голова болит.
Связываем Nginx с PHP, создаём сайты
Итак, мы установили полный стек LEMP, теперь будем создавать сайты, создадим 3 сайта, остальные добавляем по подобию.
Названия и адреса наших сайтов:
1. site.ru
2. site.org
3. site.com
Для каждого сайта создадим в каталоге /var/www одноименные с именем сайта папки: site.ru site.org site.com. В каждой из этих папок создадим три подпапки:
- tmp — для сессий и загрузок файлов
- log — для логов nginx
- web — для www данных (само содержимое сайта)
Также для каждого сайта будем создавать своего юзера с именам web1, web2, web3 и т.д. (при добавлении 4-го сайта создадим юзера web4, см. ниже). для каждого юзера будем использовать группу www-data.
Итак, добавляем пользователей и устанавливаем права доступа на соотв. папки. Все команды напомню осуществляем под root’ом:
Запомним пароли для пользователей web1, web2 и web3, они пригодятся нам далее для доступа к сайтам через FTP (см. далее по тексту).
PHP конфиг
Создадим конфигурационные файлы PHP-FPM для каждого юзера/сайта. Каждый сайт у нас будет обслуживаться своими PHP-FPM процессами, чтобы распределить нагрузку по всем сайтам. Названия конф файлов web[1..3].conf, они находятся в папке /etc/php/7.0/fpm/pool.d, PHP-FPM при запуске подключает всё оттуда. Итак, пример конфигурации для сайта site.ru (юзера web1):
Содержимое web1.conf:
[web1]
listen = /run/php/php7.0-fpm1.sock
listen.owner = web1
listen.group = www-data
listen.mode = 0660
user = web1
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0
php_admin_value[open_basedir] = /var/www/site.ru/web:/var/www/site.ru/tmp
php_admin_value[session.save_path] = /var/www/site.ru/tmp
php_admin_value[upload_tmp_dir] = /var/www/site.ru/tmp
php_admin_value[sendmail_path] = «/usr/sbin/sendmail -t -i»
security.limit_extensions = .php .html
listen = /run/php/php7.0-fpm1.sock — указываем на каком сокете будет слушать процесс PHP-FPM, он нам пригодится для настройки NGINX (см. ниже).
listen.owner = web1
listen.group = www-data — владелец/группа прав доступа к сокету
user = web1
group = www-data — владелец/группа запущенного процесса при подключении к сокету
php_admin_value[open_basedir] — указываем, в какие папки будет иметь доступ владелец процесса
php_admin_value[session.save_path] — указываем, в какой папке будут храниться сессии
php_admin_value[upload_tmp_dir] — указываем, в какую папку будут скачиваться файлы (upload)
php_admin_value[sendmail_path] — команда отправки почты, иcпользуемая функцией PHP mail. Настройкой почты мы займёмся чуть позже.
Для остальных двух сайтов — копируем файл web1.conf и поменяем юзера (web1 -> web2 -> web3), сокет — /run/php/php7.0-fpm1.sock -> /run/php/php7.0-fpm2.sock -> /run/php/php7.0-fpm3.sock и папку site.ru -> site.org -> site.com
Настраиваем NGINX
Настройки сайтов хранятся в папке /etc/nginx/sites-available — доступные сайты. Чтобы сделать сайт активным и видимым nginx на него делают мягкую ссылку (симлинк) отсюда в папку /etc/nginx/sites-enabled — активные сайты.
Итак, заходим в папку /etc/nginx/sites-available и создаём файл для настроек первого сайта. Имя файла конечно же может быть любым, мы будем делать имена файлов в виде имён сайтов с добавления суффикса .vhost, чтобы показать, что это настройки виртуального хоста. А симлинки будем назвать по имени используемого пользователя, чтобы видеть, каким именно пользователем мы используем данный сайт. Эта информация может пригодится, например, ч/з полгода, если мы давно не будем заглядывать сюда и у нас вылетит из головы, каких пользователей под какие сайты мы задавали — в этом случае будет не обязательно копаться в файлах настроек Nginx и PHP. Итак, приступим:
Полное содержимое файла site.ru.vhost:
Бегло пробежимся по настройкам. Итак,
root /var/www/site.ru/web;
как мы и говорили вначале, корень сайтов будет лежать в папке web.
location
/\. <
deny all;
access_log off;
log_not_found off;
>
Этот блок говорит о том, чтобы закрыть доступ ко всем файлам и папкам, начинающимся с точки (`.`). Если вам это не нужно, этот блок можно удалить.
location @php <
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm1.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
>
Этот блок связывает NGINX с PHP-FPM ч/з сокет /run/php/php7.0-fpm1.sock — именно этот сокет мы задавали в web1.conf в качестве параметра для listen.
Остальные сайты делаем по образу и подобию site.ru.vhost — копируем, меняем в файле имя сервера и корневой путь к сайту (параметры server_name и root), не забываем исправить пути в error_log и access_log, и главное — не забудем указать другой сокет в параметре fastcgi_pass — это будет unix:/run/php/php7.0-fpm2.sock для site.org и unix:/run/php/php7.0-fpm3.sock для сайта site.com. После создания файлов в папке sites-available делаем на них симлинки в папку sites-enabled:
После создания и каждого изменения конфигурационых файлов следует перезапускать соотв. службу. Мы меняли конфиги для PHP-FPM и NGINX, поэтому выполняем следующие две команды:
Если нет ошибки в запуске служб, заходим на наши сайты и любуемся ими! Для проверки создадим файл 1.php с содержимым:
Закинем его в папку /var/www/site.ru/web.
Теперь при заходе на site.ru/1.php мы должны увидеть экран с текущими настройками PHP, типа такого:
Смотрим текущие параметры, подключенные модули PHP и убедждаемся в том, что всё вроде настроено как надо. Тоже самое повторим для сайтов site.org и site.com.
Ещё добавлю один нюанс — иногда организация нашего сайта требует, чтобы все запросы к сайту шли через один шлюз, обычно это index.php. То есть какой бы путь мы ни указали при обращении к сайту, управление будет передано именно index.php. В nginx есть несколько способ организовать подобное и я приведу способ, который используем мы для одного из наших сайтов.
Итак, вот конфиг NGINX для сайта, к которому все запросы (правда, кроме обращения к папке inc, в которой у нас хранятся публичные ресурсы — картинки, JavaScripts и CSS-файлы), идут напрямую index.php, а там мы уже решаем, что делать с данным запросом:
В этом конфиге самые интересные такие блоки:
location /inc/ <>
location / <
rewrite ^ /index.php last;
>
Первый блок приказывает nginx обрабатывать путь к папке inc как есть, а второй блок все запросы перенаправляет файлу index.php.
Добавляем 4-ый сайт: site2.ru — web4
Настройка FTP сервера
Прежде чем приступить к настройкам почты, настроим FTP сервер, чтобы можно было заходить по FTP(FTPS) в папку сайта и обновлять его. Инсталлируем pure-ftpd:
# apt install pure-ftpd
Reading package lists. Done
Building dependency tree
Reading state information. Done
The following additional packages will be installed:
pure-ftpd-common
The following NEW packages will be installed:
pure-ftpd pure-ftpd-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 263 kB of archives.
After this operation, 796 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Настройка Pure-ftpd осуществляется оригинально — надо в папке /etc/pure-ftpd/conf создать файл с именем параметра и вписать требуемое значение в его содержимое. Странно, но ладно. Итак, давайте создадим исполняемый скрипт, который будет задавать нужные нам настройки и потом запустим его:
Кратко описание настроек: мы делаем chroot для всех, чтобы не лазали по всему нашему серверу, отображаем файлы начинающиеся с точки (в Юникс это типа скрытые файлы) и разрешаем их читать/писать, запрещаем анонимный вход, задаём 15 минут макс. возможного простоя, также обязуем всех клиентов использовать TLS (шифрование) — строка echo ‘2’ > TLS. Конечно, рекомендуется всегда где возможно использовать шифрование, чтобы MIM (men in the middle) не могли перехватывать наши файлы. То есть перехватывать они смогут по-любому, но расшифровать — вряд ли. Недостаток шифрования — более медленная скорость передачи файлов, т.к. тратится время на шифровку/дешифровку. Чтобы полностью отключить шифрование, надо в TLS вписать 0, чтобы разрешить обычные и шифрованный трафик — сюда вписать единичку (1).
Также важен последний параметр echo ‘yes’ > UnixAuthentication. Помните юзеров, которые мы создавали в связке PHP — NGINX (web1, web2 web3 и т.д.) Теперь мы можем использовать их также в качестве FTP-юзеров. Используем теже пароли, что мы задавали при их создании.
Для того, чтобы использовать TLS, создадим самоподписной сертификат:
После всех манипуляций перезапустим наш демон:
# service pure-ftpd restart
PureFTPD пишет логи в syslog. Смотреть:
# tail -f /var/log/syslog
Всё, теперь мы можем соеднияться по FTP(S) (S — secure), указывая пользователей web1,web2, web3, при этом они по умолчанию будут попадать в свои домашние папки, которые являются папками их сайтов.
Настройка почты — Postfix + Dovecot
Итак, у нас есть работающию сайты и FTP доступ к ним, чтобы заливать/обновлять/удалять контент на этих сайтах. Также мы можем работать с базами данных MySQL/SQlite.
Для полноценной работы нам осталось настроить почту, чтобы отсылать/получать письма на своих сайтах или в своей системе. Система почты в общем случае состоит из двух компонентов MTA — mail transer agent, агент передачи почты и MDA — mail delivery agent, агент доставки почты. В качестве золотой пары мы будем использовать Postfix + Dovecot, как наиболее популярные на сегодня, и не зря, по-моему скромному мнению. Итак, инсталлируем пакеты, настраиваем конфиги и создаём почтовые домены и ящики. Поехали!
Шаг 1: Инсталлируем пакеты и устанавливаем сертификат
# apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql dovecot-pop3d
В диалоговом окне указываем : Internet Site, site.ru
Создаём ключ/сертификат dovecot.key и dovecot.pem:
# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/dovecot.key -out /etc/ssl/certs/dovecot.pem
Мои ответы на вопросы в порядке их возникновения: RU Volgograd Volgograd Justbeo CEO beotiger mymail@gmail.com
Проверяем доступность наших доменов для почты:
# dig MX site.ru +short @ns1.he.net
10 mail.site.ru.
# host mail.site.ru ns1.he.net
Using domain server:
Name: ns1.he.net
Address: 216.218.130.2#53
Aliases:
mail.site.ru has address 131.21.128.229
Шаг 2: Создаём базу данных MySQL, виртуальные домены, пользователей и альясы
Создадим особую БД для хранения наших виртуальных доменов, пользователей и альясов. Назовём её к примеру vmail. В этой базе создадим виртуальные домены под все наши 3 сайта, а также двух пользователя для двух сайтов:
# mysqladmin -p create vmail
mysql > GRANT SELECT ON vmail.* TO ‘vmail’@’127.0.0.1’ IDENTIFIED BY ‘password’;
mysql > FLUSH PRIVILEGES;
mysql> USE vmail;
mysql> CREATE TABLE `domains` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`password` VARCHAR(106) NOT NULL,
`email` VARCHAR(120) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> CREATE TABLE `aliases` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
— Наши виртуальные домены. id по умолчанию начинается с 1:
mysql> INSERT INTO `domains` (`name`)
VALUES (‘site.ru’), (‘site.org’), (‘site.com’);
mysql> INSERT INTO `users` (`domain_id`, `password` , `email`)
VALUES
(‘1’, ENCRYPT(‘pass1’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘user1@site.ru’),
(‘2’, ENCRYPT(‘pass2’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘user2@site.org’);
— добавляем ещё одного пользователя для site.com, не забываем про правильный domain_id:
mysql> INSERT INTO `users` (`domain_id`, `password` , `email`)
VALUES (‘3’, ENCRYPT(‘pass3’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘user3@site.com’);
— Note: Warning | 1287 | ‘ENCRYPT’ is deprecated and will be removed in a future release. Please use AES_ENCRYPT instead
— добавляем альяс info@site.ru, который будет ссылаться на user1@site.ru, то есть письмо на info@site.ru уйдёт пользователю user1@site.ru. Важно — следует свериться с ид домена из таблицы domains, чтобы поле domain_id ему соответствовало:
mysql> INSERT INTO `aliases` (`domain_id`, `source`, `destination`)
VALUES (‘1’, ‘info@site.ru’, ‘user1@site.ru’);
Аналогично добавляем другие нужные альясы. Чтобы добавить глобальный альяс, который будет пересылать письма, уходящие на любой неопределенный адрес выбранного домена определенному пользователю данного домена:
mysql> INSERT INTO `aliases` (`domain_id`, `source`, `destination`)
VALUES (‘1’, ‘@site.ru’, ‘user1@site.ru’);
— завершаем сеанс работы с MySQL:
QUIT;
Шаг 3: Конфигурируем Postfix
Основные настройки Postfix находятся в двух файлах — main.cf и master.cf. В master.cf можно переопределять некоторые настройки для определённых служб (флаг -o — override, переопределить). Начнём с main.cf. Кратко. что мы тут делаем: используем шифрованние TLS, виртуальные домены и пользователей ч/з MySQL базу, Dovecot. переопределяем только указанные ниже настройки, остальные оставляем по умолчанию, как они были в main.cf изначально:
# cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
smtpd_tls_key_file=/etc/ssl/private/dovecot.key
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
# mydestination = $myhostname, site.com, localhost.com, , localhost
mydestination = localhost, localhost.localdomain
myhostname = site.com
## Tells Postfix to use Dovecot’s LMTP instead of its own LDA to save emails to the local mailboxes.
virtual_transport = lmtp:unix:private/dovecot-lmtp
## Tells Postfix you’re using MySQL to store virtual domains, and gives the paths to the database connections.
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Создаём нужные файлы:
# vim /etc/postfix/mysql-virtual-mailbox-domains.cf
user = vmail
password = gR29eZ34
hosts = 127.0.0.1
dbname = vmail
query = SELECT 1 FROM domains WHERE name=’%s’
# vim /etc/postfix/mysql-virtual-mailbox-maps.cf
user = vmail
password = gR29eZ34
hosts = 127.0.0.1
dbname = vmail
query = SELECT 1 FROM users WHERE email=’%s’
# vim /etc/postfix/mysql-virtual-alias-maps.cf
user = vmail
password = gR29eZ34
hosts = 127.0.0.1
dbname = vmail
query = SELECT destination FROM aliases WHERE source=’%s’
Первые две проверки должны вернуть 1, третья — email для альяса: user1@site.ru
submission inet n — — — — smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Проверим все установки Postfix и сделаем рестарт его (релоада недостаточно что ли?):
Шаг 4: Конфижим Dovecot
Создаём копии на всякий случай:
.
!include_try /usr/share/dovecot/protocols.d
protocols = imap lmtp pop3
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
Создание юзера, папок и проверка доступа
Введем команду:
Убедимся, что параметры доступа таковы:
drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 /var/mail
Создаём папки для каждого домена из MySQL таблицы domains
Создаем юзера и группу vmail с >
И меняем на него владение папки /var/mail:
Теперь правим файл /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
Т.е. поменяли авторизацию с системной на MySQL.
passdb <
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
>
userdb <
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
>
driver = mysql
connect = host=127.0.0.1 dbname=vmail user=vmail password=gR29eZ34
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM users WHERE email=’%u’;
##Uncomment inet_listener_imap and modify to port 0
service imap-login <
inet_listener imap <
port = 0
>
#Create LMTP socket and this configurations
service lmtp <
unix_listener /var/spool/postfix/private/dovecot-lmtp <
mode = 0600
user = postfix
group = postfix
>
#inet_listener lmtp <
# Avoid making LMTP visible for the entire internet
#address =
#port =
#>
>
# Modify unix_listener parameter to service_auth like this:
unix_listener /var/spool/postfix/private/auth <
mode = 0666
user = postfix
group = postfix
>
unix_listener auth-userdb <
mode = 0600
user = vmail
#group =
>
#unix_listener /var/spool/postfix/private/auth <
# mode = 0666
#>
service auth-worker <
# Auth worker process is run as root by default, so that it can access
# /etc/shadow. If this isn’t necessary, the user should be changed to
# $default_internal_user.
user = vmail
>
ssl = required
ssl_cert =
Посмотреть полную конфигурацию dovecot можно командой:
Поздравляю! Мы успешно настроили наш почтовый сервер и теперь можно приступать к тестам!
— Username: user2@site.org
— Password: pass2
— IMAP: site.org:993
— SMTP: site.org:587
Примечание: используем порты 993 для secure IMAP, 587 или 25 для SMTP и 995 для POP3?
Настройки почтовика:
Send: «SMTP Auth automatic» «Use SSL/TLS» «Use STARTTLS command to start encrypted session» «SMTP port: 587»
Шаг 5: Добавляем и конфигурирем SpamAssassin
Инсталлируем SpamAssassin
# apt install spamassassin spamc — a spamc зачем?
Reading package lists. Done
Building dependency tree
Reading state information. Done
The following additional packages will be installed:
binutils cpp cpp-6 dirmngr gcc gcc-6 gnupg gnupg-agent gnupg-l10n libasan3 libatomic1
libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdigest-hmac-perl libgcc-6-dev
libio-socket-inet6-perl libisl15 libitm1 liblsan0 libmail-spf-perl libmpc3 libmpx2
libnet-dns-perl libnet-ip-perl libnetaddr-ip-perl libquadmath0 libsocket6-perl
libsys-hostname-long-perl libtsan0 libubsan0 linux-libc-dev make manpages manpages-dev
pinentry-curses re2c sa-compile
Suggested packages:
binutils-doc cpp-doc gcc-6-locales tor gcc-multilib autoconf automake libtool flex bison gdb
gcc-doc gcc-6-multilib gcc-6-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg
libasan3-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg
libquadmath0-dbg parcimonie xloadimage glibc-doc make-doc pinentry-doc razor
libio-socket-ssl-perl libdbi-perl pyzor libmail-dkim-perl libencode-detect-perl
The following NEW packages will be installed:
binutils cpp cpp-6 dirmngr gcc gcc-6 gnupg gnupg-agent gnupg-l10n libasan3 libatomic1
libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdigest-hmac-perl libgcc-6-dev
libio-socket-inet6-perl libisl15 libitm1 liblsan0 libmail-spf-perl libmpc3 libmpx2
libnet-dns-perl libnet-ip-perl libnetaddr-ip-perl libquadmath0 libsocket6-perl
libsys-hostname-long-perl libtsan0 libubsan0 linux-libc-dev make manpages manpages-dev
pinentry-curses re2c sa-compile spamassassin spamc
0 upgraded, 41 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.0 MB of archives.
After this operation, 119 MB of additional disk space will be used.
Do you want to continue? [Y/n] yes?
Устанавливаем права доступа
Добавляем группу spamd:
# groupadd spamd
потом пользователя spamd с домашней директорией /var/log/spamassassin:
# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
и затем создаём папку /var/log/spamassassin:
# mkdir /var/log/spamassassin
Меняем права доступа к этой папке на spamd:
# chown spamd:spamd /var/log/spamassassin
Займемся непосредственно конфигурацией
# vim /etc/default/spamassassin
Меняем параметр ENABLED для включения самого демона SpamAssassin.
ENABLED=1
Также изменим домашнюю папку и опции:
OPTIONS=»—create-prefs —max-children 3 —username spamd -H /var/log/spamassassin/ -s /var/log/spamassassin/spamd.log»
И включаем крон для автоматического апдейта правил SpamAssassin:
CRON=1
Далее открываем файл /etc/spamassassin/local.cf и устанавливаем нужные нам правила анти-спама:
# vim /etc/spamassassin/local.cf
SpamAssassin ставит баллы каждому письму, и если этот балл превысит определенное значение, в нашем примере 5.0, тогда это письмо будет считаться спамом. Можно использовать такие параметры для анти-спам правил:
rewrite_header Subject *** SPAM _SCORE_ ***
report_safe 0
required_score 5.0
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
Теперь меняем один из конфигов Postfix /etc/postfix/master.cf для указания того, что каждое поступающее письмо должно проходить проверку нашим SpamAssassin.
# vim /etc/postfix/master.cf
Находим следующую строку и добавляем фильтр для spamassassin:
smtp inet n — — — — smtpd
-o content_filter=spamassassin
В конце надо будет добавить следующие параметры:
spamassassin unix — n n — — pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f $
Теперь нужно перезапустить наши службы, у которых мы меняли конфиги:
# service spamassassin restart
# service postfix restart
Всё, мои поздравления! Мы успешно сконфижили Postfix с поддержкой SpamAssassin!
Ага, а тесты?!
Тест для SpamAssassin: создайте и пошлите себе письмо со стороннего сервера со следующей темой:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
И ещё можно выполнить следующую команду:
# spamassassin -D
FAIL2BAN
Эта простая, но мощная штука позволяет банить ботов/злоумышленников по ip-адресам на определённые сроки.
Устанавливается и настраивается буквально за пару минут. Правила для большинства служб в ней уже прописаны по умолчанию, а если нам надо добавить что-то своё, это делается на основе регулярок.
Правила прописываются в файле jail.conf, но он может измениться при очередном апгрейде fail2ban, поэтому рекомендуется вносить правила в файл jail.local, который имеет приоритет перед jail.conf.
Итак, приступим, установим пакет и пропишем правила для наших служб:
FAIL2BAN использует линунксовый файервол для фильтрации и бана.
Посмотрим, какие правила у нас есть перд стартом службы, и какие добавились после её запуска
(замечу, что файревол перед этим мы не настраивали):