суббота, 28 января 2017 г.

dovecot debug

Возникла с довекодом проблема

Jan 28 11:35:27 ubuntu kernel: init: dovecot main process (3279) terminated with status 89
Jan 28 11:35:27 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3282) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3285) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3288) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3291) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3294) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process (3297) terminated with status 89
Jan 28 11:35:28 ubuntu kernel: init: dovecot main process ended, respawning

В гугли начали советовать искать незакрытые скобки и т.д., поскольку это проблема парса конфигов.
Но в посте по линку http://stackoverflow.com/questions/8319151/how-to-start-dovecot
посоветовали просто сделать

dovecot -F

и все и не нужно ничего искать, страдать и т.п

root@ubuntu:~# dovecot -F
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 37: ssl_key: Can't open file /etc/ssl/private/dovecot.pem: No such file or directory

Все сразу ошибка в консоль с указанием конфига и строки. Спасибо парню. 


воскресенье, 26 апреля 2015 г.

Глюки при удаления профиля пользователя на AD контролере (думаю на локальном пк такое тоже может быть)

1). Пробуем залогинится и получаем ошибку "вы вошли с временным профилем", советы по типу http://www.programbeginner.ru/?p=198 не помогают.
2). При следующем входе мы может получить еще веселее ошибку "клиент групповой политики препятствует входу" и мы вообще не можем зайти. Вы также в гугли найдете советы по типу http://kinzersky.ru/page/sluzhba-klient-gruppovoj-politiki-prepjatstvuet-vhodu-v-sistemu-otkazano-v-dostupe, но это также может не помочь.

А помогло
1). удаляем как профиль пользователя так и TEMP папку профиля
2). удаляем как .bak так и без .bak ветки реестра в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList для данного пользователя.

в итоге мы нормально логинимся и профиль нормально создается без взяких временных профилей и приколов при следующем логине "клиент групповой политики препятствует входу". 

среда, 8 апреля 2015 г.

samba, security share и подключение домашник директорий с win 7

У нас на самбе

security = share

поскольку мы хотим подключать шары без аутентификации некоторые, но есть домашние шары пользователей

[homes]
        comment = Home Directories
        browseable = no
        writable = yes
        read only = No

а их тоже хочеться подключать по паролю, для этого в глобальных параметрах добавляем

        lanman auth = Yes
        client NTLMv2 auth = No
        client lanman auth = Yes

и тепеть на самом серваке уже работает доступ по паролю

smbclient -L 10.1.1.1 -U some_user

но Win 7 все равно работать не будет, поэтому на ней нужно еще


Пуск -> выполнить -> gpedit.msc

Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности

и там установить

Сетевой клиент Майкрософт: отправить незашифрованный пароль для подключения к SMB-серверам -> Включить
Сетевая безопасность: уровень проверки подлинности LAN Manager -> Отправлять ответы LM и NTLM - использовать сеансовую безопасность NTLMv2 при согласовании

И все стреляет.

понедельник, 5 января 2015 г.

pptp client mageia 4

Примерчик конфигурации для pptp для подключения например к виндовым vpn серверам:

cat /etc/ppp/peers/vpn1
pty "pptp server.com --nolaunchpppd --nobuffer"
#debug
remotename vpn1
user vpnuser
password "vpnpass"
linkname vpn1
lock
nodeflate
nobsdcomp
noauth
nopcomp
noaccomp
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
mppe required,stateless
logfile /var/log/ppp/vpnlog

собственно важен очень параметр mppe required,stateless без которого соединения вроде устанавливается (то есть интерфейс pptp поднимается и айпиху получает), но трафик не ходит.
debug как видите закомичен, нужен пока настраиваем, лог соответственно  logfile /var/log/ppp/vpnlog

cat /etc/ppp/ip-up.d/vpn1
#!/bin/bash
if [ ! $LINKNAME = "vpn1" ]
then
             exit 0
     fi
ip route add 192.168.10.0/24 dev ppp0

собственно создание маршрута на удаленную сеть

поднимать соединение 
pon vpn1

ls -la /usr/sbin/pon
-rwxr--r-- 1 root root 970 Сен 27 00:32 /usr/sbin/pon*

cat /usr/sbin/pon
#!/bin/sh

PPP_ON_BOOT=/etc/ppp/ppp_on_boot

case "$1" in
  -*) echo "
Usage: pon [provider] [arguments]

If pon is invoked without arguments, $PPP_ON_BOOT file will be
run, presuming it exists and is executable. Otherwise, a PPP connection
will be started using settings from /etc/ppp/peers/provider.
If you specify one argument, a PPP connection will be started using
settings from the appropriate file in the /etc/ppp/peers/ directory, and
any additional arguments supplied will be passed as extra arguments to
pppd.
"
      exit 0
      ;;
esac

