• Почему в программировании столько математики?

    @younghacker
    Потому что в мире много молекул и объекты реального мира состоят из молекул.
    А программирование базируется на математике.
    Программирование решает те или иные математические задачи.
    Будь то построение на плоскость проекции трёхмерной модели освещённой виртуальным светом,
    или простая отрисовка кнопочки с тенью на экране айфона.
    Как ни крутись, а координаты и масштабы нужно посчитать.
    А чего стоит моделирование динамики прокрутки экрана с трением...
    Разумеется использование разных библиотек избавляет от необходимости изобретать велосипед, но ездить на нём всё же нужно уметь.
    Ответ написан
    Комментировать
  • Где взять практику программисту?

    @younghacker
    А вы уверены что вы программист?
    У меня идеи были раньше навыков программирования и раньше знания языков.
    Что программировать даже вопросов не возникало.
    Придумывал задачу и писал. Сталкивался с проблемой - брал
    дизассемблер, отладчик и смотрел как это решают другие.
    Читал исходники чужих широко известных библиотек.
    Красивый, понятный, изящный код. Это же кайф, как поэзия!

    Практику можно только напрактиковать! :)
    Тренировка во сне - пока что возможна только в кинематографе.
    Ответ написан
    2 комментария
  • Как создать сайт или приложение на blockchain?

    @younghacker
    Чем торрент сеть не децентрализована?

    Ну а про блокчейн вот облачное хранилище на блокчейне.
    https://storj.io/

    Про домены сказал triggerfinger

    Скрестите обе технологии и будет распределённый сайт.
    Ответ написан
    1 комментарий
  • Как настроить сетевое окружение между сервером vpn и компьютерами из разных сетей?

    @younghacker
    Какой vpn используете?
    Ответ написан
    Комментировать
  • Connection timed out after 15000 milliseconds?

    @younghacker
    Запросы небольшие?
    Что делает другой сервер при этом?
    Проверьте использование памяти (свап), диска, нагрузку сети и процессора как на гипервизор так и на виртуалки.
    Просмотрите логи виртуалки нет ли там ошибок от что виртуалка замирает.
    Попробуйте отправлять ежесекундно мелкие udp/tcp запросы в обе стороны и пишите их в файл. Отправляемые данные пронумеруйте и затем посмотрите не выпадает ли что-то. Поснифьте tcpdump-ом трафик который отправляете/принимаете с обеих сторон.
    Проверить драйвера сетевых карт.
    Посмотреть настройки и статистику файрвола.
    Ответ написан
    Комментировать
  • Как автоматически добавлять ip в iptables?

    @younghacker
    Вопрос шикарный. Ничего не понял.
    Но попробую угадать что Вам нужно защитить сайт от перебора паролей к админке wordpress
    fail2ban + плагин для вордпреса который пишет в лог "фейлы". Работает автоматически и надёжно.
    "капча" - чистый плагин к вордпресу (их есть вагон и маленькая тележка)
    .htaccess в wp-admin каталоге с возможностью доступа только с определённых ваших IP или даже добавить http auth.
    Ответ написан
    5 комментариев
  • Backup сервер на чем лучше организовать windows или Linux (что бы шифровальщик не поработал)?

    @younghacker
    Можно оставить и обычную самбу или ftp
    Только поставить крон задачу которая пробегает по каталогам бэкапа и выполняет одну команду
    chattr +i *
    После этой команды все файлы становятся readonly для всех, даже для рута.
    И шифровальщик не сможет ничего сделать.
    [root@localhost ~]# lsattr test-file.txt
    -------------e-- test-file.txt
    [root@localhost ~]# chattr +i test-file.txt
    [root@localhost ~]# lsattr test-file.txt
    ----i--------e-- test-file.txt
    [root@localhost ~]# rm test-file.txt
    rm: remove regular file ‘test-file.txt’? y
    rm: cannot remove ‘test-file.txt’: Operation not permitted

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

    Чистить каталоги с бэкапом нужно противоположной командой.
    chattr -i test-file.txt
    rm test-file.txt

    Но BareOS и другие специализированные продукты как советовали выше никто не отменял. :)
    Ответ написан
    Комментировать
  • Возможно ли настроить аутентификацию OpenVPN по сертификату+ldap?

    @younghacker
    Никогда не решал такую задачу, но я бы двигался в направлении скрипта аутентификации.
    Нужно найти или написать простой shell скрипт который сравнит LDAP имя и CommonName.
    И в случае несоответствия возвращать ошибку. При этом можно делать запись в журнал и отправлять оповещение администратору VPN.

    Возможно openvpn-auth-ldap нужно будет отключить и проводить валидацию логина пользователя и проверку соответствий имени с commonname в его сертификате на стороне скрипта.
    --auth-user-pass-verify /etc/openvpn/scripts/scriptname.sh file
    --tmp-dir /dev/shm
    Я бы внимательно проанализировал что делает --username-as-common-name опция. Не поможет ли она решить всё и сразу.

    Думаю что таким образом вашу задачу можно решить.

    Либо можно сделать патч для openvpn-auth-ldap и добавить опцию в конфиг.
    Ответ написан
    Комментировать
  • ДДос атака на nginx пакетами 1 байт?

    @younghacker
    Главная проблема в том что Ваш адрес уже засвечен и чтобы уйти под CDN нужно сразу сменить IP для бэкэнда, а старый, владельцу атономки, лучше отправить в blackhole.

    Если канал не забит (ssh нормально отвечает) пробуйте блокировать прямо в iptables регионами.
    А если nginx успевает отвечать таймаутом бэкэнда (узкое место движок сайта) - то можно блокировать в nginx.

    Первый шаг - хостер / датацентр. Спросите чем могут помочь, им по сути тоже нет резона держать хост под атакой.

    Затем вытяните из логов все запросы за время атаки отсортируйте по количеству и составьте список 100-300 самых активных и вычислите их сети автономки и регион. Если это одна страна и она не ваша целевая - блокируйте на время всю страну автономки и так далее. Для начала можете заблокировать просто около 300 конкретных хостов.
    Если сайт начнёт работать, контролируйте что происходит дальше. Атака может смещаться на другие IP.

    Если это не поможет переходите под защиту CDN с защитой от DoS.
    Сразу после этого меняйте IP так как этот уже спален.
    Кроме этого пропишите в iptables правила которые режут трафик отовсюду за исключением сетей CDN.
    Не отрежьте случайно свой ssh.

    CloudFlare имеет бесплатный вариант эккаунта. Но отмечу что нам заваливали 3 сайта которые находились на платном эккаунте. Атака велась из Вьетнама Кореи, Бразилии и Украины. Пытались блокировать по сетям прямо в CDN, но пакеты из заблокированных сетей всё равно долетали до наших серверов где мы их уже блокировали.

    По остальному смотрите что с бэкэнтом который готовит страници для nginx. Что с количеством процессов как они загружены сколько потребляют памяти и чего ждут. Атака это хороший случай чтобы над тем где бутылочное горло.
    Ответ написан
    Комментировать
  • Как сделать копию сайта на другом хостинге?

    @younghacker
    Ваша идея полезна с точки зрения получения практических навыков и опыта "почему так делать не стоит".
    Непонятно как Вы хотите снизить стоимость VPS обеспечив при этом доступность сайта.
    Полной отказоустойчивости пока нет.

    Можно создать много A/AAAA записей для имени сайта в DNS.
    Но у посетителей они будут перебираться по очереди. Соответственно часть посетителей могут уткнуться в нерабочий сервер.
    Можно сделать какой-то автоматический процесс который сменит DNS запись на рабочий хост. Но DNS кеш у некоторых посетителей будет возвращать им старый IP независимо от настроек TTL на DNS сервере.

    Можно взять бесплатный эккаунт на CDN например CloudFlare и настроить скрипт который будет дёргать API и переключать backend сервер. По сравнению с записью в DNS, время переключения снизится, но всёравно кто-то вечно следящий в интернете это должен делать. Тоесть нужна мониторящая виртуалка, а лучше несколько.
    Но в случае двух рабочих серверов Вам необходимо добиться синхронизации базы и файлов на обоих хостингах.
    А это как минимум трафик между обоими серверами.

    Правильно бы поставить HA Proxy и балансировать трафик он сам разберётся что и куда. Или другие подобные кластерные решения. Но это уже выходит за рамки бюджета любой одиночной виртуалки.

    Если речь идёт о чистом Apache+PHP+MySQL хостинге то можно найти бесплатный или дешёвый вариант шаред хостинга. Если шареда мало, возьмите VDS/VPS есть дешёвые варианты. Хотя не факт что надёжнее чем домашний сервер.
    Ответ написан
    Комментировать
  • Как вернуться в программирование?

    @younghacker
    Мне 33 года — возраст Иисуса Христа, а что я сделал? Учения не создал, учеников разбазарил, бедного Паниковского не воскресил!
    (с) Остап-Сулейман-Берта-Мария Бендер-бей (Задунайский)


    34 года время взглянуть на уже прожитые годы и принять решение на годы грядущие.
    Всё своим чередом. Это нормально.

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

    На мой взгляд, если у человека нет времени на обучение и развитие - то, извините, в IT ему не многое светит.
    Реалии таковы что за нами стоит армия молодых, шустрых и сообразительных, которые с молоком матери "всосали" тачскрин интерфейсы. У них нет на шее своей семьи и нет ипотеки. И они схватывают новые знания очень быстро. Да. Знания их очень поверхностны. Вопрос нехватки памяти они решают установкой нового модуля памяти вместо переписывания говнокода и говноархитектуры. Они не понимают как работает триггер и логические элементы, они не умеют читать процессорный байткод. Но если честно много ли где это требуется?

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

    «Учиться, учиться, учиться, как завещал великий Ленин»
    1920px-Town_Agrotechnicum.jpg
    Автор: Алексей Белобородов - собственная работа, CC BY-SA 3.0, Ссылка

    1. У вас есть опыт, жизненный 34+ (это хорошо)
    2. У вас есть профессиональный опыт 5+: системный администратор (Йо моё)
    3. У вас есть английский Intermediate level (это прекрасно)
    4. Вы пишете на C, C++. Программирующий администратор? (Ещё круче!)
    5. У вас есть технико-математическое университетское образование (Вашу мать... Вы золото!)

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

    И этот человечище страдает тем что меняет клавиатуры и регулятно освежает пользователям знания про то где находится anykey...

    Задайте себе вопрос чего Вы ждёте в провинции? Велика Россия, а заработать можно только в Москве и Санкт Петербурге. Хм, дык там не нужен английский. Он может пригодиться только в иностранных компаниях или тех которые работают в сфере офшорных IT услуг. Несмотря на то что xUSSR занимает 1/6 поверхности суши, есть и оставшаяся 5/6 поверхности суши поделённая между множеством государств, где можно найти своё место под солнцем. Откройте сайты рекрутинковых агенств. Откройте сайты компаний где бы вы хотели работать. Пишите, звоните, стучите, и вам откроют. Откроют и визу, обеспечат и жильём, и детей в школу помогут устроить. Боитесь что дети не будут знать русский? Есть посольские школы.

    Если же вопрос задан с неосмысленным желанием получить предложение на работу,
    тогда не лишним было бы разместить резюме, заодно и поправим всем тостером :)

    Дорогу осилит идущий.
    И у Вас всё получится!!!

    Другие рекомендации Вам уже дали.
    Упомяну здесь про БигДата, нейронные сети и их обучение. Здесь математик-программист найдёт свой звёздный час.
    Ответ написан
    2 комментария
  • Как найти майнер на linux, если по логам все хорошо?

    @younghacker
    Верно говорят, майнер чтобы быть полезным обязан жрать процессор. Все ядра на сервере грузятся почти на 100%.
    Поможет Вам команда top
    А netstat -nap | grep -i 'established' покажет все установленные TCP сессии
    и tcpdump поможет отловить исходящий трафик.

    Буквально недавно боролся с майнером на дырявом сервере.
    Аплоадят через php в папку /tmp
    потом смотрят нет ли майнера в памяти ps afx и запускают его через nohup.
    Так как дырявыми сайтами занимаются другие люди, пришлось запретить php запускать процессы.
    С майнером это помогло. Потом началась борьма со спамом, и с использованием сервера для взлома и атаки других сайтов. Пришлось отрубить апачу возможность инициировать исходящие соединения и дропнуть весь UDP трафик. Это единственная возможность так как разработчики полгода не могут пропатчить сайты. Сайты до сих пор дярявы но майнеры не приживаются, спам не рассылается и атаки не ведутся. Хостер не жалуется. Сайты работают.
    Ответ написан
    2 комментария
  • Как правильно сменить пароль от FTP на Ubuntu?

    @younghacker
    Во-первых:
    Как поменять пароль зависит от того какой у вас FTP сервер и как он авторизует пользователей.
    PureFTP, VsFTPD и т д.

    Во-вторых:
    Люди которые Вам делали сайт могут навредить и без доступа к FTP, просто через свой php скрипт который является составной частью CMS. Вы же не знаете есть ли там возможность или нет. Ну и ещё один путь - стандартный вход в админку сайта. Если файлы в каталогах сайта можно заблокировать от изменения на уровне файловой системы, то чёрный вход в панель нужно найти и обезвредить. Так имея вход в админку вредитель может менять содержимое базы данных, так как сайту к базе обычно предоставляется полный доступ. Блокирование доступа в админку по IP тоже не даёт 100% защиты так как чёрный вход может использовать обходной путь через php который является обёрткой для админки но лежит где-то в другом каталоге и доступен публично.
    Ответ написан
  • Как мне в данном случае подключиться к vpn?

    @younghacker
    Измените конфиг
    Напишите пути к сертификатм как положено для линукс (для винды пути с двумя слешами)
    Смените расширение файла в .conf
    добавьте
    user nobody
    group nobody
    поставьте владельца root.root и права 600 для файлов и 700 для каталогов если ключи в подкаталогах.
    установите OpenVPN
    проверьте SELinux если вдруг сервер не стартует.
    Обычно хватает restorecon -R /etc/openvpn/
    И для лога, если он требуется, нужны правильные SELinux метки.
    Не стартанёт - пишите разберёмся.

    Пример: винда и линукс конфиг
    ==== openvpn.ovpn ====
    client
    dev tun
    proto udp
    remote 59.32.44.09 19745
    resolv-retry infinite
    nobind

    persist-key
    persist-tun

    tls-auth "C:\\Program Files\\OpenVPN\\config\\vpn07.gw01.vpn.com-ta.key" 1
    key "C:\\Program Files\\OpenVPN\\config\\vpn07.gw01.vpn.com-client1.key"
    cert "C:\\Program Files\\OpenVPN\\config\\vpn07.gw01.vpn.com-client1.crt"
    ca "C:\\Program Files\\OpenVPN\\config\\vpn07.gw01.vpn.com-ca.crt"

    log "C:\\Program Files\\OpenVPN\\log\\openvpn.vpn07.gw01.vpn.com-client1.log"

    remote-cert-tls server # OpenVPN 2.1 and above
    ns-cert-type server # OpenVPN 2.0 and below

    cipher AES-256-CBC
    comp-lzo
    verb 3

    ping 10
    ping-restart 60

    ==== openvpn.conf ====

    client
    dev tun # for linux you can sutup tun number for example tun1
    proto udp
    remote 59.32.44.09 19745
    resolv-retry infinite
    nobind

    user nobody
    group nobody

    persist-key
    persist-tun

    tls-auth /etc/openvpn/certsvpn07/vpn07.gw01.vpn.com-ta.key 1
    key /etc/openvpn/certsvpn07/vpn07.gw01.vpn.com-client1.key
    cert /etc/openvpn/certsvpn07/vpn07.gw01.vpn.com-client1.crt
    ca /etc/openvpn/certsvpn07/vpn07.gw01.vpn.com-ca.crt

    log /var/log/openvpn.vpn07.gw01.vpn.com-client1.log
    verb 3
    mute 20

    remote-cert-tls server # OpenVPN 2.1 and above
    ns-cert-type server # OpenVPN 2.0 and below

    cipher AES-256-CBC
    comp-lzo

    ping 10
    ping-restart 60
    Ответ написан
    Комментировать
  • Играют ли роль Cisco-сертификаты при трудоустройстве?

    @younghacker
    Откройте сайт с предложениями о работе. Раздел сетевых администраторов. Полистайте и увидите совершенно разные требования. Кому-то нужны сертификаты, а кому-то нужны практические навыки.
    Я на собеседованиях задаю вопросы из практики, даю конкретную боевую ситуацию и смотрю как человек её решает. А наличие бумажки для нас не имеет значения. Но работая на серьёзную компанию у Вас будет возможность отучиться и сдать экзамен. В случае успеха - компания погасит все расходы. А если экзамены провалил то никакой оплаты. Где-то обучение поощряется и активному работнику за сертификаты поднимают зарплату. Но всё зависит от компании. Специфика "айтишной" професси, как и многих других, такова, что учиться приходится непрерывно и много.
    Ответ написан
    Комментировать
  • По какой причине могут не работать жесты на тачпаде?

    @younghacker
    А поддерживает ли тачпад этот самый мульти-тач :)
    В смысле железо и драйверы.
    Ответ написан
    Комментировать
  • Как через планировщик заданий в windows сделать так, что бы windows перестала загружаться?

    @younghacker
    Нужно придумать откуда получать действительно время. CMOS и NTP источники можно сбросить или изменить. Но можно написать скрипт который читает время работы жёсткого диска SMART INFO и сравнивает с заданным и делает какие-то действия. Поставить или активировать пароль на диске, зашифровать какую-то системную область и т д.
    А можно иначе.
    Раздел на диске изначально шифруется DriveCrypt. При загрузке отрабатывает какой-то скрипт который монтирует раздел в папку directory junction. Пароль получается из системного времени и времени работы диска, придумать как его формировать чтобы он выдавал правильный пароль в укзанном диапазоне времени.
    В Linux процесс загрузки контролируется проще чем в Windows.

    Может выдавать какой-то токен из интернета. Нет обновления токена - через 24 часа компьютер превращается в тыкву. Может быть есть USB токены получающие код из интернета вещей или SMS.

    Но это не защитит от замены диска. Работник поменяет диск и поставит систему и поедет дальше

    Также я бы пробовал искать сервисы которые удалённо контролируют компьютер встраиваясь в биос.
    Не дают заменить диск, не дают сбросить пароль.
    Например Computrace встроен в BIOS Dell даже в ноуты 10-летней давности.
    Мне не приходилось его использовать, но я так понимаю с его помощью можно блокировать украденные компьютеры.

    Можно написать свой UEFI модуль и в нём проверить на месте ли диск и сколько там часов натикало и если всё в порядке - грузиться. Иначе впасть в ступор.

    Ну или в ноутбук вставить таймер который "перережет" нужный провод :)
    Ответ написан
    Комментировать
  • Можно ли настроить на одном VPS два OpenVPN - что бы каждый выходил в интернет со своего IP?

    @younghacker
    Это не то чтобы конфигурация OpenVPN это конфигурация ядра системы.
    И здесь iproute2 Вам определённо поможет. Маршрутизация на основании адреса клиента.
    Но чтобы зафиксировать адрес клиента (VPN) за каким-то внешним адресом нужно настроить и статический адрес для сертификата клиента и запретить вход с дубликатами cn, либо поднять второй VPN сервер на другом внешнем порту с другой внутренней сеткой. Тогда соединяемся на первый VPN получаем 1.1.1.1, соединяемся на второй VPN получаем 2.2.2.2.
    Ответ написан
    Комментировать
  • Как удалить все маршруты и поставить только OpenVPN?

    @younghacker
    А Вы серьёзно уверены что никто не добавит маршруты обратно когда OpenVPN упадёт?

    На мой взгляд оптимальнее и надёжнее будет ограничить весь исходящий и (проходящий если это роутер) трафик таким образом чтобы:
    0) принимались все пакеты идущие в lo
    -A OUTPUT -o lo -j ACCEPT

    1) принимались все пакеты идущие в tun+
    -A OUTPUT -o tun+ -j ACCEPT

    2) принимались все пакеты идущие в enp1s0 если цель это интерфейс вашего VPN сервера и порт равен ему и протокол такой же.
    -A OUTPUT -o enp1s0 -p tcp -m tcp --dport 443 -d x.x.x.x -j ACCEPT


    3) принимались все пакеты идущие в wlp2s0 если цель это интерфейс вашего VPN сервера и порт равен ему и протокол такой же.
    -A OUTPUT -o wlp2s0 -p tcp -m tcp --dport 443 -d x.x.x.x -j ACCEPT


    4) отбрасывались все добежавшие до этого правила пакеты с ошибкой чтобы сразу было понятно что маршрут через VPN отвалился.
    -A OUTPUT -j REJECT --reject-with icmp-host-prohibited

    Правило должно быть последним в цепочке OUTPUT.

    Такой подход защитит вас и от DNS leak.

    Не забываем также PUSH-нуть DNS с VPN сервера так как родной от модема или wifi роутера не будет доступен.
    push "redirect-gateway"
    push "dhcp-option DNS 10.11.0.1"
    push "explicit-exit-notify 3"

    10.11.0.1 - в данном случае свой DNS где-то на стороне VPN сервера. Из соображений если уж VPN-ниться то и гуглу ничего не сообщать.

    Команда для проверки счётчиков (когда будете отлаживать)
    iptables -nvL

    Да, DHCP ещё нужно бы разрешить если используете не статику.
    Ответ написан
    1 комментарий
  • На чём и как проще всего автоматизировать создание бэкапов KVM-машин?

    @younghacker
    Соглашусь с 3ton по поводу LVM. Но делать резервную копию по-живому это экстрим.
    Можете получить полуобновлённую базу данных, полуживую файловую систему и так далее. За исключением того что сделаете копию не только диска но и памяти и в момент паузы виртуальной машины.
    Без доступа внутрь виртуалки нельзя гарантировать что на диск сброшены все данные.
    Мой совет - пересмотрите технологию бэкапов.

    Я практикую следующий подход:
    Перед обновлением системы на сервере делаю полный бэкап по следующей схеме.
    1. Остановка виртуалки (виртуалки реагируют на ACPI снаружи)
    2. Снапшот LV привязанного к виртуалке.
    3. Старт виртуалки.
      При использовании скриптов (не вручную) даунтайм получится практически равным рестарту виртуалки.
    4. Обновление (системы) Если обновляется кернел то делаю по аналогичной схеме делаю второй LV снапшот.
    5. копирование снапшота(ов)
    6. удаление снапшотов.
    Имейте ввиду что необходимо иметь запас места для снапшота на время его жизни (копирования) так как свободное место на LVM начнёт быстро таять как только виртуалка начнёт активно изменять данные на своём диске.

    Тоесть нет смысла ежедневно делать резервную копию того что не изменялось (система и программы).

    А ежедневные бэкапы делаю при помощи скриптов + bareos/bacula.
    Такой подход в целом уменьшает размер резервных копий.

    Ну и хорошо после создания бэкапа делать его восстановление и проверку.
    Для виртуалки обычно хватает разворачивания на другом физическом сервере (чтобы небыло конфликтов) и проверки запущенности всех важных сервисов и доступности баз данных (тестовые скрипты).

    Далее можно оптимизировать. Не бэкапить swap виртуалок. Его можно убрать при копировании снапшота. А лучше swap выдавать отдельным LV. Тогда его не нужно и снапшотить.
    В виртуалках я также по аналогии с отдельным свапом делаю отдельные диски для DB, логов, и так далее. Всё это позволяет ужать размер бэкапа системы до 3-5 гиг в несжатом виде.
    Ответ написан
    4 комментария