Disclaimer

Я не являюсь сетевым инженером, я просто студент, который решил записать свои действия, чтобы поделиться со знакомыми и не забыть, что я вообще делал. Буду очень рад если меня поправят в комментариях. Этот конспект написан по другим статьям с различных ресурсов, прошу поддержать авторов тех гайдов, у них некоторые моменты расписаны более подробно и возможно вам подойдет именно их статья.

Буду стараться писать очень подробно, чтобы человек, знающий столько сколько я в начале своего пути, все понял.

Вступление

Мне очень давно хотелось поднять видимый извне сервер в своей домашней локальной сети, чтобы использовать его для pet проектов или же возможно для сайта-визитки.

Возникает вопрос: почему не использовать для этого самую простую VPS и не тратить мощности своего компьютера? Ответ очень прост: статический белый ip у меня уже был и давно, а в качестве сервера я решил использовать не основной пк а старый ноутбук. Поэтому дополнительных затрат не предвиделось.

Что мы имеем?

Для справки, на момент написания публикации (2021) стоимость минимальной VPS на доверенном ресурсе - 400 руб. , стоимость белого ip у моего провайдера - 179 руб.

  • Ноутбук (intel core i5 M 560 2,67 GHz, 4/60Gb) с установленной Ubuntu Server 20.04.3 (для создания установочной флешки советую использовать rufus (win) или balenaEtcher (os x)

  • роутер провайдера с подключенным пакетом "статический ip адрес"

  • второй компьютер для тестов (все что делается через браузер можно, конечно, сделать и на телефоне, вопрос удобства)

  • хорошая музыка чтобы процесс не был скучным

Какая цель?

Сделать python3 flask (взял для простоты) сервер доступный из вне.

Установка постоянного локального адреса на сервер

Приступим. Во-первых установим постоянный ip для нашего сервера в локальной сети. По идее изначально используется DHCP (протокол, по которому каждое устройство в сети получает относительно случайный ip адрес, а нам нужен постоянный для сервера, чтобы роутер всегда знал куда отправлять внешние запросы)

  1. Смотрим интерфейс, который мы используем, с помощью ifconfig

  2. В зависимости от того какой тип соединения мы используем (кабель или wi-fi) выбираем файл в катологе /etc/netplan

    И настраиваем его примерно так:

    network:
        ethernets:
            ethx:
                dhcp4: no
                dhcp6: no
                addresses: [192.168.1.200/24, ]
                gateway4: 192.168.1.1
                nameservers:
                    addresses: [192.168.1.1, ]
        version: 2

    ethx - название нашего устройства по которому идет подключение

    Здесь важно понимать что означают строки:

    • addresses (6) - адрес нашего сервера в локальной сети, как раз то что мы делаем постоянным

      /24 означает маску сети (255.255.255.0), в данной ситуации первые 3 числа должны совпадать с локальным адресом роутера, а последнее число произольно. Я выбрал адрес 192.168.1.200

    • gateway4 - шлюз нашей сети, то есть роутер. Его адрес 192.168.1.1, обычно он общий для всех роутеров одного провайдера, так что погуглите (иногда его адрес указывается там же где и пароль от wi-fi)

    • в строке nameservers: addresses (9) указываем тот же адрес что и в gateway4 (простите, но я беспонятия что это)

    • dhcp4: no и dhcp6: no указывают, что мы не будем использовать протокол DHCP

На этом этапе возможно потребуется проверка:

  • На сервере:

    sudo tcpdump -i ethx icmp and icmp[icmptype]=icmp-echo

    Чтобы следить за тем кто нас пингует.

  • И пингуем его с другого пк внутри локальной сети по адресу 192.168.1.200.

Также строит проверить есть ли доступ к интернету у нашего ноутбука-сервера: используем команду ping с доменом google.com.

Все это подробно описано в этой статье для Ubuntu, для других дистрибутивов гуглите "Установка статического ip <название дистрибутива>".

Все работает? Идем дальше!

Рассказываем роутеру про сервер

Теперь наш сервер знает, что мы имеем дело с постоянным ip и не используем протокол DHCP. Самое время рассказать роутеру, что внешние запросы нужно отправлять на сервер. Чтобы получить доступ к настройкам роутера вбиваем в поисковую строку его ip адрес.

Есть два варианта:

  • Установить DMZ зону внутри настроек роутера и указать туда локальный адрес нашего сервера. Этим действием мы делаем наш сервер публичным и теперь любой может попробовать подключиться к нему.

  • Пробросить порты нужных нам ресурсов через роутер на сервер (перенаправление портов). Не забудьте порт SSH (22) и flask (5000)

    Попробуйте пингануть его из внешней сети.

Все норм? Теперь наш сервер виден из вне, самое время подумать о безопасности.

Защита сервера

Я буду настраивать SSH, Firewall и fail2ban по вот этому очень хорошему гайду. (еще раз, моя цель не скопипастить все что я нашел, а собрать все в одно место, чтобы не забыть) Я делаю все для Ubuntu Server, но в том гайде есть для CentOS и Red Hat.

Во-первых сделаем еще одного пользователя помимо root (1), зададим ему пароль (2) и разрешим использовать root привелегии через sudo (3):

useradd [options] <username>
passwd <username>
usermod -aG sudo <username>

SSH

Настраивайте по инструкции в статье упомянутой выше. Там мне совсем нечего добавить, кроме подроностей о public и private ключах:

  • ssh-keygen -t rsa генерирует 2 ключа открытый (тот что имеет .pub) и приватный который (не имеет такого расширения)

  • Открытый ключ отправляется на сервер в файл authorized_keys в папке /.ssh в домашней директории пользователя (/home/username/.shh/authorized_key)

    Для этого можно использовать команду:

    cat ~/.ssh/id_rsa.pub | ssh root@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'
  • Закрытый ключ используется для аутентификации, скопируйте его куда-нибудь чтобы не потерять

    Использовать ключ для входа можно командой:

ssh -i <путь к ключу> <имя пользователя>@<адрес сервера>

Важно отключить аутентификацию по паролю иначе мы все это делали зря.

Firewall

Используя проброс портов мы разрешаем доступ к нашему серверу лишь посредством подключений к определенным портам, но DMZ зона допускает почти все типы запросов. Используя DMZ зону нам строит поднять FireWall на сервере, который как раз и ограничит количество портов которые могут принимать внешние запросы.

Разрешим использование SSH (1) и порта 5000 (2) в ufw (Firewall), и запустим Firewall (3):

sudo ufw allow ssh
sudo ufw allow 5000/tcp
sudo ufw enable

Подняв FireWall важно не забыть разрешить доступ к порту SSH (22) и порту Flask (5000) (ну или другого ПО, которое мы собираемся использовать). Я забыл и долго не понимал, почему мой сервер не отвечает.

На сайте хорошо разобраны команды для управления Firewall-ом.

Fail2ban

Fail2ban ограничивает количество попыток подключения, это сильно усложнит подбор аутентификационных данных SSH.

Для начала установим его (1) и запустим (2, 3):

sudo apt install fail2ban
systemctl start fail2ban
systemctl enable fail2ban

Теперь можем настроить его, используя эти конфигурационные файлы:/etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Во втором находятся ограничения на количество подключений за определенный промежуток времени и время бана.

Теперь сделаем проверку более сложного уровня

  1. Установим flask и python3:

    sudo apt install python3
    sudo apt install pip
    pip install flask
  2. Скопируем код тестового сервера с сайта в файл server.py:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return "<p>Hello, World!</p>"

    Находясь в директории с этим файлом, запустим сервер:

    export FLASK_APP=server.py
    flask run -h <локальный адрес нашего сервера> -p 5000

    Сервер запущен и теперь мы можем попробовать подключиться к нему с внешнего устройства прямо через строку в браузере, вводя внешний адрес нашего роутера, к примеру:

    94.123.45.70:5000/

    Если все работает мы должны увидеть строку "Hello, World!". Не заработало? Пройдитесь по моим заметкам в этом гайде еще раз.

Источники

Комментарии (62)


  1. DreamingKitten
    25.09.2021 13:09
    +14

    Вместо прописывания статики IP на сервере, вы можете также выдать ему статику с роутера через DHCP. Это чутка проще и, в общем случае, более гибкое решение.

    Также для проброса портов DMZ не нужен. Вы или ставите сервер в DMZ и тогда на него идёт трафик по всем портам, или прописываете проброс портов статически, но тогда ни DMZ ни firewall не нужны.

    DMZ не гибкое решение, на случай если вам нужно выставить в инет более одного сервера во внутренней сети. Port forward это позволяет сделать, DMZ -- нет.

    Но есть и решение ещё гибче, включить UPNP на роутере и динамически управлять пробросом портов индивидуально хоть для каждого сервиса, с помощью скрипта с upnpclient на сервере. Опять же -- проще и гибче.


    1. Pinkerton42
      27.09.2021 08:19

      DMZ, по сути, вообще для другого задумывалась, а именно: обеспечить доступ извне до сервера и запретить доступ с сервера в локалку на случай его компрометации.


  1. lab412
    25.09.2021 13:16
    -1

    А ещё вы можете поднять VPN сервер с блокировкой рекламы и пустить трафик всех свои сотовых через него.


    1. dotnetfx40
      25.09.2021 20:10
      -1

      IMHO :

      начиная с Andoid 9 появилась опция custom dns, прописывает там наподобе dns.adguard.com и прощай реклама. Зачем нам этот зоопарк с VPN


      1. FragCounter
        26.09.2021 12:58

        А как custom dns помогает в ограничении рекламы? Можете объяснить подробнее? Я ни разу не слышал о такой возможности. Ну и не очень понимаю, как работает dns.


        1. Black_Spirit
          26.09.2021 13:06
          +1

          Короче говоря, прописав сервер dns с ограничением рекламы, ваш телефон не узнает IP с которого нужно загрузить рекламу и, соответственно, ее не покажет. Грубо, но работает.


          1. FragCounter
            26.09.2021 13:20

            Плюсы этого решения в общем понятны, почитал на их сайте. Подскажите, пожалуйста, какие могут быть минусы того, что я сменю DNS сервер по умолчанию на DNS AdGuard?


            1. Black_Spirit
              26.09.2021 13:25

              Иногда какой-нибудь сайт может не работать. Так в общем то минусов больше нет. Ну и ещё я AdGuard не очень доверяю, так как они собирают статистику и наверняка ее куда-нибудь передают. Ну это уже вопрос доверия какой сервер прописывать. У меня прописан doh-de.blahdns.com.


            1. riky
              26.09.2021 16:29
              +1

              этот сервис будет логировать хосты к которым вы стучитесь


              1. bgBrother
                26.09.2021 16:35
                +1

                Не сомневайтесь — ваш оператор логирует не меньше. Весьма вероятно, кроме логирования, ещё и продаёт информацию брокерам данных.


            1. boris768
              26.09.2021 18:06

              серьезным минусом в отличие от браузерного плагина может оказаться отказ сайта работать из-за блокировки рекламы, плагин можно отключить и просто перезагрузить страницу, а DNS — смотря где пропишите, ведь логичнее их прописывать на роутере, а из-за одного сайта ковырять роутер может оказаться неудобно, да в случае ПК — это очевидно не пара кликов, а копание настроек сетевых соединений.


              1. DaemonGloom
                26.09.2021 22:37

                Ну, речь шла про Android — там это за несколько кликов переключается в настройках. Настройки -> Подключения -> Дополнительно -> DNS.


        1. n00b1k
          26.09.2021 17:31

          Лучше поднимите собственный сервер pi-hole, вопрос 5 минут, хватит мощности малинки 2


    1. FragCounter
      26.09.2021 12:57

      А можете поподробнее рассказать о том, как это работает? Ну или ссылками покидаться. У меня как раз есть белый ip и настроенный домашний сервер. Просто я первый раз слышу о такой возможности.


  1. Akuma
    25.09.2021 13:36

    Как занятие в целом - интересно.

    Как практическое использование - лучше взять vds. Самое дешевое, что знаю: 200 руб. Для сайтов визиток хватит с головой. Все же ДЦ надежнее домашнего ноута и интернета.


    1. karabanov
      25.09.2021 23:13

      1. n00b1k
        26.09.2021 18:36

        Добавлю еще Google Cloud, после окончания триального периода можно бесплатно юзать одну машину класса e2-micro из us-west1, us-central1 или us-east1

        https://cloud.google.com/free/docs/gcp-free-tier


      1. Thisnickname2019
        27.09.2021 06:56
        +1

        В момент поднятия кубера меня там заблокировали. Техподдержка сказала, что блочит робот, а мы нихрена не знаем.


    1. PereslavlFoto
      26.09.2021 00:10

      Платный VDS 200 рублей, а домашний сервер 0 рублей.


      1. kotomyava
        26.09.2021 01:33
        +4

        Это не так: электричество не бесплатно. Предположим 50 ватт по однотарифному счётчику в городе, это почти те же 200р.

        В общем получится немногим дешевле, и намного менее надёжно, и с куда худшей связанностью. А любой выход из строя чего-либо сделаем экономию и совсем уж мифической.


        1. PereslavlFoto
          26.09.2021 01:37

          И верно, если особенный компьютер выполняет роль веб-сервера, тогда получается дорого. Но если эту роль выполняет обычный бытовой компьютер, который работает круглые сутки, тогда на функцию веб-сервера почти не приходится потраты электричества.

          Тариф на электичество нынче 5,92 рубля за 1 киловатт-час, поэтому работа в 50 ватт за час будет стоить 30 копеек, сиречь меньше полуцента.


          1. kotomyava
            26.09.2021 02:11
            +1

            По 6 рублей за киловат*час, в месяц, даже больше 200р. Без этого компьютер работал бы намного меньше по времени, можно было бы закрыть крышку уходя от него. А так нет, он будет точно работать.

            В общем, это не практично, и не бесплатно, и не надёжно. Ну и вся статья довольно бесполезная.

            Ну и есть действительно бесплатные варианты получить довольно приличную виртуалку, например, в том же Oracle cloud.


            1. Areso
              26.09.2021 02:47
              +1

              Флегматично: тут на днях MskHost закрылся, а вы про надёжность...


              1. kotomyava
                26.09.2021 18:38

                И что, вы думаете, что хостеры накрываются чаще, чем какие-нибудь ssd/hdd в домашних "серверах"? Уж не говоря о вырубающемся свете, при котором не поможет ибп, т.к. оборудование провайдера, весьма вероятно, отрубится. О качестве канала в ДЦ, и канала домашнего провайдера.

                Для каких-нибудь бекапов ещё куда ни шло использовать такой сервер, или для локальной разработки, возможно. Но тогда ему и белый ip не нужен.


                1. Areso
                  26.09.2021 18:42

                  У меня 3 из 3 хостеров с LowEndBox'a накрылись в течение 1 года.

                  А, и еще один сгорел, зараза такая.

                  Диски тоже мрут, случается, но бэкапы никто не отменял + плюс у увлеченных ребят дома [нормальные] сервера с рейдами стоят.


                  1. kotomyava
                    30.09.2021 21:21

                    Ну 200р/мес, что только цена электричества, как мы выше посчитали, это уже вполне себе у нормального хостера можно виртуалку небольшую взять. =) А учитывая амортизацию, или необходимость железа, так и больше в мес. накапает.

                    Сервера с рейдами не решают проблемы связности и качества канала. И стоимость нормального сервера эквивалентна его же аренде на несколько лет, что почти всегда выгоднее получается - нет проблем с заменой железа, с устареванием, намного лучше каналы, и.т.п. А очень старый сервер, который можно взять по бросовой реально цене, будет жрать электричество и тормозить. Ну и не будет надёжным уже и запчасти будет найти сложно. У меня есть подобные на поддержке, типа <gen7 hp на колокейшене. Это всегда боль и ужас. =) Уж лучше бы их выбросили уже и взяли бы что-нибудь в аренду, было бы и шустрее и дешевле.

                    Реально дома нужен какой-нибудь NAS максимум, но не сервер для хостинга даже домашней странички.


  1. unsignedchar
    25.09.2021 13:41
    +5

    Попробуйте пингануть его из внешней сети.

    На ping ответит (или не ответит) не ваш сервер, а роутер.


  1. Furriest
    25.09.2021 14:38
    +3

    Для начала вполне норм.


    Сайты-визитки и прочие пет-проекты можно положить на бесплатные инстансы, например, в Oracle Cloud. Это реально бесплатно (1 инстанс x86 и до 4 инстансов ARM, если их пилить по 1 ядру и 6GB RAM) и существенно надежнее. И в целом даст освоение еще одной сущности, важной для современного ИТ-шника - работу с облаками.


  1. Themen
    25.09.2021 15:03
    +1

    Для справки, на момент написания публикации (2021) стоимость минимальной VPS на доверенном ресурсе - 400 руб. , стоимость белого ip у моего провайдера - 179 руб.

    Тоже имею дома свой сервер, но от белого ip провайдера отказался. Во-первых это не очень правильно с точки зрения безопасности - весь интернет будет стучаться в домашний в роутер, выдержит ли он? Во-вторых - нельзя временно перенести сервер в другое место, например на время отъезда из дома. Ну и наконец, это просто дороже.

    Решение этих проблем - это минимальный VPS чуть больше, чем за 100 рублей в месяц, на котором поднимается VPN (в моём случае обычный старый добрый PPTP) и проброс портов в iptables. Всё что приходит на 80 и 443 перенаправляется по VPN ко мне на сервер, остальное блокируется. Самое главное, что теперь мой сервер доступен из интернета, даже в том случае, если сам он подключён через мобильный интернет.


    1. Gengenid
      25.09.2021 16:05
      +1

      У меня vpn на vps за 1 доллар в месяц. И он, как ни странно за эту цену, даже работает.


      1. ChePeter
        25.09.2021 16:18

        Самый дешевый, что нашёл, 1,65.

        Подскажите где дают по 1 ))

        @Themen

        "Всё что приходит на 80 и 443 перенаправляется по VPN ко мне на сервер, остальное блокируется. " это Вы погорячились, молодого запутаете.

        Открыты порты ssh, vpn, http, https, остальные закрыты. ( drop или reject ? ) - наверно так ))

        У автора как то странно, что оба интерфейса на машине с одинаковым IP или я что то не понял?


        1. Gengenid
          25.09.2021 16:28
          +1

          https://hosting.gullo.me/

          Не реклама, если что. Но год сервер проработал.

          Пока единственный минус - ip адрес какой-то нехороший, иногда с ним на сайты типа pikabu не пускает.


          1. dartraiden
            26.09.2021 01:57

            Пока единственный минус
            А в столбце «Bandwidth» там указан объём трафика или пропускная способность?


            1. Gengenid
              26.09.2021 09:48

              А не знаю. Судя по еи, объем, но непонятно, в год или месяц.


            1. bgBrother
              26.09.2021 16:31

              Пропускную способность в 125 GB за 1 доллар вам никто не предоставит.

              Большинство провайдеров в сегменте $2 — $6 предоставляют 1-2 TB трафика в месяц. Можете быть уверенными, что указан объем на месяц или меньше.


        1. dartraiden
          26.09.2021 02:14
          +1

          Я могу подсказать, где дают бесплатно.

          У RUVDS ещё иногда бывают серверы по 30 рублей. Но, по отзывам, как только вы начнёте создавать заметную нагрузку по трафику, канал урезают.


    1. Borz
      25.09.2021 17:56

      пользую не выделенный IP от провайдера, прописанный в DNS домена. В силу того, что практически не отключаюсь от провайдера, то и IP не меняется. Смена была один раз уже и не помню из-за чего.
      Статический IP от провайдера хорош только если провайдер даёт прописать ещё и обратную запись. В остальное время - можно натравить скрипт, который при обнаружении смены IP просто смотается по API к доменному провайдеру и изменит там записи DNS. Но, потребности в скрипте пока нет - как выше написал, смена произошла только один раз...


      1. Themen
        25.09.2021 18:20

        Мой провайдер вообще не даёт белых IP. По умолчанию я всё время сижу за NATом. Вообще я думал, что белый IP сейчас редкость.

        Смена IP на домене, вообще говоря, процедура не быстрая и может занять до суток. Так что, если нужно быть доступным 24/7, то такой вариант не пройдёт. Но с другой стороны о какой доступности можно говорить, если сервер дома :)


        1. Borz
          26.09.2021 01:00

          полосатый провайдер выдаёт, но с врубленным firewall по умолчанию - надо зайти в допуслуги и вырубить его полностью и пребудет счастье.

          Смена IP на домене, вообще говоря, процедура не быстрая и может занять до суток.

          Вообще, до 2 суток.
          У меня не критичные сервисы - если и будут недоступны несколько часов, то сильных проблем не будет. Для личных потребностей есть VPN...


          1. Leopotam
            26.09.2021 14:53
            +1

            домра выдает белую статику в регионах за 20р в месяц.


          1. bgBrother
            26.09.2021 16:38
            +1

            мена IP на домене, вообще говоря, процедура не быстрая и может занять до суток
            Вообще, до 2 суток.
            Процедура смены весьма быстрая, но зависит от указанных вами TTL в записях домена (SOA, NS и остальные). Можно указать TTL в час — данные будут обновлены менее, чем за час.

            Но есть проблема в том, что некоторые провайдеры игнорируют TTL и кешируют записи со временем, взятым «из потолка».


        1. Akuma
          26.09.2021 11:47

          Никто не мешает поставить TTL записей на минимум, тогда поменяется куда быстрее. Но конечно не за пару минут.


    1. leha_gorbunov
      25.09.2021 20:52

      К стоимости белого ip еще стоимость электричества надо бы добавить?


      1. PereslavlFoto
        26.09.2021 00:12

        Электричество на 99% тратится на основную работу домашнего компьютера, и лишь на 1% на работу веб-сервера в нём. Это настолько крошечная сумма, что её едва ли можно высчитать.


    1. Akuma
      26.09.2021 11:46

      А какой в этом смысл?

      Если и так есть вдс, зачем куда-то перенаправлять трафик?


      1. Themen
        26.09.2021 13:11

        Так VDS же минимальный, там ни памяти нет, ни скорости процессора, ни дискового пространства. Нет бэкапа, просрочишь платёж - всё удалят. У меня на сервере несколько ТБ рэйд зеркало, под nextcloud и git. Чувствительные данные. Такое за дёшево не делегировать. Ну и привычка, чтобы моё хранилось у меня. Мои данные, сам за них несу ответственность.


  1. Gengenid
    25.09.2021 16:28
    +1

    Не в ту ветку


  1. thegriglat
    25.09.2021 17:35
    +3

    Для статических сайтов визиток вполне подойдёт аренда доменного имени с прописываем резолвинга в IPFS CID нашего сайта. Настройка нулевая, балансировка (если клиенты тоже с IPFS) -- в комплекте. Для надёжности пиним контент сайта в Pinata (1Gb free).

    Серверную логику так не сделать, увы ...


  1. S-trace
    26.09.2021 01:18
    +5

    Для этого можно исапользовать команду:
    cat ~/.ssh/id_rsa.pub | ssh root@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'

    Может лучше ssh-copy-id использовать?


  1. Hardened
    26.09.2021 07:09
    +7

    Хабр версии 2021


    1. 4aba
      26.09.2021 07:57
      +1

      Давно понял что такие статьи пишут для комментариев, в них можно найти много полезного, люди пишут свои интересные решения своих задач, такими способами, которые не гуглил бы, в таких местах можно найти описание программ, сервисов, о которых не знал, так сказать обмен опытом людей, которые не будут писать большую статью, но напишут комментарий.


  1. 4aba
    26.09.2021 07:51
    +1

    Пользуясь интернетом не один год заметил что сканируют и ломятся туда, где открыто, если на роутере открыть 22 порт, закрыв аутентификацию, через время в логах можно видеть как пытаются на этот 22 порт ломится, добавление ip в чёрный список не так чтоб сильно помогает, адресов у атакующих много, а в данном случае все порты пробрасываются на ноут, где помимо ssh есть другие сервисы, которые смотрят в интернет и подвержены атаке, имхо надо пробрасывать лишь нужные порты, не забывая про бан атакующих.

    Если доступ надо только на сайт, даже с динамической ip, имхо удобно использовать cloudflare, на роутере/сервере прописать обновление ip у cloudflare, ns своего dns вынести к ним, получим защиту от атак и так как это прокси, то смена ip происходит сразуже, не нужно ждать какоето время ( у ddns сервисов оно хоть и малое но тоже есть), достаточно роутеру/серваку оперативно оповещать о смене ip. Если адрес уже статика то еще проще. Также на роутере/сервере дать доступ к 80 порту только с адресов cloudflare, так что при переборе ip, атакующий не увидит ничего открытого. Ну и ssl сертификатом будет заниматься cloudflare, и о нем не надо задумываться, хоть настроить letsencrypt и не сложно.

    По поводу электричества, тут не все однозначно, если например сервер используется не только для одного сайта, когда гугл закрыл бесплатное хранение фоток, я слепил у себя аналог ( чисто для хранения и бекапа фоток) потом туда и торенты с медиашарой поставил, и телеграм бота и видеонаблюдение сделал из ненужных уже, но еще качественная картинка babycam, и PoE питание всех роутеров и точек с него идет ( изза того что я использовал свое бу оборудование, у меня не было на это больших трат, но сейчас не о этом речь), цена электричества на всё это добро между 100 и 200 гб планов google one, имея больше места, я считаю что я в выигрыше. Есть некоторые минусы, но я с ними смирился и они не мешают мне жить ( как например фотки будут недоступны, если нет света).

    По поводу vps а конкретно oracle ( другими не пользовался), vps мне понравилось, и часть задач, которые хочу чтоб были доступны всегда и не связаны с моим домом( файлами, замками, камерами и т д) я запускаю на оракле, понимаю что я не доберусь до 10ТБ лимита, если не попаду под атаку генерирующую трафик, но все равно на карте лежит пару евро и запрет на оверррасход, а все бекапится на дом, вдруг заблокируют. Не знаю как на расход трафика и на нагрузку по атакам смотрят другие VPS провайдеры ( которые за 30-200 руб/мес), всегда есть вероятность что какойто парсер доберется до вашей ip, с ораклом мне было б комфортно терять доступ к серверам после исчерпания 10ТБ, но я понимаю, что им тоже надо зарабатывать))


  1. artemlight
    26.09.2021 15:34
    +2

    Удивительно, что в статье нет ни слова про openvpn(gre, ike2, wg, etc) + haproxy.

    Хотя навскидку это самый логичный способ пробросить сервис наружу, можно даже фейловер организовать. Или, например, когда домой нужна /28, а техподдержка не понимает о какой палке я вообще говорю. Или например когда точке нужен внешний IP-адрес, а из вариантов есть только USB-модем.

    Так что затея топикстартера отнюдь не бессмысленная, но я бы рассматривал её не в контексте экономии 200 рублей, а как практическое занятие по установке reverse proxy.

    Также посоветую @the_lll_end познакомиться с Mikrotik CHR. Там в целом можно делать занимательные вещи - например, приземлять "белые" адреса виртуалок в ДЦ напрямую на свои локальные интерфейсы. Лежащий дома свитч с 29 палкой за 300 руб\месяц - отличное подспорье для домашней лабы.


  1. CodeByZen
    26.09.2021 19:22

    За 181 рубль можно взять VPS у https://king-servers.com/


  1. Nehc
    26.09.2021 21:08

    При использовании белого IP у провайдера, важно помнить, что все ваши любимые торренты будут запротоколированы уже не только провайдером, но и любыми желающими, и, полагаю, не только торренты… ;) Штука удобная, но со своими издержками.

    Так же тут уже поминали на счет безопасности. Я бы порекомендовал хотя бы порты стандартные не использовать. А то и недели не пройдет, как ваш белый IP будет проиндексирован shodan и… В общем оставлять порты по умолчанию — сильно самоуверенно с вашей стороны! )


    1. 4aba
      27.09.2021 06:07

      Смена ip на нестандартные не поможет от сканеров, уменьшит только. А в случае web добавит неудобство вводить порт


      1. Nehc
        27.09.2021 08:08

        Я тоже так думал. Но сравнил статистику атак и понял, что потерплю неудобство вводить порт. ;)

        На практике, как я понимаю сканировать порты выше 10000 будут только в случае, когда кому-то интересен конкретно ваш IP, т.е. атака уже идет прицельно на вас.


  1. victoriously
    26.09.2021 23:21

    Не проще ли воспользоваться ngrok? Ну и впска стоит 50р в месяц много у кого.


  1. boojum
    27.09.2021 14:58

    Вместо статического IP можно использовать бесплатный динамический белый адрес, выдаваемый многими провайдерами по умолчанию + опять же бесплатное Dynamic DNS имя.

    А если сервер запускать не на старом компьютере (который может потреблять весьма немало по нынешним временам), а на Raspberry PI или аналогах, то и за электричество почти не придется платить.


  1. dev0nizer
    27.09.2021 20:28
    +1

    Не хочу показаться токсичным, статья написано в целом грамотно, но

    1) Очень базово и кратко. Настройка netplan не закончена. После этого зачем-то пихают какой-то tcpdump, новичок знать не знает что это и зачем. Что такое "проброс" и почему DMZ называется DMZ не объяснено. Зачем настраивать фаервол при пробросе и как можно себе отстрелить таким образом ноги - тоже.

    Про самое интересное - ssh и fail2ban. В ssh написано про какие-то ключи и отправку их через ssh на сервер используя учётку root, при этом 1) авторизация по паролю изначально для рута отключена (мы же ещё не скинули туда ключ, верно?) 2) зачем этот ключ прописывать в рута, если мы будем заходить под другим пользователем? Как выключить после этого авторизацию по паролю тоже не написано.

    Настройки fail2ban в статье вообще нет, только ссылка. Да и вообще, зачем fail2ban для ssh, если мы до этого отключили авторизацию по паролю?

    Извините, я понимаю что это новичковая статья, но если бы я был новичком, я бы только запутался, потому что новички обычно просто копируют команды, а их тут мало, а что происходит не особо объясняется, да ещё и с небольшими, но очень неприятными ошибками.

    Бонусом в конце проверяем наш сервер из локальной сети. А зачем мы до этого делали все эти действия?

    Я тут не пишу статьи и комментарии, возможно меня сейчас утопят, но просто хочу обезопасить неопытных юзеров, которые пришли сюда за знаниями по администрированию.


  1. happy-cat
    28.09.2021 08:29
    +1

    Я поступил несколько другим путем, тк вы через некоторое время упретесь во вкус и сооблазн позапускать еще виртаулок но упретесь в единственную систему поломав в ней что ли бо придется начинать с нуля.

    У меня тоже белый IP от мгтс (ценник одинаков ;) )

    Купил бу малогабаритный, почти бесшумный системник, поставил прокс мокс, наплодил кучу виртуалок под свои забавы, повесил веб сервер - короче есть где развернуться. :)
    Крайне рекомендую поставить/осилить Haproxy - таким образом на моем веб сервере крутятся несколько моих сайтов и тп сервисов.

    Думаю вы рано или поздно приедете к такой домашней системе :)

    PS касаемо эл-ва, я даже не знаю сколько потребляет комп, на счетах за эл-во это не сказалось вообще (белый ип дороже стоит).
    По моим грубым прикидкам комп и связанные с ним расходы (ssd, 1 Tb hdd) уже окупились за прошедший неполный год.

    Раньше хостился на Хецнере - 12 или 14 евро в месяц, теперь даже не смотрю в сторону других хостеров (от слова вообще)


  1. guselnikov
    28.09.2021 23:52

    Очень много текста неочем. Достаточно было просто пробросить порт с роутера на комп и все. Причём тут fail2ban? Пробрлсом порта можно было ограничится. Так много текста неимеющего никакого отношения к теме статьи