Рубрики
Без рубрики

Хостинг приложение Express Server Nodejs с линодом

Руководство по настройке веб-структуры SuperipJS Web Framework на хостинге Linux, таких как Linode. Включает в себя инструкцию на закреплении сервера со стандартами SSH, IPv4 / 6 форте переадресации и правилам брандмауэра с использованием iptables и UFW / несложный брандмауэр.

Автор оригинала: Tom Geraghty.

Таким образом, вы хотите создать приложение Express и запустите его на линоме, и вы нашли удивительное отсутствие руководства и прохождения? Вы пришли в нужное место … пошаговые инструкции только для этого.

Шаг 0. Прочитайте Начало работы, Настройка безопасности и другие направляющие на Linode.com.

Приступить к своему собственному риску. Эта настройка не является гарантией безопасности серверов.

Купить домен

Я буду использовать поддельный домен photo-blog.com Для этой записи. Где вы видите photo-blog.com В этом руководстве замена с вашим доменом.

Получите вашу информацию вместе

Хост Linode – это операционная система Ubuntu Linux. По состоянию на время написания этого руководства версия LTS была 16.04. Вы получаете доступ к этому серверу с SSH. Вот некоторые поддельные данные, которые мы будем использовать в этом примере:

  • Имя пользователя Linode будет: linode-username.
  • Счет электронной почты Linode: linode-username@fake.email.
  • IP-адрес хоста Linode *: 123.45.67.890.
  • Имя пользователя Linode Host Root: корень
  • Имя пользователя Linode Host, которое не Root **: not_root Linode Web Portal -> Linodes -> Вкладка удаленного доступа -> Поле SSH Access * not_root Может быть что угодно, но мне нравятся описательные имена.

Подключите через SSH

Примечание: изначально вы подключитесь к корень Пользователь, после настроек безопасности на месте вы больше не будете использовать root.

(personal computer at home)
ssh root@123.45.67.890

На этом этапе вы все еще будете в терминале, но запущенные команды удаленно на сервере хоста Linode.

Установите имя хоста

(linode host)
hostnamectl set-hostname photo-blog

Проверьте имя хоста, чтобы убедиться, что он установлен правильно

(linode host)
hostname
// => photo-blog

Обновите файл/etc/hosts, чтобы поставить сайт в интернет

(linode host)
sudo nano /etc/hosts

Редактировать/Добавить эти строки в файле хостов:

(linode host)
127.0.0.1     photo-blog.com photo-blog
123.45.67.890 photo-blog.com photo-blog

Настройка часовой пояс

(linode host)
dpkg-reconfigure tzdata

Добавьте не пользователю root

(linode host)
useradd not_root
// Follow prompts…

Затем добавьте их в sudo, чтобы они могли сделать вещи

(linode host)
useradd not_root sudo

Отправьте открытый ключ на сервер (с локальной машины)

На другой вкладке на вашем физическом компьютере (не SSH’d в окне клемма Linode). ПРИМЕЧАНИЕ. Для этого определенного для этой команды определенно больше эта команда должна была уже настроить закрытый ключ на домашней машине. Не в прицелах для этого руководства.

(personal computer at home)
scp ~/.ssh/id_rsa.pub not_root@123.45.67.890:

Теперь, когда вы настроили некоторые основы для not_root Пользователь, вам действительно никогда не нужно использовать корень Пользователь снова. Пользователь root будет заблокирован и запрещен после этих шагов.

Выйти из пользователя root

Примечание. Назад в окне терминала SSH Linode.

(linode host)
exit 

Войдите в систему с новым пользователем not_root

(personal computer at home)
ssh not_root@123.45.67.890

Настройте файл sshd_config

sh (linode host):~$
sudo nano /etc/ssh/sshd_config 

Установите порт до 900

Это не должно быть 900, просто не будь по умолчанию (44), так как это очевидный вектор атаки.

>nano (linode host)
port 900

Запретить корневые логины вообще через SSH с:

PermitRootLogin no 

Используйте Ctrl + X, чтобы выйти из Nano Editor, (Y), чтобы сохранить изменения и ввести, чтобы перезаписать текущий файл.

После внесения любых изменений в SSHConfig Run

(linode host)
sudo systemctl restart sshd

Установить Fail2ban

(linode host)
sudo apt-get install fail2ban -y

ПРИМЕЧАНИЕ. AUTHER AUTO BANS BANS IP в течение 1 недели, если вы не входите в систему с паролем через SSH (3 попытки)

Скопируйте оригинальные файлы конфигурации в локальные копии

Поскольку оригиналы перезаписаны любыми обновлениями. Fail4Ban знает каскадные директивы, используя Jail.conf сначала, а затем перезаписывать любые правила в Jail.local Последнее обеспечение применения ваших правил.

(linode host)
sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Изменить файл Jail.local

(linode host)
sudo nano /etc/fail2ban/jail.local

