Swap? OMG!

Опечаточка-по-Фрейду: dd if=/dev/zero of=swap.omg bs=1M count=512

Macbook, иль ноутбук — вот вопрос

Ответить на него можно методом дихотомии: Macbook — это software и hardware. Нельзя, конечно, сказать, что они “несвязанные между собой”, поскольку, например, вы не найдёте на клавиатуре Macbook клавиши Page Up/Down, но будете переключаться между вкладками, нажимая Cmd-Shift-[/]. Поэтому предложения поставить на Macbook Linux, я лично, считаю приглашением на извращения, — PC-клавиатурку воткнёте — ок, я подумаю. — Нет, в USB втыкать не нужно — это лэптоп, это акцент на мобильность (а с ней, забегая вперёд, можно сказать, что всё просто прекрасно).

Так что первый итог: Macbook — это Mac OS X. Она не идеальна, особенно с точки зрения удобства использования, что бы там не утверждали “макоёбы”, но у неё один из привлекательнейших интерфейсов. Наверное, даже, самый привлекательный из нынедоступных. Будучи, при том, UNIX-like UNIX®: с BSD, dtrace, homebrew и, тем же pf-фаерволом из OpenBSD (пусть далеко не самой свежей и функциональной версии).

Теперь посмотрим на железо… и поднимем вверх большой палец:

  1. отличная батарейка
  2. отличный корпус (вес, жёсткость)
  3. отличный экран. Не, стоп, — экран, безусловно, отличный, — это если Retina™. На Macbook Air он просто неплохой. Зато батарейка там — это практически пол-дня работы. Можно, конечно, вздыхать, что Retina не воткнули в Macbook Air, но если вздох получается слишком громким, видимо вы уже в курсе, что сравнимый Macbook Pro будет не сильно толще, не сильно тяжелее, хотя, конечно, заметно батарейко-прожорливее.
  4. отличный тачпад.

Если посмотреть на железо конкурентов Apple, то, увы, конкуренцию будет обнаружить сложно. Какой-нибудь ASUS, например, пытается скопировать Macbook Air, но лажает по клавиатуре (Page Up/Down через Fn для меня уже show stoppper — я не люблю отрываться от клавиатуры на мышь, чтобы переключить вкладки браузера, или терминала). Что ещё? Lenovo? В пр-цпе, да, мне нравится Lenovo Thinkpad. Но я давно задаюсь вопросом, а какой идиот засунул клавишу PrtSc между правыми Alt и Ctrl? Да и вышеприведённый список “отличности железа”, увы, резко теряет кол-во пунктов. До одного, практически, в лучшем случае.

Стандартные настройки WordPress не очень-то безопасны

— объясню почему:

авторы WordPress не ищут простых путей, и, вместо того, чтобы убедиться, что WP сможет записать файлы в каталог wp-content/plugins (например), тщательно сверяют владельцев исполняемых .php-файлов с владельцами файлов, временно создаваемых самим WP. При несовпадении владельцев, установка плагинов и пр., будет предлагаться с использованием FTP. Применение FTP, в 21-м веке, это отдельная тема для facepalm’ов, но если вкратце — не надо. Тем более, что WP можно настроить на режим «просто пробуй записать и всё», определив константу FS_METHOD как 'direct' в wp-config.php:

define('FS_METHOD', 'direct');

Это не какое-то тайное знание, но явно не очень распространённое, и поскольку процедура установки без FTP гораздо удобнее (да и на некоторых хостингах FTP уже вовсе нет), то интернет-блоги/форумы пестрят многочисленными рекомендациями поменять владельца всех файлов WordPress на того пользователя операционной системы, под которым работает Web-сервер — обычно это может быть www-data, nginx, nobody, а то и, к пущей радости copy-paste’ров, некий пользователь, которого хостер-провайдер создал для этого конкретного сайта. По-сути, это — рекомендации облегчить взлом, — если веб-сервер выполнит какой-то код атакующего, то он сможет переписать любой файл самого WordPress’а — ибо владелец (как правило) свои файлы переписывать может. Если же пользователи владельца файлов и процесса Web-сервера разные, и права доступа разрешают Web-серверу только чтение, то развитие такая атака не получит. Вообще, защита WordPress это отдельная тема, на которую тоже можно будет дополнительно поговорить позднее.

