Днес се самообявих за най-големия олигофрен, който познавам.
Мигрирам marvin от един VPS provider към друг и изведнъж достъпа ми до стария VPS по SSH спря. И не мога да се логна нито от офиса нито от нас. И писах едни мейли, една кореспонденция, едно чудо.
И успявам да се закача за console applet-а , но не мога да прехвърля файловете си през SSH.
ДВЕ СЕДМИЦИ. Две седмици ми отне да се сетя, че имам fail2ban, който явно не съм конфигурирал или съм конфигурирал по някакъв тъп начин и съм си blacklist-нал сам достъпа до двете IP-та.
За тези на които хипоталамуса им изтръпва при този проблем – четете долните редове. Ако сте сисадмин и знаете отговора – затворете сайта и никога повече не влизайте. All the shame…
Та – играта ви е в:
/etc/hosts.allow
/etc/hosts.deny
Влизате с нужните права в /etc/hosts.deny и вижте вашето IP дали не е там. Ако е – можете да го коментирате и да го добавите в /etc/hosts.allow.
Оказа се, че много online services of GPS location tracking са vulnerable. В общи линии трето лице може да проследи физически клиентите, които използват тези сървиси (описани са в статията). Оказа се също и че някои от провайдърите са идиоти, защото паролите им по подразбиране са 123456.
На marvin живеят няколко WordPress-а, но и с него влача няколко мои стари проекти. Един от тях скоро ще стане на 9 години. И понеже живеят на Joomla 1.5, която практически е невъзможно (варианти има, но безплатните не работят, а за платени не смятам, че искам) да се ъпгрейдне към latest. За това nginx-а ми работи с php-fpm, който търкаля две версии на PHP – 5.х и 7.х. И понеже първата е крайно архаична взех решението старите сайтове да ги разкарам напълно. Така или иначе нямам никаква полза от тях.
И вчера вдигнах още един VPS и започнах да конфигурирам наново nginx/php-fpm/etc. Оказа се, че съм позабравил част от configuration flow-а и седнах да помисля какво и как да направя. Най-накрая стигнах до решението, че вместо да си блъскам главата ще инсталирам един стар LTS на Ubuntu в който се поддържа PHP 5.x и всичко тръгна от раз.
Тенденцията ще е да разкарам всичките си клиенти (в големи кавички, таксите им са малко над цените на домейна) и да мина най-накрая на latest and greatest без да се занимавам с излишни глупости.
И така на marvin ще се освободи още малко място така, че ако някой (с предимство са студенти/ученици/преподаватели) има нужда да хостне нещо може да се възползва напълно безплатно.
Днес е малко време за четене и спокойствие. И разходка!
Не можах да прочета много, но излязохме на свеж въздух в южен парк, пихме по една Коста и се прибрахме. Носих голямата на нещо като раница, скачах и беснях като изтърван. Липсваше ми студения въздух и разходките.
Вечерта започнах да се подготвям за миграцията на marvin към php-fpm (не с manually build PHP (и при това две – едно антично и едно latest and greatest)), Никото ми представи няколко много вълнуващи идеи и конфигурации за nginx-а.
Плана е да deploy-на наново nginx, php-fpm и да пренапиша изцяло vhost-овете. Освен това сега използвам letsencrypt за … да – да генерирам сертификати за Let’s Encrypt. Ще мигрирам на certbot.
Много по-леката конфигурация на nginx, очаквам скоростта на блога и останалите сайтове да се качи значително;
Всичко, което носи PHP 7.2 и най-вече сигурност и скорост;
Сигурността трябва да се повиши (имам някои проблеми си правата и потребителите, които ще бъдат разрешени с деплоя на новия nginix);
Ще науча много за nginx, конфигурацията му и работата с vhosts;
Ще разкарам всичките php-fpm глупости – в момента търкалям PHP 5.3 (което е свръх-антично) и PHP 7.0.3. Накрая ще стане само един (колко крайно прозвуча това :D) – 7.2.
Едно от най-големите списания за Linux и Open Source спира изданията си от днес. Първото издание на списанието е от 1994 година и по техни думи е с едно от най-силните микро общества фокусирани в open source-а. Последното печатно издание е от 2011 година, но портала остава популярен и до днес.
Финалната статия на Kyle Rankin повдига няколко основни въпроса относно open source, linux и идеята, която стои зад тях – свобода, прозрачност и гъвкавост.
Когато преместих вече античния nasam.be на marvin имах един основен проблем свързан с прехода между apache2 и nginx и това беше, че nginx не поддържа .htaccess (повече можете да прочетете тук и тук). Там (почти) всичко е организирано в sites-avialable/ профила на сайта, който хоствам и грозните линкове, които Joomla генерира (от типа на https://nasam.be/index.php?option=com_content&view=article&id=183:qa-test-types&catid=53:software-testing&Itemid=167) с един ред и един рестарт станаха по-прилични (https://nasam.be/kompyutarni/software-testing/qa-test-types.html)
Промяната е в /etc/nginx/sites-avialable/project_name:
Или добавяме в основната location / {} директива точно преди затварящата къдрава скоба следния ред:
try_files $uri $uri/ /index.php?$args;
Следва рестарт на nginx, сменяне на настройките в Joomla да се използва mod_rewrite и това е :)
Искам да отбележа, че това не е специфично Joomla! или WordPress решение, а универсално. Ако имате каквато и да е система, която използва rewrite на линковете това решение би трябвало да ви свърши работа.
Anyway – днес fork-нах един проект, който използвам от извесно време с разни адаптации за marvin и реших да го публикувам. github проекта за сега носи работното име Full Web Server Backup, а основния проект можете да намерите тук.
Основните разлики между проектите са:
Основния проект има Amazon S3 sync, аз го махнах, защото използвам услугите на pCloud;
В моя има архивиране на /etc, почистени са малко неразбории.
За в бъдеще смятам да добавя:
Избор на compression level;
Изнасяне на mySQL user/pass в ~/.my.cnf
Избор на специфични директории в /etc, които да архивираме или exclude-нем;
cronjob;
Архивиране на /home директорията на определен потребител (ако имаме права за това).
Ако имате друга идея с радост ще я прегледам. marvin си пази бекъпите с този скрипт и за момента работи безпроблемно.
Както каза Владо – щом уясвимостта си има лого и име нещата са лоши :D
Long story short – при включен bluetooth човек може да придобие известен контрол над устройствата ви. Проблема е в начина на автентикация (каква е българската дума за authentication?) и по-точно начина по който публичния и частния ключ биват разменяни между двата клиента (encryption keys).
Има си и PoC (Proof of Concept) за Андроид, Windows и Linux.
Примера с Android е много кофти, защото хакера придобива пълен достъп и в демото прави снимка на себе си без изобщо да докосва телефона (тук не е ясно дали телефона е с парола и/или криптиран).
PoC с Linux е как хакват smartwatch и успешно пускат микрофона, а после рестартират часовника.
При Windows нещата са също интересни. Там атакуващия прави MiTM (Man in the middle) атака, което ще рече, че се позиционира между клиента и ресурса, който иска да достъпи (в случая сайт). Така например мога да взема HTML кода на банката в която е електронното ви банкиране и да правя $_POST към мой сървър в който ще получа потребителско име и парола.
А защо iOS не е засегнат?
Единственото нещо, което пречи тази уязвимост да бъде използвана срещу iOS устройства е, че те не позволяват т.нар. silent authentication, което от своя страна значи, че потребителя първо ще бъде попитан за съгласие дали иска някой да се свърже с него преди да изпълни злонамерения си код.
Бен Сери (Ben Seri) и Грегъри Вишнеполски (Gregory Vishnepolsky) са разписали много подробен в whitepaper по въпроса.
CVE-тата (common vulnerabilities and Exposures) са както следва:
The Bluetooth Pineapple in Android – Logical Flaw CVE-2017-0783
The Bluetooth Pineapple in Windows – Logical Flaw CVE-2017-8628
Apple Low Energy Audio Protocol RCE vulnerability – CVE-2017-14315
Как да се защитите?
Най-лесния начин преди да излязат security fixes е да си спрете блутута. А и никога не трябва да си го ставяте пуснат ако не го използвате.
Uptime Robot – полезен тул за следенето на uptime-ма на даден сайт. Може да следи и по ping, port и разбира се http(s). Ограничението е цели 50 job-а, като честотата на проверка е през 5 минути;
Apache Guacamole – Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.
Има лесен начин да намерим кой сървис е отворил порт на нашата машина.
Стъпките са следните:
0. Ако нямате nmap инсталиран:
nedko@marvin: sudo aptitude install nmap
nedko@marvin:/home/nedko# nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-08-16 23:41 EEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 995 closed ports
PORT STATE SERVICE 80/tcp open http
443/tcp open https
1022/tcp open exp2
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
lsof -i :3306
nedko@marvin:/etc/mysql/conf.d# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 30190 mysql 25u IPv4 9345387 0t0 TCP localhost:mysql (LISTEN)
2. ps -fp 4486
nedko@marvin:/etc/mysql/conf.d# ps -fp 30190
UID PID PPID C STIME TTY TIME CMD
mysql 30190 1 0 00:26 ? 00:00:01 /usr/sbin/mysqld