Установите порты [SSHD] и [SSHD-DDOS] до 900 (все, что <1024)

nano> (linode host)
[sshd]
enabled = true
port = 900
logpath = %(sshd_log)s
[sshd-ddos]
# This jail corresponds to the standard configuration in Fail2ban.
# The mail-whois action send a notification e-mail with a whois request
# in the body.
enabled = true
port = 900
logpath = %(sshd_log)s

Используйте Ctrl + X, чтобы выйти из Nano Editor, (Y), чтобы сохранить изменения и ввести, чтобы перезаписать текущий файл.

Перезапустите службу после внесения изменений в файл. Выйдите из сеанса SSH (в последний раз с настройками по умолчанию).

(linode host)
sudo service fail2ban restart
exit

ПРИМЕЧАНИЕ. На этом этапе вы можете протестировать новые настройки, были применены и работают, пытаясь войти в систему. Эта попытка не должна выйти из строя, если порт 900 и пользователь NOT_ROOT не указан.

Войдите в систему, как пользователь Not_root, используя одобренный порт SSH

(personal computer at home)
ssh not_root@123.45.67.890 -p 900

Настройка переадресации портов для веб (443/80), чтобы быть направлена на экспресс (3000)

(linode host)
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp — dport 80 -j REDIRECT — to-port 3000
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp — dport 443 -j REDIRECT — to-port 8000

Это позволит вашему экспресс-серверу (служить по порту 3000), чтобы данные пересылались в World Wide Web.

Настроить UFW (несложный брандмауэр)

Отредактируйте файл правил UFW, чтобы включить IPv6

(linode host)
sudo nano /etc/default/ufw
// Change no to yes
IPV6=yes

Настройка блокировки по умолчанию

Это позволяет внутреннему, но блокируют все внешние запросы (информация может быть отправлена только как базовая линия)

(linode host)
sudo ufw default deny incoming
sudo ufw default allow outgoing

На данный момент все SSH не разрешается.

Разрешить SSH-соединения к нашему ранее установленным порту SSH (900)

(linode host)
sudo ufw allow 900

Примечание. Вы можете проверить действующие правила насильников: Sudo UFW STATUS VERBOSE

Разрешить подключения HTTP и HTTPS

(linode host)
sudo ufw allow http
// equivalent to: sudo ufw allow 80
sudo ufw allow https 
// equivalent to: sudo ufw allow 443

Разрешить HTTP переадресацию из Express (порт 3000) на http (80/443) и обратно

(linode host)
sudo ufw allow proto tcp from any to  any  port  80,443,3000

Включить брандмауэр

(linode host)
sudo ufw enable

Проверьте правила состояния с помощью sudo ufw status verbose Примечание. Рекомендации по дальнейшему закалению сервера ценятся. Потяните запрос или напишите мне.

На этом этапе вы можете импортировать (например.: GIT клон, безопасный FTP) любой проект Express Server, если он слушает подключения к порту 3000. Если вы хотите увидеть демонстрационный проект, продолжить:

Установите Mongo и включенного запущенного демона Mongod

(linode host)
sudo apt-key adv — keyserver hkp://keyserver.ubuntu.com:80 — recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install mongodb-org -y

Создать каталог для базы данных и сделать его писающим

(linode host)
sudo mkdir /data
sudo mkdir /data/db
sudo chown mongodb:mongodb /data/db
sudo systemctl enable mongod
// The last command enables mongod to run at startup if the server resets
service mongod status
// This command should show Active: active (running) for the DB

Загрузить и установить Git, Node и другие зависимости

Foreverjs должен помочь сохранить сервер, если что-то происходит, как перезагрузка.

(linode host)
sudo apt-get install git -y
sudo apt install nodejs-legacy
sudo apt-get install npm
sudo npm install -g forever

CLONE REPO и установка зависимостей NPM

(linode host)
git clone https://github.com/Usarneme/paparanni-web-server.git
cd paparanni-web-server/
sudo npm install

Создание миниатюр требует ImageMagick

(linode host)
sudo apt-get install imagemagick -y
sudo apt-get install graphicsmagick -y
mkdir public/images/uploads
mkdir public/images/uploads/thumbs
sudo chmod 776 public/images/uploads -R

Запустить этот сервер получить эти деньги

Примечание. Foreverjs с производственным узлом env, команда START работает как демон, чтобы вы могли выйти из SSH, не останавливая сервер.

(linode host)
NODE_ENV=production forever start index.js

Примечание. Среда Linode требует, чтобы «использовать строго»; Директива быть в верхней части всех файлов серверов (index.js и маршруты/index.js).

Прямо сейчас сайт можно получить доступ к HTTP и HTTPS и SSH (SSH только на указанном порту). Пожалуйста, дайте мне знать, если бы я прошел из виду ничего. Я приветствую предложения и комментарии!