среда, 7 июня 2017 г.

Запуск программ в скрытом режиме

Для запуска программы без GUI или запуск консольного приложения, например bat скрипта, есть способ запуска их через js скрипт следующим образом:
создайте текстовый файл с расширением js и вставьте в него этот код -
var activex = new ActiveXObject("WScript.Shell"); activex.Run("notepad", 0, true);
у вас запустится блокнот, увидеть его можно только в запущенных процессах через диспетчер задач.
Таким же образом запускаются bat скрипты:
var activex = new ActiveXObject("WScript.Shell");activex.Run("test.bat", 0, true);
при этом консольного окна видно не будет.

понедельник, 15 мая 2017 г.

Шифровальщик WannaCry

Обновления безопасности Windows для защиты от WannaCry

WannaCry — это эксплойт, с помощью которого происходит заражение и распространение, плюс шифровальщик, который скачивается на компьютер после того, как заражение произошло. В начале мая атаке подверглись РЖД, "Мегафон", МВД. Сам вирус распространяется через уязвимость SMB 1.0 протокола и использует 445 порт. Таким образом если в локальной сети есть один зараженный компьютер, то он сможет распространится на все остальные. Но, уязвимость в SMB 1.0, эксплуатируемая вирусом, исправлена в обновлениях безопасности MS17-010, выпущенных 14 марта 2017 года. В том случае, если ваши компьютеры регулярно обновляются через Windows Update или WSUS, достаточно проверить наличие данного обновления на компьютере как описано ниже.

Vista, Windows Server 2008
wmic qfe list | findstr 4012598
Windows 7, Windows Server 2008 R2
wmic qfe list | findstr 4012212 или wmic qfe list | findstr 4012215
Windows 8.1
wmic qfe list | findstr 4012213 или wmic qfe list | findstr 4012216
Windows Server 2012
wmic qfe list | findstr 4012214 или wmic qfe list | findstr 4012217
Windows Server 2012 R2
wmic qfe list | findstr 4012213 или wmic qfe list | findstr 4012216
Windows 10
wmic qfe list | findstr 4012606
Windows 10  1511
wmic qfe list | findstr 4013198
Windows 10  1607
wmic qfe list | findstr 4013429
Windows Server 2016
wmic qfe list | findstr 4013429


Если команда возвращает ответ, значит патч, закрывающий уязвимость, у вас уже установлен.Несмотря на то что Windows XP, Windows Server 2003, Windows 8 уже сняты с поддержки, Microsoft оперативно выпустило обновление и дня них.
http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598
Также опубликовала в своем блоге информацию по данному вирусу и ссылки на скачивание обновлений https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
Обновления доступны для всех операционных систем начиная с Windows Xp Sp3

четверг, 27 апреля 2017 г.

ssh туннель или SOCKS5 прокси


Допустим у нас где-то есть сервер с внешним IP к которому мы можем подключиться по SSH.
И в какой-то момент на понадобилось сидя дома или в кафе выйти в интернет через удаленный сервер - прокси. Запускаем putty.
ip сервера. На рисунке это DNS гугла
Назначаем порт на который будет соединятся браузер. Порт можно задать любой свободный в данном примере это 5555.
Указываем динамический порт  5555
Укажем интервал отправки пустых пакетов, чтобы ssh-сессия не отключалась. В примере интервал задан 60 сек.
Таймаут 60
После успешной установки соединения с сервером, переходим в настройки прокси браузера. Я использую Firefox. Выбираем ручная настройки прокси, localhost и порт 5555.
SOCKS 5 - прокси
Теперь браузер выйдет в интернет через удаленный сервер. Проверить можно на 2ip.ru

четверг, 20 апреля 2017 г.

Немного об iptables часть 2

Отличная статья по iptables
Cстатистика:
Статистика неудачных подключений в auth.log
 cat /var/log/auth* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c
Количество установленных соединений на порт, отображение IP:
netstat -ntu
Количество подключений по IP:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1. Сохранение правил iptables
В некоторых дистрибутивах Linux после перезагрузки не сохраняются правила iptables.
Поэтому для простоты ставим:
 apt-get install iptables-persistent 
после этого правила хранятся в /etc/iptables/rules.v4 и /etc/iptables/rules.v6 и их можно редактировать либо вносить изменения через iptables.
Для применения изменений:
 service iptables-persistent reload
