четверг, 15 ноября 2018 г.

расширить том на windows server 2003

Запускаю diskpart
ввожу list disk
смотрю какой диск нужен и ввожу, например, select disk 0
затем, ввожу list volume
смотрю какой раздел системный и ввожу select volume 1
Ввожу extend

Раздел автоматически расширяется на все доступное место.

четверг, 8 ноября 2018 г.

предупреждаем пользователя о переполнении почтового ящика

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

сам скрипт:
#!/bin/bash
#Пишем лог в файл logfullLogin.log
logfile=/usr/local/bin/logfullLogin.log
echo "Script start:" `date +%d.%m.%Y" "%H:%M:%S` >> $logfile
echo "==========================================" >> $logfile
for domen in `ls -1 /mail/mail/`
do
    for x in `ls -1 /mail/mail/$domen`
    do
    #echo $x
    cd /mail/mail/$domen/$x/
    y=`du -sb | awk '{print $1}'`
    echo $y

#записываем в столбец lastmbsize размер папки соответсвующий логину
    mysql -h mail-sql.anixtd.ru -u mail -p"h*1L7n!" -D mail -e "UPDATE users SET lastmbsize = '$y' where login='$x'"
touch fullLogin
#выдергиваем адрес
#select addr FROM users where quota>=lastmbsize;
    done
done
#берем процентное соотношение по формуле (lastmbsize/quota)*100 и выводим логины в файл fullLogin
mysql -h mail-sql.anixtd.ru -u mail -p"h*1L7n!" -D mail -e "select addr from users where (lastmbsize/quota)*100>85 and lastmbsize is not null INTO OUTFILE '/home/avm1064/fullLogin' " >> $logfi

#заходим в файл выдергиваем логин в переменную $var и высылаем уведомление.
cat /home/avm1064/fullLogin | while read var
do
echo "send to: $var" >> $logfile
/usr/local/bin/sendEmail -f it@anixtd.ru -t $var -s mail-sql.anixtd.ru:25 -u "Ваш почтовый ящик скоро будет переполнен" -m Доброго времени суток! Уведомляем Вас, что место в вашем почтовом ящи
done
echo "Script end:" `date +%d.%m.%Y" "%H:%M:%S` >> $logfile
echo "++++++++++++++++++++++++++++++++++++++++++" >> $logfile
rm /home/avm1064/fullLogin

автоматизация обучения спама spamassasin

обучение происходит в 2 этапа

#!/bin/bash
for x in `ls -1 /mail/mail/anixtd.ru`
do
#cp -f `find /mail/mail/anixtd.ru/$x/.Junk/cur/  -name '*.*'` [/home/avm1064/SPAM]

mv -f "/mail/mail/anixtd.ru/$x/.Junk/cur/"* /home/spam/SPAM/
done
#tar -czvf spam.tar.gz /home/avm1064/SPAM
sudo -u spam scp -P 5522 "/home/spam/SPAM/"* avm1064@mx0.anixtd.ru:/var/tmp/SPAM
sudo -u spam scp -P 5522 "/home/spam/SPAM/"* avm1064@mx1.anixtd.ru:/var/tmp/SPAM
sudo -u spam scp -P 5522 "/home/spam/SPAM/"* avm1064@mx2.anixtd.ru:/var/tmp/SPAM
#rm -rf /home/spam/SPAM/*

-перемещаем все письма из папки спам на сервере в каталогах пользователей в отдельную папку.
-копируем при помощи scp без пароля
источник реализации:
http://profhelp.com.ua/articles/kopirovanie-faylov-po-seti-pri-pomoshchi-scp-bez-parolya
- в кроне выставляем время и запуск скрипта, и удаление файлов за собой

со стороны почтового шлюза так же есть скрипт который обучает spamassasin

#!/bin/bash
#Пишем лог в файл logSpamlearn.log
logfile=/usr/local/bin/logSpamlearn.log
echo "Script start:" `date +%d.%m.%Y" "%H:%M:%S` >> $logfile
echo "==========================================" >> $logfile

