Ответы пользователя по тегу Ubuntu
  • Как заставить *.vk.com идти напрямую в обход VPN-сервера?

    @younghacker
    Мне нравится этот парень! :)
    Люди ведут борьбу за то чтобы ни один пакет не "пролился" мимо VPN, и тут находится смельчак который хочет в обход VPN загрузить html страницу с сотнями "поводков" собирающими информацию о посетителе.

    О структуре вашей сети ничего не известно поэтому буду импровизировать.

    • Выключить VPN - всё нормализуется само собой. :)
    • Удалить маршрут по умолчанию через VPN, перестать "PUSH-ить" его с сервера.
    • Поднять VPN сервер у себя в сети :)
    • Поднять у себя в локалке прокси. Настроить в браузере прокси. Если вдруг это будет другая подсеть то нужно прокинуть статический маршрут до прокси чтобы он был доступен с устройства.
    • Запустите в локалке машину с браузером. Подключайтесь к нему через RDP или VNC из iOS
    • есть несколько других способов но в разрезе iOS даже не знаю применимы ли они


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

    Можно вопрос? Зачем Вам VPN ? Ответить можете в телеграме, конечно если у Вас он работает.
    Ответ написан
    Комментировать
  • Connection timed out after 15000 milliseconds?

    @younghacker
    Запросы небольшие?
    Что делает другой сервер при этом?
    Проверьте использование памяти (свап), диска, нагрузку сети и процессора как на гипервизор так и на виртуалки.
    Просмотрите логи виртуалки нет ли там ошибок от что виртуалка замирает.
    Попробуйте отправлять ежесекундно мелкие udp/tcp запросы в обе стороны и пишите их в файл. Отправляемые данные пронумеруйте и затем посмотрите не выпадает ли что-то. Поснифьте tcpdump-ом трафик который отправляете/принимаете с обеих сторон.
    Проверить драйвера сетевых карт.
    Посмотреть настройки и статистику файрвола.
    Ответ написан
    Комментировать
  • Как найти майнер на 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 который является обёрткой для админки но лежит где-то в другом каталоге и доступен публично.
    Ответ написан
  • Можно ли настроить на одном VPS два OpenVPN - что бы каждый выходил в интернет со своего IP?

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

    @younghacker
    Нужно передать DNS со стороны сервера на клиента , и на клиенте как уже сказали выше рубануть исходящий и входящий трафик на 53 порту везде кроме tun интерфейса.
    Разумеется в этом случае адрес VPN сервера должен быть указал в цифровом виде. Не доменный.
    iptables на клиенте будет выглядить как-то так:
    -A OUTPUT -o lo -j ACCEPT
    -A OUTPUT -o tun+ -j ACCEPT
    -A OUTPUT -o eth0 -d adresservera -p udp -dport vpnport -j ACCEPT
    -A OUTPUT -j DROP


    кусочек конфига openvpn сервера:
    push "dhcp-option DNS 10.1.10.1"
    push "redirect-gateway"


    Разумеется DNS должен быть проксирован или проброшен снаружи через туннель
    Если всё ещё актуально, постучитесь в скайп - поясню/помогу.
    Ответ написан
  • Почему не запускается certbot?

    @younghacker
    Покажите свои конфиги и как Вы запускаете certbot
    Похоже что в конфиге нарушена кодировка либо отсутствуют опции типа аутентификатора:

    2017-03-30 09:34:26,065:DEBUG:certbot.main:Discovered plugins: 
    PluginsRegistry(
    PluginEntryPoint#standalone,
    PluginEntryPoint#manual,
    PluginEntryPoint#nginx,
    PluginEntryPoint#webroot,
    PluginEntryPoint#apache,
    PluginEntryPoint#null)
    2017-03-30 09:34:26,065:DEBUG:certbot.plugins.selection:
    Requested authenticator None and installer None
    2017-03-30 09:34:26,756:DEBUG:certbot.main:Exiting abnormally:
    Ответ написан
    Комментировать
  • Как настроить подключение по vpn в виртуальной машине?

    @younghacker
    Схема как я понял такая:
    windows7 --> lubuntu --> router(pptp)

    На lubuntu маршрутизация включена? IPv4 ?
    Проверьте разрешён ли forward в iptables между интерфейсами внутренним там где виртуалка и внешним там где роутер. Нет ли блокировки по портам протоколам и целевым адресам.
    Если на lubuntu Вы не используете NAT тогда роутер должен знать о том куда отправить ответ!!!
    Тоесть в роутере должен быть роутинг в сеть где находится виртуалка через внешний интерфейс вашего lubuntu

    windows7 проверить ping до lubuntu интерфейс который ближе интерфейс который дальше
    затем проверить ping до router

    Разумеется на пинг роутер и лубунту должны отвечать (ICMP)

    На лубунте можно понаюлюдать за трафиком пинга
    apt-get install tcpdump
    # tcpdump -i any proto ICMP
    Ответ написан
    Комментировать
  • Как узнать что инициирует отправку письма postfix?

    @younghacker
    Как искать спамера - рассказали. Теперь один из вариантов как сработать на опережение - предотвратить спам в результате взлома.

    В iptables запрещаем исходящее TCP соединение на любой внешний 25 порт с эккаунтов кроме postfix, root, mail.
    В результате этого web сервер не может отправить почту напрямую.
    Всех нарушителей перед reject-ом пишем в лог. За логом непрерывно следим. Появление массы записей свидетельствует о попытке установить внешние соединения на порт 25.
    -A OUTPUT -o br0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -j SMTPOUT
    -A SMTPOUT -d 127.0.0.1 -j ACCEPT
    -A SMTPOUT -m owner --gid-owner mail -j ACCEPT
    -A SMTPOUT -m owner --uid-owner root -j ACCEPT
    -A SMTPOUT -m owner --uid-owner smfs -j ACCEPT
    -A SMTPOUT -j LOG --log-uid --log-prefix "Reject outgoing SMTP "  # Houston, we have a problem
    -A SMTPOUT -j REJECT --reject-with icmp-admin-prohibited

    А в почтовике разрешаем отправку почты только с аутентификацией.
    Большинство взломов не смогут разослать спам.
    Более продвинутые взломы вынуждены будут найти аутентификацию и отправлять с ней.
    В постфиксе включаем smtpd_sasl_authenticated_header = yes (Postfix версии 2.3 и выше)
    В результате в чего в заголовке каждого отправленного письма появится имя аутентифицировавшегося пользователя.
    По этому имени получив абузу от спамхауса вы тутже видите кто провинился.
    Мониторим очередь отправки. Бурный рост очереди - чаще всего - результат взлома и попытки рассылки спама.
    Мониторим dnsbl листы.

    Ну и напоследок, что сделать чтобы минимизировать риск взлома?
    Блокировать модификацию и создание файлов из php. Да, автообновление вордпресс провалится. Но если мы запрещаем бесконтрольную модификацию сайта, то запрещаем всем. Можно даже руту запретить.
    chattr +i -R * /var/www/hosts/site.domain/public_html/

    У каталогов куда необходимо разрешить запись файлов (например upload) отключите хендлер обработки php файлов интерпретатором php. Пусть веб сервер его отобразит но не выполнит. Файл .htaccess который это блокирует также защищаем от записи. Основное правило - запретить произвольную бесконтрольную модификацию кода оставив возможность записывать данные но при этом запретить возможожность выполнения данных. :)
    Понятно что не каждая CMS сможет нормально работать в таком режиме.
    В таком режиме много лет у нас работает сайт одного клиента на joomla 1.5 :) Дыра - дырой. И если снять ридонди и его взламывают в течении пары дней.

    И заключительный совет: Не размещайте сайты на хосте который является также и почтовым сервером. Или как минимум разнесите IP адреса с которого отправляется почта от адреса с которого работает вебсервер. Чтобы это хоть снаружи выглядело как разные хосты. Тогда взлом сайта и рассылка спама не приведёт к блокировке IP почтовика в разных dnsbl от которого порой отмыться очень сложно и/или долго.
    Ответ написан
    Комментировать
  • Не подключается к ftp?

    @younghacker
    на сервере:
    # netstat -nlp | grep ':21'
    должен показать процесс ftpd или что там у Вас, и адреса которые он слушает. должно быть 0.0.0.0:21 или ваш ip к которому соединяетесь ftp клиентом.

    на сервере же запустить ftp клиент и соединиться тем адресом который точно случает ftp демон. Самый простой вариант поставить midnight commander запустить его и в нём ввести команду (предположим что сервер слушает 0.0.0.0, а значит и 127.0.0.1):
    cd ftp://имяфтппользователя:пароль@127.0.0.1
    в случае успеха увидите каталог ftp сервера.

    # iptables -nvL INPUT
    должно показать правила из которых следует что 21 порт принимается на нужном интерфейсе с нужного IP клиента. Если прописано правило для 21 порта (лучше прописать) то увидите счётчик пакетов. Если от момента рестарта iptables Вы пробовали с клиента соединиться счётчик должен быть ненулевой.

    # cat /etc/sysconfig/iptables-config | grep 'IPTABLES_MODULES='

    добавить модуль ip_nat_ftp и рестартануть IPTABLES

    смотрим что там с AppArmor он тоже может блокировать доступ.
    # aa-status

    обычно на убунте по умолчанию не используют SELinux но проверить стоит.
    # getenforce
    Если активировано - временно можно отключить и попробовать соединиться снова.

    Логи, любимое админское чтиво:
    # cat /var/log/имя лога ftp сервера | grep -i 'ftp'
    # cat /var/log/kern.log


    Сначала нужно добиться соединения с локального ftp клиента, затем пробовать с удалённого.

    PS извиняюсь но Ваши настройки смотреть не стал после того как увидел сколько JS скриптов с разных сайтов хочет подсунуть этот ...сайт ради картинки...
    Ответ написан
    Комментировать
  • Почему systemd запускает OpenVPN раньше готовности интерфейсов определенных в /etc/network/interfaces?

    @younghacker
    Проверьте файл (это федора на убунте может быть в другом месте) /lib/systemd/system/openvpn@.service

    [Unit]
    Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
    After=network.target

    [Service]
    PrivateTmp=true
    Type=forking
    PIDFile=/var/run/openvpn/%i.pid
    ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf

    [Install]
    WantedBy=multi-user.target
    Ответ написан
    7 комментариев
  • Как проверить трафик на обход VPN'a?

    @younghacker
    Отключите IPv6. Для вашей анонимности он опасен.

    Вот эта опция железобетонная!
    iptables -A OUTPUT -o eth0 -j DROP
    Вы уверены что у вас VPN работает? А если работает то через какой интерфейс? eth1, wlan? Куда смотрит default gate в ip route ?

    Перед дропом нужно было поставить акцепт для пакетов в адрес сервера. Ну и дропать нужно на всех интерфейсах кроме TUN... Зачем же вам TAP интерфейс ???
    Ответ написан
    Комментировать
  • Как быстро поднять vpn?

    @younghacker
    Можно!
    Хотите я вам скину сертификаты и конфиги? :)
    дальше будет пару команд:
    1) поставить openvpn
    2) скопировать конфиги и сертификаты клиента и сервера
    3) запустить сервис на сервере и на клиенте.
    И всё.

    Но сертификаты генерируются на раз-два. Главное разобраться что и как.
    Ответ написан
    Комментировать
  • Как построить цепочку vpn?

    @younghacker
    Кроме того чтобы настроить это два или три раза, нужно пробросить Default Gate таким макаром чтобы пакет прошёл как нужно. И я так подозреваю что топикстартеру нужно добиться и того чтобы пакет случайно не вывалился в паблик, когда инженер связи рвёт VPN коннект. :)

    T_y_l_e_r как с вами связаться? Что-то тостеровцы два года назад обещали личные сообщения, а воз и ныне там.
    Ответ написан
    Комментировать
  • Как сменить ключи OpenVPN?

    @younghacker
    В инсталяционном пакете идут скрипты.
    build-ca
    build-dh
    build-inter
    build-key
    build-key-pass
    build-key-pkcs12
    build-key-server
    build-req
    build-req-pass
    clean-all
    inherit-inter
    list-crl
    Makefile
    openssl-0.9.6.cnf
    openssl.cnf
    pkitool
    README
    revoke-full
    sign-req
    vars
    whichopensslcnf

    Для всех действий права рута не нужны.
    Скопируйте скрипты в какой-то рабочий каталог.
    отредактируйте файл vars
    установите дату истечения сертификатов имя организации емейл
    export KEY_SIZE=2048
    export CA_EXPIRE=3650
    export KEY_EXPIRE=3650
    export KEY_COUNTRY="DE"
    export KEY_PROVINCE="none"
    export KEY_CITY="Berlin"
    export KEY_ORG="vpn01 v.p.n.."
    export KEY_EMAIL="vpn01@gate1.common.vpn"

    выйдите в чистый shell
    запустите
    . vars
    после этого не выходя из шела запускайте по очереди.
    ./build-ca ${NAME}
    ./build-dh
    ./build-key-server ${NAME}-server
    "${OPENVPN}" --genkey --secret "./keys/${NAME}-ta.key"

    И потом для каждого клиента
    ./build-key ${NAME}-client${i}
    Где OPENVPN=`which openvpn`
    NAME="vpn01.gw01.common.vpn" - общая часть имени ключей
    i - номер клиента

    Далее вы получите файлы.
    ca.crt - клиентам и серверу (публичный)
    ca.key - только на машине которая подписывает (не храните на сервере!!!)
    ta.key - для клиентов и для сервера (секретный)
    dh2048.pem - (для сервера)
    vpn01.gw01.common.vpn.server.crt - для сервера (публичный)
    vpn01.gw01.common.vpn.server.key - для сервера (секретный)
    vpn01.gw01.common.vpn.client1.crt - для клиента (публичный)
    vpn01.gw01.common.vpn.client1.key - для клиента (секретный)

    Весь каталог со скриптами включая созданную папку (keys) сохраните в секретное место и удалите с сервера.
    Если понадобится догенерировать или отозвать сертификаты.
    Ответ написан
    Комментировать
  • Как узнать какой скрипт PHP создал файл?

    @younghacker
    Стандартных возможностей я не знаю.

    Чтобы быстро "заткнуть" вопрос, поставьте на все файлы и каталоги которые не должны изменяться атрибут immutable при помощи chattr. Это ликвидирует возможность создать или изменить файл на диске до тех пор пока не будут повышены привилегии до рута. В каталогах куда пишутся временные файлы установите .htaccess с запретом инерпретации любых файлов как исполняемые.
    php_flag engine 0
    AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
    и сам файл запретите изменять при помощи immutable:
    chattr +i .htaccess

    Можете сделать bash-python-php скрипт запускаемый по крону который будет бегать по указанному каталогу и подкаталогам и сверять список файлов с эталонным и обнаружив "левые" файлы или каталоги будет переносить их в специальный каталог-карантин недоступный снаружи и сразу создавать дамп системных журналов с момента своего последнего запуска. Это позволит получить франменты логов непосредственно предшествующих внесению изменений на диск.
    Скрипт запускать ежеминутно, но отслеживать файлы именно по списку по критериям имя размер времена атрибуты. Не искать ничего внутри файлов чтобы не нагружать сервер. Обнаруживаете чужеродный файл — переносите в карантин. В конце часа шлёте себе оповещение. После этого у Вас будет материал для анализа проблемного места.

    Скрипты рассылающие спам отлавливаются и другим способом. Для этого в iptables добавляете правила которые блокируют SMTP трафик и пишут лог. Например:

    -A OUTPUT -o br0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -d 127.0.0.1 -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -m owner --gid-owner mail -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -m owner --uid-owner root -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -m owner --uid-owner smfs -j ACCEPT
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -j LOG --log-uid --log-prefix "Reject outgoing SMTP "
    -A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-admin-prohibited


    После этого настраиваете свой rsyslog или что там у Вас, можно и zabbix, таким образом чтобы он слал оповещение когда в логе появляются записи "Reject outgoing SMTP ". В этих правилах вы видите разрешение работать почтовику поэтому стандартным мейлером скрипт-спамер сможет рассылать спам. Сделайте для него временно́е окно, ваша задача состоит в том чтобы отловить спамер-скрипт и проанализировать логи. Особенно http что там вызывали и с какими параметрами. Если можете поступить круче то вообще запретите вещание со всех портов кроме разрешённых 22, 80, и 443 (только очень аккуратно: — не лишите себя удалённого управления сервером).

    Есть также возможность поставить утилиту которая будет мониторить изменения в каталоге и его вложениях. Например, incron : Inotify cron system. Она будет следить за указанными каталогами и как-только произойдут выбранные вами события выполнит скрипт. А в скрипте анализировать проблема это или легальная операция.

    Из перспективных возможностей, пропатчить php так чтобы он при операциях и диском (создание и изменение файлов), он писал в специальный журнал. Это вполне реально, но разрабочики php не считают это важным и нужным. Хотя допускаю, что я плохо информирован и они уже работают или сделали эту фичу.
    Ответ написан
    Комментировать
  • Как примонтировать LVM с внешнего диска?

    @younghacker
    Монтирование внешнего диска ничем не отличается от монтирования внутреннего диска.
    1.
    Подключайте физически диск.
    Смотрите подключился ли он:
    # fdisk -l
    Он должен присутствовать в списке

    Затем
    # vgscan --mknodes
    # vgchange -ay


    Затем монтируйте readonly если боитесь затереть данные
    # mount -t ext3 -o ro /dev/vg160/LogVol00 /mnt/yourmountpoint


    2.
    Если диски имели одинаковые имена групп, то нужно либо
    грузиться со внешнего диска,
    либо переименовывать группу по uuid

    # vgscan
    Reading all physical volumes. This may take a while...
    Found volume group "VolGroup00" using metadata type lvm2
    Found volume group "VolGroup00" using metadata type lvm2


    Не знаю как найти принадлежность LV к PV поэтому я
    пользовался различием в размерах дисков.
    # vgdisplay | grep -i 'name\|uuid'
      VG Name VolGroup00
      VG Size 148.94 GB
      PE Size 32.00 MB
      Total PE 4766
      Alloc PE / Size 4766 / 148.94 GB
      Free PE / Size 0 / 0
      VG UUID pkb1cy-1JSf-n3Px-UYRi-eImv-e1Eg-t12BgY
      VG Name VolGroup00
      VG Size 74.41 GB
      PE Size 32.00 MB
      Total PE 2381
      Alloc PE / Size 2381 / 74.41 GB
      Free PE / Size 0 / 0
      VG UUID SjBmkg-YvMz-B160-tEds-Vqrg-SFMS-mYNimL


    А теперь переименовываем группу по UUID
    # vgrename pkb1cy-1JSf-n3Px-UYRi-eImv-e1Eg-t12BgY MyNewGroupName


    # pvscan
    PV /dev/sda2 VG vg160 lvm2 [148.94 GB / 0 free] 
    PV /dev/hda2 VG VolGroup00 lvm2 [74.41 GB / 0 free] 
    Total: 2 [223.34 GB] / in use: 2 [223.34 GB] / in no VG: 0 [0 ]


    # lvscan
    inactive '/dev/vg160/LogVol00' [147.00 GB] inherit
    inactive '/dev/vg160/LogVol01' [1.94 GB] inherit
    ACTIVE '/dev/VolGroup00/LogVol00' [72.47 GB] inherit
    ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit


    # vgchange -a y

    # lvscan
    ACTIVE '/dev/vg160/LogVol00' [147.00 GB] inherit
    ACTIVE '/dev/vg160/LogVol01' [1.94 GB] inherit
    ACTIVE '/dev/VolGroup00/LogVol00' [72.47 GB] inherit
    ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit


    # mount -t ext3 -o ro /dev/vg160/LogVol00 /mnt/yourmountpoint
    Ответ написан
    Комментировать