Показаны сообщения с ярлыком Администрирование. Показать все сообщения
Показаны сообщения с ярлыком Администрирование. Показать все сообщения

3 декабря 2015 г.

Встречаем новый ScreenSquid 1.7 - анализатор логов SQUID

Дабы не ссылаться на ранее написанную статью по установке версии 1.5, полностью её сюда скопирую, отредактировав под 1.7.

Перед реализацией всей этой машинерии необходимо скачать ScreenSquid с сайта разработчика.
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Произведённые выше действия с конфигурационным файлов привели к корректной работе с кириллическими символами. Не знаю как будет у Вас, но у меня кириллица упорно сохранялась и отображалась в win1252 (latin1).
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:
sudo tar xzf screensquid_v1_7.tar.gz -С /var/www/
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:
sudo mv /var/www/html /var/www/screensquid/
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).
Подключимся:
mysql -u[user_name] -p[password]
Создадим новую базу данных:
CREATE DATABASE squidreport DEFAULT CHARACTER SET=utf8;
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:
SOURCE /var/www/squidreport/createdb/createdb.sql
и обновим её же до последней версии:
SOURCE /var/www/squidreport/createdb/upgrade.sql
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON squidreport.* TO 'user_name'@'localhost'; 
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо user_name и password указываем те значения, которые мы ввели выше:
sudo vi /var/www/squidreport/config.php
$db = "squidreport";
$user = "user_name";
$pass ="password";
$address ="localhost";
и в скрипте заполнения таблиц БД:
sudo vi /var/www/squidreport/fetch.pl
my $user = "user_name";
my $pass = "password";
my $db = "squidreport";
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:
  1. Можно указывать короткий или полный путь к файлу лога SQUID
  2. Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате.
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:
my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы logrotate, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.

По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:
sudo chmod u+x fetch.pl
После чего настроим cron для запуска этого скрипта:
sudo crontab -e
куда добавим следующую запись:
# запуск каждый день в 23 часа 
00 23 * * * /var/www/squidreport/fetch.pl
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.

В общем отчёте "По времени суток" был добавлен график. Пока это так, игрушка можно сказать, но надеюсь получит своё развитие в других отчётах. Но игрушка представляет собой файл изображения, который автоматически создаётся каждый раз при формировании отчёта. Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:
sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/
А теперь можем откинуться на спинку кресла и наслаждаться своей работой.

При обновлении с 1.5 на 1.7, необходимо воспользоваться сценарием обновления таблиц базы данных, применив команду:
mysql [database_name] < /var/www/squidreport/createdb/upgrade.sql 

В остальном обновление 1.5 до 1.7 не отличается от полной установки за исключением отсутствия необходимости создания новой БД, пользователя и настройки cron, если, конечно же, не вздумаете сменить расположение скрипта парсера.

На сих откланиваюсь. Спасибо за внимание =) Успехов!

11 августа 2015 г.

Маленькие помощники PowerShell

Не владею данным, довольно мощным инструментом, в совершенстве, но иногда приходится выполнять какие-либо работы, в которых необходимо получить или собрать информацию из Active Directory. Консоль MMC не предоставляет того разнообразия функций, которые иногда требуются. Да, есть довольно интересная и в то же время такая же необходимая консоль ADExplorer от SysInternals, в которой тоже не всё так безоблачно. Но по крайней мере она уже может выполнять полноценный поиск по содержимому атрибутов объектов.

Каждому удобны те инструменты, с которыми он привык работать и удовлетворяют его потребности. Но мне приглянулся вот такой скриптовый язык как PowerShell. Довольно продвинутый инструментов для выполнения повседневных задач администрирования и, немного, отчётности и инвентаризации. Пока многие его возможности мною не изучены, но иногда пишу быстрые однострочные команды, выбирающие всю необходимую мне информацию.

