20170305

Установка DokuWiki

1. Качаем свежую версию с https://download.dokuwiki.org/
Выбираем порддерживаемые языки, мб сразу аттачим нужные плагины.

# cd ~/src 
# wget https://download.dokuwiki.org/out/dokuwiki-bzzzxxx37.tgz
# tar zxvf dokuwiki-bzzzxxx37.tgz
# ll
drwxr-xr-x 8 apache root     4096 Feb 26 10:09 dokuwiki
-rw-r--r-- 1 root   root  2435217 Feb 26 10:08 dokuwiki-bzzzxxx37.tgz

 2. Копируем файлы dokuwiki в рабочую директорию апача и выставляем владельцев.

# cp -R ~/src/dokuwiki /var/www/
# chown -R apache:root /var/www/dokuwiki/
# ll /var/www/dokuwiki/
drwxr-xr-x  2 apache root  4096 Feb 26 10:09 bin
drwxr-xr-x  2 apache root  4096 Feb 26 10:09 conf
-rw-rw-r--  1 apache root 18092 Feb 20 22:41 COPYING
drwxr-xr-x 12 apache root  4096 Feb 26 10:09 data
-rw-rw-r--  1 apache root  3674 Feb 20 22:41 doku.php
-rw-rw-r--  1 apache root 19374 Feb 20 22:41 feed.php
drwxr-xr-x  6 apache root  4096 Feb 26 10:09 inc
-rw-rw-r--  1 apache root  2097 Feb 20 22:41 index.php
-rw-rw-r--  1 apache root 20700 Feb 20 22:41 install.php
drwxr-xr-x  8 apache root  4096 Feb 26 10:09 lib
-rw-rw-r--  1 apache root   306 Feb 20 22:41 README
drwxr-xr-x  8 apache root  4096 Feb 26 10:09 vendor
-rw-rw-r--  1 apache root    33 Feb 20 22:41 VERSION

3. Донастраиваем апач.
В /etc/httpd/conf.d/vhosts.conf пишем:

<VirtualHost *:443>
        ServerName      wiki.sitename.org
        ServerAdmin     i@am.org
        DocumentRoot /var/www/dokuwiki/
    ####
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/wiki.sitename.org.crt
    SSLCertificateKeyFile /etc/httpd/ssl/wiki.sitename.org.key
    ####
    ErrorLog logs/wiki_sitename_org_error.log
    CustomLog logs/wiki_sitename_org_access.log common
    ####
</VirtualHost>


4. SSL
Тем или иным способом получаем ssl сертификат, в данном случаем самоподписанный:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/wiki.sitename.org.key -out /etc/httpd/ssl/wiki.sitename.org.crt

Перезапускаем апач.

5. Базовая настройка dokuwiki:
-- переходим на https://wiki.sitename.org/install.php
-- даем имя wiki
-- заведим суперпользователя
-- зададаем тип wiki - открытая, readonly или закрытая
-- выбираем тип лицензии

После настройки надо удалить install.php
# rm -f /var/www/dokuwiki/install.php


6. Переносим директории data, conf, bin за пределы веб-сервера.
# mkdir /var/www/dokudata
# mv /var/www/dokuwiki/data/ /var/www/dokudata/
# mv /var/www/dokuwiki/conf/ /var/www/dokudata/
# mv /var/www/dokuwiki/bin/ /var/www/dokudata/


Директория conf
В /var/www/dokuwiki/inc создаем файл preload.php сдел. содержания:

<?php
// DO NOT use a closing php tag. This causes a problem with the feeds,
// among other things. For more information on this issue, please see:w
// http://www.dokuwiki.org/devel:coding_style#php_closing_tags

define('DOKU_CONF','/var/www/dokudata/conf/');

Владельцев ставим apache:root

Директория data
В конец файла /var/www/dokudata/conf/local.php пишем след. строчку:

$conf['savedir'] = '/var/www/dokudata/data';

7. Выставляем прав.
chown -R apache:root /var/www/dokuwiki/
chmod -R 660 /var/www/dokuwiki/
find /var/www/dokuwiki/ -type d -exec chmod 770 {} \;

chown -R apache:root /var/www/dokudata/
chmod -R 660 /var/www/dokudata/
find /var/www/dokudata/ -type d -exec chmod 770 {} \;


Еще раз перезапускаем апач и можно пользоваться.

---

При написании заметки использовались материалы:
https://www.rosehosting.com/blog/install-and-run-dokuwiki-the-most-versatile-wiki-on-a-centos-7-vps/
https://www.dokuwiki.org/security
https://linuxcluster.wordpress.com/2014/07/16/installing-dokuwiki-on-centos-6/


20160509

Быстрые заметки по apache

3. Директива AllowOwerride
AllowOwerride позволяет определить какие директивы можно перезаписать в файле .htaccess.


2. Директива Indexes
Директива позволяет просматривать содержимое каталога в отсутствии индексного файла (index.html, index.php и пр.).
Как правило эту директиру отключают по соображением безопасности и при попытке просмотреть содержимое каналога сервер выдаст 403 ошибку - "error] [client 10.20.30.40] Directory index forbidden by Options directive: /var/www/noc/prj/"

В "/var/www/noc/prj/" лежат файлы которым надо предоставить доступ (см. ниже), в этом случае разрешаем индексирование и конфиг будет выглядеть след. образом:


     <Directory "/var/www/noc/prj">
     Options Indexes
     Order deny,allow
     Deny from all
     Allow from 10.20.30.40 10.20.31.40
 </Directory>

1. Директива Order
Директива позволяет ограничить доступ к каталогу или файлу по ip адресу и может быть прописана в файле .htaccess или в настройках сайта.

Директирва имет два режима работы -  "Order deny,allow" или "Order allow,deny".

deny,allow - запрещаем доступ со всех ip и разрешаем с определенных.
allow,deny - разрешаем доступ со всех ip и запрещаем с определенных.


Пример:

Разрешаем  доступ к каталогу с двух ip адресов.


     <Directory "/var/www/noc/prj">
     Order deny,allow
     Deny from all
     Allow from 10.20.30.40 10.20.31.40
 </Directory>


20160505

Быстрые заметки про Centos7

3. Установить MySQL.

Ставим репозиторий:
[root@monitor1 ~]# rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Retrieving http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-release-el7-5    ################################# [100%]

Ставим сервер:
[root@monitor1 ~]# yum install mysql-server


Запускаем и проверяем:
[root@monitor1 ~]# systemctl start mysql
[root@monitor1 ~]# systemctl status mysql
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-05-05 17:31:38 MSK; 5s ago
  Process: 1172 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 1113 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1171 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           ├─1171 /bin/sh /usr/bin/mysqld_safe
           └─1324 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysq...



2. Отключить ipv6. 
Добавляем в /etc/sysclt.conf пару строк:
"net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1"

Применяем изменения:

"[root@monitor1 network-scripts]# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1"


1. Посмотреть ip адрес.
В минимальной версии нет привычной команды ifconfig.
Посмотреть текущий ip адрес можно командой "ip addr".

Результат:

[root@monitor1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:da:8c:10 brd ff:ff:ff:ff:ff:ff
    inet 192.168.xxx.16/24 brd 192.168.13.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feda:8c10/64 scope link
       valid_lft forever preferred_lft forever

Конфиг интерфейса лежит на прежнем месте - 
 /etc/sysconfig/network-scripts/ens160

Поднять интерфейс "ifup ens160".


20160203

Быстрые заметки про LCP

1. Анализ проблемы с pppoe. 
В одном офисе перестал работать pppoe канал в интернет. 
Со стороны провайдера было видно srx, но не проходила аутентификация. 

Дамп снятый с srx.
root@srx> monitor traffic interface pp0.0 extensive count 100

Начало новой сессии, srx послылает запрос на согласование параметров (опций) подключения. 
18:03:52.248235 Out 
        ...
        -----original packet-----
        54:e0:32:00:00:01 > 00:1e:67:00:00:02, ethertype PPPoE S (0x8864), length 36: PPPoE  [ses 37713]LCP (0xc021), length 16: LCP, Conf-Request (0x01), id 70, length 16
        encoded length 14 (=Option(s) length 10)
        0x0000: c021 0146 000e 
          MRU Option (0x01), length 4: 1492
            0x0000: 05d4 
          Magic-Num Option (0x05), length 6: 0x5665bd0c
            0x0000: 5665 bd0c 


Провайдер согласился с предложенными значениям параметров. 
18:03:52.268010  In 
        ...
        -----original packet-----
        00:1e:67:00:00:02 > 54:e0:32:00:00:01, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 37713]LCP (0xc021), length 16: LCP, Conf-Ack (0x02), id 70, length 16
        encoded length 14 (=Option(s) length 10)
        0x0000: c021 0246 000e 
          MRU Option (0x01), length 4: 1492
            0x0000: 05d4 
          Magic-Num Option (0x05), length 6: 0x5665bd0c
            0x0000: 5665 bd0c 


Провайдер предложил следующую пачку опций, в т.ч. и метот аутентификации - PAP. 
18:03:54.132155  In 
        ...
        -----original packet-----
        00:1e:67:00:00:02 > 54:e0:32:00:00:01, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 37713]LCP (0xc021), length 37: LCP, Conf-Request (0x01), id 2, length 37
        encoded length 35 (=Option(s) length 31)
        0x0000: c021 0102 0023 
          PFC Option (0x07), length 2: 
          MRU Option (0x01), length 4: 1492
            0x0000: 05d4 
          Magic-Num Option (0x05), length 6: 0x2840ee38
            0x0000: 2840 ee38 
          Auth-Prot Option (0x03), length 4: PAP
            0x0000: c023 
          MRRU Option (0x11), length 4: 2048
            0x0000: 0800 
          12-Bit seq # Option (0x12), length 2: 
          End-Disc Option (0x13), length 9: MAC 00:1e:67:00:00:03
            0x0000: 0300 1e67 0278 27

SRX не согласился с предложенными провайдером значениями папаметров,  и послал список неугодных опций. 
18:03:54.132528 Out 
        ...
        -----original packet-----
        54:e0:32:00:00:01 > 00:1e:67:00:00:02, ethertype PPPoE S (0x8864), length 43: PPPoE  [ses 37713]LCP (0xc021), length 23: LCP, Conf-Reject (0x04), id 2, length 23
        encoded length 21 (=Option(s) length 17)
        0x0000: c021 0402 0015 
          PFC Option (0x07), length 2: 
          MRRU Option (0x11), length 4: 2048
            0x0000: 0800 
          12-Bit seq # Option (0x12), length 2: 
          End-Disc Option (0x13), length 9: MAC 00:1e:67:00:00:03
            0x0000: 0300 1e67 0278 27

Провайдер еще раз предлагает метот аутентификации PAP
18:03:54.134273  In 
        ...
        -----original packet-----
        00:1e:67:00:00:02 > 54:e0:32:00:00:01, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 37713]LCP (0xc021), length 20: LCP, Conf-Request (0x01), id 3, length 20
        encoded length 18 (=Option(s) length 14)
        0x0000: c021 0103 0012 
          MRU Option (0x01), length 4: 1492
            0x0000: 05d4 
          Magic-Num Option (0x05), length 6: 0x2840ee38
            0x0000: 2840 ee38 
          Auth-Prot Option (0x03), length 4: PAP
            0x0000: c023 

SRX поправляет и предлагает CHAP. 
18:03:54.134654 Out 
        ...
        -----original packet-----
        54:e0:32:00:00:01 > 00:1e:67:00:00:02, ethertype PPPoE S (0x8864), length 31: PPPoE  [ses 37713]LCP (0xc021), length 11: LCP, Conf-Nack (0x03), id 3, length 11
        encoded length 9 (=Option(s) length 5)
        0x0000: c021 0303 0009 
          Auth-Prot Option (0x03), length 5: CHAP, MD5
            0x0000: c223 05

Последние два сообщения еще раз десять ходят в обе стороны и потом согласование параметров начинается заново.  


0. LCP - Link Control Protocol
https://ru.wikipedia.org/wiki/LCP

Быстрые записки по cisco.

2. Перенумеровать правила в acl. 
router(config)#ip access-list resequence test-access 10 5
test-access - имя расширенного списка доступа, здесь может стоять номер списка.
10 - номер первого правила в списке доступа
5 - шаг нумерации

1. Посмотеть что не попадает в CEF.

#sh cef not-cef-switched
CEF Packets passed on to next switching layer
Slot  No_adj No_encap Unsupp'ted Redirect  Receive  Options   Access     Frag
RP   1552463       0           0             614954  1732554   0             0               0

---
http://admindoc.ru/1419/ip-routing-and-forwarding/
Референс:
http://www.cisco.com/c/en/us/td/docs/ios/ipswitch/command/reference/isw_book/isw_s1.html#wp1118673

20160130

Быстрые заметки по mysql

8. Сбросить рутовый пароль
Останавливаем mysql
# /etc/init.d/mysqld stop
Stopping mysqld:                                           [  OK  ]

Запускаем mysql в безопасном режиме.
# /usr/bin/mysqld_safe --skip-grant-tables --user=root &
[1] 6363
# 160206 12:54:08 mysqld_safe Logging to '/var/log/mysqld.log'.
160206 12:54:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Заходим под рутом без пароля.
# mysql -u root

Переключаемся на базу mysql.
mysql> USE mysql;

Смотрим список таблиц и содержаение таблицы user.

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
...
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> SELECT * FROM user

В таблице user так же есть пароли и настройки всех остальных пользователей.

Задаем новый пароль P@s$ = меняем значение поля Password

mysql> UPDATE user SET Password=PASSWORD('P@s$') WHERE User='root';
Функция "PASSWORD()" используется для шифрования.


Выходим и перезапускаем mysql
mysql> exit
Bye
# /etc/init.d/mysqld restart
160206 13:12:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
[1]+  Done                    /usr/bin/mysqld_safe --skip-grant-tables --user=root


7. Изменить значение поля в строке
Есть строка.
mysql> SELECT * FROM logcon_views;
+----+-------------+-------------------------------------+--------+---------+
| ID | DisplayName | Columns                             | userid | groupid |
+----+-------------+-------------------------------------+--------+---------+
|  2 | SRX-FILTER  | SRX, TIME_UTC_6, TIME_UTC, msg, 111 |   NULL |    NULL |
+----+-------------+-------------------------------------+--------+---------+

1 row in set (0.00 sec)

Хотим изменить значение поля Columns  в строке с ID равным 2. 
mysql> UPDATE logcon_views SET Columns = 'SRX, TIME_UTC_6, TIME_UTC, msg' WHERE ID = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0



6. Удалить строку из таблицы
Есть такая таблица.
mysql> select * from logcon_fields;
+--------------+------------------+--------------+
| FieldID      | FieldDefine      | FieldCaption |
+--------------+------------------+--------------+
| SRX          | SYSLOG_SRX       | SRX          |
| TIME (UTC+6) | SYSLOG_TIME_UTC6 | TIME (UTC+6) |
+--------------+------------------+--------------+
2 rows in set (0.00 sec)

Хотим удалить вторую строку. 
mysql> DELETE FROM logcon_fields WHERE FieldID ="TIME (UTC+6)";
Query OK, 1 row affected (0.00 sec)

5. Создать базу из шаблона
Есть вот такой шаблон базы для rsyslog.
]# cat /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
CREATE DATABASE rsyslog_db;
USE rsyslog_db;
CREATE TABLE SystemEvents
(
        ID int unsigned not null auto_increment primary key,
        CustomerID bigint,
#....
       SystemID int NULL
);

CREATE TABLE SystemEventsProperties
(
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
);

Что бы создать эту базу даем след. команду:
# mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

Проверяем.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti_db           |
| mysql              |
| racktables_db      |
| rsyslog_db         |
| viewvc_db          |
+--------------------+
6 rows in set (0.00 sec)

mysql> use rsyslog_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------------+
| Tables_in_rsyslog_db   |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)

6. Дать права пользователю на базу и задать пароль.
mysql> grant all privileges on rsyslog_db.* to rsyslog_user@localhost identified by 'P@Ss';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

5. Создать пользователя
mysql> create user rsyslog_user@localhost;
Query OK, 0 rows affected (0.00 sec)

4. Удалить пользователя
mysql> drop user rsyslog_user@localhost;

Query OK, 0 rows affected (0.00 sec)


3. Удалить базу
mysql> drop database rsyslog_db;

Query OK, 13 rows affected (0.00 sec)


2. Посмотреть имеющиеся базы
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti_db           |
| mysql              |
| racktables_db      |
| rsyslog_db         |
| viewvc_db          |
+--------------------+
6 rows in set (0.00 sec)


1. Заход
Заход под root на localhost, пароль надо ввести.
# mysql -u root -p
Enter password:


20160114

bash скрипты

3.Переместить файл и добавить в имя дату и время перемещения.
#!/bin/sh
mv /var/www/html/dump/dump.xml /var/www/html/dump/dump.xml.$(date +"%Y%m%d-%H%M")
cp /home/rkn/dump.xml /var/www/html/dump/dump.xml



2. Переместить логи которые заархивировал logrotate и удалить логи странше 60 дней. 
#!/bin/sh
mv /var/log/somelog/*.gz /var/log/somelog/archive/
find /var/log/somelog/archive/ -type f -mtime +60 -delete


Культурнее. 
#!/bin/bash
branch_dir=(offce1 office2)

for i in ${branch_dir[@]}; do
    mv /var/log/somelog/$i/*.gz /var/log/somelog/1archive-$i/
    find /var/log/somelog/1archive-$i/ -type f -mtime +60 -delete

 


1. Сравнить ip адрес у url без\с www
#!/bin/sh
url=$1
host $url | head -n 1
host www.$url | head -n 1