2.  Просмотр правил:
iptables -S #простой вывод
iptables -nL
iptables -nvL #более подробный вывод
3. Примеры цепочек:
iptables -F #Очищаем все цепочки таблицы filter
# Установка политик по умолчанию
iptables -P INPUT DROP # Важно, еcли настройка идет удаленно по SSh, то сначала открыть ssh порт, а потом закрывать все входящие порты, иначе потеряем связь с сервером или iptables -P INPUT DROP сделать в конце настройки iptables а в начале открыть все входящие подключения iptables -P INPUT ACCEPT 
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT 
#Принимаем пакеты для программ, которые уже установили соединение или требуют создание нового соединения, например чтобы не закрылось текущее SSH соединение
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
#Разрешаем сеть например вордпреса
-A INPUT -s 192.0.64.0/16 -j ACCEPT
#Разрешаем подключение к портам
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #ssh лучше поменять на другой порт
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#Открыть резолв DNSа иначе доменные имена не доступны
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
#Как пример можно закрыть некоторые нежелательные сети
-A INPUT -s 153.99.0.0/16 -j DROP
-A INPUT -s 218.64.0.0/16 -j DROP
# Защита от спуфинга
-A INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-level info --log-prefix "DROP SYN,ACK:"
-A INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
#icmp
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
-A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#Защита от сканера портов
-A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
-A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
-A INPUT -m conntrack --ctstate INVALID -j DROP
#SSh защита вариант 1. С одного ip разрешаем не больше трех соединения (! --connlimit-above 2) на 22 порт, пропускаем 3 пакета в минуту с запросом на соединение (NEW), все
остальные пакеты (NEW) c этого ip блокируется
 -A INPUT -p tcp --dport 22 -m state --state NEW -m connlimit ! \ --connlimit-above 3 -m limit --limit 5/m --limit-burst 5 -j ACCEPT
#Shh защита вариант 2. Входящий TCP трафик на порт 22 проверяется модулем recent. ЕСЛИ за последние 120 секунд прошло 3 или более пакетов, то перейти к цели REJECT, при этом добавить последнее время попытки подключения на этот порт. Если же первое правило не сработало, то вторым правилом добавляется или обновляется последняя запись о входящем пакете и пакет пропускается внутрь.
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name ssh --update --seconds 120 --hitcount 3 -j REJECT
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name ssh --set
#Ограничить количество параллельных подключений по HTTP на порт 80 с одного ip, в примере 25 соединений, не забываем про NAT пользователей, такие тоже могут быть:
-A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 25 -j REJECT


Немного об iptables часть 1


iptables - утилита для работы с межсетевым экраном (Netfilter) в Linux.
В Netfilter сетевые пакеты пропускаются через цепочки правил, существует 5 типов:
  1. PREROUTING — для первичной обработки входящих пакетов.
  2. INPUT — для входящих пакетов.
  3. OUTPUT — для выходящих пакетов.
  4. FORWARD — для входящих пакетов, перенаправленных на выход (заметьте, что перенаправляемые пакеты проходят сначала цепь PREROUTING, затем FORWARD и POSTROUTING).
  5. POSTROUTING — для окончательной обработки исходящих пакетов.
Цепочки организованы в таблицы, существует 4 таблицы: raw, mangle, nat, filter
Таблица filter используется по умолчанию для фильтрации пакетов. т.е например при добавлении правила в цепочку:
 iptables -A INPUT -s 153.99.0.0/16 -j DROP (блокировка всех входящих пакетов из сети 153.99.0.0/16)
оно попадет в цепочку filter. Чтобы добавить цепочку в конкретную таблицу используют ключ -t: 
iptables -t nat -A INPUT правило
Действий, которые совершаются над пакетами (политики), довольно много, но вот три основных:
Пропустить/разрешить (ACCEPT)
Отбросить без уведомления (DROP)
Отбросить с уведомлением (REJECT)
 Некоторые параметры iptables(регистр учитывается):

-A - добавить правило в цепочку;
-С - проверить все правила;
-D - удалить правило;
-I - вставить правило с нужным номером;
-L - вывести все правила в текущей цепочке;
-n - чтобы вывод был только числовой, без перевода ip в доменное имя, портов в их названия и т.п.
-v - чтобы вывод был более информативным (verbose)
-S - вывести все правила;
-F - очистить все правила;
-N - создать цепочку;
-X - удалить цепочку;
-P - установить действие по умолчанию.
-p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
mh;
-s - указать ip адрес устройства-отправителя пакета;
-d - указать ip адрес получателя;
-i - входной сетевой интерфейс;
-o - исходящий сетевой интерфейс;
-j - выбрать действие, если правило подошло.

Часть два: пример использования iptables

пятница, 14 апреля 2017 г.

Qgis и PostgrSql

Часть первая доступна по ссылке
Для многопользовательского доступа к редактируемой карте в QGis используют базу Postgis. В ней будет хранится вся пространственная информация об объектах. Таким образом подключаясь к базе можно совместно работать над проектом.

1. Установить на сервер базу данных PostgrSql
2. Установить PostGis - добавляет поддержку географических объектов в реляционную базу данных PostgreSQL
3. Создать новую базу на сервере.
3.1 Через PgAdmin4 создаем базу данных например postgis_bd
3.2 В базе postgis_bd выполняем скрипты(правой кнопкой мыши по базе - Query Tool) которые находятся(для windows) в PostgreSQL\9.6\share\contrib\postgis-2.3\
т.е в окне запросов SQL запускаем следующие скрипты:
postgis.sql
postgis_comments.sql
topology.sql
topology_comments.sql
spatial_ref_sys.sql  
Скрипты содержат функции PostGIS и типы данных для QGIS.
После этого наша база postgis_bd готова к наполнению.
4. Создать в Qgis слой, рассматривалось в это статье
5. Сохраняем слой в формат shape-файла.
Таким образом получим на выходе 6 файлов:

Эти файлы будут конвертироваться в sql и на основе его формироваться таблица в БД. Для этого нужно их скопировать на сервер базы данных PostgrSql в каталог c:\Program Files\PostgreSQL\9.6\bin\
Затем запустим в данном каталоге командную строку и выполним следующие команды:
shp2pgsql -i -D -s 4326  original.shp  name_tables > name_tables.sql
psql -U postgres -f name_tables.sql -d postgis_bd
Описание:shp2pgsql - утилита для импорта shape- файлов в базу PostGis
original.shp - шейп файл. Cоздаем на основе его SQL таблицу с именем name_tables
Таблицу загружаем в postGis в базу данных postgis_bd 

После выполнения команд в базе создаться таблица name_tables, которую в QGIS можно подключить, для этого создадим новое подключение к базе данных PostGis
Подключение к PostGis
Подключившись к базе увидите таблицу name_tables, двойной клик по ней и можно добавлять объекты, как добавить подложку рассматривалось в это записи.
Если создаем нового пользователя в PostgrSQL не забываем дать права на таблицу слоя в базе, а также права на последовательности (sequences).

среда, 12 апреля 2017 г.

Как создать виртуальную флешку для КриптоПро


ImDisk Virtual Disk Driver - проект Олоф Лагерквист, отличная программа для эмуляции дисков, но поскольку диски эмулировать могут все, а вот создать флешку или дискету не все могут похвастаться. Диски создаются в виртуальной памяти, физически их можно выгружать в файловые образы. После установки, программа доступна из панели управления ПК.


Добавьте подпись
Создание образа: выбираем букву диска, указываем имя файла образа, размер, ставим галку removable media.
Добавьте подпись
Жмем "ОК" все виртуальный образ готов.
Образ
Образ можно сохранить и монтировать при необходимости. Где это пригодится? Например для ленивых на такую виртуальную флешку можно закинуть сертификаты для КриптоПро. )) Или использовать как диск в оперативной памяти для хранения кеша, файла подкачки и прочего.
Есть еще альтернативная GUI - imdisk-toolkit

понедельник, 10 апреля 2017 г.

Бесплатный прокси translate.google.ru


Возможно кто-то не обращал внимания, но https://translate.google.ru можно использовать  как бесплатный прокси, вставляя адрес сайта в окно перевода. Полного функционала конечно нет, но кое что-то можно посмотреть и даже скачать.
Google translate

Скрипт подключения сетевых дисков

