PHP скрипт «ТОП должников АСРМ «Ника»»

Приведу пример PHP кода отображающего список должников из базы данных АСРМ «Ника»:

<?php
// данные доступа к базе данных
$db_host="192.168.1.1";
$db_user="user";
$db_password="password";
$db_name = "base";
$table_name = "abon";

// соединение с БД
mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
mysql_query("SET NAMES 'utf8'");

// запрос
$query = 'SELECT * FROM `'.$table_name.'` WHERE `depozit`<0 ORDER BY `depozit` ASC LIMIT 100;';
$sql = mysql_query($query);

// обрабатываем полученный результат
// количество
$num_rows = mysql_num_rows($sql);
echo $num_rows.' должников показано:<br />';

// выводим данные
while ($sql_data = mysql_fetch_array($sql)) {
    echo '<table cellpadding="5" cellspacing="3" border="0"><tr><td>';
    echo '<tr><td>'.$sql_data['depozit'].'</td><td>'.$sql_data['id'].'</td><td>'.$sql_data['first_name'].'</td><td>'.$sql_data['second_name'].'</td></tr>';
    echo '</tr></td></table>';
}
?>

Смотрите также:
Простое кеширование страниц

Отключение шифрования ecryptfs домашнего каталога

Понадобилось однажды отключить шифрование ecryptfs домашнего каталога, которое было когда-то настроено при установке системы.

В первую очередь сделаем копию домашнего каталога нужного пользователя:

sudo cp -rp /home/user /home/user_backup

Получим точку монтирования в каталоге:

PRIVATE=`cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private`

Отмонтируем каталог:

ecryptfs-umount-private

Установим права на каталог:

chmod 750 $PRIVATE

Удалим каталог и директории ~/.Private, ~/.ecryptfs:

rm -rf $PRIVATE ~/.Private ~/.ecryptfs

А также в сделанной копии, а то ecryptfs-utils может не удалится:

rm -rf /home/user_backup/.Private /home/user_backup/.ecryptfs

Если ecryptfs больше не будет использоваться в системе, то удалим утилиты:

sudo apt-get remove ecryptfs-utils libecryptfs0

Установим правильные права на директорию пользователя:

sudo chmod 750 /home/user
sudo chown user:user -R /home/user

Скопируем из резервной копии домашнего каталога нужные файлы.
Все.

Можно посмотреть встроенную инструкцию командой:

ecryptfs-setup-private --undo

Смотрите также:
Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Перенес однажды систему на другой диск и при подключении через SSH увидел следующие ошибки:

Could not chdir to home directory /home/user: Permission denied
-bash: /home/user/.bash_profile: Отказано в доступе

Как оказалось, причиной ошибок были неверные права на директорию /home, а именно не было прав на выполнение от группы и других пользователей.

Чтобы решить проблему сначала посмотрим какие права установлены на директорию home (должны быть drwxr-xr-x):

ls -l /
ls -l /home

И установим верные:

sudo chmod +x /home

При необходимости установим права на директорию нужного пользователя:

sudo chmod 750 /home/user
sudo chown user:user /home/user

Все, в моем случае ошибка исчезла.

Удаление эксплоита с Ubiquiti устройств

Заметил однажды развитие вируса/эксплоита в сети с устройствами Ubiquiti. Эксплоит используя уязвимость в старых версиях прошивок копировал себя на другие устройства и с них же атаковал следующие.

Под атаку в моем случае попались устройства airMAX M с прошивками ниже 5.6.2 XM/XW и включенным http/https смотрящим наружу.

Эксплоит сохраняется в /etc/persistant, создает поддиректорию .mf и файл mf.tar, а также использует rc.poststart
Пароль пользователя изменялся на случайно генерированный, но также можно было войти используя логин эксплоита moth3r и пароль fuck.3r либо fucker.

Посмотреть сгенерированный пароль можно командой ниже, однако позже он все равно менялся:

grep -E "users|sshd.auth.key" /tmp/system.cfg

Для удаления необходимо подключится к устройству через SSH и выполнить следующие команды:

rm -fr /etc/persistent/rc.* /etc/persistent/profile
cfgmtd -w; reboot -f

После этих команд, логин и пароль вернется на прежний, а также необходимо сразу обновить прошивку устройства иначе возможно повторное заражение.

Также есть официальная лечащая утилита написанная на JAVA, скачать её можно тут http://www.ubnt.com/downloads/XN-fw-internal/tools/ubnt-CureMalware.zip
Она умеет сканировать указанную подсеть, удалять эксплоит и обновлять прошивку.

Смотрите также:
Ограничение доступа к Ubiquiti по IP используя Firewall

Ограничение доступа к Ubiquiti по IP используя Firewall

Для теста возьму секторную антенну airMAX Rocket M5 в режиме бриджа и клиентскую airMAX NanoBeam M5 в режиме роутера.

Ограничим доступ сначала на клиентской.
Предположим что она подключена к секторной и имеет IP адрес 192.168.110.40 который смотрит в интернет (получила по DHCP).
IP администратора который должен иметь доступ к ней дистанционно — 10.10.10.5, остальным его необходимо заблокировать.

И так, зайдем в web интерфейс airMAX NanoBeam M5, откроем вкладку «NETWORK«, напротив «Configuration Mode:» выберем «Advanced«, после этого появится больше настроек.
Внизу где «Firewall» поставим галочку на «Enable«.

Чуть ниже добавим правило, указав:
Target: DROP
Interface: WLAN0
IP Type: TCP
Source: 10.10.10.5 (IP с какого разрешено подключаться, а также обязательно поставим галочку перед ним под знаком восклицания)
Port: оставим пустым
Destination: 192.168.110.40 (IP антенны который смотрит наружу)
Port: 22 (это порт SSH, аналогично создаются другие правила для ограничения доступа к HTTP порт — TCP 80, HTTPS — TCP 443, Telnet — TCP 23, SNMP — UDP 161, Discovery — UDP 10001)

Как видим это правило блокирует все TCP соединения к порту 22 интерфейса WLAN0 на IP 192.168.110.40, а поставленная галочка на ! перед Source: 10.10.10.5 означает что блокируется все кроме этого IP.

Жмем «Add«, потом «Change» внизу и вверху «Apply» чтобы применить изменения, после этого антенна перезапустится.

Чтобы ограничить доступ на секторной антенне которая настроена бриджом, добавим эти же правила, только где Interface: укажем ANY (ВСЕ).

Все.

После добавления правил и подключения к устройству по SSH в конфигурации можно увидеть следующее:

ebtables.status=enabled
ebtables.1.status=enabled
ebtables.1.cmd=-A FIREWALL -p 0x0800 --ip-protocol 6 --ip-src ! 10.10.10.5/32 --ip-dst 192.168.110.40/32 --ip-dport 22 -j DROP
ebtables.1.comment=
ebtables.2.status=enabled
ebtables.2.cmd=-A FIREWALL -p 0x0800 --ip-protocol 6 --ip-src ! 10.10.10.5/32 --ip-dst 192.168.110.40/32 --ip-dport 80 -j DROP
ebtables.2.comment=
ebtables.3.status=enabled
ebtables.3.cmd=-A FIREWALL -p 0x0800 --ip-protocol 6 --ip-src ! 10.10.10.5/32 --ip-dst 192.168.110.40/32 --ip-dport 443 -j DROP
ebtables.3.comment=
ebtables.4.status=enabled
ebtables.4.cmd=-A FIREWALL -p 0x0800 --ip-protocol 17 --ip-src ! 10.10.10.5/32 --ip-dst 192.168.110.40/32 --ip-dport 161 -j DROP
ebtables.4.comment=

Смотрите также:
Управление оборудованием Ubiquiti по SSH

Директории с большим количеством файлов

Получилась однажды интересная ситуация, в одной директории оказались миллионы файлов.
Причем часть из них — нужные.

При попытке посмотреть список файлов естественно получится ступор на длительное время.
Как вариант их можно посмотреть через FTP, у которого за частую стандартный лимит на количество отображаемых файлов 10 000, например FTP клиентом FileZilla удобно перемещать файлы по директориям, но этот вариант длительный, из-за того что время еще тратится на FTP запросы, нагрузка на диск при этом низкая.

Если файлы не нужные, их можно удалить командой (с запросом подтверждения на удаление):

rm -r /директория/

Или удалить все без запроса вместе с директорией:

rm -rf /директория/

В моем случае не нужными были мелкие файлы, по этому перейдя в нужную директорию, удалил командой ниже все что меньше указанного размера:

cd /директория/
find -size -2 -type f -print -delete

Перед удалением можно посмотреть количество таких файлов и общее количество, однако это тоже длительные процесс:

find -maxdepth 1 -size -2 -type f -print | wc -l
find -maxdepth 1 -type f -print | wc -l

Если вместо -2 указать 0, то будут удаляться файлы с нулевым размером, то есть пустые.

Если нужно отсортировать файлы по директориям, перейдем в директорию с файлами, создадим нужные директории, например по датам и переместим файлы по шаблону (все у которых название начинается на 2017, -maxdepth 1 указывает что не нужно искать файлы в поддиректориях):

cd /директория/
mkdir 2017
find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /директория/2017 {} \+

Результат выполнения можно записывать в файл добавив к команде > файл, например:

find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /директория/2017 {} \+ > /директория/директория/файл.log

Обновление прошивки SJCAM SJ5000x Elite

На тесте обновлю прошивку камеры SJCAM SJ5000x Elite с версии 1.4.8 на 1.4.9.

Опишу по пунктам процедуру обновления:

1) Смотрим в конце настроек камеры установленную версию прошивки.

2) Смотрим есть ли новее версия на официальном сайте и скачиваем если есть
http://support.sjcamhd.com/support/solutions/9000027614

3) На карту памяти камеры, отформатированную в формате FAT32, скопируем ранее скачанный *.bin файл прошивки. Я копировал не вынимая карты памяти, а просто через USB кабель с компьютера, после копирования нажав «безопасное извлечение» после чего отключил кабель.

4) Последним шагом будет подключение камеры к зарядному устройству, после чего автоматически начнется обновление, у меня оно длилось около минуты, световые индикаторы быстро мигали, по завершению камера включилась и на экране появился как обычно значок заряжающейся батареи.

На этом все, настройки после обновления прошивки сбросились на стандартные.