Автор оригинала: 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 только на указанном порту). Пожалуйста, дайте мне знать, если бы я прошел из виду ничего. Я приветствую предложения и комментарии!