Как-то давно была поставлена задача подключать все общие сетевые ресурсы(сетевые диски) в домене Active Derectory автоматически, а не руками каждый раз при создании новой учетной записи. Написал Vbs скрипт. Скрипт рабочий и используется по сей день.
Скрипт проверяет:  подключены ли соответствующие диски?
Правильно для дисков прописан путь?
Если не подключен - подключает.
Если не правильно подключен - отключает и подключает правильно
Если подключен - оставляет как есть (не отключает диск и не подключает заново).
Все диски (вне зависимости от статуса) переименовываются.

воскресенье, 9 апреля 2017 г.

QGIS - бесплатная геоинформационная система


QGIS - мощная ГИС с открытым исходным кодом.
Поддержка платформ  Windows, Mac, Linux, BSD (а вскоре и на Android).
Поддержка баз данных: DB2, MSSQL, PostGIS, Oracle, SpatiaLite.
Растры:  GeoTIFF, Erdas IMG, ArcInfo ASCII Grid, JPEG, PNG и др.
Умеет экспорт в DXF, импорт DWG/DXF
В QGIS стандартным векторный форматом данных  является ESRI shape-файл. Но, есть выгрузка слоев и в форматы например: dxf, csv, SqlLite, xml, mapinfo и др.


1. Подключим слой Яндекс карт в качестве подложки
2. Создадим свой векторный слой


Для подключения Яндекс карт необходимо установить модуль QuickMapServices

Модуль - QuickMapServices
После установки идем в меню Интернет-QuickMapServices-Настройки-Загрузить сервисы- жмем кнопку получить дополнительные источники данных:
Дополнительные источники данных
На панели задач появится кнопка где можно загрузить любую из предложенных карт
Yandex карты
Таким образом например Яндекс карты можно использовать в качестве подложки для создания векторных объектов.


Создадим новый векторный слой: откройте в меню Слой-Создать слой-Создать shape-файл
Параметры слоя
Возможны при создания слоя три типа: точка, линия, полигон. Создаем необходимые поля для объекта. Qgis поддерживает великое множество систем координат. Выберем проекцию EPSG:3395 - это проекция  Меркатора на эллипсоид, ее используют Яндекс карты. EPSG:3857 (3785, 900913) – Проекция Меркатора на сферу. Эта проекция используется сервисами Google, Bing, OpenStreetMap, Yahoo, и др.
Полигон
Поля которые мы добавляли при создании слоя, являются атрибутами данного полигона, и могут его описывать(название здание или комментарий). Имеется возможность их редактировать, удалять или добавлять новые.
Полигон - параметры

В следующем статье рассмотрим подключение к БД PostGis и создание слоев в БД.


пятница, 7 апреля 2017 г.

Как удалить шары admin$, C$ , D$ и т.д.


Общие файловые ресурсы (shares) используют для удаленного доступа к файлам. Но, кроме обычной "шары" есть еще административные ресурсы. Доступ к ним может быть выглядеть примерно так: \\«имя компьютера»\C$. Эти сетевые ресурсы доступны только для пользователя с правами администратора для данного компьютера.
share
Это очень удобно в плане администрирования. Например администратор в домене Windows может легко попасть на диск C компьютера Васи. Для параноиков которые хотят удалить данные ресурсы:  после удаления их в панели управления компьютером, они после перезагрузки появятся снова. Поэтому нужно добавить в реестр пару ключей. Привожу пример bat скрипта (подправить под свои данные) который удаляет административные шары.


REM Disable Admin Shares: IPC$, ADMIN$, C$, D$, E$
REG ADD HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters /f /v AutoShareWks /t REG_DWORD /d 0
REG ADD HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters /f /v AutoShareServer /t REG_DWORD /d 0
REG ADD HKLM\SYSTEM\SYSTEM\CurrentControlSet\Control\Lsa" /f /v restrictanonymous /t REG_DWORD /d 1@echo.
net share admin$ /delete
net share C$ /delete
net share D$ /delete
net share E$ /delete


понедельник, 3 апреля 2017 г.

Настройка доступа к сетевому принтеру через localport

Подключение сетевого принтера через локальный порт:
1. Откройте панель управления - "Устройства и принтеры"
2. Выбрать  "Установка принтера" - "Добавить локальный принтер"

3. Выбрать "Создать новый порт". Тип порта "Local Port". Нажмите далее.

4. В появившемся окне введите сетевой путь до принтера:

\\[Ip-адрес компьютера]\[Сетевое имя принтера]

пятница, 31 марта 2017 г.

Регулярные выражения - примеры №1

Более двух пробелов в строке:
\s{2,}
Все символы между началом строки и например словом Принтер:
(^.*Принтер)
Ищет все, что начинается с Принтер и до конца строки:
(Принтер.+)$
Ищет пустую строку и удаляет пустую строку:
\n\r   заменить на \0
Ищет всю строку содержащую какое-то слово:
(^.*Прринтер.+)$ или (^.*Device Toolbox)$  или (^.*Excel MUI.+)$
Пробелы в начале строки:
^\s*
Удалить пробелы в конце строки после последнего символа
найти: \s+$  заменить на: \0
Удалить дубликаты :
^(.*?)$\s+?^(?=.*^\1$)  заменить на \0

Регулярные выражения в notepad++

Список выражений:
. — Один произвольный символ
^ — Начало строки
$ — Конец строки
\s — Пробел
\S — Не Пробел
\w — Буква, цифра или символ подчёркивания _
\d — Любая цифра
\D — Любой символ кроме цифр
[0-9] — Любая цифра
[a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре
[A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре
[a-zA-Z] — Любая буква от a до z в произвольном регистре
[a-Z] — Любая буква от a до z в произвольном регистре
* — Повторение. Означает, что предшествующий символ может повторяться (0 или более раз)
.* — Любой набор символов. Например, условие .*
— найдет все что между тегами

(^.*$) — Любой текст между началом и концом строки
([0-9][0-9]*.) — Любое двухзначное число
\n\r — Пустая строка
^\s*$ — Пустая строка с пробелом
^[ ]*$ — Ищет пустые строки содержащие пробел
.

Выгрузка ФИО и логинов из ActivDerectory

dsquery - позволяет искать в AD объекты
dsget - получает свойства выбранного объекта, в нашем случае мы получаем информацию по логину, а именно фио, за это отвечает параметр -display

некоторые параметры:
-display — выводит полные имена найденных учетных записей;
-desc — выводит описания найденных учетных записей;
-dn — выводит DN найденных учетных записей;
-empid — выводит идентификаторы сотрудников из найденных учетных записей;
-fn — выводит имена пользователей из найденных учетных записей;
-samid — выводит имена учетных записей в SAM для найденных учетных записей;
-sid — выводит идентификаторы защиты из найденных учетных записей;
-disabled — выводит значение Yes/No (Да/Нет), указывающее, отключена ли данная учетная запись.

dsquery user -name * -limit 0 | dsget user -display -samid >C:\list_login.txt
Вывод:
ivan Иван Иванович Петров
semen Семен Семенович Скоробуба



пятница, 24 марта 2017 г.

linux backup mysql ftp

Скрипта бэкапа:
Делаем дамп базы MySQL и укладываем его и еще  каталог с сайтом в архив, при этом в параметрах указываем какие каталоги пропускать. Потом устанавливаем соединение с FTP сервером и копируем наш архив на удаленный сервер.

#!/bin/bash
to_cat=/backup/wordpress
web_cat=/var/www/*
date_time=`date +"%Y-%m-%d_%H-%M"`
/usr/bin/mysqldump -uUser -pPassword DataBase> $to_cat/mysql_$date_time.sql
/bin/tar -czf $to_cat/arh_$date_time.tar.gz $web_cat  $to_cat/mysql_$date_time.sql --exclude '/var/www/forum' --exclude '/var/www/old' --exclude '/var/www/zakaz'  > /dev/null 2>&1
rm $to_cat/mysql_$date_time.sql
# удалении копий, которые старше 3 дней
find $to_cat -name '*.gz' -mtime +3 -delete
#копирование резервного архива на удаленный FTP-сервер
ftpuser='user'
password='Password'
ftpserver='192.168.1.1'
#Переходим в папку где лежать архивные копии
cd /backup/wordpress
dir
ftp -in $ftpserver << EOF
user $ftpuser $password
bin
passive
#переходим в папку на фтп
cd wordpress
mput arh_$date_time.tar.gz
quit
EOF