Хостинг на Freebsd 11 mariadb103 php73 и apache24

После обновления php56 на php7 на сервере с MySQL-server, перестали работать сайты на моем хостинге(белый лист показывал браузер). Решение нашел благодаря нижеследующей статье. Обратить внимание на 3 ньюанса на которых «зависал»:

  1. Перейти с mysql на mariadb. Миграция с mysql-server на mariadb проходит как по рельсам. Базы удаленного mysql подцепились сами, ничего импортировать даже не пришлось. (этот пункт не факт, что обязательный, я делал со страху).
  2. Добавить файл php.conf в Include апача. Закоментировать httpd.conf раздел, где упоминался php5.
  3. В конце установать phpmyadmin для php73, постотреть доступные сейчас пакеты:
    pkg search phpmyadmin

и затем уже установить подходящий для своей версии php.
После установки phpmyadmin заработало.


Читать далее «Хостинг на Freebsd 11 mariadb103 php73 и apache24»

Проверка нескольких дисков chkdsk

Задача: на машине стоят 3 диска(c, d, e). Нужно добавить в расписание проверку сразу нескольких дисков на ошибки с помощью команды chkdsk с поиском поврежденных секторов и восстановлением, и выводом на экран списка файлов.

Решение: создать CMD или BAT и добавить в расписание. Содержимое:

echo Y|chkdsk c: /F /R /V && echo Y|chkdsk d: /F /R /V && echo Y|chkdsk e: /F /R /V

Читать далее «Проверка нескольких дисков chkdsk»

Мониторинг логов онлайн

Viewing live Apache logs with tail, grep and egrep

There are times you may need to monitor what’s happening on an Apache web server as is happens. This can be done from the command line using a combination of the tail command, which outputs the last part of a file, and grep or egrep which are used for regular expression pattern matching.

Viewing everything

If the log file to view is at /var/log/apache/myvirtualhost.log the first command below will show the last few lines from the file and then continue to echo to the command line as new lines are entered into the log file i.e. as additional requests are made to the web server.

tail -f /var/log/apache/myvirtualhost.log

The -f flag is what makes the tail command output additional data as it is appended to the log.

Viewing everything from a specific IP address

Tail can be combined with grep to pattern match. To filter the results to only show requests for a specific IP address (in this example 192.168.206.1) pipe the output from tail through grep like so:

tail -f /var/log/apache/myvirtualhost.log | grep 192.168.206.1

This can be useful to only show results from your own requests.

Note that the above example would also match e.g. 192.168.206.10 etc and that dots will match any character not just the period divider; if this is a concern then escape the dots with \ and put the IP address in brackets with a space after the last digit in the IP address like this:

tail -f /var/log/apache/myvirtualhost.log | grep "192\.168\.206\.1 "

Viewing everything excluding a specific IP address

Adding the -v flag to grep excludes the pattern. If you want to exclude requests from your own IP address but show everything else this can be useful:

tail -f /var/log/apache/myvirtualhost.log | grep -v "192\.168\.206\.1 "

Including particular file types only

If you only want to watch for requests for a particular file type, or even a particular file then use the same concept as grepping for the IP address. For example to show only jpg files:

tail -f /var/log/apache/myvirtualhost.log | grep .jpg

And to match a specific file, for example the robots.txt file if perhaps you are looking out for when a search engine bot hits the site:

tail -f /var/log/apache/myvirtualhost.log | grep robots.txt

Excluding particular file types

To show only webpages can be problematic especially if there is no common extension for the files being served, and some might end with / whereas other might end with .html, or there might be query strings at the end of the URL which present issues with pattern matching.

A possible solution is instead to exclude everything that’s not a webpage. Multiple exclusions can be entered by separating them with the pipe | character when using egrep instead of grep. To exclude several common file extensions and show hopefully just web pages do this:

tail -f /var/log/apache/myvirtualhost.log | egrep -v "(.gif|.jpg|.png|.swf|.ico|.txt|.xml|.css|.js|.rss)"

Note that because the regular expression contains the pipe character the expression must be contained within quotes. You can adjust the above list of extensions to suit your own conditions.

Источник: https://www.electrictoolbox.com/view-apache-logs-tail-grep-egrep/

Черно-белые списки в IPFW

