Ответы пользователя по тегу Linux
  • Пропадает пинг в тоннеле в сторону сервера Wireguard?

    @younghacker
    Как я понимаю целевой сервер не ваш.

    Пинганите одновременно
    - внешний IP WireGuard сервера
    - и IP гейта на другом конце туннеля (полагаю тот что вы пинговали)

    Сравните разницу.
    Если есть значительная разница есть (пинг снаружи быстрее и не пропадает) и сервер не ваш - выберите другой сервер. Этот просто не справляется. Хотя возможен и вариант DPI пакостей от провайдера.
    Если разницы почти нет, и пинги пропадают даже снаружи то поменяйте целевой сервер и/или провайдера.
    Или сделайте "сервер проставку" между вами и целевым сервером.
    Ответ написан
    Комментировать
  • Почему такое расхождение в занятом пространстве хоста/esxi?

    @younghacker
    Во-первых: вывод команды df показывает информацию о смонтированных файловых системах поэтому не видно что там ниже.
    Посмотрите сколько видит ядро виртуалки
    и сколько выдано для разделов. Сравнивайте размеры в байтах.
    fdisk -l

    Во-вторых: тонкие диски, это возможность "продать" больше чем есть :)
    В реальной эксплуатации польза сомнительна. И это прямой путь к тому чтобы столкнуться с проблемами когда один или несколько хостов будут остановлены потому что они запросили гипервизор выделить место, а выделять нечего.
    Как в Linux так и во всех современных Windows имеется возможность растянуть раздел в виртуалке без остановки системы поэтому я выделяю диск немного больше чем нужно в текущий момент с запасом на пару месяцев, и по мере необходимости добавляю.

    В-третьих почему бы не дробить диск виртуалки на необходимые "жёсткие" разделы (которые не занимают много места и практически не изменяются жизнедеятельнотью софта),
    /boot
    /
    и "гибкие" разделы куда предварительно нужно "подстелить" lvm. При этом желательно с другого физического (виртуального) диска без разделов (прямо LVM) потому что его затем можно растягивать и перемещать на другие физические тома без даунтайма.
    /home
    /var/lib/mysql
    /var/log/
    и так далее

    Разумеется LVM стоит подложить и под обычный рутовый раздел.
    Таким способом получается сделать настроенную виртуалку которая занимает 10-20 гигабайт и содержит только программы и настройки. А дополнительные разделы для пользовательских данных размещаются на другом диске. Таким образом вы всегда знаете что делать чтобы скопировать систему перед серьёзным апдейтом или данные.

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

    Что касается решения вашей проблемы - я бы искал способ
    • увеличить дисковое пространство на сервере (вставить - если есть слоты, или примонтировать через iscsi)
    • сжать диск виртуалки до нормальных разумных необходимых размеров ()
    Ответ написан
    Комментировать
  • Connection timed out after 15000 milliseconds?

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

    @younghacker
    Что будет если добавить -z для sed ?

    `-z'
    `--null-data'
    `--zero-terminated'
         Treat the input as a set of lines, each terminated by a zero byte
         (the ASCII `NUL' character) instead of a newline.  This option can
         be used with commands like `sort -z' and `find -print0' to process
         arbitrary file names.
    Ответ написан
    Комментировать
  • Как исправить 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 должен быть проксирован или проброшен снаружи через туннель
    Если всё ещё актуально, постучитесь в скайп - поясню/помогу.
    Ответ написан
  • Какого правила не хватает в iptables?

    @younghacker
    Если находит по имени но не находит по адресу значит дело в том что адрес и имя ресолвятся не туда или используется другой протокол. Я бы посмотрел что там с IPv4 и IPv6.
    Для вашего случая туннель я бы поднял несколько иначе:
    ssh -4 -L 9999:127.0.0.1:9999 -N root@111.111.111.111


    Утилита tcpdump поможет узнать больше о сетевом трафике с вашей стороны и со стороны сервера. Для Windows есть wireshark и wincap.

    Что касается iptables - то он содержит правила которые никогда не сработают.
    -A OUTPUT -o eth0 -j ACCEPT
    -A OUTPUT -d 111.222.333.444/32 -o eth0 -p udp -m udp --dport 1194 -j ACCEPT
    Первое сработает, второе никогда. Одно из этих правил лишнее. Скорее второе.
    Потому что если убрать первое то ssh будет заблокирован в eth0 либо должен будет бежать через tun.

    В выходных цепочках у вас определён интерфейс wlan0
    -A OUTPUT -d 111.222.333.444/32 -o wlan0 -p udp -m udp --dport 1194 -j ACCEPT

    А во входных про него забыли.
    Хотя непонятно чей это iptables. :) Клиента или сервера?
    Ответ написан
    Комментировать
  • Почему не запускается 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:
    Ответ написан
    Комментировать
  • Как разделить основной раздел в Linux?

    @younghacker
    Пожалуйста,
    # fdisk -l
    и
    # mount
    в студию!

    Вы не говорите что сервер не боевой и на нём нет важных данных.
    Иначе у вас есть копия таблицы разделов до ваших изменений.
    И что к нему есть доступ если не физический то хотя бы по KVM IPMI etc
    И что развлекались Вы загрузившись с CD.
    И индийское слово GLUSTER :) подразумевает наличие второго подобного сервера. Надеемся что сним всё в порядке. И там точно такая же копия таблицы разделов.
    Ответ написан
    Комментировать
  • Как узнать что инициирует отправку письма 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 от которого порой отмыться очень сложно и/или долго.
    Ответ написан
    Комментировать
  • В чем заключается разница между fail2ban и FIREWALL?

    @younghacker
    fail2ban актуален. Прямое его назначение блокировать хосты которые подбирают ваши пароли. Обычно атакует точно не весь интернет. А если вас атакуют со всего интернета одновременно это уже ddos и вы просто лежите пока он закончится независимо есть у вас fail2ban или нет.
    Ответ написан
    2 комментария
  • Как убрать ошибку cURL error 7: Failed to connect to 80: Connection refused?

    @younghacker
    cURL error 7: Failed to connect to foods-service.com.ua port 443: Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

    Ваш хост
    1)забанили
    2) у вас криво настроен firewall
    3) с хоста запрещены исходяшие соединения.

    Например у меня всё в порядке
    $ nmap -p80,443 foods-service.com.ua
    
    Starting Nmap 7.12 ( https://nmap.org ) at 2017-02-05 22:24 CET
    Nmap scan report for foods-service.com.ua (37.139.15.228)
    Host is up (0.036s latency).
    PORT    STATE SERVICE
    80/tcp  open  http
    443/tcp open  https
    Ответ написан
    Комментировать
  • Как научить bareos/bacula удалять использованные тома и автоматически создавать новые?

    @younghacker
    У каждого пула и задания есть параметр Volume Retention который задаёт время по истечении которого файлы попавшие в этот том бакула считает удалёнными. Если установлена опция AutoPrune = yes то bacula удалит записи из каталога (SQL). А если установлена опция ActionOnPurge = Truncate то урежет размер файла до нуля.

    Нужно для себя уяснить одну вещь: bacula/bareos заточена под ленты и воспринимает файлы как ленты. И ведёт себя соответственно, использует их повторно если не установлен параметр Maximum Volume Jobs = 1. Проблема заключается в том что у меня объём бэкапов растёт и сложно понять сколько нужно хранить. И часто случалось что какой-то том раздувался и заполнял диск. Мы ведь в большинстве своём используем диски, а не ленты. Удалять такие тома дело сложное особенно когда задание "размазано" по нескольким файлам-лентам.
    Поэтому для себя я решил так что задания будут иметь определённый формат напрямую связанный с именем сервера, типом бэкапа и датой. В этом случае очередь на удаление очевидна. Кроме этого не возникает больших проблем при восстановлении из одного лишь файла бэкапа (без SQL каталога, несколько раз приходилось это делать) так как всё задание целиком в одном файле.

    За основу можете взять скрипт отсюда исправить его под свою задачу и добавить в cron. Помните что этот скрипт для ручного запуска. Он интерактивный и удаляет файлы по датам и невзирая на то сколько файлов осталось. Другими словами если бэкап не будет создаваться этот скрипт, выполняясь, будет удалять файлы. И в конце концов удалит все бэкапы. Кстати, скрипт вместо крона можно вставить в обработчик например каталога. Поставить бэкап SQL каталога в конец очереди и в него добавить задание "RunScript after/Run After Job"
    Ответ написан
    Комментировать
  • Что означает странное DNS-имя регистратора?

    @younghacker
    Подключите регистратор к роутеру (который позволяет перехватывать трафик) и на роутере посмотрите трафик. Возможно ждать активности придётся долго.
    А имя странное это где? каким образом вы его получили?
    Домен ресолвится на cloudflare.net а за ним пусто "DNS points to prohibited IP"
    Ответ написан
    1 комментарий
  • Не подключается к 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 скриптов с разных сайтов хочет подсунуть этот ...сайт ради картинки...
    Ответ написан
    Комментировать
  • Как настроить перенаправление трафика с основного inet интерфейса на tap интерфейс?

    @younghacker
    Прежде чем заворачивать default gateway через ваш tap интерфейс сначала нужно добавить роут до вашего VPN сервера через ваш eth (или что там у вас) сетевой интерфейс и назначить ему самую маленькую метрику. После этого добавить шлюз по умолчанию через tap интерфейс и дать ему метрику побольше.

    Вот часть моей таблицы маршрутизации
    $ ip route
    default via 10.22.0.5 dev tun0
    10.22.0.1 via 10.22.0.5 dev tun0
    10.22.0.5 dev tun0  proto kernel  scope link  src 10.22.0.6
    80.232.124.241 via 172.16.35.1 dev eth0
    172.16.35.0/24 dev eth0  proto kernel  scope link  src 172.16.35.254  metric 100


    Другими словами когда у вас маршрут по умолчанию заворачивается в tap интерфейс то система не должна потерять маршрут к VPN серверу через eth интерфейс.
    Ответ написан
    Комментировать
  • Как пропустить битые сектора при копирование?

    @younghacker
    dd ?
    dd if=/dev/disk1 of=/dev/disk2 bs=4M conv=notrunc,noerror

    noerror continue after read errors

    Можно dd вызвать и из find -type f и копировать пофайлово.
    Ответ написан
    Комментировать
  • Нужно ли снова просить хостера подключать tun/tap/ppp после переустановки linux на vds?

    @younghacker
    Ошибка означает то что невозможно открыть ppp устройство. Скорее всего его нет.

    Но что это за недо-VDS? OpenVZ? OpenVZ не подходит для целей VPN. Поменяйте на нормальный VDS где Вы сам себе админ. На нормальный гипервизор KVM, XEN, Vmware, Hyper-V.
    Ответ написан
    Комментировать