Ответы пользователя по тегу Системное администрирование
  • Структура и железо для 1С и MS SQL + терминал, как лучше?

    @brar
    Процы 10-15 летней давности покупать не стоит, это гарантировано. У вас там не будет ни шин быстрых, ни отказоустойчивости.
    Если нет денег на хотя бы 5-ти летний сервер, ваш вариант - это собрать два компа из топового консьюмерского железа из какого нибудь предпоследнего поколения: 3.5-4 Ghz проц ядер на 10-12, по два три диска nvme m2 pci4 (это обязательно, я бы сказал) минимально по одному террабайту, RAM 64 ГБ (но лучше, по 128 много всегда лучше, чем меньше). И еще какой-нибудь старый сервер или комп, чтобы на нем поднять реплику (слэйв) СУБД + файловый бэкапсервер, на случай шиндеца. (главное откатать сценарий обрушения прода).

    А руководству объяснить, что из говна 15 летней давности конфетку не сделаешь. Поэтому ваш вариант с Ryzen 7 - как золотая середина, но в кол-ве двух штук, так как у вас при 40 активных пользователях при условии, что они будут сёрфить интернет и открывать как не в себя по 30 вкладок, 64 ГБ съест только один терминальник и ВМ в такие моменты будет "фризиться".
    Ответ написан
    7 комментариев
  • Как подключить пользователей к серверу AD в другой подсети?

    @brar
    В настройках AD (dns-сервера), разрешите запросы из другой подсети). Плюс. возможно, потребуется прописать обратную (PTR) адресацию для этой подсети.
    Ответ написан
    Комментировать
  • Как в дедике добавить выделенный IP?

    @brar
    Вопрос требует конкретики. Как мимнимум какой гипервизор на дедике. Этого даже по тегам нельзя понять.
    Голый qemu/kvm/libvirtd? LXC контейнеры? VMWare? Proxmox? Hyper-V?
    И у каждого из этих есть свои два-три варианта решения вашей задачи. Это если не считать еще, что вы можете подннять виртуальный роутер на этом же дедике, который будет рулить трафиком.
    Ответ написан
    Комментировать
  • Действие на сервере при подключении по ssh?

    @brar
    Попробуйте свой бот в телеге. Уведомления на порядок удобнее и оперативнее, чем почта.
    Опишу для debian. (для других дистров не будет сильно отличаться). Если не Вам, то может кому-то другому пригодится всё готовое:
    Создаеете файл /usr/local/bin/telegram_alert.sh со следующим содержимым:
    #!/bin/bash
    KEY="АПИ_КЛЮЧ:ВАШЕГО_БОТА"
    URL="https://api.telegram.org/bot$KEY/sendMessage"
    TARGET="айдишник_контакта_или_группы_куда_слать_уведомления"
    DATE1="$(date "+%H:%M:%S")"
    DATE2="$(date "+%d %B %Y")"
    GEO="$(curl ipinfo.io/$PAM_RHOST)"
    TEXT="*$PAM_USER* залогинился на *$HOSTNAME* 
    Время: $DATE1
    Дата: $DATE2
    Адрес: $PAM_RHOST
    Service: $PAM_SERVICE
    TTY: $PAM_TTY
    GEO: ${GEO}"
    PAYLOAD="chat_id=$TARGET&text=$TEXT&parse_mode=Markdown&disable_web_page_preview=true"
    curl -s --max-time 10 --retry 5 --retry-delay 2 --retry-max-time 10 -d "$PAYLOAD" $URL > /dev/null 2>&1 &

    В файл /etc/pam.d/sshd добавляете/редактируете строчку:
    session optional pam_exec.so type=open_session seteuid /usr/local/bin/telegram_alert.sh

    Будете получать вот в таком виде:
    5f36480e9db84988952574.png

    Как создать своего бота - это отдельный вопрос. И он очень лёгок, а инструкций в сети полно.
    Ответ написан
  • Какой хороший маршрутизатор для x86?

    @brar
    Я не любитель комбайнов и "коробочных" решений, но ClearOS, думаю, вас устроит.
    Ответ написан
    7 комментариев
  • Как поставить на автозапуск python скрипт в linux?

    @brar
    [Unit]
    Description=My Script Service
    
    [Service]
    WorkingDirectory=/home/dev/myapp
    ExecStart=source venv/bin/activate && gunicorn -c gunicorn_config.py run_app:app
    Restart=always
    RestartSec=30 #перезагрузка сервиса, если вдруг упадет.
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=my-python-app
    #Environment=NODE_ENV=production PORT=3080 (это для nodejs, но можете тоже поиграть, если надо).
    
    [Install]
    WantedBy=multi-user.target

    Попробуйте разместить в /etc/systemd/

    iptables на разных осях по разному. Создаете скрипт типа:
    #! /bin/sh
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -t raw -F
    iptables -t raw -X
    iptables -t security -F
    iptables -t security -X
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    В дебиане-like кидаете его /etc/network/if-up.d/
    В redhat-like в /etc/sysconfig/iptables
    Ответ написан
    1 комментарий
  • Скрытие реального ip сервера с помощью своего DNS. Как?

    @brar
    3 вариант, без ДНС-сервера.
    сервер1 <---vpn--->сервер2 <--->дикий интернет.
    На сервере 1 в качестве шлюза для dest 443 и 80 портов (и других по желанию) ставится сервер2.
    На сервере2 SNAT-им сервер1 в мир, и DNAT-им входящий из мира трафик на 443 и 80 порт на сервер1. В настройках днс-зоны делаем запись А на айпи-адрес сервера2.

    4. Вариант. Тоже без днс.
    nginx или haproxy на сервере2 в качестве reverse proxy. 443 и 80 валим на сервер1.
    Ответ написан
    4 комментария
  • Как отследить сетевые запросы программы в linux (отлов DNS утечек)?

    @brar
    tcpdump -i wlp60s0 udp port 53 > dns_wifi.txt

    Идете и тыкаете в свои программы, которые работают у вас через сокс5.
    Останавливаете tcpdump. И изучайте файл dns.txt
    То же самое
    tcpdump -i tun0 udp port 53 > dns_tun0.txt
    Ответ написан
    6 комментариев
  • Корректное правило в iptables?

    @brar
    Пакеты между хостами одной и той же подсети не доходят до iptables, а обрабатываются непосредственно на свитче. То есть, iptables об их "общении" даже не знает.
    Ответ написан
    6 комментариев
  • Как дать возможность клиенту позвонить менеджеру который ему звонил?

    @brar
    Принцип работы опишу, но Вам под себя подпилить придется.
    Записываем в базу (в данном случае внутреннюю "родную" базу астериска) номер кому звоним. Потом при входящем звонке сверяем и маршрутизируем.

    [outgoing]
    exten => _98XXXXXXXXXX,1,Set(DB(outg/${EXTEN:2})=${CALLERID(num)}) #записываем в базу набираемый номер.
    
    [call_back_to_caller] #Если звонок пришел от абонента, которому ранее звонил менеджер
    exten => dfg,1,Dial(SIP/${DB(outg/${CALLERID(num)})},,Tt)
    exten => dfg,n,Hangup
    
    [inbound]
    exten => ваш_внешний_номер,n,GotoIf(${DB_EXISTS(outg/${CALLERID(number)})}?call_back_to_caller,dfg,1:reception,cc,1) #сверяем наличие в базе номера и отправляем в соотвествующий экстеншн.
    
    [reception] #если звонок приходит от любого другого номера, которого нет в базе)
    exten => cc,1,Dial(SIP/1099,12,Tt)


    Это рабочий вариант. Но, как сказал, вам надо подпилить под себя, и понятное дело, что здесь лишь те строчки, которые отвечают за логику в соотвествии с вашим вопросом. Так или иначе, ознакомьтесь с документацией по DB и DB_EXISTS и поработайте с записями в базе, чтоб было понимание.
    Ответ написан
    Комментировать
  • Что делать если провайдер выдает серый ip?

    @brar
    Самый правильный вариант, как сказали выше, купить белый айпи у прова. Вопрос от 100-500 руб в месяц. Второй вариант: наоборот, в офисе поднять l2tp-сервер, чтобы убунта подключалась к нему.
    Третий вариант: hamachi или аналоги. ubuntovod.ru/instructions/hamachi-ubuntu-linux.html , также там в коментах ссылаются на haguichi.
    Ответ написан
    1 комментарий