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

RPM

Описание Нужно выполнить
Импортировать GPG ключ для проверки пакетов # rpm --import RPM-GPG-KEY
Посмотреть информацию о пакете, который лежит в текущем каталоге $ rpm -qip package-1.rpm
Посмотреть список файлов из неустановленного пакета $ rpm -qlp package-1.rpm
Посмотреть скрипты %pre- %post- install (uninstall) $ rpm -qp --scripts package-1.rpm
Посмотреть changelog пакета $ rpm -qp --changelog package-1.rpm
Установить пакет $ rpm -ivh package-1.rpm
Обновить или установить пакет $ rpm -Uvh package-1.rpm
Обновить пакет, если его предыдущая версия установлена в системе $ rpm -Fvh package-1.rpm
Узнать, какому пакету принадлежит данный файл $ rpm -qf /etc/sysctl.conf
Узнать,есть ли документация к этому кон.файлу $ rpm -qd /etc/sysctl.conf
Какие файлы являются конфигурационными для программы Wget $ rpm -qc wget
Посмотреть информацию об уже установленном пакете $ rpm -qi initscripts
Посмотреть список всех установленных пакетов $ rpm -qa
Найти все пакеты, начинающиеся на gnome $ rpm -qa "gnome*"
Удалить пакет $ rpm -e package
Посмотреть даты инсталляции пакетов $ rpm -qa --last
Посмотреть зависимости необходимые пакету $ rpm -qR yum

пятница, 25 мая 2018 г.

Как запустить gpedit на windows 10 home

 Bat - файл для установки оснастки gpedit в windows 10 home
@echo off
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
pause

среда, 28 февраля 2018 г.

SQL скрипты №1

1. Присвоение md5 хеша SUBSTR - обрезам хеш до первых 6 символов:

UPDATE fio SET hash=concat('32',SUBSTR(UPPER(md5(snils)),1,6)) where  snils is not null;
2. Удаление дубликатов:
ALTER IGNORE TABLE fio ADD UNIQUE INDEX(snils);
ALTER TABLE fio DROP INDEX snils; 
3. Очистка таблицы:
TRUNCATE TABLE temp_proverka; 
4. Некоторые варианты сравнения таблиц:
insert into temp_proverka_result select * from fio where  fio.hash in (select temp_proverka.hash from  temp_proverka);
insert into temp_proverka_result_not_data select * from temp_proverka where  temp_proverka.hash not in (select fio.hash from  fio); 
TRUNCATE TABLE temp_proverka_result;
insert into temp_proverka_result (id,hash) select temp_proverka.id,temp_proverka.hash
from fio inner JOIN temp_proverka using (hash); 
TRUNCATE TABLE temp_proverka_result_not_data;
insert into temp_proverka_result_not_data (id,hash)
select temp_proverka.id,temp_proverka.hash from temp_proverka
where hash not in (select hash from fio);
5. Поиск:
SELECT  title FROM  node_revisions WHERE  title  regexp  'тут искомая строка' 
6. Поиск и замена:
UPDATE таблица SET поле = REPLACE (поле, 'текст для замены', 'на что заменять'); 
7. Обновление данных таблицы данными из другой таблицы
update fio t1,temp_proverka t2 set t1.summa = t2.summa where t1.id=t2.id

8. Добавление префикса
UPDATE table SET  table.hash=concat('my_prefix',table.hash) WHERE  table.hash not like 'qwe%';
запрос обновит строки которые не начинаются на "qwe"  и добавит в начало строки my_prefix

среда, 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 скрипт. Скрипт рабочий и используется по сей день.
Скрипт проверяет:  подключены ли соответствующие диски?
Правильно для дисков прописан путь?
Если не подключен - подключает.
Если не правильно подключен - отключает и подключает правильно
Если подключен - оставляет как есть (не отключает диск и не подключает заново).
Все диски (вне зависимости от статуса) переименовываются.