Никогда не пользовался NETMAP

— про который в man’е сказано:

This target allows you to statically map a whole network of addresses onto another network of addresses.  It can only be used from rules in the nat table.

на самом деле даже интересно стало — а есть ли какое-нибудь отличие от того же DNAT, в случае, если мэпится один-в-один адрес(?)

OpenBSD-фаервол PF для Mac OS X заплесневел

— по кр. мере, в его текущем состоянии (Yosemite, El Capitan).

Будучи пользователем Mac OS X (“not only, but also”) довольно долгое время, я, конечно, в курсе попыток разработчиков Apple укомплектовать OS X пакетным фильтром — firewall’ом. Они сделали подход к FreeBSD’шному ipfw, но довольно быстро отказались от него, хотя, его останки всё ещё в системе (даже в El Capitan), как можно видеть, набрав в терминале

sysctl net.inet.ip.fw

Теперь, вместо него, они пытаются использовать PF, у которого и без того достаточно непростой путь развития, лучше всего описываемый термином “форк”. PF для FreeBSD и для OpenBSD — это вполне себе “форки”. Во FreeBSD 10.2 используется PF из OpenBSD 4.5. Причём, они весьма заметно разошлись. Если меня спросят, какой из вариантов я предпочёл бы, то, скорее, OpeBSD’шный, но, вообще, не могу не отметить, что он стал более сложным, чем кто-либо мог это ждать в самом начале. Синтаксис правил для NAT/routing, к примеру, очень разнится.

Так вот, возвращаясь к Mac OS X. Я не знаю номер версии OpenBSD, которую они выбрали как основу, но я могу вас заверить, что и в Yosemite, и в El Capitan она слишком устаревшая, поломанная и покрытая плесенью. Вы должны понимать, что эта версия PF содержит баги, которые в первоисточнике были устранены давным-давно, и в ней отсутствуют некоторые давно уже не новые возможности. Например:

  • Не работает  TCP modulate state, можете даже не терять время:
     % cat -n pf-modulate.conf 
         1    pass all
         2    pass out on lo0 proto tcp from any to any port 22 modulate state
     % sudo pfctl -ef pf-modulate.conf
    ...
     % nc -w 1 127.0.0.1 22        
     % nc -w 1 127.0.0.1 22
     % 
     % head -n1 pf-modulate.conf | sudo pfctl -f -
    ...
     % sudo pfctl -s r 2>/dev/null
    pass all flags S/SA keep state
     % nc -w 1 127.0.0.1 22                       
    SSH-2.0-OpenSSH_6.9
     % nc -w 1 127.0.0.1 22
    SSH-2.0-OpenSSH_6.9
     % 
    
  • Странно работает логирование пакетов. Я бы сказал, что иногда происходит залипание опции, так что не получается отключить логирование для некоторых правил, но на тек. момент у меня нет готовых примеров.
  • Совместная комбинация route-to и nat не даст вам желаемого результата. Хотя она работает той же FreeBSD 10.2 (да и возможно 10.1), правда, там есть один нюанс. 😉 Ну и, понятное дело, в свежих релизах OpenBSD с этим вообще никаких проблем, правда синтаксис там отличается кардинально.
  • (self) и всё тому подобное в скобочках — мануал утверждает, что “

    Surrounding the interface name (and optional modifiers) in parentheses changes this behaviour.

    ”, но в действительности это не работает. Если настройки интерфейсов изменились, вам придётся перезагрузить  pfctl -f набор правил.

 

UPD.(2016-08): Да, так и есть — pf в Mac OS X базируется на версии из OpenBSD 2008-о года.

InEnglish