MYCSS

2018-04-19

FreeNAS, ZFS, User Quota, Samba

Task: Apply ZFS user quota to Smaba

Source:

zpool with samba user home folders: poolz2/samba/users

Allow request about quota for everyone:
zfs allow everyone userquota,userused poolz2/samba/users

Set usrer quota 120G for domain user : DOMAIN\username
zfs set userquota@"DOMAIN\username"=120G poolz2/samba/users

Tune SAMBA,  /usr/local/etc/smb4.conf:
get quota command = /mnt/poolz2/home/scripts/quota_get.sh %U %D

Reload SAMBA:
killall -HUP smbd 
Or change via GUI of FreeNAS
Example of GUI of SMB Services (FreeNAS11.2), add quota.

Soulution:

Script for get quota data: /mnt/poolz2/home/scripts/quota_get.sh
#!/bin/sh
rtype=$4
if [ "${rtype}" == -1 ]; then
 exit
fi
username=$1
if [ ! -z  "$username" ]; then
  domainname=$2
  requestpath=${PWD}
  DATASETNAME=`/bin/df -l ${requestpath} | /usr/bin/tail -n 1 | /usr/bin/awk '{ print $1 };'`
  info=`/sbin/zfs userspace -Hp ${DATASETNAME}  | /usr/bin/grep -i ${domainname}'\\\\'${username}`
  usedbytes=`echo ${info}| /usr/bin/awk '{ printf "%.f", $4/1024 };'`;
  quotabytes=`echo ${info}| /usr/bin/awk '{ if ( $5 == "none" ) { print "0"} else { printf "%.f", $5/1024 }  };'`;
  if [ "$quotabytes" != 0 ]; then
   echo 2 $usedbytes $quotabytes $quotabytes $usedbytes $quotabytes $quotabytes
  fi
fi
exit

Example of GUI of Sharing SMB (FreeNAS11.2).
Easy script for define default quota for all users. I plan run it just by cron.
#!/bin/sh

USERS_DATASET=poolz2/samba/users
DOMAINNAME=SOMEDOMAIN
DEFAULT_QUOTA=80G