Ввиду того, что часто эти операции одноразовые, мною они не были сохранены для возможности повторного использования. Надеюсь, и буду стараться, выкладывать сюда такие однострочные (а может быть и больше) помощники. Как предварительное требование, у Вас уже должна быть установлена поддержка работы PowerShell с Active Directory. Может быть она поставляется отдельно, но у меня она входила в пакет средств удалённого администрирования сервера для Windows 7 (KB958830). Не забудьте включить этот компонент в оснастке "Программы и компоненты" -> "Включение или отключение компонентов Windows":

А дальше просто открываете консоль PowerShell и пишите что хотите =)

Вот что у меня сохранилось.
Import-Module ActiveDirectory
# Незаблокированные ПК с установленной Windows XP
Get-ADComputer -Filter '(operatingSystem -eq "Windows XP Professional") -and (Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation
# Все незаблокированные компьютеры
Get-ADComputer -Filter '(Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation

# Список пользователей в контейнере.
import-module activedirectory
# Незаблокированные учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter '(Enabled -eq "True")' | Select-Object -Property Name
# Все учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter * | Select-Object -Property Name
foreach ($user in $user_list){
    Write-Host $user.Name
}
Write-Host ""
Write-Host "Количество пользователей: " $user_list.Count

23 июня 2015 г.

Установка и настройка ScreenSquid 1.5 - анализатор логов для SQUID

Перед реализацией всей этой машинерии необходимо скачать ScreenSquid с сайта разработчика.
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка:
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Произведённые выше действия с конфигурационным файлов привели к корректной работе с кириллическими символами. Не знаю как будет у Вас, но у меня кириллица упорно сохранялась и отображалась в win1252 (latin1).
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:
sudo tar xzf screensquid_v1_5.tar.gz -С /var/www/
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:
sudo mv /var/www/html /var/www/screensquid/
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).
Подключимся:
mysql -u[user_name] -p[password]
и создадим новую базу данных:
CREATE DATABASE squidreport DEFAULT CHARACTER SET=utf8;
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:
SOURCE /var/www/squidreport/createdb/createdb.sql
Чтобы не подключаться и не светить права root создадим нового пользователя mysql и наделим его полными правами к созданной БД:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON squidreport.* TO 'user_name'@'localhost'; 
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо user_name и password указываем те значения, которые мы ввели выше:
sudo vi /var/www/squidreport/config.php
$db = "squidreport";
$user = "user_name";
$pass ="password";
$address ="localhost";
и в скрипте заполнения таблиц БД:
sudo vi /var/www/squidreport/fetch.pl
my $user = "user_name";
my $pass = "password";
my $db = "squidreport";
В завершении всего этого безобразия настроим cron для запуска скрипта, который запускает парсер:
sudo crontab -e
куда добавим следующую запись:
# запуск каждый день в 23 часа 
00 23 * * * /var/www/squidreport/fetch.sh
Сам файл представляет простейший скрипт следующего содержания:
#!/sbin/sh
cd /var/www/squidreport/
perl /var/www/squidreport/fetch.pl
Можно, конечно же, переписать парсер, чтобы он принимал файл лога в качестве параметра вызова или прописать полный путь к нему, но я решил это не делать =)
Казалось бы всё хорошо и работу можно считать законченной, но есть нюанс. Ротация логов SQUID выполняется не с помощью squid -k rotate, а с помощью программы logrotate, запускаемой с через cron. Указанный выше logrotate работает по расписанию cron.daily. Расписание запуска можно подсмотреть в /etc/crontab, где будет написано следующее:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Иными словами ротация логов происходит в 6:25 ежедневно. Но мы настроили, что access.log будет парситься 23:00. В итоге получаем, что время с 23:00 по 6:25 в базу данных попадать не будет.

Меня это совсем не устраивает, поэтому было решено следующее. Т.к. после запуска logrotate к текущему access.log прибавляется 1, файл уже недоступен для SQUID для внесения в него изменений и считается сформированным, и именно по этой причине для заполнения базы данных будем использовать именно его. Для чего потребовалось внести небольшие изменения в файл парсера fetch.pl:
#open(IN, "<access.log"); 
open(IN, "<access.log.1");
 
while (my $line=<IN>) {
@item = split " ", $line; 
А вот на этом работу можно считать выполненной. Можно было сделать немного иначе. Например, вызывать парсер каждые N-минут(часов), но у меня нет необходимости иметь настолько своевременный отчёт, а мгновенный отчёт получаю с помощью sqstat 1.20, который прекрасно справляется со своей задачей.

14 мая 2013 г.

Библиотека для работы с MSAM, AD DS и AD LDS

Понадобилось вот мне (точнее не мне :-) ) получить список администраторов и опытных пользователей на локальных машинах. Для получения требуемой информации сначала хотел использовать WMI, потом PowerShell. Потом вообще передумал. Решил использовать WSH (vbs). Упёрся в то, что на наших машинах каждый день запускается checkcfg, собирающий информацию о машине, а он вроде как исполняемый. Можно было выкрутиться и сделать батничек, скомпилированный в экзешничек, запускающий скриптик, но чем-то этот метод мне не понравился))

Поэтому решил использовать C#, который по мере возможности я пихаю при каждом удобном случае)) В общем, в закромах .NET Framework была найдена библиотека, которая просто влила жизнь в мою задачу, а также оставила зарубки в мозгу для последующего воплощения требующихся задач. Библиотека эта:
System.DirectoryServices.AccountManagement
Умеет она не просто всё, что требуется в повседневной жизни администратора, но делает это ещё с песнями и плясками. В общем, просто немедленно рекомендую почитать MSDN в части, касающейся данной библиотеки.

В общем, напишу для себя заметку, дабы не забыть, а там может ещё кому пригодится или даст толчок к новым знаниям.
using (PrincipalContext ctx = new PrincipalContext(ContextType.Machine))
{
    using (GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Администраторы"))
    {
        using (PrincipalSearchResult results = gp.GetMembers())
        {
            foreach (var item in results)
            {
                if (item.StructuralObjectClass != null
                    && item.StructuralObjectClass.Equals("user"))
                {
                    Console.Writeline(item.SamAccountName);
                }
            }
        }
    }
}
Как можно увидеть, я воспользовался MSAM (диспетчером учётных записей безопасности компьютера).

5 декабря 2012 г.

Настраиваем безопасность Internet Explorer 8 через реестр

Продолжают поступать распоряжения по автоматизации выполнения некоторых трудоёмких процессов. Теперь выбор пал на повсеместное обновление Internet Explorer до 8 версии. Также необходимо сразу настроить разрешения в ActiveX и другие настройки безопасности.

Все настройки находятся в реестре, но понять что за что отвечает довольно сложно. В общем, ока раскопал настройки ActiveX через реестр:
   //Существует 5 зон безопасности:
   //0 - "Мой компьютер"
   //1 - "Местная интрасеть"
   //2 - "Надёжные узлы"
   //3 - "Интернет"
   //4 - "Ограниченные узлы"
   RegistryKey _ActiveX = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)
    .OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2", true);

   //Значение ключа реестра:
   //0 - включить
   //1 - предлагать
   //3 - отключить
   //65536 - допущенных администратором
   //загрузка подписанных элементов ActiveX
   _ActiveX.SetValue("1001", "0", RegistryValueKind.DWord);
   //загрузка неподписанных элементов ActiveX
   _ActiveX.SetValue("1004", "0", RegistryValueKind.DWord);
   //запуска элементов ActiveX и модулей подключения
   _ActiveX.SetValue("1200", "0", RegistryValueKind.DWord);
   //использование элементов управления ActiveX, не помеченных как безопасные для использования
   _ActiveX.SetValue("1201", "0", RegistryValueKind.DWord);
   //разрешить запуск элементов ActiveX,  которые не использовались ранее, без предупреждения
   _ActiveX.SetValue("1208", "0", RegistryValueKind.DWord);
   //разрешить сценарии
   _ActiveX.SetValue("1209", "0", RegistryValueKind.DWord);
   //показывать видео и анимацию на вебстранице, не использующей внешний проигрыватель
   _ActiveX.SetValue("120A", "0", RegistryValueKind.DWord);
   //разрешать использовать ActiveX без запроса только утверждённым доменам
   _ActiveX.SetValue("120B", "3", RegistryValueKind.DWord);
   //выполнять сценарии элементов ActiveX, помеченные как безопаснии
   _ActiveX.SetValue("1405", "0", RegistryValueKind.DWord);
   //поведение двоичного кодов и сценариев
   _ActiveX.SetValue("2000", "0", RegistryValueKind.DWord);
   //автоматические запросы элементов управления ActiveX
   _ActiveX.SetValue("2201", "0", RegistryValueKind.DWord);
   _ActiveX.Close();


15 ноября 2012 г.

Отправка сообщений MessageBox из Windows Server 2008

Многим уже давно известно, что в данной ОС, наряду с Windows Vista, 7 и 8 отключили такую фичу как net send. А мне вот поставили задачу рассылать сообщения с данного сервера. Тыкался-мыкался, но решение было найдено. Путём быстрых поисков был найден аналог прошлой утилиты, называется msg. Работать с ней просто, но вот сообщения на машины под управлением Windows XP отсылаться ни в какую не хотят. Но и это также просто лечится. Для этого надо произвести довольно простые манипуляции с реестром.

Открываем реестр и добавляем туда параметр с ключём по указанному пути:
HKLM\System\CurrentControlSet\Control\Terminal Server
DWORD=AllowRemoteRPC
VALUE=1
Для того, чтобы изменения вступили в силу перезагружаем компьютер. Всё, на этом наши страшные манипуляции закончились. Теперь достаточно в Server 2008 в консоли написать команду:
msg /server:Comp01 * Hello World!!!
и на указанном Comp1 появится посланное ему сообщение)) И что самое полезное и хорошее в данном решении, так это то, что на указанных компьютерах можно не включать Службу Сообщений, которая зачастую отключена политикой безопасности многих компаний.

ЗЫ: В процессе эксплуатации выяснился интересный момент. На некоторых машинах, где не прописан указанный ключ в реестре, сообщение всё равно появляется. А некоторые без данной записи отображать ни в какую не хотят... Непонятно, однако...
ЗЗЫ: В процессе эксплуатации выяснилось, что на тех машинах, на которых отсутствует профиль пользователя с которого отсылаются сообщения с сервера, сообщения отправляться не будут. В связи с этим дальнейшая эксплуатация данной утилиты затруднена(( Будем продолжать искать другие решения данной проблемы. Одним из которых станет служба, которую я уже почти дописал.

13 июля 2012 г.

Работа с кустом HKEY_USERS или преобразование USER->SID с помощью C#

Продолжая автоматизировать свою деятельность с помощью самописных программок столкнулся с проблемой записи в куст HKEY_CURRENT_USER. Удалённо записать туда не представляется возможных, лишь только если сам пользователь запустит нужный мне скрипт или программу. Но выход есть. Все пользователи указанного компьютера имеют ветку в кусте HKEY_USERS, но добраться до неё можно лишь узнав SID (Security Identificator, идентификатор безопасности), под которым пользователь компьютера там числится.

11 июля 2012 г.

Посылаем сообщения через Exchange с помощью C#

Понадобилось мне тут намедни сообщение отправлять автоматически. Долго ломал голову как это организовать с помощью установленного Microsoft Outlook из офисного пакета, но кроме как использовать его COM ничего не придумал. Но это не удобно же. В итоге, долго ковыряясь в просторах тырнета в поисках решения этой проблемы наткнулся на MSDN, где рассказывалось про такой замечательный Exchange Web Services Managed API SDK. Это просто кладезь для работы с Exchange'ем. Пока только начал его рассматривать, да и многое от него не требуется, но отправить с использованием данного API сообщение (даже с вложением) просто как раз-два-три.

28 марта 2012 г.

Удалённое добавление|удаление пользователей из(в) группы

Мне как всегда больше всех надо, поэтому решил помочь нашей службе безопасности управлять пользователями на локальных ПК. Ходить удалять или добавлять в локальные группы пользователей занятие не очень интересное, поэтому решили автоматизировать сей процесс. Реализовать как всегда решил на C#, ибо и другие-то языки я не знаю, а этот вижу последние 3 месяца к ряду. Ну и без утилиты от Sysinternals в виде продукта PsExec не обошлось. С помощью неё запускается локальная программа net localgroup с помощью которой добавляются и удаляются нужные пользователи.

22 декабря 2011 г.

Зависание компьютера при контекстом меню файла "Открыть"

Собственно не далее, как сегодня случилась сия беда. Решить мыслить логично, а получилось как всегда. Проверил пути Send To в папке профиля пользователя, в реестре - везде всё нормально, аки и должно быть. Полез в интернет - частые умники рекомендуют посмотреть в эти папки и ветку в реестре. Особенно одарённые - переустановить Windows, который мне уже настолько надоел своими переустановками, что просто слов нет. А тут проде и пища для мозгов)) В общем, поковырявшись с полчасика в Служебных Сообщениях Windows, ветках реестра и профиле пользователя и ничего не найдя решил выполнить последний вариант: sfc /scannow. И, о чудо, всё заработало, и виснуть перестал... правда драйвер с видимокарты отвалился, а под рукой оного у меня не оказалось. В общем, щасте наступило)))

