четверг, 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-адрес компьютера]\[Сетевое имя принтера]