/sbin/zfs allow everyone userquota,userused ${USERS_DATASET}
mountpoint=`/bin/df  -l ${USERS_DATASET} | /usr/bin/tail -n 1 | /usr/bin/awk '{ print $6 };'`
for file in ${mountpoint}/*; do
    USERNAME=$(/usr/bin/basename "$file")
    LOGON=${DOMAINNAME}\\${USERNAME}
    QUOTA=`/sbin/zfs get -H "userquota@${LOGON}" ${USERS_DATASET} | /usr/bin/awk '{ print $3 };'`
    #echo ${LOGON} : ${QUOTA}
    if [ "$QUOTA" == "none" ];then
        /sbin/zfs set "userquota@${LOGON}=${DEFAULT_QUOTA}" ${USERS_DATASET}
        #echo Was set default quota ${DEFAULT_QUOTA} for ${LOGON}
    fi
done

#/sbin/zfs userspace ${USERS_DATASET}

More:

2018-03-15

Нотатка для себе. FreeBSD, UPS, NUT.

Є сервер FreeBSD 11.1, ДБЖ (UPS) Cyber Power Systems CP1500AVRLCD.
Програма NUT  має підтримку даного пристою.

Підтримка програмою NUT ДБЖ  "Cyber Power Systems CP1500AVRLCD"
Пошук підключеного пристрою через USB.
#dmesg | grep usbus
ugen0.2: <CPS CP 1500C> at usbus0

2018-03-13

FreeBSD шифрування файлової системи ZFS з використанням віддалених ключів



Нотатка для себе.
Необхідно створити систему котра використовує шифрування дисків, zfs кореневу файлову систему, і для шифрування використовуються ключі що зберігаються на віддаленому сервері.

Моя система має 3 диски, один диск (Flash/SSD) завантажувальний з файловою системою ZFS (ZROOT). Та 2 диски для шифрованого zfs пулу котрі  повинні замінити собою перший диск для запису

На перший диск встановлено  було операційну систему FreeBSD 11.1 майстром встановлення з вибором ZFS Boot.

2018-01-18

pfSense install FreeBSD packages

Re: 2.3 - How to install other FreeBSD packages / repositories?
« Reply #7 on: August 01, 2016, 07:20:04 am »
This does work in pfSense 2.3.2:
1. Make sure "enabled" key is set to "yes" in /etc/pkg/FreeBSD.conf
2. Change "enabled: no" to "enabled: yes" in /usr/local/etc/pkg/repos/FreeBSD.conf
3. Change "enabled: no" to "enabled: yes" in /usr/local/etc/pkg/repos/pfSense.conf for FreeBSD repo
4. Now you're able to install packages from FreeBSD official repo

https://forum.pfsense.org/index.php?topic=109827.msg644067#msg644067

2017-12-21

Нотатка. FreeNAS. Jails та VLAN

Використовуючи у FreeNAS ізольовані Jails для ізольованих служб, на-кшталт ownCloud, з'ясував що потрібно обов'язково визначати інтерфейс у налаштуванні відповідного jail  якщо мережевий інтерфейс є з VLAN і використовується VIMAGE .
файлі iface
Робити це треба не через графічний інтерфейс, а у файлі конфігурації відповідного jail, у файлі iface у теці /mnt/{ZFSPOOL}/jails/.{NAME_JAIL}.meta.
Після цього в графічному інтерфейсі можна побачити зміну значення NIC.
Advanced GUI jail
Після перезавантаження у мене почали іти пакети з jail через VLAN інтерфейс.

2017-11-26

Нотатка. Віддалене керування живленням сервера через IPMI.

Стався випадок коли локальний сервер шлюз маршрутизатор вимкнувся. І що робити?
Віддалений доступ при цьому заблокований.
Тому на всяк такий випадок, до з'ясування причини вимкнення, налаштував віддалений моніторинг стану живлення через  IPMI, і у випадку якщо він вимкнутий запускаю команду ввімкнення.
Для керування використовую  внутрішній сервер з freebsd, встановлюю пакунок ipmitool, і створюю запит:
ipmitool -H 192.168.1.1 -U admin -P admin chassis power status
Chassis Power is on

Тепер формую скрип котрий за розкладом cron кожні 15 хв. буде перевіряти чи ввімкнений сервер.
#!/bin/sh
>state=$(/usr/local/bin/ipmitool -H 192.168.1.1 -U admin -P admin chassis power status| grep 'is off')
if [ ! -z "$state" ]
then
 /usr/local/bin/ipmitool -H 192.168.1.1 -U admin -P admin chassis power on | /usr/bin/logger -p user.notice -t "Power control [GW was off]".
fi

Якщо потрібне керування з операційної системи Windwos то потрібен пакунок з проекту http://ipmiutil.sourceforge.net, завантажую ipmiutil-3.0.7-win64.zip.

Статус:
ipmiutil.exe reset -n  -N 192.168.1.1 -U admin -P admin
Ввімкнення:
ipmiutil.exe reset -u  -N 192.168.1.1 -U admin -P admin
Для безпеки рекомендую на сторінці керуванням BMC сервера додати спеціального користувача:

Користувачі iKVM
Спеціальний користувач для керування живленням
І використовувати цього користувача у запитах замість admin.

Якщо після оновлленя Java у Вас не має поступу до ip-KVM

Час іде,  світ розвивається, і захищається. Тому Java принципово і глобально вирішило заборонити використання не надійні методи з'єднання та шифрування.
Так  як більшість IP-KVM використовують для підключення Java клієнти, а програмне забезпечення у IP-KVM не своєчасно оновлене, то у підключенні до сервера IP-KVM буде відмовлено за причини використання застарілого методу MDwithRSA.
Про відмовлення у з'єднанні
 Але якщо сильно треба, то за матеріалами Zhaojun's Blog,  то тимчасово можна відмінити це обмеження, відредагувавши файл "C:\Program Files (x86)\Java\jre1.8.0_151\lib\security\java.security" для версії Java 8 update 151.
Знайшовши файл рядок: jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

Значення у файлі конфігурації
 І змінити можна закоментувати цей рядок, або придбати MD5.
Змінення файлу конфігурації

Інші посилання : Если после обновления Java не работает ip-KVM

2017-11-25

Нотатка. pfsense, перевірка таблиці pf коли пакунок pfBlockerNG не оновився

Використовуючи pfsense, я налаштував пакунок pfBlockerNG, для обмеження підключень до певних сервісів тільки з відомих країн.
Одного разу виявив що підключення стали заблоковані. Після аналізу з'ясував, що сервер перезавантажився і доступ не було надано так як таблиці доступу (IP_COUNTRY_ALLOWED_NG) були пусті, а оновлення у мене налаштовано один раз на добу.
Використання таблиці IP_COUNTRY_ALLOWED_NG у правилах 

Тому щоб подібне не повторювалося додав скрипт (check_ng_tables.sh) котрий перевіряє кількість записів у таблиці, в  випадку коли їх кількість менше чи критичне значення я форсую оновлення таблиць pfBlockerNG, і сповіщаю про це електронною поштою адміністратора.

/root/scripts/check_ng_tables.sh
#!/bin/sh

cntlines=$(/sbin/pfctl -t IP_COUNTRY_ALLOWED_NG -T show | wc -l)
if [ $cntlines -le 100 ]
then
    echo "count of pf table IP_COUNTRY_ALLOWED_NG is ($cntlines) less than 100, try reload pfblockerng.php"|/usr/local/bin/php /usr/local/bin/mail.php -s'[gw] IP_COUNTRY_ALLOWED_NG' postmaster@yourdomain.com
    /usr/local/bin/php /usr/local/www/pfblockerng/pfblockerng.php cron >> /var/log/pfblockerng/pfblockerng.log 2>&1
fi

Потім додав перевірку за розкладом кожні 5 хвилин.
Додав перевірку таблиці за розкладом cron

2017-11-22

Нотатка. pfsense. DNS views для різних локальних мереж

Так сталося що потрібно було для різних мереж видавати різну адресу для одного і того запису у DNS сервері.
Знаючи що у BIND це можливо робити за допомогою видів, почав шукати таку можливість у pfsense.
pfsense використовує один з варіантів як DNS resolver що є програмою unbound. Читаючи документацію до unbound, знайшов розділ  View Options.
В інтерфейсі GUI pfsense DNS resolver, такої функції не має, але є можливість додати свої значення до unbound.conf (Show Custom Options).
Так додавши такі налаштування:
server:
access-control-view: 192.168.9.100/32 testview
view:
name: "testview"
local-zone: "local.lan" static
local-data: "test.local.lan. 90 IN A 10.10.10.10"
local-zone: "100.9.168.192.in-addr.arpa" typetransparent 
Ми для клієнта локальної мережі 192.168.9.100 створили testview, і значенню імені "test.local.lan" перевизначили адресу на 10.10.10.10.
додавання View Options у DNS resolver pfsense
 Подяка за форуму за те що вказали необхідність додати рядок "server:" на початку, без нього видавало помилку конфігураційного файлу.
Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready