// добавляем в группу sudoers usermod -a -G sudo jek // у меня не было моей папки пользователя, поэтому sudo mkdir /home/jek sudo chmod 750 jek sudo chown jek:jek jek sudo apt install nginx
Первым делом обнаружил, что там где я зарегистрировал домен за 55 рублей — это nic.ru нет редактирования записей зоны, точнее есть, но она платная и стоит 50 рублей в месяц.
Делегировал домен на хостинг, который у меня уже есть и подтвердил права на него в Яндекс коннект, затем перекинул DNS-сервера на nic.ru и вуаля, все заработало. Но больше регить домены на nic.ru не буду. Или буду 🙂
Дубль два — CentOS
Заходим пол рутом:
Создаем пользователя jek, настраиваем ему доступ по сертификату, делаем его судоером
// Добавляем юзера adduser jek // добавился? groups jek // должно выдать jek:jek // пароль не добавляем - у нас будет доступ по сертификату // passwd jek // дальше я поступил хитро - инструкцию брал тут https://phoenixnap.com/kb/how-to-create-add-sudo-user-centos visudo // ищем строчку root ALL=(ALL) ALL и вставляем после нее аналогичную jek ALL=(ALL) ALL (режим вставки INSERT) // в итоге должно выглядеть так ## Allow root to run any commands anywhere root ALL=(ALL) ALL jek ALL=(ALL) ALL // жмем ESC, потом ":" и wq
Создаем пользователя www-data, настраиваем ему доступ по сертификату
Дубль три
Зарегистрировал домен на reg.ru. Там есть свои dns поэтому, магия с яндексом не нужна.
Купил сервак, дали IP, добавил три A записи на новый IP сервака.
Проверяю пинг до IP и доменного имени — ок. Но по 80 порту сайт не открывается: «curl: (7) Failed to connect to peskarik.site port 80 after 20 ms: Нет маршрута до узла»
Ну штош — идем на сервер.
Создаю в Remmina новое соединение SSH. Моя задача настроить другого пользователя (своего судоера) с доступом по сертификату. Настраиваю соединение — херак ошибка — неизвестное имя сервера, как так? Да просто при копировании в поля почему то в пробелы вставляются. Убираем, ура — успешный логин. Видим какое то странное сообщение:
Last failed login: Sun Sep 3 12:04:40 MSK 2023 from 79-139-244-235.dynamic.spd-mgts.ru on ssh:notty There were 63 failed login attempts since the last successful login. [root@peskarik ~]#
Кстати в панели управления сервером провайдера есть консоль в браузере. Удобно, Реминой можно не пользоваться.
Когда это я интересно успел 63 раза залогиниться, ну лан. Чуть не забыл — выбрал CentOS.
Проверяю дату — ок, москва.
Проверяю локаль:
[root@peskarik ~]# date Sun Sep 3 12:10:46 MSK 2023 [root@peskarik ~]# cat /etc/locale.conf LANG="en_US.UTF-8" [root@peskarik ~]# localectl status System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: n/a
Меняем локаль на доступную и нужную (https://www.osetc.com/en/centos-7-rhel-7-change-the-system-locale.html):
[root@peskarik ~]# localectl list-locales | grep ru ru_RU ru_RU.iso88595 ru_RU.koi8r ru_RU.utf8 ru_UA ru_UA.koi8u ru_UA.utf8 russian [root@peskarik ~]# localectl set-locale LANG=ru_RU.utf8
Теперь все таки переходим к юзеру.
Извините, но я без mc не могу дальше, в виме админы рулят, я не админ, так что
sudo yum install mc
Добавляем своего юзера, задаем ему домашнюю папку, логин, пароль, делаем его судоером.
# создаем пользака adduser jek -mU -u1000 #Проверяем создался ли groups jek // должно выдать jek:jek // задаем ему пароль passwd jek // Добавляем его в судоеры: /// Ни в коем случае не редактируем /etc/sudoers через MC - сломаете файл и потом придется танцевать с бубном! # Поэтому visudo # и после строчки "root ALL=(ALL) ALL" добавляем свою "jek ALL=(ALL) ALL", а также убеждаемся, что расскоментирована строка "%wheel..." # Кроме того строчка с пользователем добавляем так: # jek<Табуляция>ALL=(ALL)<Пробел>ALL<Перенос строки> # Теперь добавляем пользователя jek в группу wheel: gpasswd -a jek wheel # Тестируем пользака: su - jek sudo ls -la /root [sudo] пароль для jek: # Ураа, заработало
После этого можно создать новое подключение в Remmina , но уже с новым пользаком jek. Пока логинимся по паролю. Если все работает — движемся дальше.
Теперь нужно сделать так, чтобы мы логинились под нашим вновь созданным пользаком только при помощи сертификата. Для этого мне понадобится openssh-server на удаленном сервере, сгенерить пару ключей для доступа на моем домашнем компе, затем кидаем их на серв, тестируем, и убираем логин для этого юзера по паролю.
# Что то мне подсказывает, что если я логинюсь на серв через SSH, то openssh-server там уже есть sshd --help # что-то стоит
На локальном компе создаем пару ключей и заливаем публичный на серв:
jek@JEK-PC:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/jek/.ssh/id_rsa): /home/jek/.ssh/peskarik Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jek/.ssh/peskarik Your public key has been saved in /home/jek/.ssh/peskarik.pub The key fingerprint is: SHA256:cFhOikeR6akif0CA1DGPpvizaxoM5Ms4puUFGWAl8v4 jek@JEK-PC The key's randomart image is: +---[RSA 3072]----+ |=+o+. o+o | |=o..+oo* | | ooo.o=.o | |+.+o .oo | |o++ . S | |*.+o. | |+B+oE | |o=o+. | |oo+o | +----[SHA256]-----+ jek@JEK-PC:~$ ssh-copy-id -i /home/jek/.ssh/peskarik.pub jek@peskarik.site /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/jek/.ssh/peskarik.pub" The authenticity of host 'peskarik.site (45.90.217.93)' can't be established. ED25519 key fingerprint is SHA256:TnLDKWjgCv4+JKNORpY7Z0aubboKHV63KPn9O2yul0M. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys jek@peskarik.site's password: Permission denied, please try again. jek@peskarik.site's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'jek@peskarik.site'" and check to make sure that only the key(s) you wanted were added.
Отлично, говорит что добавил, теперь пробуем залогинится через серт — добавляем еще один коннект в Remmina. Почему то по домену не захотел логинится, вписал IP .
Остается отключить логин по паролю:
# Редактируем в mc файл /etc/ssh/sshd_config: PubkeyAuthentication yes AuthorizedKeyFile .ssh/authorized_keys PasswordAuthentication no ChallengeResponseAuthentication no # Перезагружаем службу systemctl reload sshd.service
Пробуем зайти под рутом через ssh — хрен. Пробуем под своим новым юзером — радость. Глава первая окончена.
Ставим докер и портнейнер
Ставил по инструкции отсюда:
https://docs.docker.com/engine/install/centos/ и постинсталл отсюдова: https://docs.docker.com/engine/install/linux-postinstall/
Чтобы ожил портейнер, нуна инициализировать болото:
docker swarm init
Нам сообщают, что теперь нас сервак — это менеджер. Можно добавить воркер командой. Можно добавить и менеджера еще одного, но меня пока интересует только портейнер.
Далее ставлю по инструкции https://docs.portainer.io/start/install-ce/server/swarm/linux
curl -L https://downloads.portainer.io/ce2-19/portainer-agent-stack.yml -o portainer-agent-stack.yml docker stack deploy -c portainer-agent-stack.yml portainer Creating network portainer_agent_network Creating service portainer_agent Creating service portainer_portainer # Ура, запустилось, проверяем https://peskarik.site:9443/
Отлично. Теперь следующая простая задача — нужно поставить прокси сервер nginx, отдать простой файл и настроить и получить wildcard let`s encrypt сертификат пока вручную. В будущем же нужно настроить автовыпуск сертификата через certbot и добавление записи txt через API Reg.ru
sudo docker run -it --rm --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly --manual --agree-tos --email web@derin.ru --preferred-challenges=dns -d peskarik.site -d www.peskarik.site -d *.peskarik.site
Клиент выдает имя и значение TXT записи в зоне управления доменом. Прописываем ее, дожидаемся, когда сервис https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.peskarik.site. начинает отдавать ее, и заканчиваем получение.
Сертификат есть, теперь нужно научить nginx его хавать. Создаем новый стек main, а в нем, пописываем конфиг:
version: '3' services: webserver: image: nginx:latest ports: - 80:80 - 443:443 volumes: - /home/jek/nginx/nginx.conf:/etc/nginx/nginx.conf - /etc/letsencrypt:/etc/letsencrypt - /home/jek/www:/var/www/html
Предварительно конечно размещаем в /home/jek/nginx/nginx.conf :
events {} http { server_tokens off; charset utf-8; # always redirect to https server { listen 80 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 ssl http2; # use the certificates ssl_certificate /etc/letsencrypt/live/peskarik.site/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/peskarik.site/privkey.pem; server_name peskarik.site; root /var/www/html; index index.php index.html index.htm; } }
Вуаля все работает
Добавить комментарий