четверг, 8 августа 2013 г.

Установка SSL сертификата на Fortigate 200B

Через Web админку импортируем сертификаты.

Certificates - CA Certificates - Import :
PositiveSSLCA2.crt and AddTrustExternalCARoot.crt

Local Certificates - Import - Type Certificate:
Certificate File = servername.crt
Key file = servername.key

VPN - SSL - Config - Server Certificate - servername(установленный ssl)

Через CLI Fortigate применяем SSL для админки Fortigate:

config system global
  set admin-server-cert
end

Включем сильную шифрацию (AES, 3DES,SHA1)

config sys global
  set strong-crypto enable
end

http://stuff.purdon.ca/?page_id=171

вторник, 6 августа 2013 г.

Исключение url из https в Nginx

При принудительном использовании https, может понадобиться исключить конкретный url из переадресации с 80 на 443.

Пример исключения url'ов test1 и test2:

server { 
  listen 80;

  if ($request_uri !~* (/test1|/test2) )
  {
    return 301 https://site.ru$request_uri;
  }
  ...
  location /test1 {
  ...
  }
}


server {
  listen 443 ssl;

  if ($request_uri ~* (/test1|/test2) )
  {
    return 301 https://site.ru$request_uri;
  }
  ...
}

четверг, 25 июля 2013 г.

Настраиваем TP-Link TL-WN725N в Raspberry Pi

Устанавливаем беспроводную сетевую карту TP-Link TL-WN725N version 2 в Raspberry Pi

Скачиваем драйвер и разархивируем его
wget --no-check-certificate https://www.dropbox.com/s/1m35e3ovs8l7uth/8188eu-20130209.tar.gz
tar -zxvf 8188eu-20130209.tar.gz

# Устанавливаем модуль
sudo install -p -m 644 8188eu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
sudo depmod -a
sudo modprobe 8188eu

# Настраиваем интерфейс
 vi /etc/network/interfaces

auto lo
iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
        wpa-ssid "your-ssid"
        wpa-psk "your-password"
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

# Настраиваем интерфейс (вариант 2)
vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
       ssid="your-ssid"
       psk="your-password"
       proto=RSN
       key_mgmt=WPA-PSK
       pairwise=CCMP
       auth_alg=OPEN
}

среда, 24 июля 2013 г.

Установка xbmc с Airplay на Raspberry Pi (Raspbian)

# Добавляем репозиторий из которого будем устанавливать xbmc, чтобы не компилировать его 12 часов на raspberry

# Создаем файл /etc/apt/sources.list.d/mene.list с строчкой
deb http://archive.mene.za.net/raspbian wheezy contrib

# Добавляем ключ репозитория
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
sudo apt-get update

# Устанавливаем Xbmc
sudo apt-get install xbmc

# Редактируем файл /etc/udev/rules.d/99-input.rules
SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"

# Редактируем конфиг xbmc, /etc/default/xbmc
ENABLED=1
USER=pi

# Устанавливаем Bonjour, чтобы найти airplay сервис в сети
sudo apt-get install avahi-daemon
sudo /etc/init.d/avahi-daemon start

# Запускаем xbmc
sudo /etc/init.d/xbmc start

# Включаем сервис Airplay в Xbmc
Система - Настройки - Службы - AirPlay - Разрешить XBMC получать содержимое AirPlay 

понедельник, 22 июля 2013 г.

Установка rabbitmq c модулем php amqp

#  Устанавливаем autoreconf со всеми зависимостями, необходим для сборки rabbitmq-c
apt-get install dh-autoreconf

# Скачиваем стабильный rabbitmq-c (с новыми версиями amqp может не работать)
wget https://github.com/alanxz/rabbitmq-c/archive/rabbitmq-c-v0.3.0.zip
unzip rabbitmq-c-v0.3.0.zip

# Собираем rabbitmq-c
autoreconf -i
./configure
make
make install

# Устанавливаем модуль amqp для php
pecl install amqp-1.0.5

# Подключаем модуль в php
vim /etc/php5/conf.d/amqp.ini
extension=amqp.so

php -m | grep amqp

# Добавляем репозиторий с rabbitmq
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
apt-key add rabbitmq-signing-key-public.asc
apt-get update

# Устанавливаем и запускаем rabbitmq
apt-get install rabbitmq-server -y
service rabbitmq-server start

# Добавляем пользователя в rabbitmq
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user $USER $PASS
rabbitmqctl set_user_tags $USER administrator
rabbitmqctl set_permissions -p / $USER ".*" ".*" ".*"
rabbitmqctl delete_user guest

service rabbitmq-server restart

вторник, 25 июня 2013 г.

Создаем загрузочную флешку с Linux или Vmware Esxi под macos

Через Дисковую утилиту, создаем MSDOS(FAT) раздел на флешке (схема раздела: Основная загрузочная запись)

В консоле, находим куда примонтирован наша флешка и отключаем ее
diskutil list
diskutil unmountDisk /dev/disk2

# Делаем активным первый раздел на флешке
sudo fdisk -e /dev/SOMEdisk2
print
f 1
write
print
exit

diskutil unmountDisk /dev/disk2

# Для быстроты заливания образа через утилиту dd используем /dev/rdisk1 вместо /dev/disk1 (внимание на параметр bs=1m)
пример: sudo dd bs=1m if=2013-05-25-wheezy-raspbian.img of=/dev/rdisk1
наблюдаем за процессом из другой консоли: sudo killall -INFO dd

# Или скачиваем\устанавливаем UnetBootin и через него записываем образ
http://unetbootin.sourceforge.net
Через UnetBootin записываем на флешку Linux, Vmware esxi или другой диструбутив.

# Отключаем готовый диск
diskutil eject /dev/rdisk1

вторник, 18 июня 2013 г.

X-Forwarded-For при использовании Nginx + Apache (+LogFormat)

При использовании связки Nginx(proxy)+Apache, в Apache всесто реального IP клиента передается IP nginx. Что мешает чтению логов и написанию нужного кода.

В виртуал хосте nginx, добавляем proxy_set_header
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://192.168.100.102:8882;
}

На сервере с Apache2 устанавливаем mod-rpaf
aptitude install libapache2-mod-rpaf

# vim /etc/apache2/mods-available/rpaf.conf
RPAFenable On # включаем механизм
RPAFsethostname On # включаем передачу заголовка X-Host
RPAFproxy_ips 127.0.0.1 # указываем адрес "front-end"

Меняем формат логов
# vim /etc/apache2/apache2.conf
LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" common

Осталось рестартануть apache
/etc/init.d/apache2 restart

четверг, 13 июня 2013 г.

Добавляем PositiveSSL в nginx

Генереруем ключ и сразу удаляем из него пароль(чтобы не вводить его при перезапуске сервера):
openssl genrsa -des3 -out server-tmp.key 1024
openssl rsa -in server-tmp.key -out server.key

Создаём запрос для подписания (certificate signing request, CSR):
openssl req -new -key server.key -out server.csr

Отправляем server.csr в Commodo (я использую https://www.gogetssl.com/ )

Получаем от них письмо в котором содержится:
- sitename.crt
- AddTrustExternalCARoot.crt
- PositiveSSLCA2.crt

Сохраняем sitename.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt и в один файл.
cat  sitename.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt >> /etc/nginx/ssl/server.crt

Рядом сохраняем server.key

В nginx добавляем следующие строки:
listen 443 ssl;
ssl_certificate     /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;

Перечитываем конфиг в nginx
/etc/init.d/nginx reload

Можно добавить перенаправление с http на https
server {
    listen 80;
    server_name  server.ru;
    return 301 https://server.ru$request_uri;
}

P.S. Создание самозаверенного сертификата
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt

понедельник, 10 июня 2013 г.

Копирование структуры mysql на другой сервер

Заходим на http://schemasync.org/ и скачиваем Schema Sync.
Устанавливаем его:

apt-get install python-mysqldb
tar xvzf SchemaSync-0.9.2.tar.gz
cd SchemaSync-0.9.2
sudo python setup.py install

Получаем структуру, создаем patch.sql и revert.sql(чтобы восстановить базу, если патч будет плохим):
schemasync mysql://user:pass@dev-host:3306/dev_db mysql://user:pass@prod-host:3306/production_db

Далее необходимо перенести и применить патч на продакшен сервере:

mysql -uroot -p
use production_db;
source dev_db.patch.sql;


четверг, 6 июня 2013 г.

Обновление Ubuntu 12.04 до 12.10, 13.04, 13.10

LTS релизы, такие как 12.04, по-умолчанию могут обновляться только из LTS репозиториев.
Включить возможность обновления до более свежей версии, например 12.10, очень просто.

vim /etc/update-manager/release-upgrades

меняем Prompt=lts
на Prompt=normal

Для обновления выполняем команду:
do-release-upgrade -d

среда, 29 мая 2013 г.

Создаем свой локальный репозитарий на ubuntu

# Создаем локальный репозитарий, на примере zabbix 2.0
aptitude install debmirror

# смотрим исходный адрес в /etc/apt/source.list
deb http://repo.zabbix.com/zabbix/2.0/ubuntu lucid main

# скачиваем пакеты
debmirror --nosource -m --passive --host=repo.zabbix.com --root=zabbix/2.0/ubuntu --method=http --progress --dist=lucid --ignore-release-gpg --section=main --arch=i386,amd64 ubuntu


# настраиваем nginx для раздачи репозитария
vim /etc/nginx/sites-enabled/repo

server {
listen 192.168.100.201:80;
server_name zabbix.local.repo;
root /home/zabbix-repo;
allow 192.168.0.0/24;
deny all;
}

# Правим hosts если нету named
vim /etc/hosts
192.168.0.1 zabbix.local.repo

# Меняем source на локальный
vim /etc/apt/source.list

deb http://zabbix.iconto.repo lucid main

# Пробуем получить содержимое локального репозитария
apt update

# если требуется gpg ключ, то копируем его из пакета
wget http://repo.zabbix.com/zabbix/2.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.0-1lucid_all.deb
и копируем в /etc/apt/trusted.gpg.d/


http://wiki.debian.org/ru/CreateLocalRepo

P.S. Боремся с нехваткой произвольных байт при генерации gpg
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy

sudo apt-get install rng-tools
sudo rngd -r /dev/urandom

Добавление русской локали в ubuntu (locale RU.UTF-8)

# Просмотр доступных локалей
less /usr/share/i18n/SUPPORTED

# Добавление локали
locale-gen ru_RU.UTF-8 UTF-8
dpkg-reconfigure locales

# Удаление локали
localedef --delete-from-archive ru_RU.iso88595
locale-gen --purge ru_RU.ISO-8859-5
locale -a

# Осталось выставить локаль в текущей консоли
export LC_ALL= "ru_RU.UTF-8"
export LANG="ru_RU.UTF-8"

вторник, 28 мая 2013 г.

Выполняем требования PCI-DSS по политике паролей (ubuntu)

# Устанавливаем нужную библиотеку
apt-get install libpam-cracklib

# Проверка на стойкость паролей
vim /etc/pam.d/common-password
password        required                        pam_cracklib.so retry=3 minlen=7 dcredit=-1 lcredit=-1 ocredit=0 ucredit=-1
password        sufficient                      pam_unix.so remember=4 sha512 shadow nullok try_first_pass use_authtok
password        requisite                       pam_deny.so
password        required                        pam_permit.so

retry=3     три подхода для установки нового пароля
minlen=7   требуется как минимум семь символов
dcredit=-1  как минимум одна цифра
lcredit=-1   как минимум один символ в нижнем регистре
ocredit=-1  как минимум один неалфавитный символ
ucredit=-1  как минимум один символ в верхнем регистре

# Блокировка пользователя после 3 неудачных попыток ввода пароля на 1800 сек
/etc/pam.d/common-auth
auth    required    pam_tally2.so onerr=fail deny=6 unlock_time=1800
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

/etc/pam.d/common-account
account required pam_tally2.so
account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so
account requisite                       pam_deny.so
account required                        pam_permit.so

просмотр заблокированных
pam_tally2
faillog

разблокировать
pam_tally2 -u rfedorov -r

# Уменьшаем срок действия пароля
vim /etc/login.defs
ENCRYPT_METHOD SHA512
PASS_MAX_DAYS 90
PASS_WARN_AGE 14
LOGIN_RETRIES 6
LOGIN_TIMEOUT 1800

# Настраиваем сетевые параметры
vim /etc/sysctl.conf

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward=0

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.defualt.send_redirects = 0

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

net.ipv4.icmp_echo_ignore_broadcasts = 1

вторник, 21 мая 2013 г.

Создание SSL сертификата для сайта

Создаем самоподписанный сертификат.

Генереруем приватный ключ:
openssl genrsa -out server.key 2048

Создаём запрос для подписания (certificate signing request, CSR):
openssl req -new -key server.key -out server.csr

Создаем сертификат (публичный) при помощи созданного ранее ключа и запроса:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

--

Тоже самое в но в одну строку: 

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout iconto.key -out iconto.crt

--

При наличии своего CA подписываем его своим CA.
Создать его можно пользуясь инструкции выше (как обычный самоподписанный сертификат).

Создаем key и csr, подписываем его на своем CA:
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt


P.S:
Просматриваем информацию внутри файлов:
openssl rsa -noout -text -in server.key
openssl req -noout -text -in server.csr
openssl x509 -noout -text -in ca.crt

Типы других файлов:
crl - файл отозванного сертификата (Certificate Revocation List)
p12 - сертификат p12, с private-ключом (Personal Information Exchange File)

пятница, 17 мая 2013 г.

Настройка PPTP в Mikrotik (proxy-arp, gre,1723)

# Включаем ARP-proxy чтобы можно было пинговать машины внутри сети
/interface ethernet
set Local-Port-Name arp=proxy-arp

# Разрешаем локальный dns для пользователей vpn
/ip dns
set allow-remote-requests=yes

# Создаем pool адресов для пользователей vpn
/ip pool
add name=vpn-pool ranges=192.168.0.100-192.168.0.150

# Создаем профиль PPTP сервер
/ppp profile
add ppname=pptp-in local-address=192.168.0.1 remote-address=vpn-pool use-mpls=default use-compression=default use-vj-compression=default use-encryption=required only-one=default change-tcp-mss=yes dns-server=192.168.0.1

# Активируем PPTP сервер
/interface pptp-server server
set enabled=yes max-mtu=1460 max-mru=1460 authentication=chap,mschap1,mschap2 default-profile=pptp-in

# Разрешаем подключаться к PPTP серверу из интернета и разрешаем GRE трафик
(правило должно быть выше последнего запрещаещего)
/ip firewall filter
add chain=input action=accept protocol=tcp in-interface=Inet-Port-Name dst-port=1723
add chain=input action=accept protocol=gre

# Создаем пользовалей vpn
/ppp secret
add name=vpnuser password=password profile=pptp-in

среда, 15 мая 2013 г.

Настройка SSH в Cisco

1. cisco> enable
2. cisco# clock set 12:10:00 15 May 2013
3. cisco# configure terminal
4. cisco(config)# ip domain name cisco.domain
5. cisco(config)# crypto key generate rsa encryption modulus 1024
cisco(config)# ip ssh version 2
6. cisco(config)# service password-encryption
cisco(config)# enable secret password1
7. cisco(config)# username roman privilege 15 password 7 Pa$$w0rd
8. cisco(config)# aaa new-model
9. cisco(config)# line vty 0 4
10. cisco(config-line)# transport input ssh
11. cisco(config-line)# logging synchronous
12. cisco(config-line)# exec-timeout 60 0
13. cisco(config-line)# exit
14. cisco(config)# exit
15. cisco# copy running-config startup-config

Пояснение:

1. Входим в привилегированный режим
2. Устанавливаем точное время для генерации ключа
3. Входим в режим конфигурирования
4. Указываем имя домена (необходимо для генерации ключа)
5. Генерируем RSA ключ 1024 для SSHv2
6. Активируем шифрование паролей в конфигурационном файле
7. Заводим пользователя с именем user, паролем Pa$$w0rd и уровнем привилегий 15
8. Активируем протокол ААА. (до активации ААА в системе обязательно должен быть заведен хотя бы один пользователь)
9. Входим в режим конфигурирования терминальных линий с 0 по 4
10. Указываем средой доступа через сеть по умолчанию SSH
11. Активируем автоматическое поднятие строки после ответа системы на проделанные изменения
12. Указываем время таймаута до автоматического закрытия SSH сессии в 60 минут
13. Выходим из режима конфигурирования терминальных линий
14. Выходим из режима конфигурирования
15. Сохраняем конфигурационный файл в энергонезависимую память

http://habrahabr.ru/post/68262/
http://www.maxblogs.ru/articles/nastroika-ssh-v-cisco

Обновление IOS Cisco

# Смотрим текушую версию (SW Version)
Switch# sh version

На прошивках IOS старше 12, рекомендую обновляться через archive (способ N1):
# Проверяем сколько доступно памяти
Switch# sh flash:
# Делаем бэкап на tftp
Switch# archive upload-sw tftp://192.168.1.1/backup.tar
# Заливаем новую прошивку в виде tar на cisco
Switch# archive download-sw tftp://192.168.100.201/c2960-lanbasek9-tar.150-2.SE2.tar


Или заменяем только bin (способ N2):
# Заливаем прошивку
Switch# copy tftp://192.168.1.1/c2960-lanbasek9-tar.150-2.SE2.bin flash:


# проверяем все ли закачалось
Switch#dir flash:

# Указываем загружаться с новой прошивки
Switch# configure terminal
Switch(config)# boot system flash:/c2960-lanbasek9-mz.150-2.SE2/c2960-lanbasek9-mz.150-2.SE2.bin
Switch(config)# exit


# Сохраняем конфигурацию и перезагружаемся
Switch#write
Switch#reload

# Проверяем что номер прошивки изменился (SW Version)
Switch# sh version

Устанавливаем TFTP в ubuntu за 30 секунд

# Устанавливаем сервер и клиент(для тестирования)
apt-get install tftpd-hpa tftp

# Редактируем конфиг vim /etc/default/tftpd-hpa
если требуется, например изменить директорию для файлов по умолчанию:
TFTP_DIRECTORY="/var/lib/tftpboot"
или включаем возможность записи файлов на сервер: TFTP_OPTIONS="--secure -c"
добавляем разрешение на запись в папку chmod o+w /var/lib/tftpboot

# после изменения конфига потребуется рестарт сервиса
service tftpd-hpa restart

# Размещаем свои файлы в /var/lib/tftpboot
для примера создадим тестовый файлик:
echo "test" > /var/lib/tftpboot/myfile

# Пробуем подключиться и скачать наш файл
tftp 192.168.1.1
tftp> get myfile
Received 6 bytes in 0.0 seconds

вторник, 14 мая 2013 г.

Микротик Базовая настройка

Все самое необходимое для настройки Mikrotik RouterOS Вы сможете найти в нашем пособии "Микротик.Базовая настройка". Настройка от А до Я с разбором функций и проблем, которые могут возникнут у простого пользователя в процессе внедрения Mikrotik под свои задачи. На сайт руководство Mikrotik будет вылаживаться по частям, которые наведены в плане. Mstream делает шаг помощи для своих клиентов. С нашим руководством настройка Mikrotik RouterOS не станет помехой для достижения поставленных целей.
Сюда вошли наиболее типичные проблемы и их решения.

http://mstream.com.ua/mikrotik-bazovaay-nastroyka/

P.S. http://notme.org.ua/uploads/mikrotik_doc/NAT.pdf

среда, 1 мая 2013 г.

Настройка времени ntpd и timezone (ubuntu)

# Устанавливаем правильную зону
dpkg-reconfigure tzdata

# Устанавливаем ntpd на сервере
apt-get install ntp

# Устанавливаем ntpd на серверах клиентах
apt-get install ntp

# На серверах клиентах прописываем наш сервер в /etc/ntpd.conf
server 192.168.1.1

# Перезапускаем клиента, и смотрим что он использует
/etc/init.t/ntpd restart
ntpq -p


суббота, 27 апреля 2013 г.

Аналоги команд MySQL в Postgres

mysql: USE DATABASENAME;
postgresql: \c

mysql: SHOW TABLES
postgresql: \d

mysql: SHOW DATABASES
postgresql: \l

mysql: SHOW COLUMNS
postgresql: \d table

mysql: DESCRIBE TABLE
postgresql: \d+ table

Сброс пароля Zabbix (база в postgres)

# Узнаем, как zabbix подключается к базе данных:
grep "^DB" /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123123

# Подключаемся к базе (postgres)
psql -U zabbix -d zabbix -h localhost

SELECT alias,name,passwd from users;
UPDATE users SET passwd=md5('123123') where alias='Admin';

# Пробуем войти под Admin с новым паролем

Сброс пароля Postgres

# Редактируем файл
vim /etc/postgresql/9.1/main/pg_hba.conf

ставим комментарий перед строкой: # local all postgres ident
добавляем после нее: local all postgres trust

# перезапускаем сервис
/etc/init.d/postgres restart

# Пробуем войти:
psql -U postgres

ALTER USER postgres with PASSWORD '123123';
\q

# Меняем строчки обратно в vim /etc/postgresql/9.1/main/pg_hba.conf

# перезапускаем сервис
/etc/init.d/postgres restart