понеділок, 27 лютого 2017 р.

Debian 7 та MySQL server 5.6+

Видалити попередню версію (5.5):
sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/log/mysql
sudo rm -rf /var/log/mysql.*
sudo rm -rf /var/lib/mysql
Додати репозіторій (взяти з https://dev.mysql.com/downloads/repo/apt/)
wget http://repo.mysql.com/mysql-apt-config_0.8.2-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.2-1_all.deb
Після цих дій буде створений файл /etc/apt/sources.list.d/mysql.list з такими рядками:
deb http://repo.mysql.com/apt/debian/ wheezy mysql-5.6
deb-src http://repo.mysql.com/apt/debian/ wheezy mysql-5.6
Оновити ключі:
sudo apt-key adv --keyserver pgp.mit.edu \
    --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5

Встановити mysql 5.6:
sudo apt-get update
sudo apt-get install mysql-server-5.6

пʼятниця, 10 лютого 2017 р.

Міграція з VPS Debian 7 на VPS Debian 8

Переношу свій хостинг на новий Debian:

1. $ ssh root@vps-new
2. apt-get update
3. apt-get upgrade
4. dpkg-reconfigure locales
4.1. Locales to be generated: uk_UA.UTF-8 UTF-8 - Ok
4.2. Default locale for the system environment: uk_UA.UTF-8 - Ok
5. Ctrl+D
6. $ ssh root@vps-new
7. groupadd -r wheel
8. useradd -m -g wheel -s /bin/bash superuser
9. passwd superuser
10. додати рядок у /etc/sudoers:
       %wheel  ALL=(ALL)       NOPASSWD: ALL
11. $ sudo mcedit /etc/hostname - srv170210
12. $ sudo hostname -F /etc/hostname
13. $ wget http://vestacp.com/pub/vst-install.sh
14. $ sudo bash vst-install.sh --nginx yes --apache yes --phpfpm no --vsftpd yes --proftpd no --exim yes --dovecot yes --spamassassin yes --clamav no --named yes --iptables yes --fail2ban yes --mysql yes --postgresql no --remi no --quota no --hostname srv170210 --email superuser@email.com --force
15. Згадав, що планував змінити php на 7.х
15.1. $ dpkg --list | grep php | awk '/^ii/{ print $2}'
15.2. $ x="$(dpkg --list | grep php | awk '/^ii/{ print $2}')"
15.3. $ sudo apt-get --purge remove $x
16. Видалив php5, встановлюю php7
16.1. $ wget https://www.dotdeb.org/dotdeb.gpg
16.2. $ sudo apt-key add dotdeb.gpg
16.3. $ echo -e "deb http://packages.dotdeb.org jessie all\ndeb-src http://packages.dotdeb.org jessie all" > dotdeb.list
16.4. $ sudo cp dotdeb.list /etc/apt/sources.list.d/
16.5. $ sudo apt-get update
16.6. $ sudo apt-get install php7.0 php7.0-common php-pear
16.7. $ sudo apt-get -f install
16.8. $ sudo apt-get install libapache2-mod-php7.0
17. Перенесення бекапів
17.1. root@vps-old:# scp /home/backup/admin.2017-02-10.tar superuser@vps-new:~/home/backup/
18. Відновлення бекапів
18.1. v-restore-user admin admin.2017-02-10.tar
19. Власне, все.

четвер, 17 листопада 2016 р.

MikroTik доступ до внутрішнього сервера

Проблема Є внутрішня мережа з сервером приєднаним до інтернету через MikroTik.
Зовнішня IP-адреса: AAA.BBB.CCC.DDD.
Внутрішня мережа: 192.168.88.0/24.
ІР-адреса серверу: 192.168.88.10.
Потрібно надати доступ ззовні до певних портів внутрішнього сервера.

Рішення
1) Надаємо доступ до внутрішніх портів іззовні:

General
  • Chain: dstnat
  • Protocol: 6 (tcp)
  • Dst. Port: 80,8083
  • Int. Interface: ether1
Action
  • Action: netmap
  • To Addresses: 192.168.88.10

2) Перенаправляємо запити з внутрішньої мережі до зовнішньої адреси на внутрішнью адресу:

General
  • Chain: dstnat
  • Src. Address: 192.168.88.0/24
  • Dst. Address: AAA.BBB.CCC.DDD
  • Protocol: 6 (tcp)
  • Dst. Port: 80,8083
Action
  • Action: dst-nat
  • To Addresses: 192.168.88.10

3) Підмінюємо адресу внутрішніх запитів на адресу роутера:

General
  • Chain: srcnat
  • Src. Address: 192.168.88.0/24
  • Dst. Address: 192.168.88.10
  • Protocol: 6 (tcp)
  • Dst. Port: 80,8083
Action
  • Action: src-nat
  • To Addresses: 192.168.88.1

Доступ для SSH з внутрішньої мережі не забезпечуємо:

General
  • Chain: dstnat
  • Protocol: 6 (tcp)
  • Dst. Port:2222
  • In. Interface: ether1
Action
  • Action:netmap
  • To Addresses: 192.168.88.10
  • To Ports: 22

неділя, 21 серпня 2016 р.

При черговому оновленні з’явилось попередження:
Reading package lists... Done
W: GPG error: http://nginx.org wheezy Release: 
The following signatures were invalid: KEYEXPIRED 1471427554