Листинг файла /etc/rc.conf

firewall_enable=»YES»
firewall_script=»/etc/rc.firewall»

Для начала создадим 2 обычных текстовых файла, содержащих списки «хороших» и «плохих» ip-адресов и сетей. Назовем их badip.cfg и goodip.cfg:

# cd /etc
# touch badip.cfg
# touch goodip.cfg

Заполняем файлы ip-адресами и сетями в формате CIDR, например:

# echo "10.10.10.10/24" > badip.cfg

Затем напишем небольшой скрипт addip.sh, который будет загружать ip-адреса из файлов в таблицы ipfw:

#!/bin/sh
##################
fwcmd="/sbin/ipfw"
goodip="/usr/local/etc/webmin/ipfw/allow"
badip="/usr/local/etc/webmin/ipfw/deny"
##################
$fwcmd -f table all flush # очищаем все таблицы
##################
cat $goodip |while read line; do
$fwcmd table 1 add $line
done
##################
cat $badip |while read line; do
$fwcmd table 2 add $line
done
##################

Редактируем скрипт ipfw, добавляя в него следующие строки:

cmd="/sbin/ipfw -q add"
ipfw -f table all flush
/usr/local/etc/webmin/ipfw/addip.sh
...
$cmd 0100 allow ip from "table(1)" to me # разрешаем доступ от "хороших" хостов и сетей
$cmd 0200 deny ip from "table(2)" to me  # баним всех "плохишей"

В дальнейшем, мы можем вносить изменения в файлы и, выполняя скрипт addip.sh, динамически менять содержимое таблиц ipfw, подгружая в них новую информацию.

Содержимое таблиц можно посмотреть командой:

# ipfw table 1 list

Полностью очистить таблицу можно так:

# ipfw table 1 flush



Полезный совет:
Во FreeBSD есть хорошая утилита at, которая позволяет однократно выполнить ту или иную команду в заданное время. Таким образом, настраивая фаервол удаленно, Вы можете подстраховать себя, введя отключение фаервола через указанное время. Например, вы настроили все правила и думаете — Сейчас я включу все, а вдруг потеряю доступ? Ответ — Легко может такое произойти. Но, используя утилиту at, мы себя подстрахуем:
Синстаксис у нее простой:
# at time
Используем его, введем:
at 23:55
ipfw -q -f flush
Что бы выйти из режима, нажмите CTRL+D
Job 10 will be executed using /bin/sh
Все. Можно включать наш фаервол, через 1 минуту он будет отключен автоматически и в случае чего Вы вернете себе доступ


Источник: http://www.dwolfix.ru/tablitsy-fayervola-ipfw.html

Примеры использования таблиц файрвола IPFW.

Очень удобно, если нужно заблокировать много ip адресов.

ipfw table 10 add 192.168.1.5		#добавление в таблицу
ipfw table 10 add 192.168.1.0/24	#добавление в таблицу подсеть
ipfw table 10 list			#посмотреть что в таблице
ipfw add deny ip from table(10) to me # Все с таблицы 50 ко мне
ipfw table 10 delete 192.168.1.5	#удаляем из таблицы
ipfw table 10 flush			#чистим всю таблицу

Свое облако для хранения файлов

Превращаем свой фтп сервер в локальных диск с помощь FTP drive

Читать далее «Свое облако для хранения файлов»

Добавляем виртуальных пользователей vsftpd на FreeBSD

Генерируем пароль:

openssl passwd -1 yoursecretpassword

Результат($1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/), добавляем в файл /etc/vsftpd_login.db. Синтаксис файла:
Имя_юзера1:Пароль_юзера1
Имя_юзера2:Пароль_юзера2

Создать папку по имени пользователя в /home/Имя_юзера
права на нее выставить 755, владельцем сделать ftpuser‘а под которым работают виртуальные пользователи. Получить список всех пользователей:
cat /etc/passwd
.

Читать далее «Добавляем виртуальных пользователей vsftpd на FreeBSD»

Добавить жесткий диск в FreeBSD за 5 минут

Подробная инструкция с пояснениями

Выбор имени жесткого диска

Для начала нужно определить имя устройства, которое мы только что добавили. В этом нам поможет следующая команда:

geom disk list
01 - geom disk list

