ipsec openswan sonicwall

Posted in Новости on 5 февраля, 2016 by admin

Топология сети :

| 1.1.1.1 | —— | 2.2.2.2 | —- | 192.168.1.0/24 |

1.1.1.1 — Debian машина без NAT
2.2.2.2 — внешний адрес sonicwall
192.168.1.0/24 — nat за sonicwall, к которому требуется получить доступ из 1.1.1.1

Debian :
1. Ставим openswan :

apt-get update
apt-get upgrade
apt-get install openswan

2. Авторизация будет через PSK ( pre shared key )

cat /etc/ipsec.secret


1.1.1.1 2.2.2.2: PSK "mysecretkey"

3. Далее отключаем правила редиректа трафика и включаем forwarding :

root@xxx:/# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

4. Вносим правила в iptables :

iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4500 -j ACCEPT
iptables -A PREROUTING -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -p esp -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 500 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 4500 -j ACCEPT
iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -j ACCEPT --destination 192.168.1.0/255.255.255.0
iptables -t nat -A PREROUTING -j ACCEPT --source 192.168.1.0/255.255.255.0

5. Проверяем корректность настроек ( для OpenVZ также со стороны ноды делаем — https://openvz.org/IPsec )

root@xxx:/# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.38/K2.6.32-042stab108.8 (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing XFRM related proc values [OK]
[OK]
[OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Two or more interfaces found, checking IP forwarding [FAILED]
Checking NAT and MASQUERADEing [OK]
Checking for 'ip' command [OK]
Checking /bin/sh is not /bin/dash [WARNING]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]

6. Приводим конфиг /etc/ipsec.conf к виду :

config setup
nat_traversal=yes
oe=off
nhelpers=0
virtual_private=%v4:192.168.1.0/24
plutostderrlog=/var/log/pluto.log
conn sonicwall
type=tunnel
left=1.1.1.1
leftsubnet=1.1.1.1/32
rightxauthserver=yes
leftid=1.1.1.1
right=2.2.2.2
rightid=2.2.2.2
keyingtries=0
pfs=no
aggrmode=no
auth=esp
esp=3des-sha1
ike=3des-sha1
authby=secret
keyexchange=ike
rightsubnet=192.168.1.0/24
# This allows the VPN to come up automatically when openswan starts
auto=start
ikelifetime=8h
keylife=1h
compress=no

7. Перезагружаем :

/etc/init.d/ipsec restart

Sonicwall :
1. Создаем новое VPN подключение
2. General :

Policy Type - Site-to-Site
Authenication Method - IKE using Preshared Secret
Name - любое имя
IPSEC Primary Gateway Name or Address - 1.1.1.1
IPSEC Secondary Gateway Name or Address - 2.2.2.2
Shared secret - указываем пароль из /etc/ipsec.secret
Local IKE ID - IP Address - 2.2.2.2
Peer IKE ID - IP Address - 1.1.1.1

3. Network :

Local Networks
Choose local network from host - выбираем группу, в которой состоит 192.168.1.0/24 подсеть

Remote Networks
Choose destination network from list - выбираем или создаем группу 1.1.1.1/32

4. Proposals :

IKE Phase 1
Exchange - Main
DH Group - 5
Encryption - 3DES
Authentication - SHA1
Life Time ( seconds ) - 28800

IKE Phase 2
Protocol - ESP
Encryption - 3DES
Authentication - SHA1
Enable Perfect Forward Secrecy - Disable
Life Time ( seconds ) - 28800

5. Advanced :

Enable Keep Alive - enable
All other disable
Default LAN Gateway - 0.0.0.0

6. Применяем изменения и на странице VPN в Sonicwall должен напротив нашего соединения загореться зеленый кружок.

Tags: , ,

nginx и бесплатные сертификаты от let's encrypt

Posted in Новости on 29 января, 2016 by admin

1. Ставим само ПО letsencrypt :

cd /usr/src
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

В процессе установки попросят ввести ящик. Он потребуется для продления сертификата или при утере данных
2. Генерируем сертификаты для работы :

cd /usr/src
service nginx stop
./letsencrypt-auto certonly --standalone
service nginx start

В процессе генерации ключей нас попросят ввести список доменов, если нам нужно разместить более одного домена второго уровня, тогда нужно будет запустить еще раз утилиту, так как для всего списка создается один сертификат. Перед генерацией сертификата нужно останавливать вебсервер.
3. Создаем минимальный конфиг nginx для ssl :

server {
listen my.ip.ad.dre.ss:443 ssl;
server_name example.com www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
set $root /var/www/example.com/;
ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root $root;
}
}

сертификат fullchain.pem уже включает и сертификат домена и цепочку сертификатов.

Tags: , , , ,

Zimbra + Openfire + zimbra ldap

Posted in Новости on 29 января, 2016 by admin

1. Обновляем систему до упора

apt-get update
apt-get upgrade

2. Устанавливаем зависимости zimbra

apt-get install libgmp3c2 libperl5.14 sysstat sqlite3 pax

3. Качаем и устанавливаем zimbra

wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz
tar zxvf zcs*
cd zcs*
./install.sh

отвечаем на все вопросы «y» ( нажимаем на y и Enter )

4. Задаем пароль администратора ( сначала выбираем 7 меню , затем 4 ) .
5. Устанавливаем репозитории с java

apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update

6. Ставим MySQL сервер

apt-get install mysql-server

7. Ставим java

apt-get install oracle-java8-installer

8. Качаем последний стабильный openfire

wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.10.3_all.deb -O openfire_3.10.3_all.deb

9. Создаем БД

mysql -uroot -p
CREATE DATABASE openfire CHARACTER SET='utf8';
CREATE USER 'openfire'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `openfire`.* TO 'openfire'@'localhost' WITH GRANT OPTION;

10. Устанавливаем openfire :

dpkg -i openfire_3.10.3_all.deb

11. Переходим по адресу http://IP:9090/ и продолжаем установку в уже интерактивном режиме.

В качестве БД выбираем сетевую БД ( MySQL )

В качестве сервера аккаунтов выбираем OpenLDAP ( LDAP )

Настройки подключения :

хост — IP сервера , порт — 389

Base DN ( Базовая DN) — dc=example,dc=com ( где example.com — наш домен в zimbra)

Аккаунт администратора — uid=admin,ou=people,dc=example,dc=com ( где example.com — наш домен в zimbra)

Тестируем — если все ОК, продолжаем установку.

12. После окончания установки мы можем :

a. Авторизоваться в openfire с данными из zimbra ( admin )

b. При создании нового аккаунта в Zimbra у нас автоматически этот аккаунт будет распространяться на openfire . Автоматика.

Tags: , , , , ,

nginx watermark , наложение водных знаков в nginx

Posted in Новости on 29 января, 2016 by admin

1. Обновляем систему до упора.

apt-get update
apt-get upgrade
apt-get install dpkg-dev

2. Качаем исходники nginx

cd /usr/src
apt-get source nginx

3. Качаем модуль imagefilter для nginx

wget https://github.com/intaro/nginx-image-filter-watermark/archive/master.zip
unzip master.zip
cp nginx-image-filter-watermark-master/ngx_http_image_filter_module.c nginx-*/src/http/modules/ngx_http_image_filter_module.c

4. Включаем в сборку флаг :

--with-http_image_filter_module

5. Собираем пакет, не забывая сделать вместо «make install» — «checkinstall»
6. Включаем в нужный блок :

location /img/ {
image_filter watermark;
image_filter_watermark "PATH_TO_FILE";
image_filter_watermark_position center-center; or other position
}

Tags: , ,

Начальная оптимизация php5-fpm

Posted in Новости on 29 января, 2016 by admin

Итак, имеем сервер 4 ядра , 8Gb RAM . На сервере стоит MySQL , php5-fpm, nginx.
Сначала рассчитываем, сколько мы можем выделить памяти для php5-fpm . Возьмем половину реальной — 4Gb.
Далее, узнаем, сколько памяти в среднем «ест» один процесс php5-fpm , в этом нам поможет конвеер отсюда
root@XXX:/# pidof php5-fpm | xargs pmap -d | grep '^mapped' | awk '{print $4}' | sed 's/K//' | perl -e 'do { $a+=$_; $b++ } for <>;print $a/1024, " mb\n", $a/1024/$b, " mb\n"'
197.484375 mb
24.685546875 mb

Округлим до 30Мб
Вводные : 4 ядра , 4Гб RAM , ~30Мб на процесс.

pm.max_children = Количество памяти под fpm / Память одного процесса
pm.min_spare_servers = Количество ядер * 2
pm.max_spare_servers = Количество ядер * 4
pm.start_servers = ( pm.min_spare_servers + pm.max_spare_servers) / 2

Итого :

pm.max_children = 136
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.start_servers = 12

Tags: , , , ,