Архив рубрики: Linux

Как защититься от атаки DNS Rebinding посредством dnscrypt

Сейчас набирает популярность обсуждение (и, скорее всего, использование) эксплуатации Интернет-уязвимости, связанной с DNS      —     атаки «DNS Rebinding » .

Как же отбить такую атаку? Используем утилиту dnscrypt (ее более подробное описание можно посмотреть здесь)!

  1. Включаем в файл настроек утилиты dnscrypt-proxy.toml секцию с указанием имени файла, содержащего блокируемые IP-адреса:
    DNS Rebinding
  2. Создаем в папке утилиты dnscrypt текстовый файл ip-blacklist.txt, в который заносим блокируемые диапазоны адресов:
    DNS RebindДля частных сетей IANA выделены такие диапазоны адресов:
    10.x.x.x , 172.16.x.x – 172.31.x.x , 192.168.x.x.
  3. Перезапускаем клиент с помощью команды service-restart.bat:
    DNSCrypt
  4. Готово!

Читать далее

Шутки юмора программиста… для тех, кто понимает :-)

Things to commit just before leaving your job
(то, что нужно закоммитить в проект перед увольнением)

// Just before switching jobs:
// Add one of these.
// Preferably into the same commit where you do a large merge.
//
// This started as a tweet with a joke of "C++ pro-tip: #define private public",
// and then it quickly escalated into more and more evil suggestions.
// I've tried to capture interesting suggestions here.
//
// Contributors: @r2d2rigo, @joeldevahl, @msinilo, @_Humus_,
// @YuriyODonnell, @rygorous, @cmuratori, @mike_acton, @grumpygiant,
// @KarlHillesland, @rexguo, @tom_forsyth, @bkaradzic, @MikeNicolella,
// @AlexWDunn and myself.

// Easy keyword replacement. Too easy to detect I think!
#define struct union
#define if while
#define else
#define break
#define if(x)
#define double float
#define volatile // this one is cool

// I heard you like math
#define M_PI 3.2f    --> число Пи вернулось к истокам
#undef FLT_MIN #define FLT_MIN (-FLT_MAX)
#define floor ceil
#define isnan(x) false  --> всё есть число :-)

// Randomness based; "works" most of the time.
#define true ((__LINE__&15)!=15)
#define true ((rand()&15)!=15)   --> истина не вечна ;-)
#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))   --> случаи, они всякие бывают

// String/memory handling, probably can live undetected quite long!
#define strcpy(a,b) memmove(a,b,strlen(b)+2)
#define strcpy(a,b) (((a & 0xFF) == (b & 0xFF)) ? strcpy(a+1,b) : strcpy(a, b))
#define memcpy(d,s,sz) do { for (int i=0;i<sz;i++) { ((char*)d)[i]=((char*)s)[i]; } ((char*)s)[ rand() % sz ] ^= 0xff; } while (0)
#define sizeof(x) (sizeof(x)-1) --> байтом больше, байтом меньше, какая разница :-)

// Let's have some fun with threads & atomics.
#define pthread_mutex_lock(m) 0  --> свободу мьютексам!
#define InterlockedAdd(x,y) (*x+=y)

// What's wrong with you people?!
#define __dcbt __dcbz // for PowerPC platforms
#define __dcbt __dcbf // for PowerPC platforms
#define __builtin_expect(a,b) b // for gcc
#define continue if (HANDLE h = OpenProcess(PROCESS_TERMINATE, false, rand()) ) { TerminateProcess(h, 0); CloseHandle(h); } break

// Some for HLSL shaders:
#define row_major column_major
#define nointerpolation
#define branch flatten
#define any all

Источник — https://gist.github.com/aras-p/6224951

Как я вернул к жизни пострадавший во время грозы роутер

В одно прекрасное утро я обнаружил, что наш роутер TL-WR841N производства компании TP-Link перестал раздавать Интернет. Этому утру предшествовала ночь с грозой 😉 Провайдер вообще не видел наш роутер со своей стороны — вышел из строя порт WAN.
Осмотр внутренностей роутера не выявил заметных повреждений, зато позволил изучить его компоненты и возможности расширения (например, использование GPIO выводов), но это уже другая история 🙂
внутренности TL-WR841N
Компоненты роутера:
1 — системный чип Qualcomm Atheros AR9341 (U1)
2 — микросхема оперативной памяти ESMT M13S2561616A-5T объемом 32 МБайт (U2)
3 — микросхема флэш-памяти cFeon Q32B-104HIP объемом 4 МБайт (U3)
4 — трансформаторные модули
5 — импульсный DCDC преобразователь на микросхеме 34063 (U4)
6 — контактные площадки
7 — контактные площадки

Помочь в этом случае смогло переназначение одного из четырех портов LAN в качестве порта WAN. Далее я расскажу, как же я это сделал.
Читать далее

От винта!!! Мои опыты с авиасимулятором FlightGear

Лет шесть-семь назад я увлекался полетами в популярном в те времена авиасимуляторе «Ил-2 Штурмовик»:
Ил-2 Штурмовик
Прошли годы и я решил опять полетать. Изучив современные авиасимуляторы, я выбрал для себя реалистичный симулятор с открытым (под лицензией GNU GPL) кодом FlightGear (www.flightgear.org), доступный для Windows, Linux, Mac (объем дистрибутива около 1,6 Гбайт).

Я начал обучение на версии FlightGear 2017.2.1 (последняя версия — FlightGear 2020.3.11). Для полноценного ощущения полета я подключил джойстик.
При запуске симулятора нам предлагается по умолчанию полет на самолете Cessna 172P Skyhawk («Небесный ястреб» ):


Cessna 172 — самый массовый (!) самолет в истории авиации.
Особенности этого самолета — шасси не убираются, фиксированный шаг винта.

В полете Cessna управляется элеронами (1), рулем высоты (2) и рулем направления (3):

Итак, мы сидим в кресле левого пилота. Что же дальше?
Читать далее

Как создать туннель в Интернет для своего домашнего компьютера

Часто оказывается необходимым дать доступ из Интернета к каким-либо портам своего компьютера, расположенного за NAT провайдера. Но популярный ранее сервис ngrok стал IMHO фактически непригоден в бесплатной версии. Как же быть? Сделаем свой ngrok, разместив его на своей же VPS-ке (да, Ваш сервер в Интернете необходим, без него никак). Опишу, как это вышло у меня.

Читать далее

Как победить OOM Killer?

На Linux-системах с небольшим объемом физической оперативной памяти (например, на VPS-ках) часто  можно заметить, что какой-либо процесс внезапно прекращает работу. В чем же дело? Оказывается, он «убит», а виновник — злобный OOM Killer !

OOM Killer представляет собой компонент ядра Linux, защитный механизм, призванный решать проблемы с нехваткой физической памяти (OOM — Out of memory). При обнаружении недостатка памяти OOM Killer «убивает» наименее важный по его мнению процесс, посылая ему сигнал KILL (исключения составляют лишь init и ядерные нити (kernel threads)). Сообщение о об этом появляется в журнале /var/log/syslog в виде:

Out of memory: Kill process **** (****) score **** or sacrifice child
Killed process **** (****)

Но мнение пользователя системы не всегда совпадает с мнением «киллера» 🙂 Как же быть? Как заставить OOM Killer не трогать дорогие нашему сердцу процессы?
Читать далее