sa-learn --spam /var/tmp/SPAM/ >>$logfile
#создаем себе базу нежелательных писем
mv -f "/var/tmp/SPAM/"* /var/tmp/SPAM_old/
#rm -R /home/avm1064/SPAM/spam.tar.gz
echo "Script end:" `date +%d.%m.%Y" "%H:%M:%S` >> $logfile
echo "++++++++++++++++++++++++++++++++++++++++++" >> $logfile

также в кроне выставляем время запуска. база нежелательных писем нужна, т.к если спам асасин придется обучать с 0, то Вам не нужно будет собирать письма с нова, а уже будет основа.

проверка exim на неверную авторизацию

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

TSH=`date +%H`;
TSM=`date +%M`;
TSM1=$(($TSM/10));
TS=$TSH":"$TSM1;
grep " "$TS /mail/logs/mainlog | grep "535 Incorrect authentication data" > /var/cache/zabber-plugins/data/authfail

Скрипт очистки

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

и собственно сам скрипт:
@echo off
set LOG=C:\Utils\Cleaner\Logs\Cleaner.log
echo --------- %Date% %time%                > %LOG%
for /D %%i in (E:\Название отдела\*) do  if /i not "%%i"=="E:\Название отдела\Долговременное хранение"  (  echo %%i

del /s /q /f %%i >> %LOG%
del /s /q %%i\*.* >> %LOG% 

    for /D %%j in (%%i\*) do (                 
    echo ***** Каталог %%j:              >> %LOG%
rem          del /s /q /f %%i >> %LOG%
rem          del /s /q %%i\*.* >> %LOG%
rem          for /D %%k in (%%j) do (
           rd /s /q "%%j"
           Echo Удалить %%j

Echo Удалена папка - %%j       >> %LOG% 
rem )
)
 )

КАК УДАЛЯТЬ ФАЙЛЫ СТАРШЕ 10 ДНЕЙ НА WINDOWS


Делаю бекапы каждый день, накапливается не один десяток гигабайт информации. Чистить нужно, тем более старые бекапчики особой важности не несут. Раньше удалял вручную, но потом задумался… Вручную делать это лень, тем более можешь завтыкать, протупить и удалить не то. Короче, ленивый сделает лучше всех — нужно автоматизировать.
Воспользовался встроенной утилитой forfiles. Теперь все делает планировщик задач и несложный bat-ник в две строки. Пример дальше.
Команды forfiles. Примеры
Вот так примерно выглядит команда для отображения всех файлов с расширением .rar на диске С старше 10-ти дней:
forfiles /p C:\ /m *.rar /s /d -10 /c «cmd /c echo @path»
Разберем ключи по порядку:
/p — пусть для проверки. В примере диск C:\
/m — маска для поиска. Можно не задавать, если хотим убрать все файлы в папке. В примере все архивы с расширением .rar
/s — сканируем вложенные папки в том числе.
/d — дата. Можно задать в формате dd.mm.yyyy или dd. У нас -10 дней, можно указать +N дней. Про +N дней читайте далее.
/c — команда. Ключевое что нам нужно — собственно что мы будем делать с файлами. В командах также можно использовать переменные:
@path — показывает полный путь к файлу и его имя.
@relpath — показывает путь к файлу только в сканируемой папке.
@file — имя файла полностью с расширением.
@fname — только имя файла, без расширения.
@ext — только расширение имени файла.
@isdir — проверка типа файла — папка или файл. Возвращает true, если папка, и false для файлов.
@fsize — возвращает размер файла в байтах.
@fdate — возвращает дату последнего изменения 
файла.
@ftime — возвращает время последнего изменения файла.
Также результаты исполнения скрипта можно записать в файл.
Пример использования forfiles — отобразить все файлы .zip на диске и записать их в файл
Следующий код отобразит все Ваши исполняемые файлы .exe:
forfiles /p C:\ /m *.exe /s /c «cmd /c echo @path»
Если нужно их записать в файл, то добавьте в конце знак БОЛЬШЕ и адрес куда сохранить файл (лучше всего прописать полный путь).
forfiles /p C:\ /m *.exe /s /c «cmd /c echo @path» > D:\all_exefiles.txt
                                                       Вставляем код в cmd:
                                      Forfiles. Запись в файл выполненного скрипта