Или же вот такая команда:

camcontrol devlist
02 - camcontrol devlist

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

До установки нового устройства мы знали, что наша система установлена на ada0, значит по логике вещей наш новый диск ada1. Это вы можете определить по названию нового устройства, его серийному номеру или же объему.

Теперь проверим, имеется ли разметка на нашем новом диске

gpart show ada1
03 - gpart show ada1

Диск не имеет никакой разметки.

Удаление существующей разметки

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

gpart destroy -F ada1

Создание разметки GPT

Для начала мы должны создать разметку диска. Крайне рекомендую забыть о MBR и перейти на новую, более удобную и функциональную — GPT.

Создаем разметку GPT на диске, затем проверяем, что вышло:

gpart create -s gpt /dev/ada1
gpart show ada1
04 - gpart create gpt

Теперь у нас диск имеет разметку GPT. Из вывода можно увидеть, что абсолютно весь диск, начиная с LBA 34 и заканчивая LBA 8388541 пуст. LBA 0−33 — зарезервированы системой под таблицу разделов.

Допустим, нам необходимо создать два раздела на этом диске:

  • swap — раздел подкачки
  • data — раздел типа ufs для хранения каких либо, необходимых нам, данных.

Создание разделов (слайсов)

Если установка производится на современные жесткие диски, у которых размер сектора = 4 кб, то при создании разделов (партиций) необходимо использовать выравнивание. Можно поступить двумя способами: 1) если указываем параметры раздела в блоках, то номер блока вводить кратным 8, например: -b 40; 2) если указываем размер раздела в байтах, либо не указываем вообще начало и размер, использовать параметр -a 4k, который подгонит начало и конец раздела под секторы, размером 4 кб. Так как мы в данном примере производим тестовую установку на виртуальный жесткий диск, то этого можно не делать. В любом случае перед созданием разделов нужно точно знать размер сектора вашего накопителя, иначе это выльется жуткими тормозами в работе.

Теперь создадим разделы. Для этого существует команда gpart add с различными параметрами. Первый параметр -t — указывает на тип создаваемой файловой системы. В нашем случае будет использовано два типа: freebsd-swap и freebsd-ufs. Далее идут два необязательных параметра: -b — указывает на номер LBA, начиная с которого необходимо создать раздел. Если не указать данный параметр, то раздел будет создан автоматически с первого свободного LBA. -s — указывает на размер раздела в LBA. Размер одного блока LBA = 512 байт. Желательно указывать в количестве блоков LBA, но можно и в кило/мега/гига/… байтах (суффикс k/M/G). Если не указать данный параметр, то раздел будет создан до максимально возможного LBA в пределах пустой области. Также в качестве параметра можно указать метку раздела, например: -l swap1 — в этом случае будет создана метка /dev/gpt/swap1, по которой можно более удобно обращаться к разделу. Последним обязательным параметром идет путь к диску. В нашем случае: /dev/ada1.

Давайте создадим два раздела, а затем посмотрим, что у нас получилось. Первый раздел будем создавать без указания начального LBA, но с указанием размера 1 Гб (2097152 блоков). Второй раздел создадим без указания начального LBA и без указания размера — таким образом он будет создан на всем свободном пространстве.

gpart add -t freebsd-swap -s 2097152 /dev/ada1
gpart add -t freebsd-ufs /dev/ada1
gpart show ada1
05 - gpart add

Размер можно указывать в байтах, а не блоках. Это значительно удобней. Единственный минус — система не всегда может корректно рассчитать количество блоков. Возможны случаи, когда на диске останется пустовать некоторое количество блоков при указании размера раздела в байтах.

Создание файловой системы (форматирование)

Разделы типа swap форматировать нет необходимости. А вот разделы типа ufs перед использованием должны быть отформатированы. Правильнее сказать: на них должна быть создана файловая система.

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

newfs -U /dev/ada1p2
06 - newfs

В данном случае использовался параметр -U — он говорит о том, что в данной файловой системе должен использоваться механизм Soft Updates. Вы можете не использовать этот параметр, чтобы не включать данный механизм.

Монтирование

Следующим шагом будет монтирование разделов. Для начала, чтобы не забыть, добавим наши новые разделы в /etc/fstab. Мой файл после редактирования выглядит вот так:

07 - etc fstab

Я добавил две строки: первая монтирует swap, вторая монтирует новый раздел в каталог /mnt. На деле у вас должен быть какой-то более значимый каталог. Каталог /mnt служит для временно монтированных устройств.

Для того, чтобы перемонтировать все разделы согласно файла /etc/fstab, просто выполним команду:

mount -a
08 - mount a

Как видно из вывода, раздел /dev/ada1p2 смонтирован. Теперь посмотрим, что произошло с разделом SWAP. Выполним команду:

swapinfo
09 - swapinfo 1

Как видно, новый раздел SWAP не смонтирован. Чтобы смонтировался SWAP, необходимо его включить специальной командой:

swapon /dev/ada1p1
10 - swapon

Точно так же при помощи команды swapoff нужно отключать раздел SWAP перед тем, как произвести над ним какие-то действия.

На этом все действия по добавлению нового жесткого диска в систему завершены.

Краткая инструкция

Дано: жесткий диск /dev/ada1

Цель: удалить существующую разметку, создать новую разметку GPT, создать два раздела: подкачка и данные и подключить их к рабочей системе.

После каждого действия выполняйте gpart show, чтобы наблюдать за результатом. Последовательность действий:

  1. Удалить существующую разметку: gpart destroy -F ada1
  2. Создать новую разметку: gpart create -s gpt /dev/ada1
  3. Создать два раздела: подкачка и данные: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Создать файловую систему UFSv2 на втором разделе: newfs -U /dev/ada1p2
  5. Добавить в файл /etc/fstab строки для автомонтирования при загрузке: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Смонтировать новый раздел (команда монтирует все разделы из файла /etc/fstab): mount -a
  7. Включить в работу новый раздел swap командой: swapon /dev/ada1p1

На этом настройка завершена.

Ошибки при пропаже подключенного в FSTAB диска

При удалении диска прописанного в fstab система не загрузится нормально, перейдет в однопользовательский режим с доступом к корневому винту только на чтение. Для перевода диска с системой в обычный режим, запустить:
mount -a

Монтируем NTFS

Начиная с FreeBSD 10, Fuse — это часть ядра. Делаем так, чтобы он загружался с системными модулями, в /boot/loader.conf пишем:

fuse_load="YES"

Это сработает после перезагрузки. В текущем сеансе подгрузим этот модуль вручную

#kldload fuse

Проверить загружен ли модуль или нет можно командой

#kldstat

Если в списке будет присутствовать fuse.ko, значит всё хорошо.

#kldstat
Id Refs Address Size Name
1 3 0xffffffff80200000 1fa7c38 kernel
2 1 0xffffffff821a9000 1a7c8 fuse.ko

Далее мы должны определиться, как видит система флешку или внешний жёсткий диск:

#dmesg | grep da

Вывод будет примерно таким:

da0 at umass-sim0 bus 0 scbus1 target 0 lun 0
da0: <JetFlash Transcend 16GB 1100> s/n 00H79BHRYGX22JBN detached
(da0:umass-sim0:0:0:0): Periph destroyed
da0 at umass-sim0 bus 0 scbus1 target 0 lun 0
da0: <JetFlash Transcend 16GB 1100> Removable Direct Access SPC-4 SCSI device
da0: Serial Number 00H79BHRYGX22JBN
da0: 40.000MB/s transfers
da0: 14870MB (30453760 512 byte sectors)
da0: quirks=0x12<NO_6_BYTE,NO_RC16>
da1 at umass-sim1 bus 1 scbus2 target 0 lun 0
da1: <USB DISK 1.00> s/n 8968888304C9BB52 detached
(da1:umass-sim1:1:0:0): Periph destroyed
da1 at umass-sim1 bus 1 scbus2 target 0 lun 0
da1: <USB DISK 1.00> Removable Direct Access SCSI-2 device
da1: Serial Number 8968888306C9BB52
da1: 40.000MB/s transfers
da1: 1999MB (4093952 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>

Видим, что в системе у нас две флешки с идентификаторами da0 и da1. В нашем примере мы будем использовать только флешку da0. Монтируем её следующей командой:

ntfs-3g /dev/da0 /mnt

/dev/da0 — это наша флешка, мы это выяснили в пункте 3.
/mnt — это точка монтирования. Она может быть любой.

Если появилась ошибка, монтируем раздел флешки. После ввода

ntfs-3g /dev/da0

жмём TAB и видим разделы флешки

da0 da0s1

И монтируем этот раздел

ntfs-3g /dev/da0s1 /mnt

Переходим в каталог, куда мы примонтировали флешку и видим там её содержимое:

#cd /mnt
#ll
total 13
drwxrwxrwx 1 root wheel 0 4 нояб. 17:23 System Volume Information/
-rwxrwxrwx 1 root wheel 9 4 нояб. 18:05 xxx.xxx*
-rwxrwxrwx 1 root wheel 22 4 нояб. 18:04 Архив ZIP - WinRAR.zip*
-rwxrwxrwx 1 root wheel 9904 4 нояб. 18:04 Лист Microsoft Office Excel.xlsx*

Теперь на флешку можно записывать файлы и читать их с неё. Для того, чтобы отмонтировать флешку, сначала покинем каталог, куда она примонтирована. Например,

#cd /

А после этого, воспользуемся командой

#umount /mnt

Использование /etc/fstab - таблицы ФС для монтирования:

При  ntfs-3g обязательно использовать опцию late

воспользуемся опцией mountprog=<program> и заменим ntfs-3g на ntfs в /etc/fstab:

# Device Mountpoint FStype Options Dump Pass#
/dev/da0p1 /ExtHDD ntfs rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0

Dump - утилитой dump(8) снимать специальные архивные копии для ФС. 0 - не снимать.
Pass - порядок проверки fsck. 0 - файловую системы не нужно проверять
Если у вас произошла ошибка при монтировании, та что ниже:

noauto  - не монтировать автоматически при загрузке ОС.
теперь должно быть без ошибок:

% mount /dev/da0p1

или если использовали опцию late(опция указывает на то что раздел не будет смонтирован при mount -a, а только при mount -al ):

% mount -avl

Размонтировать(форсировано)

% umount -f /ExtHDD


Смонтируем вручную с umask=002 и UID=1001(gx1) и GID=0(wheel):

% mount_ntfs-3g -o rw,locale=ru_RU.UTF-8,umask=002,uid=1001,gid=0 \ /dev/ad4s2 /windows % cd /windows/ % mkdir -p /windows/TEST/TEST-NTFS % :> /windows/TEST/TEST-NTFS/test-ntfs % ls -ld /windows/TEST/TEST-NTFS drwxrwxr-x 1 gx1 wheel 0 13 ноя 17:42 /windows/TEST/TEST-NTFS/ % ls -l /windows/TEST/TEST-NTFS/test-ntfs -rwxrwxr-x 1 gx1 wheel 0 13 ноя 17:42 /windows/TEST/TEST-NTFS/test-ntfs*

Хм...,на директорию правильно, а на файл должно быть -rw-rw-r--.
Ну да ладно.

Локальная документация:
file:///usr/local/share/doc/ntfs-3g/README.FreeBSD

Дополнительные ссылки:
http://www.tuxera.com/community/
http://wiki.slavka.kiev.ua/index.php/Tools/mountntfs

NTFS-3G site: http://ntfs-3g.org/
FUSE site: http://fuse.sourceforge.net/
fuse4bsd site: http://fuse4bsd.creo.hu/

Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=14951.

Источники:

https://blog.denisbondar.com/post/freebsd-add-new-hdd

https://try2fixkb.ru/linux/freebsd-11-mount-ntfs-3g


WEB-камера из телефона

Программа для android телефона превратит телефон на андроиде в IP камеру. Утилита IPCamAdapter позволит увидеть данную IP камеру операционной системе Windows и программам .

Дополнительно:


Сетевой экран на телефон

NetGuard-Pro-v2.224_build_2019012001
(root не нужен)

FreeBSD, установка и настройка fail2ban

обн. 05.06.2023 Fail2Ban — простой локальный сервис, который просматривает логи на предмет попытки подоброать пароли к ssh, ftp, http-сервисам. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается, способен оповещать по email, писать лог, сбрасывать блокировку через заданное время и прочее. Читать далее «FreeBSD, установка и настройка fail2ban»