Це ключ nginx-а, - його оновлення:
wget https://nginx.org/keys/nginx_signing.key -O - | sudo apt-key add -

середа, 22 червня 2016 р.

Debian7: SNMP-client

В доках написано, що достатньо встановити snmp та snmp-mibs-downloader:
% apt-get install snmp snmp-mibs-downloader
А потім йде "цікава" фраза - "If you have a SNMP server running on localhost", тобто, потрібно ще й snmp-сервер встановити:
 % apt-get install snmpd
Мінімальне налаштування /etc/snmp/snmpd.conf:
#agentAddress  udp:127.0.0.1:161
agentAddress udp:161,udp6:[::1]:161

sysLocation    Frankfurt.DE
sysContact     Me <me@example.org>
Для безпеки варто змінити користувача для запитів:
rocommunity crazypublic
У налаштуваннях клієта ще порожньо /etc/snmp/snmp.conf:
mibs :
Від імені root-а запускаємо оновлення MIB-ів:
% download-mibs
Перезапускаємо snmp-сервер:
service snmpd restar
Тепер можна переглянути відповідь snmp-агента:
# snmpwalk -v1 -cpublic localhost
iso.3.6.1.2.1.1.1.0 = STRING: "Linux maz1 2.6.32-042stab113.21 #1 SMP Wed Mar 23 11:05:25 MSK 2016 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (428) 0:00:04.28
...

вівторок, 14 червня 2016 р.

шифрування дисків по мережі

(із старих нотаток)

Azir: /sbin/checkflash

if [ ! -e /var/run/checkflash.pid ]; then
  /bin/date > /var/run/checkflash.pid
  /bin/mount -t cifs //comp/n /mnt/flash \
             -o ro,user=guest,password=""
  if [ -e /mnt/flash/.keyfile ]; then
    if [ -e /data/.no-crypt ]; then
      /sbin/cryptsetup -d /mnt/flash/.keyfile \
        luksOpen /dev/md2 dsk1
      /bin/mount /dev/mapper/dsk1 /data
      if[ -e /data/.LOCKfile ]; then
        /etc/init.d/nfs restart
      fi
    fi
  else
    if [ -e /data/.LOCKfile ]; then
      if [ -e /data/.VMS-IS-DOWN ]; then
        /bin/rm -f /data/.VMS-IS-DOWN && \
        /etc/init.d/nfs stop && \
        /bin/umount /data
      fi
    fi
  fi
  /bin/umount /mnt/flash
  /bin/rm -f /var/run/checkflash.pid
fi

APKTIKA: /sbin/checkflash

if [ ! -e /var/run/checkflash.pid ]; then
  /bin/date > /var/run/checkflash.pid
  /bin/mount -t cifs //comp/n /mnt/flash \
             -o ro,user=guest,password=""
  if [ -e /mnt/flash/.keyfile ]; then
    if [ -e /data/.no-mount ]; then
      /bin/mount AZIR:/data /data
      if [ ! -e /data/.LOCKfile ]; then
        /bin/umount /data
      else
        if [ ! -e /data/.VMS-IS-UP ]; then
          /usr/bin/vmware-cmd /data/ws2003/WS2003.vmx \
             -U root -P <password> start && \
          /bin/data > /data/.VMS-IS-IP
        fi
      fi
    fi
  else
    if [ -e /data/.VMS-IS-UP ]; then
      /etc/init.d/vmware stop && \
      /bin/date > /data/.VMS-IS-DOWN && \
      /bin/rm -f /data/.VMS-IS-UP
#    else
#      /bin/kill -9 \
#        `/bin/ps ax | /bin/grep vmware | \
#         /bin/grep -v grep | \
#         /bin/awk '{print $1}'`
#      /bin/date > /data/.VMS-IS-DOWN
    fi
  fi
  /bin/umount /mnt/flash
  /bin/rm -f /var/run/checkflash.pid
fi

понеділок, 13 червня 2016 р.

FreeBSD GELI-шифрування дисків

(зі старих нотаток)

AZIR

/etc/geli

01-keygen:
    dd if=/dev/random of=/etc/geli/azir.key bs=64 count=1

02-init:
    geli init -P -K /etc/geli/azir.key -s 4096 /dev/ar0s1g

03-attach:
    geli attach -p -k /etc/geli/azir.key /dev/ar0s1g

04-format:
    newfs -U -o2 /dev/ar0s1g.eli

05-mount:
    mount /dev/ar0s1g.eli /data


ключ шифрування лежить на комп'ютері в мережі
11-mount.key:
    mount -t smbfs -N //comp/c /mnt/key

23-attach:
    geli attach -p -k /mnt/key/azir.key /dev/ar0s1g

26-detach:
    umount /data
    geli detach /dev/ar0s1g

31-status:
    geli status


файл приєднання-від'єднання:
#!/bin/sh
if [ -e /mnt/uniten/.no-mount ]; then
  /usr/sbin/mount_smbfs -N //comp/c /mnt/key
fi

if [ -e /mnt/key.azir.key ]; then
  if [ -e /data/.no-mount ]; then
    /sbin/geli attach -p -k /mnt/key/azir.key /dev/ar0s1g && \
    /sbin/mount /dev/ar0s1g.eli /data
  fi
else
  /sbin/umount /data
  /sbin/geli detach /dev/ar0s1g
fi

/sbin/umount /mnt/key