Результат — созданный файл на диске D:\ и его содержимое (можно много интересного найти):

                                Forfiles. Запись в файл выполненного скрипта. Результат
Пример forfiles с переменными путь, дата, размер
Давайте вызовем все наши файлы с диска D:\ с расширением .zip, а выведем их на экран с адресом, датой и размером файла. Используем скрипт:
forfiles /p D:\ /m *.zip /s /c «cmd /c echo @path изменен @fdate и размером @fsize байт »
                                        Вот результат выполнения скрипта:

                        Команды forfiles. Используем переменные со своим текстом
Как удалить файлы старше 10 дней
Чаще всего forfiles используют как раз для задачи удаления устаревших файлов. Вот Вам cmd скрипт для удаления старых файлов (в примере старше 10 дней):
forfiles /p C:\ /m *.rar /s /d -10 /c «cmd /c del @path /q»
Как удалить папки старше 7 дней с помощью forfiles
Кроме самих файлов не лишним будет удалять и папки, тем более если они будут пустые (без файлов). Код:
forfiles /p C:\downloads /s /d -7 /c «cmd /c rmdir /s del @path /q»
В этом примере я написал уже 7 дней. Для удаления папок мы используем rmdir, ключ /s — для сканирования вложенных папок, del — команда удаления, /q — удаление без подтверждения.






пример строки из моего скрипта 
forfiles /p D:\DataExchange\2 /s /d -2 /c "cmd /c rmdir /s del @path /q"

iptables, spam

exiqgrep -i -t susanbrown22@comcast.net | xargs exim -Mrm
livejournal.com
exim -bpc
exiqgrep -i -t susanbrown22@comcast.net
grep 1atPuv-00041g-M7 /mail/logs/mainlog

iptables -I INPUT -s 118.193.217.228 -j DROP
tailf /mail/logs/mainlog | grep Incor


grep alt-s321 /mail/logs/mainlog-20160609 |grep  hronenko

sa-learn --spam /home/avm1064/spam/


Решение: измените на тему tradetdanix
ВЫВОД ИЗ СПАМА
mysql -p
use mail;
select * from mail.blacklist where IP="178.206.248.202";
delete  from mail.blacklist where IP="178.206.248.202";



iptables -I FORWARD -s внутренний ip -p ICMP -j ACCEPT
iptables -t nat -I POSTROUTING -s внутренний ip -p ICMP -j SNAT --to-source 82.200.46.82

route

ip route add 192.168.165.32/27 via 192.168.23.238 dev AZudiTun1

mysql

SHOW DATABASES; SHOW TABLES;
CREATE DATABASE menagerie;
Use mail;
посмотроеть структуру таблицы:
describe имя таблицы;
посмотреть объем базы данных
SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema;

# Бекап одной базы данных в файл dump_file.sql
mysqldump -uroot -p your_base > dump_file.sql
Например, чтобы в имени система автоматически вставила текущее время,
достаточно указать строку вида:
                                              'date "+%Y-%m-%d"'
после этой строки в примере указывается расширение файла ‘.gz‘.
В результате будет создан файл вида ‘2014-11-15.gz‘

# Восстанавливаем базу данных your_base из файла дампа dump_file
            mysql -uroot -p your_base < dump_file.sql

UPDATE users SET lastmbsize = '1' where login='marfin_av';
select addr FROM users where quota>=lastmbsize;

delete from mail.blacklist where IP="209.85.215.45";
select (lastmbsize/quota)*100, login from users where (lastmbsize/quota)*100>85 and lastmbsize is not null;



mysql -h mail-sql.anixtd.ru -u mail -p"Пароль" -D mail -e "UPDATE users SET last_seen=CURRENT_TIMESTAMP() WHERE addr = '$USER'" >> /dev/null

exim