if [ -z "$1" -a -x "$PPP_ON_BOOT" ]; then
  exec "$PPP_ON_BOOT"
fi

if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then
  echo "
Please configure /etc/ppp/peers/provider or use a command line argument to
use another file in /etc/ppp/peers/ directory.
"
  exit 1
fi

if [ "$1" -a ! -f "/etc/ppp/peers/$1" ]; then
  echo "
The file /etc/ppp/peers/$1 does not exist.
"
  exit 1
fi

отключать 
poff vpn1

ls -la /usr/sbin/poff
-rwxr--r-- 1 root root 2772 Сен 27 00:33 /usr/sbin/poff*

#!/bin/sh

# $Id: poff,v 1.1 2002/11/24 23:30:44 etbe Exp $
# Written by John Hasler and based on work 
# by Phil Hands .  Distributed under the GNU GPL

if [ -x /usr/bin/kill ]; then
  KILL="/usr/bin/kill"
else
  KILL="/bin/kill"
fi
SIG=TERM
DONE="stopped"
MODE=""

usage ()
{
   cat <
usage: $0 [option] [provider]
options:
  -r        Cause pppd to drop the line and redial.
  -d        Toggle the state of pppd's debug option.
  -c        Cause pppd to renegotiate compression.
  -a        Stop all pppd's.  'provider' will be ignored.
  -h        Print this help summary and exit.
  -v        Print version and exit.
  none      Stop pppd.

Options may not be combined.

If 'provider' is omitted pppd will be stopped or signalled if and only if
there is exactly one running unless the '-a' option was given.  If
'provider' is supplied the pppd controlling the connection to that
provider will be stopped or signalled.
!EOF!
}

# Get option.  If there are none replace the "?" that getopts puts in
# FLAG on error with "null".
getopts rdcavh FLAG
if [ "$?" -ne 0 ]; then
    FLAG="null"
fi

# Check for additional options.  Should be none.
getopts :rdcavh DUMMY
if [ "$?" -eq 0 ]; then
    echo "$0: Illegal option -- ${OPTARG}."
    exit 1
fi

case $FLAG in
 "r") SIG=HUP;  DONE=signalled; shift ;;
 "d") SIG=USR1; DONE=signalled; shift ;;
 "c") SIG=USR2; DONE=signalled; shift ;;
 "a") MODE="all"; shift ;;
 "v") echo "$0$Revision: 1.1 $_TrickToPrint_RCS_Revision"; exit 0 ;;
 "h") usage; exit 0 ;;
 "?") exit 1;
esac
# Get the PIDs of all the pppds running.  Could also get these from
# /var/run, but pppd doesn't create .pid files until ppp is up.
PIDS=`pidof pppd`

# poff is pointless if pppd isn't running.
if test -z "$PIDS"; then
    echo "$0: No pppd is running.  None ${DONE}."
    exit 1
fi

# Find out how many pppd's are running.
N=`echo "$PIDS" | wc -w`

# If there are no arguments we can't do anything if there is more than one
# pppd running.
if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then
    echo "$0: More than one pppd running and no "-a" option and 
no arguments supplied. Nothing ${DONE}."
    exit 1
fi

# If either there are no arguments or '-a' was specified kill all the
# pppd's.
if test "$#" -eq 0 -o "$MODE" = "all" ; then
    $KILL -$SIG $PIDS || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
    exit 0
fi

# There is an argument, so kill the pppd started on that provider.
PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'`
if test -n "$PID" ; then
    $KILL -$SIG $PID || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
else
   echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}."
   exit 1
fi
exit 0

среда, 17 декабря 2014 г.

iptables виртуализация ipset centos 6 и ddos

сервер ддосили (CentOS release 6.6, ядро 3.10.23-xxxx-std-ipv6-64) и на помощь пришла статья http://habrahabr.ru/post/204508/, но к большому сожалению сервер OVH как часто бывает на виртуализированных серверах (например VMware vSphere и других) правила вида 
iptables -I INPUT -s x.x.x.x -j DROP
ничего не блокируют и типа заблокированная айпиха конектится и дальше, почему я нигде не нашел (имеется ввиду что за фигня с iptables на виртуальных машинах) и никто мне до сих пор не рассказал (в свое время чуть голову не слома думая как такое может быть), если кто-то из читающих будет знать отпишитесь в коментах
зато на этом сервере заработал ipset (которые кстати и благодаря своему бинарному дереву работает побыстрее iptables) и наработка автора статьи на хабре была модифицирована под ipset, которые в отличии от iptables работал. Собственно создаем таблицу ipset

cat /etc/ipset.conf
#!/bin/bash
/usr/sbin/ipset -N access iphash

не забываем 

chmod +x /etc/ipset.conf
/etc/ipset.conf

а также прописывает в автозапуск