PS. Как выяснилось виноват драйвер видеокарты Leadtek WinFast GT 520. Определилось это почти самостоятельно, когда после нормальной работы, но отсутствующим драйвером видеокарты был вновь установлен драйвер, идущий вместе с ней. Какая версия идёт в комплекте я точно не помню, но точно начинается на 137. После установки же последней версии драйвера, с предварительным удалением старой версии, Windows заработала и чувствует себя нормально.

21 декабря 2011 г.

Удалённая установка программы на компьютер пользователя


Долгое время пишу BAT скриптики, но его возможности не безграничны, да и не всегда есть возможность нормально и правильно обработать исключения. Поэтому, по рекомендации нашего админа, решил установить Visual Studio 2010 C# Express. Бесплатная, а мне больше и не надо))

Собственно, первым делом решил переписать скриптик, который ставил 1С:Предприятие на машины пользователей в тихом режиме, копировал файл настройки hasp-ключа и файл со списком ИБ. Ставится с использованием программы Русиновича PSExec. Собственно, вот что у меня получилось. Корявенько, правда, хотелось бы переписать как должно быть, но оно работает, а мне больше и не надо.

6 октября 2011 г.

Выборочная информация о компьютерах сети (CheckCFG)

Понадобилась нашему головному офису в Москве информация о некоторых параметрах компьютера. Объяснили это тем, что все машины должны удовлетворять минимальным параметрам программы для документооборота, которую они хотят внедрить. Всё бы ничего, да только машин в нашей сети не один десяток, а много больше.

Администратором сети в своё время была заложена программа, которая собирает информацию о компьютере и складывает это в папке файл-сервера. Программа, а точнее запись в реестре, указывающая откуда запускать файл при загрузке системы (CheckCfg) установлена на всех компьютерах сети, что много облегчало дальнейшую работу. Но файл содержит огромное количество информации, полный слепок системы. А нужно-то было всего получить информацию о процессоре, памяти и дисковом пространстве.

7 сентября 2011 г.

Удалённая перезагрузка компьютера

Так уж сложилось, что работаю any-кейщиком, тобишь службе техподдержки. Приходится сталкиваться с разными ситуациями. Но суть не в этом. Лень ходить, ведь территория завода большая, не находишься, а делать надо. Да и больших прав для работы в домене у меня нет, поэтому часть служб для меня закрыта. Вот и приходится выкручиваться в данной ситуации, чтобы и не ходить далеко, и работа была сделана не смотря на дефицит прав. Большинство ситуация разруливаются удалённым администратором, но не всегда это возможно. Да и ради одного нажатия залазить на чужую машину тоже лень.

Но всё это преамбула. В дальнейшем, думаю, сделаю отдельную страницу советов (прежде всего самому себе), дабы не забыть.

$(function(){ $('#includedContent').load('http://guest:pCQ5-qU9W6@kotovskogo15.ddns.net/ISAPI/Streaming/channels/102/httpPreview'); });