/var/spool/exim4/db/  удалить файлы и перезапустить екзим
rm -rf /var/spool/exim4/db/*

exim -bpc : получить число сообщений, находящихся в очереди
         exim -M email-id : принудительно повторить попытку отправки конкретного письма ( с                                              конкретным message-id)
         exim -qf :               выполнить обработку очереди
         exim -qff : выполнить обработку очереди и попытаться сбросить "замороженные" письма
         exim -Mvl email-id : просмотреть логи для указанного сообщения
         exim -Mvb email-id : просмотреть тело сообщения
         exim -Mvh email-id : просмотреть заголовки сообщения
         exim -Mrm email-id : удалить сообщение из очереди, не отправляя сообщений об ошибке
         exim -Mg email-id :   удалить из очереди и отправить отправителю диагностику о                                                            невозможности доставки
    exiqgrep -o 86400 -i | xargs exim -Mrm - удалит из очереди все сообщения, старше чем 86400                                                                         секунд (1 сутки)
    exiqgrep -z -i | xargs exim -Mrm            - удалить все замороженные письма из очереди!

Что бы  отправить письмо из консоли нужно подать на stdin sendmail-а поток данных например так:
echo "bla bla" | sendmail  my@mail

Если хотите наглядно видеть что происходит с письмом то есть ключик — v
echo "bla bla" | sendmail -v my@mail

Тему сообщения можно указать так
(echo "Subject:Hi"; echo "Body contents";) | sendmail my@mail

Сообщение с темой и отправителем
(echo "Subject:Hi"; echo "Body contents";) | sendmail -F "test"  my@mail

ejabberd server

стоит ли репозиторий epel? если не стоит то ставим

1)устанавливаем yum -y install ejabberd
2)нужно открыть порты
необходимо сделать копию базы данных
где она хранится? ejabberdctl backup /tmp/ejabberd.bak

3)переносим на новый сервер базу данных и все содержимое /etc/ejabberd
4)восстанавливаем базу
ejabberdctl restore /tmp/ejabberd.bak
5) запускаем демона
6)добавляем его в автозагрузку chkconfig ejabberd on




устанавливаем транспорт yum install pyicq-t.noarch

заходим в /etc/pyicq-t
заполняем параметр pyicqt.jid
возможно и др параметры
выставляем кодировку

указываем порт 5347 и заполняем секретное слово secret

параметры <icqServer>login.icq.com</icqServer>
<icqPort>5190</icqPort>
http://www.linux.org.ru/tag/ejabberd?section=2&offset=20
http://www.linux.org.ru/forum/general/11170362
http://forum.lissyara.su/viewtopic.php?t=43715


оставляем по умолчанию

запускаем транспорт
/etc/init.d/pyicq-t start


идем в конфиг джабера в листен
{5347, ejabberd_service, [
      {access, all},
      {shaper_rule, fast},
      {ip, {127, 0, 0, 1}},
      {hosts, ["icq.myserver.ru"],
       [{password, "SECRETWORD"}]
      }
     ]},

перезапускаем джабер
/etc/init.d/ejabberd restart

scp ejabberd3.bak avm1064@192.168.101.143:/home/avm1064
Для смены владельца файлов или каталогов используем команду:
chown vasya:users /путь/имя_каталога_или_файла

https://ramses2000.net/2014/01/19/ejabberd-move/
https://oioki.ru/2011/07/icq-transport-dlya-ejabberd-v-centos/
https://oioki.ru/2011/07/ustanovka-ejabberd-v-centos/

http://www.sysadminwiki.ru/wiki/Ejabberd

среда, 7 ноября 2018 г.

настройка терминального сервера.

стандартный терминальник
https://www.dmosk.ru/instruktions.php?object=terminal-settings

https://www.ekzorchik.ru/2018/03/how-to-deploy-terminal-server-on-windows-server-2016/

https://efsol.ru/manuals/terminal.html

Указываем номер соглашения: 4965437
Enterprise agreement три варианта — 6565792, 5296992, 3325596
6565792, 5296992, 3325596, 4965437, 4526017

чтобы обойти домен:
https://mdex-nn.ru/page/terminalnyj-server-na-windows-server-2012.html

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Использовать указанные серверы лицензирования удаленных рабочих столов (добавляем имя нашего сервера)

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Задать режим лицензирования удаленных рабочих столов (выбираем тип лицензий)

Англоязычный вариант:

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Use the specified Remote Desktop license servers (добавляем имя нашего сервера)

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Set the Remote licensing mode (выбираем тип лицензий)

Удаленный помошник (Remote Assistance)

первым делом на терминальном сервере RDP RDS устанавливаем Features — Remote Assistance (Возможности — Удаленный помощник)

После этого либо на сервере локально, либо на основе групповой политики

Административные шаблоны/Компоненты Windows/Службы удаленных рабочих столов/Узел сеансов удаленных рабочих столов/Подключения/
Разрешить пользователям удаленное подключение с использованием служб удаленных рабочих столов   --Включена 
- Устанавливает правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов --Включена Параметры: Полный контроль с разрешения пользователя

Административные шаблоны/Система/Удаленный помощник\
-Настроить запрашиваемую удаленную помощь (Разрешить удаленное управление этим компьютером: Разрешить помощникам управлять компьютером)
-Настроить предлагаемую удаленную помощь (Разрешить удаленное управление этим компьютером: Разрешить помощникам управлять компьютером. нажимаем кнопку Show...Помощники: ДОМЕН\Группа или юзер)



дальше запускаем утилиту msra.exe (удаленный помошник)

понедельник, 5 ноября 2018 г.

Перенос профилей на диск D

В Windows Server (и не сервер тоже) папки профилей пользователей по умолчанию лежат в директории системного диска C:\Users, где C — имя системного диска. И хотя каждый пользователь может назначить где именно должна лежать конкретная папка, например «загрузки», есть также недокументированная возможность переноса всех папок всех пользователей на конкретной машине — особенно это актуально для терминальных серверов, где работает множество пользователей. Реализуется это очень просто: в редакторе реестра находим ключ HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList и меняем в нем значение параметра «ProfilesDirectory» (по умолчанию «%SystemDrive%\Users») на нужный нам путь, например на «D:\Profiles». После этого перезагружаем сервер и вуаля — все новые профили будут создаваться в соответствующих папках под «D:\Profiles».


Однако есть проблема — даже если скопировать все папки пользовательских профилей по новому пути, при входе пользователей будет создаваться новый профиль вместо уже существовавшего, как будто происходит первый вход этого пользователя. Дело в том, что параметры конкретного пользователя используют не параметр «ProfilesDirectory», а параметр «ProfileImagePath» в ключе HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\[SID пользователя]. Для избежания этой проблемы, после смены «ProfilesDirectory»  мы делаем экспорт всей ветки под ProfileList:
Открываем получившийся файл. Если мы переносим профили на другой сервер с сохранением пути (например путем переподключения жесткого диска на другой сервер в этом же домене), удаляем оттуда хорошо известные SID, например в примере выше это S-1-5-18, S-1-5-19, S-1-5-20 и локальные профили (их легко отличить по одинаковому префиксу, предварительно посмотрев на путь конкретного профиля для какой-либо учетки). Затем перетаскиваем этот файлик на новый сервер и уже на нем выполняем импорт. Если же мы переносим профили на другой сервер с изменением пути, то перед импортом необходимо выполнить замену путей, как в случае, если перенос профилей идет просто на другой диск одного сервера (в этом случае нужна только замена путей и импорт). Для замены путей мы открываем наш файлик в блокноте и делаем «Заменить все» введя старый и новые пути. Обратите внимание, что путь закодирован в HEX код. Текст для замены легко получить самим: для этого просто создаем два значения с исходным и итоговым путем и экспортируем в файл. Затем берем HEX исходного значения и заменяем итоговым (обратите внимание, что в пути D:\Profiles появился слеш и две пары нулей в конце — их копировать не надо, если после них символов более нет):
После всех манипуляций перезагружаем сервер и получаем удовольствие от проделанной работы!

Как установить и настроить PHP на Windows Server

  В данной статье мы научимся устанавливать PHP на Windows Server. Существует несколько способов установки PHP, включая PHP Manager for IIS ...