Youtube channel: https://www.youtube.com/channel/UCSsg9NLCse2XQCIRgfmJu3Q
Don't wanna be here? Send us removal request.
Text
MongoDB extorted by a kraken ransomware virus. SOLVED
Recently plenty of servers became a victim of hacker attacks. The reason was the vulnerability of non-relational database mongodb. Hackers used this security hole to erase database from the server and demanded a ransom by inserting the following code in your database:
The victim could find this record in mongodb logfile (for ubuntu-servers the path is /var/log/mongodb/mongod.log).
When you recover the database hacker will erase it again, so even if you have backups on your server this will not solve a problem.
What should I do to protect my server?
DO NOT PAY TO THIS RASCAL! He will not return your database.
1. If your database should not be reachable for external ips, you may just disable remote access to a MongoDB server. Change mongod.conf (standart path for Ubuntu is /etc/mongod.conf) and uncomment or add the rule: If you need access to your database from external ip-address go to point 2.
2. Deny all incoming traffic from external ip-adresses on port 27017 (or your custom port for MongoDB server)! For Linux systems use iptables program. Remember that rules in iptables configurations fall into chains and chains have an order. At first you should open the port for some external ip and then close it for others. If you will change an order you will disable access for all ips. Insert this rule to open port for local database Insert rules for external servers that use your database (new rule for each ip) Then deny access for everyone else Attention! Do NOT use this command BEFORE you read next! Important additional information, you can read next rule in mongodb help Change Default Policy to DROP https://docs.mongodb.com/manual/tutorial/configure-linux-iptables-firewall/ iptables -P INPUT DROP Unfortunately some people don't read all sentences. This rule you can use only after completing all iptables configuration, because this rule can close to You all connections to your server including SSH immediately. And you should not use this rule in this exactly case, because closing mongodb port are good enough. But do not worry if you lost connection to your server, just restart it from provider web interface. All iptables rules will be dropped. To check all iptables configuration use this command: To drop ALL iptables: Important! This rules will work up to server restart. So if some rule working wrong and you lost connection to your server, just restart it via your provider web interface. Use iptables-persistent if you need automatically restarting service. Installation: If rules are determined but iptables-peristent are not installed, rules will be saved automatically during installation. To start service: Rules are saved to /etc/iptables/rules.v4 and /etc/iptables/rules.v6
Using this service, you can check your server for open ports: https://www.shodan.io (Just type your server's ip in the search box)
#[email protected]#[email protected] virus#kraken mongodb drop#mongodb hacker attack#mongodb drop database#kraken ransomware virus#mongodb sequrity#mongodb protection from hackers#mongodb sequrity hole
3 notes
·
View notes
Text
[email protected] - mongodb drop - РЕШЕНИЕ
ENGLISH VERSION
Недавно интернет захлестнула волна хакерских атак. Причиной стала уязвимость нереляционной базы данных mongodb. Хакеры, пользуясь дырой в безопасности, стирали базу с сервера и требовали выкуп, вставляя в базу следующий код:
Вы можете найти эту запись в логах mongodb (в ubuntu этот лог находится по адресу /var/log/mongodb/mongod.log), если вы подверглись атаке.
После воостановления базы данных, хакер снова стирает ее, поэтому даже если на сервере были бэкапы базы, это решало проблему не надолго.
Что делать, чтобы защитить себя?
Ни в коем случае не платите! Мошенники не вернут вам данные.
1. Если ваша база не должна быть доступна по сети, просто запретите ей слушать любые ip, кроме localhost. Для этого зайдите в mongod.conf (для стандартной конфигурации ubuntu это /etc/mongod.conf) и откомментируйте или допишите правило:
Если вам требуется доступ к базе с других ip-адресов, переходите к пункту 2.
2. Запретите всем, кроме ваших серверов, включая локальный, доступ к порту, который слушает mongodb (по умолчанию это порт 27017)! Для linux-серверов это можно сделать при помощи iptables. Важно! В iptables правила выполняются одно за другим, поэтому вы сначала разрешаете к порту доступ с определенного ip и только после этого запрещаете доступ для других. Если это не соблюдать, все пакеты будут запрещены и работать не будет. для того, чтобы сервер мог работать с локальной базой
пропишите правила для внешних адресов ваших серверов, которые обращаются к базе (для каждого сервера свое правило)
запретите доступ всем остальным адресам к этому порту
Внимание, не применять до полного прочтения! Важное дополнение, в help mongodb присутствует строка Change Default Policy to DROP https://docs.mongodb.com/manual/tutorial/configure-linux-iptables-firewall/ iptables -P INPUT DROP К сожалению не все читают продолжение, что данное правило надо применять только полной настройки iptables, прописание этого правила мгновенно закроет Вам доступ до Вашего сервера. Потому как затрагивает ВСЕ протоколы, включая SSH по которомы вы настраиваете сервер. Но не беспокойтесь, это легко исправить, достаточно перезапустить сервер из панели управления сервером. При этом все правила iptables будут сброшены. В данном случае это правило вообще не требуется! Для того, чтобы проверить конфигурацию iptables используйте команду
при необходимости сбросить полностью все правила, достаточно ввести
Важно! Эти правила будут действовать до перезагрузки сервера. Поэтому, если какое-то правило сработало неверно или вы потеряли доступ к своему серверу, просто перезагрузите свою машину. Для того, чтобы правила действовали после перезагрузки используйте iptables-persistent Установка
Если правила у вас настроены, а iptables-peristent не установлен, то при установке, правила будут сохранены автоматически. Чтобы запустить сервис
Правила сохраняются в /etc/iptables/rules.v4 и /etc/iptables/rules.v6
При помощи данного сервиса вы можете проверить сервер вашего сайта на наличие доступных портов https://www.shodan.io (просто вбейте ip своего сервера в поисковую строку)
#[email protected]#kraken virus#kraken mongodb drop#kraken drop database#kraken0 hacker#mongodb hack#mongodb drop#[email protected] защита#как закрыть mongodb#как защитить mongodb от хакеров
1 note
·
View note
Text
Подсветка кода в Tumblr при помощи GitHub
Код с подсветкой синтаксиса выглядит гораздо лучше ;)
Для того, чтобы подключить скрипт gist-embed, вставьте следующие строки в секцию head темплейты вашего блога.
Откройте статью на редактирование в режиме html и вставьте следующий код для отображения фрейма с GitHub.
Для подсветки определенных строк кода добавьте параметр data-gist-highlight-line.
Чтобы скрыть номера строк добавьте data-gist-hide-line-numbers.
Если нужно скрыть футер фрейма добавьте атрибут data-gist-hide-footer
#подсветка кода в блоге#блог с подсветкой синтаксиса#подсветка синтаксиса Tumblr#как включить код с GitHub в свой блог
4 notes
·
View notes
Text
3 способа, как прижать футер к низу страницы (HTML, CSS)
Поговорим о такой нужной штуке как sticky footer. Футер страницы, который всегда находится в самом низу.
Самый старый способ решения этой проблемы дать body position:relative а футеру абсолют и приклеить его к самому низу.
Попробуем решить задачу по-другому. Дадим контенту минимальную высоту 100% за вычетом высоты футера и отрицательный маргин на высоту футера. Теперь опишем для него псевдоэлемент after, он имеет пустой контент и дисплей блок. Важно задать одинаковую высоту для псевдоэлемента и футера, чтобы магия сработала.
Используем Flexbox. Укажем боди display: flex, чтобы обозначить его как flex-контейнер и зададим направление по вертикали flex-direction: column (если указать row - дочерние элементы будут располагаться горизонтально).
У дочерних блоков есть свойство flex-grow или жадность. По дефолту оно равно 0. Это значит, что внутри контейнера блок занимает столько места, сколько ему требуется.
Зададим контенту flex-grow=1, а у футера жадность нулевая. Это значит, что контент займет все пространство родительского блока, а футер получит только немного места внизу страницы.
Полный код примера
2 notes
·
View notes
Text
Креативные бордеры (css)
Бордер для элемента без использования изображений при помощи псевдоэлементов :before и :after - это то, что мы будем делать сегодня!
Для создания такой красоты понадобится элемент div и немного стилей для него.
<div class="borderHolder dots horizontal"> <p>Веселые бордеры</p>
</div>
Общие стили документа
body {background: #efefef; color: #999999; font-family: "Helvetica Neue", Arial, sans-serif;} a {color:#333333;} a:hover {color: #777777;}
Стили для элемента с бордером
.borderHolder { position: relative; width: 600px; display: table; margin: 30px auto; overflow: hidden; background: #ffffff; font-size: 24px; line-height: 1.6; padding: 50px; box-sizing: border-box; min-height: 200px; text-align: center; }
Свойство position: relative необходимо для правильного расположения псевдоэлементов.
overflow: hidden поможет скрыть лишние символы (которые мы будем помещать в контент псевдоэлемента)
Собственно бордер
.borderHolder:before, .borderHolder:after { letter-spacing: 5px; font-size: 30px; line-height: 1; color: #efefef; position: absolute; }
.dots:before, .dots:after {content:'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••';}
.borderHolder.horizontal:before {left: 0; top: 0;} .borderHolder.horizontal:after {left: 0; bottom: 0;}
Ставим много символов в content, чтобы точно хватило на длину элемента =)
Если нужно проделать тоже самое вертикально, трансформируем псевдоэлементы.
<div class="borderHolder dots vertical"> <p>Веселые бордеры</p> </div>
.borderHolder.vertical:before {transform: rotate(90deg); left: 30px; top: 0; transform-origin: 0 0;} .borderHolder.vertical:after {right: 30px; top:0; transform-origin: 100% 0; transform: rotate(-90deg);}
Обязательно укажите точку поворота transform-origin, чтобы все были на своем месте.
Если нужен бордер и сверху и сбоку, комбинируем обе техники.
<div class="borderHolder double dots horizontal perforated"> <div class="borderHolder double dots vertical perforated"> <p>Веселые бордеры</p> </div> </div>
Поместим один элемент в другой и немного подравняем.
.dots.perforated:before, .dots.perforated:after {font-size: 60px;}
.dots.horizontal.perforated:before {top: -30px;} .dots.horizontal.perforated:after {bottom: -30px;}
.borderHolder.double {padding: 0;} .borderHolder.double .borderHolder {padding: 30px;}
Эксперименты с формой и цветом
<div class="borderHolder stars gradient rainbow horizontal"> <p>Веселые бордеры</p> </div>
.stars:before, .stars:after {content: '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★'; font-size: 20px;}
.rainbow:before, .rainbow:after {background: linear-gradient(to right, #b4ddb4 0%,#efd49e 17%,#e59ee5 33%,#00b3f9 67%,#78d3cc 83%,#a459e5 100%);}
.gradient:before, .gradient:after { -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
<div class="borderHolder gradient casino horizontal"> <p>Веселые бордеры</p> </div>
.casino:before, .casino:after { content: '♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦♠♥♣♦'; font-size: 20px; background: repeating-linear-gradient(90deg, #2d2d2d 0, #2d2d2d 15px, #c64559 15px, #c64559 28px, #2d2d2d 28px, #2d2d2d 50px, #c64559 50px, #c64559 60px, #2d2d2d 60px, #2d2d2d 66px); }
Полный код примера можно взять тут.
Заходите ко мне на канал #BlondieCode. Рада быть полезной!
2 notes
·
View notes
Text
Разгоняем backend на Node.js
Серия на YOUTUBE #BlondieCode
1. Проверьте переменную среды
Установить NODE_ENV=production можно так:
- В файле app.js добавить строку
- При запуске сервера добавить параметр
- Установить переменную среду в консоли
2. Вызывайте асинхронно все запросы к БД и ресурсоемкие функции (если это возможно)
3. Используйте cluster mode
- app.js
- pm2
4. Управляйте garbage collector
Параметры запуска app.js
Запуск GC
#программирование#уроки программирования#уроки node.js#node.js#node.js сервер#разгон сервера#медленно работает сервер node.js#cluster mode node.js#garbage collector node.js
0 notes
Text
Создание рейтинга страницы. html, css, jQuery, микроразметка для поисковиков.
(-----полный текст примера берем тут-----)
Вы наверняка встречали в выдаче гугла странички со звездами вот такого вида:
Сегодня мы разберемся как создать виджет для подсчета рейтинга страницы и получить красивые звездочки в выдаче гугла.
Для начала создадим бэкграунд со звездами. Я использовала такой файл .svg:
Первый ряд звездочек - неактивное состояние, второй ряд - состояние рейтинга (оранжевые в гугловой выдаче) и третий ряд (необязвтельный) - активная звездочка, на которую кликает пользователь.
Теперь создадим разметку для виджета. Нам понадобится холдер, в который мы положим плашку со звездами, отражающими текущий рейтинг. Ширину верхнего дива ставим стилем в процентах - это текущий рейтинг страницы (рейтинг в баллах умноженный на 20 - т.е. переведенный в проценты). Текущий рейтинг страницы 85/20=4.25.
Данные о рейтинге страницы располагаем дальше. Важно обернуть средний балл, максимальный балл и количество голосов в отдельные спаны. Это понадобится для скрипта голосования и микроразметки.
после добавления стилей
виджет будет выглядеть примерно так:
Теперь создадим интерактивную часть. Это будет отдельный слой внутри холдера с пятью звездами, на каждую из которых может нажать юзер, чтобы проголосовать. Добавим эту разметку в начало ratingHolder:
Стили для виджета:
По умолчанию скрываем его нулевой прозрачностью, затем показываем по наведению на родительский див ratingHolder. После того, как юзер проголосует присваиваем ratingHolder класс .voted (это будет делать скрипт), пока просто опишем стили.
Когда юзер проголосовал отключаем для него события мыши! Голосуем только один раз при загруженной странице:
Описываем звездочку в интерактивной части:
При наведении смещаем бэкграунд в сторону активной звезды (в моем файле желтая):
Все звезды до той, на которую навел юзер красим в зеленый (смещаем бэк для всех элементов после наведенного):
Чтобы трюк сработал меняем направление движения справа налево:
Обратите внимание, что звезды при таком раскладе тоже парсятся наоборот. Первая идет 5 баллов, последняя - 1. Не волнуйтесь. Наш юзер увидит все как надо =). Описываем позиции звезд относительно холдера:
Теперь осталось закрыть движение бэка для звезд, которые находятся в диве с классом voted (когда юзер отдал свой голос):
Должно получиться что-то вроде этого:
Теперь можно добавить еще один элемент для интерактивности. Когда юзер проголосует - выведем ему сообщение, что голос был учтен.
Вставьте этот див перед rateNumbers. И стили для него:
Настало время для работы с jQuery. Подключите его в тег head http://code.jquery.com/jquery-latest.min.js" type="text/javascript"> и напишем логику для клика по звезде:
В этом простеньком скрипте мы пересчитываем рейтинг, ставим класс voted родительскому диву и отправляем AJAX запрос на сервер (это предоставим бэкэнд-разработчику).
Осталось самое интересное. Добавим микроразметку, которую понимают поисковики:
Я не трогала текущую разметку виджета, просто добавила микроразметку в существующие элементы. Строку itemscope="" itemtype="http://schema.org/AggregateRating" добавляем в родительский див, это начало микроразметки. Затем оборачиваем рейтинг в itemprop="ratingValue", максимальное значение рейтинга itemprop="bestRating" и количество голосов в itemprop="reviewCount". Этой информации достаточно, чтобы гугл начал понимать рейтинг нашей страницы. Проверить свою разметку можно при помощи инструмента от гугл.
Должно получиться что-то похожее.
Желаю всем только 5-звездного рейтинга и топа в выдаче ;)
#html#css#jQuery#microdata#itemprop#рейтинг#звездочки в выдаче ��угла#рейтинг звездочки#рейтинг страницы css#отображение рейтинга в выдаче#микроразметка#рейтинг в выдаче google#google rating#google microdata
1 note
·
View note
Text
Soap-запрос с авторизацией Node JS
4 notes
·
View notes
Text
Свойство в JSON через переменную
1 note
·
View note