tail -3 /etc/rc.local
/etc/ipset.conf
/sbin/service iptables start
/sbin/service fail2ban restart
 
2 последние строки нужно поскольку rc.local выполнится уже после запуска iptables, а сервис iptables не стартанет поскольку таблица ipset не создана, а fail2ban после запуска iptables конечно лучше рестартануть. Также первым правилом в /etc/sysconfig/iptables добавляем
-A INPUT -p tcp -m set --match-set access src -m tcp -m multiport --dports 80,443 -j DROP

сам скрипт который будет блокировать айпихи, у которых больше 50 подключений (можете поставить 20 например), также не забываем chmod +x /usr/local/ddos/ddos.sh

cat /usr/local/ddos/ddos.sh
#!/bin/sh

# find all connection and save them to file ddos.iplist in tmp dir
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | grep -v x.x.x.x | uniq -c | sort -n > /tmp/ddos.iplist

# empty script which ban ips
cat /dev/null > /tmp/iptables_ban.sh

# create DROP rule for 50 more aggresive bots
awk '{if ($1 > 50) {print "/usr/sbin/ipset -A access " $2 "" }}' /tmp/ddos.iplist >> /tmp/iptables_ban.sh

# this rule need for for creating file with analysing all iptables rules
echo "/usr/sbin/ipset -L access > /tmp/iptables.log" >> /tmp/iptables_ban.sh

# start script for ip banning
bash /tmp/iptables_ban.sh

где x.x.x.x - на всякий случай айпиха самого хоста (осталось от iptables теста), так на всякий случай. Задача в крон

*/10    *       *       *       *       /bin/sh /usr/local/ddos/ddos.sh >/dev/null 2>&1

вот собственно и все - спасибо автору на хабре за скрипт.

Также не забываем вырубить в апаче ipv6, поскольку скрипт будет некоректно получать айпихи
vim /etc/httpd/conf.d/httpd.conf
Listet 0.0.0.0:80
service httpd restart
вырубать нужно если в выводе
netstat -ant | grep :80

вы видите ffff
tcp        0      0 ::ffff:3.18.16.2:80     ::ffff:5.135.39.9:3571      TIME_WAIT
tcp        0      0 ::ffff:3.18.16.2:80     ::ffff:200.93.191.251:1534  TIME_WAIT

воскресенье, 13 апреля 2014 г.

win7 win2008 l2tp forwarding

Порты, которые нужно пробросить на роутере (источник http://aerovisionit.co.uk/pptp-and-l2tp-port-forwarding/)

L2TP traffic – UDP 1701
Internet Key Exchange (IKE) – UDP 500
IPSec Network Address Translation (NAT-T) – UDP 4500

И самая главная фигня, которую уже 2 раз забываю и из-за этого тратю кучу времени
Windows Vista, Windows 7 and the Windows Server 2008 operating system do not support NAT-T security associations to servers that are located behind a NAT Device by default (it’s not recommended) - то есть нужно еще править реестр на всех участниках соединения, которые стоят за нат (используем согласно выше приведенного источника ссылку http://support.microsoft.com/kb/926179)

для winxp sp2
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
для win7 win2008r2 (в моем случае)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

On the Edit menu, point to New, and then click DWORD (32-bit) Value.
Type AssumeUDPEncapsulationContextOnSendRule, and then press ENTER.
Right-click AssumeUDPEncapsulationContextOnSendRule, and then click Modify.
In the Value Data box, type one of the following values:
0 - A value of 0 (zero) configures Windows so that it cannot establish security associations with servers that are located behind NAT devices. This is the default value.
1 - A value of 1 configures Windows so that it can establish security associations with servers that are located behind NAT devices.
2 - A value of 2 configures Windows so that it can establish security associations when both the server and the Windows Vista-based or Windows Server 2008-based VPN client computer are behind NAT devices.

Я использовал 2 поскольку у меня и сервер и мой пк за nat (и там и там отличный роутер мikrotik)

На всякий случай приведу конфигурацию mikrotik для форвардинга l2tp трафика

add chain=customer dst-port=500,1701,4500 in-interface=internet protocol=udp
(у меня chain=customer поскольку add action=jump chain=forward in-interface=internet jump-target=customer, то есть у меня идет джам с форварда на эту таблицу, у вас скорее этого не будет и нада делать chain=forward; также in-interface=internet укажите свой интерфейс у меня PPPoE и назван internet)
add action=netmap chain=dstnat dst-port=500 protocol=udp to-addresses=192.168.10.2 to-ports=500
add action=netmap chain=dstnat dst-port=1701 protocol=udp to-addresses=192.168.10.2 to-ports=1701
add action=netmap chain=dstnat dst-port=4500 protocol=udp to-addresses=192.168.10.2 to-ports=4500

(где 192.168.10.2 - адрес win2008r2 сервера)

Самое главное как я написал не забывайте за ключи реестра.