Mailtips в Exchange 2010

среда, 31 марта 2010 г.

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

MailTips работают в различных сценариях, я перечислю лишь некоторые из них:

Если один из получателей находится вне офиса.
Когда почтовый ящик получателя переполнен.
Размер сообщения превышает допустимый для отправки размер.
Когда сообщение посылается на слишком большое число адресатов.
При попытке отправить письмо ограниченному получателю.
При отправке на внешние или неправильные домены.
При попытке отправить письмо модерируемому получателю.
И многое другое.

Просмотр настроенные подсказок.
Запустите указанный ниже командлет в Exchange Management Shell для получения действующих в организации настроек.
Get-OrganizationConfig fl *mailtips*


Включение или отключение подсказок.
Для включения или отключения подсказок вы должны использовать командлет “Set-OrganizationConfig”.
Set-OrganizationConfig -MailTipsAllTipsEnabled $true

Настройка подсказки, оповещающий о большом количестве получателей.
По умолчанию в новой установке Exchange Server 2010 стоит лимит в 25 человек. При превышение этого количество появится подсказка, сообщающая о превышение. Для изменения этого числа можно использовать командлет “Set-OrganizationConfig”. Уменьшим количество до 15-ти.
Set-OrganizationConfig -MailTipsLargeAudienceThreshold 15

Включение или отключение подсказки о внешнем получателе.
Вы можете иметь неприятные воспоминания об отправке какои-либо внутренней информации на внешние адреса. Для предотвращения подобного постарается помочь подсказа, извещающая нас о том, что получетель нашего письма находиться вне нашей организации.
Set-OrganizationConfig –MailTipsExternalRecipientsTipsEnabled $True

Включение или отключение подсказок, связанных с данными почтового ящика.
Теперь речь пойдет о подсказках, связанных с определенным почтовым ящиком. Это отправитель вне офиса и ящик переполнен.
Set-OrganizationConfig -MailTipsMailboxSourcedTipsEnabled $true

Просмотр статистики почтовых ящиков в Exchange 2010

посмотреть доступные почтовые базы организации:
C:\>Get-MailboxDatabase

статистика по отдельной базе с ограничением числа отображаемых ящиков:
C:\>Get-MailboxDatabase "Mailbox Database 1" Get-Mailbox -ResultSize 15

статистика общего числа элементов и размера ящиков по отдельной базе:
:\>Get-MailboxDatabase "Mailbox Database 1" Get-MailboxStatistics Sort totalitemsize -desc ft displayname, totalitemsize, itemcount

подробная статистика по конкретному ящику:
C:\>Get-MailboxStatistics -identity Administrator flRunspaceId : c3678368-5798-4340-8a0a-ab3f721b1a97

импортируем статистику в CSV файл:
C:\>Get-MailboxDatabase "Mailbox Database 1" Get-MailboxStatistics Sort totalitemsize -desc ft displayname, totalitemsize, itemcount Export-CSV C:\mailboxes.csv

Как отключить PC Speaker

пятница, 15 января 2010 г.
1) если вам нужно один раз отключить спикер, просто выполняем команду:
modprobe -r pcspkr
спикер будет молчать до следующей перезагрузки.

2) Если же вы хотите отключить PC Speaker навсегда, нужно добавить его в «блэклист». Для этого открываем на редактирование файл /etc/modprobe.d/blacklist-pcspkr.conf:
vim /etc/modprobe.d/blacklist-pcspkr.conf
и добавляем туда строку:
blacklist pcspkr

Описание команд и параметров OpenVPN

среда, 9 декабря 2009 г.
OpenVPN - очень гибкое, удобное, а главное быстрое и безопасное, решение для построения виртуальных частных сетей VPN.
В данной статье я попытаюсь наиболее подробно описать основные команды, используемые в OpenVPN.

Приведенные в статье команды без -- (двумя знаками дефиса) перед командой должны быть использованы в конфигурационном файле, команды с -- в начале используются только из командной строке. Подробности использования команд и их параметры - man openvpn.

remote <> - определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.

local <> - определяет локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.

dev <> - определяет какой использовать тип устройства tun или tap. Например:
dev tun
или
dev tap
При одном из таких указаний будет использован свободный интерфейс tun или tap. Так же можно явно указывать номер виртуального интрефейса, например tun0.

port <> - указывает на каком порту будет работать OpenVPN (локально и удаленно).

proto <> - какой протокол будет использоваться. Возможные значения: udp, tcp, tcp-client, tcp-server. С первыми двумя все ясно, а на последних двух остановимся чуть подробнее:
tcp-client - сам пытается установить соединение
tcp-server - только ждет подключений
Примечательно, что с использованием протокола udp VPN будет работать чуть быстрее, чем tcp. Но в плане стабильности работы лучше выбирать tcp (как показывает практика, VPN-соединение более устойчиво)

remote-random - если указана данная опция и в random перечисленно несколько удаленных хостов, то OpenVPN в случайном порядке будет к ним подключатся. Применятся для балансировки нагрузки.

float - позволяет удаленному хосту изменять IP во время работы туннеля. Соединение при этом не разрывается.

ipchange <> - выполняет скрипт или команду указанную в <>, если IP сменился. Пример:
ipchange script-ip.sh

connect-retry <> - пробует переподключится через указанное время в секундах, если соединение было разорвано.

connect-retry-max <> - максимальное количество повторов если соединение было разорвано

resolv-retry <> - если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключится.

lport <> - указывает на локальный порт для использования OpenVPN

rport <> - аналогично для удаленного порта. Пример:
rport 8000 - OpenVPN будет пытаться подключится к удаленному порту 8000

nobind - использовать динамический порт для подключения (только для клиента)

shaper <> - указывает скорость передачи данных в байтах для исходящего трафика (только для клиента)

tun-mtu <> - устанавливает максимальный размер MTU. По умолчанию tun-mtu равен 1500. Использование:
tun-mtu 1200

dev-node <> - устанавливает имя виртуального интерфейса. Например:
dev-node openvpn1

ifconfig - устанавливает локальный IP и маску подсети для туннельного интерфейса. Например:
ifconfig 10.3.0.1 255.255.255.0

server <> <> - автоматически присваивает адреса всем клиентам (DHCP) в указанном диапазоне с маской сети. Данная опция заменяет ifconfig и может работаеть только с TLS-клиентами в режиме TUN, соответственно использование сертификатов обязательно. Например:
server 10.3.0.0 255.255.255.0
Подключившиеся клиенты получат адреса в диапазоне между 10.3.0.1 и 10.3.0.254.

server-bridge <> <> <> - сервер в режиме моста для TAP устройств. Пример:
server bridge 10.3.0.1 255.255.255.0 10.3.0.128 10.3.0.254
Клиентам будут выданы адреса в диапазоне 10.3.0.128 - 10.3.0.254, в качестве шлюза будет указан 10.3.0.1.

mode server - переключает OpenVPN в режим сервера (начиная с 2-й версии)

mode p2p - данная опция идет по умолчанию.


Опции в режиме сервера


push <> - передача клиенту конфигурационных параметров. Пример:
push "route 192.168.0.0 255.255.255.0"

Аналогично с помощью push клиенту могут передаватся следующие параметры:

route
route-gateway
route-delay
redirect-gateway
inactive
ping, ping-exit, ping-restart
persist-key, persist-tun
comp-lzo
dhcp-option
ip-win32

Последние две опции применимы только для Window-клиентов. Например передадим Windows-клиенту адрес DNS-сервера 11.11.11.11:
push "dhcp-option DNS 11.11.11.11"

comp-lzo - параметр сжатия трафика, идущего через виртуальный туннель. Может принимать значения yes, no, adaptive. Последнее используется по умолчанию.
Например:
comp-lzo yes - принудительно включить сжатие
comp-lzo no - принудительно отключить сжатие
comp-lzo adaptive - адаптивный режим.


Команды и параметры при работе с сертификатами x509 и параметрами шифрования


cipher <> - указываем алгоритм шифрования. Например:
cipher AES-256-CBC
Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining).

keysize <> - размер ключа в битах. Например:
keysize 128

auth <> - алгоритм хэширования. Пример:
auth SHA1

df <> - файл с ключем Диффи-Хелмана

ca <> - файл сертификата для CA

cert <> - сертификат локальной машины

key <> - локальный ключ машины

tls-server - явно указывает, что данный хост является tls-server

tls-client - соответственно tls-client

pkcs12 <> - указываем файл (PKCS12), который содержит в себе сертификат, ключ и CA в одном файле. Пример:
pkcs12 /file

crl-verify <> - список отозванных сертификатов, т.е. blacklist.

no-replay - отключает защиту OpenVPN от атаки повторного воспроизведения (replay attack). Крайне не рекомендуется отключать!

no-iv - отключает использование вектора инициализации шифра (IV). Крайне не рекомендуется отключать!

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

secret <> - включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой --genkey, файл. Например:
secret key.txt

Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки:
openvpn --show-ciphers

Алгоритмы хэширования:
openvpn --show-digests

Показать все доступные TLS-шифры (TLS используется только для шифрования канала управления)
openvpn --show-tls

Показать все доступные крипто-устройства в системе (если такие имеются):
openvpn --show-engines

Для улучшения безопасности рекомендовано запускать все сервисы с минимальными правами. Следующими двумя командами мы укажем с правами какого пользователя и группы будет работать openvpn:

user nobody
group nogroup

Где, соответственно, nobody и nogroup имена пользователя и группы.


Команды для управления маршрутизацией


Обозначение: VPN-хост - удаленная сторона (удаленный хост)

route <> - устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример:
route 10.0.10.0 255.255.255.252

route-gateway <> - устанавливает шлюз на VPN-хосте. Пример:
route-gateway 192.168.0.22
После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22

route-delay <> - указывает подождать n-секунд перед установкой маршрутов. Пример:
route-delay 5
Т.е. через 5 секунд после установки туннеля будут заданы маршруты.

route-up <> - выполнить скрипт или программу <> после установкий маршрутов. Пример:
route-up /script.sh

redirect-gateway - установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.


Команды для управления туннелем


ping <> - указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, если по туннелю не передавался никакой трафик. Пример:
ping 10

ping-restart <> - если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель. Пример:
ping-restart 60 - если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.

ping-timer-rem - позволяет перезапускать туннель, только когда указан удаленный адрес.

persist-tun - данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.

persist-key - указывает не перечитавать файлы ключей при перезапуске туннеля.

resolv-retry <> - устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста. Пример:
resolv-retry 86400
inactive <> - после n-секунд неактивности устройство TUN/TAP автоматически отключется. Пример:
inactive 120

ping-exit <> - если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN. Пример:
ping-exit 120

keepalive <> <> - является совмещением сразу двух команд - ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример:
keepalive 10 180
Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета - то перезапускать туннель.

persist-local-ip <> - оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.

persist-remote-ip <> - оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.
persist-remote-ip 192.168.50.1


Методы аутентификации


auth-user-pass-verify <> <> - указывается только на серверной стороне.
<> - путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.
<> - метод авторизации, может быть двух типов: via-env и via-file

auth-user-pass <>- указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль.
должен содержать имя пользователя и пароль в двух строчках:
username
password

client-cert-not-required - отключает авторизацию по сертификатам.


Работа с прокси


OpenVPN без проблем может работать через http и socks прокси.

http-proxy <> - указываем адрес и порт прокси-сервера.
http-proxy 192.168.0.12 8080

Если требуется авторизация на прокси-сервере:

http-proxy <> - где authfile - файл содержащий две строки (имя пользователя и пароль) или stdin (будет запрошено имя пользователя и пароль).

Так же после authfile требуется указать метод авторизации. Можно оставить auto для автоматического выбора метода авторизации или указать явно через auth-method.
auth-method может быть трех видов "none", "basic" или "ntlm".
Используется в OpenVPN начиная с версии 2.1.

http-proxy-retry - переподключатся если соединение было разорвано.

http-proxy-timeout <> - считать соедение с прокси-сервером разорванным после n-секунд неактивности. Например:
http-proxy-timeout 5

socks-proxy <> - указываем сокс-прокси сервер. Пример:
socks-proxy 192.168.0.12 8080

socks-proxy-retry - переподключатся если соединение было разорвано.

auto-proxy - автоматически определять прокси-сервер. Требуется версия OpenVPN 2.1 и выше.


Скриптинг


up <>- выполнить команду после запуска устройства TUN/TAP. Пример:
up script-up.sh

up-delay <> - подождать n-секунд перед запуском команды указанной в up. Пример:
up-delay 5

down <> - выполнить команду когда интерфейс TUN/TAP выключится. Пример:
down script-down.sh

down-pre - выполнить команду, указанную в down перед выключением интерфейса TUN/TAP

up-restart <> - выполнить команду после каждого реконнекта

route-up <> - выполнить команду после устрановки серевых маршрутов. Пример:
route-up script.sh

learn-address <> - выполнить указанную команду, если ip удаленной стороны изменился.

ipchange <> - выполнить команду, если ip сервера изменился.

client-connect <> - выполнить команду, когда клиент подключился.

client-disconnect <> - выполнить команду, когда клиент отключился.


Команды отладки и поиска неисправностей


verb <> - устанавливает уровень информативности отладочных сообщений. Может принимать параметр от 0 до 11. По умолчанию verb равен 1.
При уровне verb 5 и выше в логе будут встречатся подобные записи: RwrW. R (read), W (write) - соответственно чтение и запись. Большая буква обозначает, что пакет был считан (R) или записан (W) на виртуальном устройстве TUN/TAP, а маленькие считан (r) и записан (w) в туннеле.

mute <> - если значение установлено в 10, то в лог будет записываться только по 10 сообщений из одной категории.


Логирование


log <> - указываем лог-файл. Если данный параметр не указан, то весь вывод openvpn будет производится в stdout.

log-append <> - дописывать сообщения в лог-файл, а не перезаписывать.

status <> - указывает путь к статус-файлу, в котором содержится информация о текущих соединениях и информация о интерфейсах TUN/TAP.


В. Чем отличаются виртуальные устройства tun и tap?
О. TUN - туннель, соединение по которому указывается по типу: локальный IP < --- > удаленный IP. Например, при явном указании ifconfig:
--ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 - локальный IP, 10.3.0.1 - удаленный IP
TAP - эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
--ifconfig 10.3.0.2 255.255.255.0


В. Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?
О. Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи.

О назначении и применении rundll32.exe в Windows XP

rundll32.exe - утилита командной строкив среде Windows, выполняет следующую задачу - запуск библиотеки (DLL - Dynamic Link Library) как приложения, в том числе позволяя запускать некоторые функции, скомпилированные в DLL-файлах. Список открывающихся при этом возможностей очень широк, приведем лишь некоторые из примеров, сгруппированные по категориям:

Параметры, вводимые при запуске URL.DLL через rundll32.exe:

rundll32 url.dll,FileProtocolHandler %1 - открыть веб-страницу, %1 - URL сайта (включая http://).
rundll32 url.dll,MailToProtocolHandler %1 - создать новое письмо, %1 - e-mail адресата.
rundll32 url.dll,NewsProtocolHandler %1 - подключиться к NEWS-серверу, %1 - URL сервера.
rundll32 url.dll,TelnetProtocolHandler %1 - подключиться по telnet, %1 - адрес сервера.

Параметры, вводимые при запуске SHELL32.DLL через rundll32.exe:

rundll32 shell32.dll,Control_RunDLL hotplug.dll - диалоговое окно "Отключение или извлечение аппаратного устройства"
rundll32 shell32, Control_FillCache_RunDLL - запустить начальную инициализацию "Панели управления".
rundll32 shell32,Control_RunDLL - открыть в Проводнике папку "Панель управления"
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1 - апплет "Специальные возможности" (вкладка "Клавиатура")
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2 - апплет "Специальные возможности" (вкладка "Звук")
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3 - апплет "Специальные возможности" (вкладка "Экран")
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4 - апплет "Специальные возможности" (вкладка "Мышь")
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5 - апплет "Специальные возможности" (вкладка "Общие")
rundll32 shell32,Control_RunDLL appwiz.cpl,,1 - вызов диалогового окна "Установка и удаление программ"(вкладка "Установка программ").
rundll32 shell32,Control_RunDLL appwiz.cpl,,2 - вызов диалогового окна "Установка и удаление программ"(вкладка "Установка компонентов Windows").
rundll32 shell32,Control_RunDLL appwiz.cpl,,3 - вызов диалогового окна "Установка и удаление программ"(вкладка "Выбор программ по умолчанию").
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 - апплет "Экран" (вкладка "Рабочий стол").
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1 - апплет "Экран" (вкладка "Заставка").
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3 - апплет "Экран" (вкладка "Параметры").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0 - апплет "Свойства обозревателя" (вкладка "Общие").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,1 - апплет "Свойства обозревателя" (вкладка "Безопасность").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,2 - апплет "Свойства обозревателя" (вкладка "Конфиденциальность").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,3 - апплет "Свойства обозревателя" (вкладка "Содержание").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,4 - апплет "Свойства обозревателя" (вкладка "Подключения").
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,5 - апплет "Свойства обозревателя" (вкладка "Программы").
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0 - апплет "Язык и региональные стандарты" (вкладка "Региональные параметры")
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1 - апплет "Язык и региональные стандарты" (вкладка "Языки")
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2 - апплет "Язык и региональные стандарты" (вкладка "Дополнительно")
rundll32.exe shell32.dll,Control_RunDLL joy.cpl - апплет "Игровые устройства"
rundll32 shell32,Control_RunDLL main.cpl @0 - открыть диалог "Свойства мыши".
rundll32 shell32,Control_RunDLL main.cpl @1 - открыть диалог "Свойства клавиатуры".
rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintersFolder - открыть папку "Принтеры".
rundll32 SHELL32,SHHelpShortcuts_RunDLL FontsFolder - открыть папку "Шрифты".
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0 - апплет "Звуки и аудиоустройства" (вкладка "Громкость")
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 - апплет "Звуки и аудиоустройства" (вкладка "Звуки")
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 - апплет "Звуки и аудиоустройства" (вкладка "Аудио")
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3 - апплет "Звуки и аудиоустройства" (вкладка "Речь")
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4 - апплет "Звуки и аудиоустройства" (вкладка "Оборудование")
rundll32.exe shell32.dll,Control_RunDLL modem.cpl - апплет "Телефон и модем"
rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl - открытие окна "Сетевые подключения"
rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl - апплет "ODBC Data Source Administrator"
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0 - апплет "Система" (вкладка "Общие"). Параметры от 1 до 6 - остальные вкладки
rundll32.exe shell32.dll,Control_RunDLL telephon.cpl - апплет "Телефон и модем"
rundll32 shell32,Control_RunDLL timedate.cpl - открыть диалог "Дата и время"
rundll32 shell32,Control_RunDLL timedate.cpl,,/f - открыть вкладку "Часовой пояс"
rundll32 shell32,OpenAs_RunDLL - вызвать диалог "Открыть с помощью..."
rundll32 shell32,ShellAboutA WHATIS.RU - информация о версии Windows
rundll32 shell32,SHExitWindowsEx 0 - закрыть все программы, перегрузить оболочку
rundll32 shell32,SHExitWindowsEx 1 - выключить ПК
rundll32 SHELL32,SHExitWindowsEx -1 - перегрузить оболочку Windows
rundll32 shell32,SHExitWindowsEx 2 - перегрузить ПК
rundll32 shell32,SHExitWindowsEx 4 - принудительно закрыть все программы
rundll32 shell32,SHExitWindowsEx 8 - выход из Windows и выключение ATX-совместимого ПК
rundll32 shell32,SHFormatDrive - вызов диалога форматирования диска А:
rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter - запуск "Мастера установки принтера"
rundll32 shell32,SHHelpShortcuts_RunDLL Connect - запуск мастера подключения сетевого диска
rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintTestPage - распечатать тестовую страницу

Параметры, вводимые при запуске USER.EXE через rundll32.exe:

rundll32 user,CASCADECHILDWINDOWS - расположить все окна каскадом.
rundll32 user,TILECHILDWINDOWS - расположить все окна по экрану.
rundll32 user,disableoemlayer - сбой системы (!) - выключить все функции ввода-вывода (клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.
rundll32 user,enableoemlayer - включить и загрузить OEM Layer, если есть возможность выполнить эту команду дистанционно.
rundll32 user,ExitWindowsExec - быстрая перезагрузка Windows.
rundll32 user,RepaintScreen - выполнить команду "Обновить".
rundll32 user,SetCaretBlinkTime n - задать частоту мигания курсора, соответствующую значению параметра n.
rundll32 user,SetCursorPos - переместить курсор мыши в верхний левый угол экрана.
rundll32 user,SetDoubleClickTime n - задать скорость двойного нажатия левой кнопки мыши (Double Click), соответствующую параметру n.
rundll32 user,SwapMouseButton - поменять местами клавиши мыши (обратная смена невозможна).
rundll32 user,WNetConnectDialog - вызов диалога "Подключение сетевого диска".
rundll32 user,WNetDisconnectDialog - вызов диалога "Отключение сетевого диска".

Вызов функций из других библиотек:

rundll32 diskcopy,DiskCopyRunDll - вызов диалога "Копирование диска".
rundll32 keyboard,disable - отключение клавиатуры, действует до следующей перезагрузки.
rundll32 mouse,disable - отключение мыши, действует до следующей перезагрузки.
rundll32 krnl386.exe,exitkernel - выгрузить ядро системы, выход из Windows.
rundll32 mshtml.dll,PrintHTML "HtmlFileNameAndPath" - распечатать документ HTML, где "HtmlFileNameAndPath" - путь к файлу и его имя.
rundll32 мсprint2.dll,RUNDLL_PrintTestPage - распечатать тестовую страницу на принтере.
rundll32 netplwiz.dll,AddNetPlaceRunDll - вызов мастера подключения нового сетевого ресурса "Добавление в сетевое окружение".
rundll32.exe ntlanui.dll,ShareCreate - вызов окна "Новый общий ресурс"
rundll32.exe ntlanui.dll,ShareManage - вызов окна "Общие папки"
rundll32 shell,ShellExecute - открыть "Проводник" (папка "Рабочий стол").
rundll32 sysdm.cpl,InstallDevice_Rundll - вызов мастера установки оборудования.
rundll32 AppWiz.Cpl,NewLinkHere %1 - запуск мастера создания нового ярлыка, где %1 - путь к исходному файлу.
rundll32 syncui.dll, Briefcase_Intro - вызов мастера по работе с "Портфелем"
rundll32 SYNCUI.DLL, Briefcase_Create - создать новую папку "Портфель", если эта функция установлена в системе.
rundll32 msgina,ShellShutdownDialog - вызов диалога "Завершение работы Windows".
rundll32 tcpmonui.dll, LocalAddPortUI - запуск мастера установки TCP-порта принтера.
rundll32 shdocvw.dll,DoOrganizeFavDlg - вызов окна "Упорядочить избранное"
rundll32 shdocvw.dll,OpenURL filename - запуск .url файла с именем filename
rundll32 user32.dll LockWorkStation - блокировка компьютера
rundll32 desk.cpl, InstallScreenSaver [filename.scr] - задать файл скринсейвера в диалоговом окне свойств дисплея.
rundll32 IEdkcs32.dll, Clear - сброс некоторых настроек Internet Explorer, полезно использовать при некоторых сбоях в работе обозревателя.
rundll32.exe powrprof.dll,SetSuspendState - ввести компьютер в спящий режим

DDOS

четверг, 12 ноября 2009 г.
Анатомия DoS-атак
DoS-атаки подразделяются на локальные и удаленные. К локальным относятся различные эксплойты, форк-бомбы и программы, открывающие по миллиону файлов или запускающие некий циклический алгоритм, который сжирает память и процессорные ресурсы. На всем этом мы останавливаться не будем. А вот удаленные DoS-атаки рассмотрим подробнее. Они делятся на два вида:
Удаленная эксплуатация ошибок в ПО с целью привести его в нерабочее состояние.
Flood - посылка на адрес жертвы огромного количества бессмысленных (реже – осмысленных) пакетов. Целью флуда может быть канал связи или ресурсы машины. В первом случае поток пакетов занимает весь пропускной канал и не дает атакуемой машине возможность обрабатывать легальные запросы. Во втором - ресурсы машины захватываются с помощью многократного и очень частого обращения к какому-либо сервису, выполняющему сложную, ресурсоемкую операцию. Это может быть, например, длительное обращение к одному из активных компонентов (скрипту) web-сервера. Сервер тратит все ресурсы машины на обработку запросов атакующего, а пользователям приходится ждать.

В традиционном исполнении (один атакующий - одна жертва) сейчас остается эффективным только первый вид атак. Классический флуд бесполезен. Просто потому что при сегодняшней ширине канала серверов, уровне вычислительных мощностей и повсеместном использовании различных анти-DoS приемов в ПО (например, задержки при многократном выполнении одних и тех же действий одним клиентом), атакующий превращается в надоедливого комара, не способного нанести какой бы то ни было ущерб. Но если этих комаров наберутся сотни, тысячи или даже сотни тысяч, они легко положат сервер на лопатки. Толпа - страшная сила не только в жизни, но и в компьютерном мире. Распределенная атака типа "отказ в обслуживании" (DDoS), обычно осуществляемая с помощью множества зомбифицированных хостов, может отрезать от внешнего мира даже самый стойкий сервер, и единственная эффективная защита - организация распределенной системы серверов (но это по карману далеко не всем, привет Google).

Методы борьбы
Опасность большинства DDoS-атак – в их абсолютной прозрачности и "нормальности". Ведь если ошибка в ПО всегда может быть исправлена, то полное сжирание ресурсов - явление почти обыденное. С ними сталкиваются многие администраторы, когда ресурсов машины (ширины канала) становится недостаточно, или web-сайт подвергается слэшдот-эффекту (twitter.com стал недоступен уже через несколько минут после первого известия о смерти Майкла Джексона). И если резать трафик и ресурсы для всех подряд, то спасешься от DDoS, но потеряешь добрую половину клиентов.

Выхода из этой ситуации фактически нет, однако последствия DDoS-атак и их эффективность можно существенно снизить за счет правильной настройки маршрутизатора, брандмауэра и постоянного анализа аномалий в сетевом трафике. В следующей части статьи мы последовательно рассмотрим:
способы распознавания начинающейся DDoS-атаки;
методы борьбы с конкретными типами DDoS-атак;
универсальные советы, которые помогут подготовиться к DoS-атаке и снизить ее эффективность.

В самом конце будет дан ответ на вопрос: что делать, когда началась DDoS-атака.
Борьба с flood-атаками

Итак, существует два типа DoS/DDoS-атак, и наиболее распространенная из них основана на идее флуда, то есть заваливания жертвы огромным количеством пакетов. Флуд бывает разным: ICMP-флуд, SYN-флуд, UDP-флуд и HTTP-флуд. Современные DoS-боты могут использовать все эти виды атак одновременно, поэтому следует заранее позаботиться об адекватной защите от каждой из них.

1. ICMP-флуд.
Очень примитивный метод забивания полосы пропускания и создания нагрузок на сетевой стек через монотонную посылку запросов ICMP ECHO (пинг). Легко обнаруживается с помощью анализа потоков трафика в обе стороны: во время атаки типа ICMP-флуд они практически идентичны. Почти безболезненный способ абсолютной защиты основан на отключении ответов на запросы ICMP ECHO:

# sysctl net.ipv4.icmp_echo_ignore_all=1

Или с помощью брандмауэра:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

2. SYN-флуд.
Один из распространенных способов не только забить канал связи, но и ввести сетевой стек операционной системы в такое состояние, когда он уже не сможет принимать новые запросы на подключение. Основан на попытке инициализации большого числа одновременных TCP-соединений через посылку SYN-пакета с несуществующим обратным адресом. После нескольких попыток отослать ответный ACK-пакет на недоступный адрес большинство операционок ставят неустановленное соединение в очередь. И только после n-ой попытки закрывают соединение. Так как поток ACK-пакетов очень велик, вскоре очередь оказывается заполненной, и ядро дает отказ на попытки открыть новое соединение. Наиболее умные DoS-боты еще и анализируют систему перед началом атаки, чтобы слать запросы только на открытые жизненно важные порты. Идентифицировать такую атаку просто: достаточно попробовать подключиться к одному из сервисов. Оборонительные мероприятия обычно включают в себя:

Увеличение очереди "полуоткрытых" TCP-соединений:

# sysctl -w net.ipv4.tcp_max_syn_backlog=1024

Уменьшение времени удержания "полуоткрытых" соединений:

# sysctl -w net.ipv4.tcp_synack_retries=1

Включение механизма TCP syncookies:

# sysctl -w net.ipv4.tcp_syncookies=1

Ограничение максимального числа "полуоткрытых" соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above
10 -j DROP
3. UDP-флуд.

Типичный метод захламления полосы пропускания. Основан на бесконечной посылке UDP-пакетов на порты различных UDP-сервисов. Легко устраняется за счет отрезания таких сервисов от внешнего мира и установки лимита на количество соединений в единицу времени к DNS-серверу на стороне шлюза:

# iptables -I INPUT -p udp --dport 53 -j DROP -m iplimit --iplimit-above 1
4. HTTP-флуд.

Один из самых распространенных на сегодняшний день способов флуда. Основан на бесконечной посылке HTTP-сообщений GET на 80-ый порт с целью загрузить web-сервер настолько, чтобы он оказался не в состоянии обрабатывать все остальные запросы. Часто целью флуда становится не корень web-сервера, а один из скриптов, выполняющих ресурсоемкие задачи или работающий с базой данных. В любом случае, индикатором начавшейся атаки будет служить аномально быстрый рост логов web-сервера.

Методы борьбы с HTTP-флудом включают в себя тюнинг web-сервера и базы данных с целью снизить эффект от атаки, а также отсеивание DoS-ботов с помощью различных приемов. Во-первых, следует увеличить максимальное число коннектов к базе данных одновременно. Во-вторых, установить перед web-сервером Apache легкий и производительный nginx – он будет кэшировать запросы и отдавать статику. Это решение из списка "must have", которое не только снизит эффект DoS-атак, но и позволит серверу выдержать огромные нагрузки. Небольшой пример:

# vi /etc/nginx/nginx.conf

# Увеличиваем максимальное количество используемых файлов

worker_rlimit_nofile 80000;

events {

# Увеличиваем максимальное количество соединений

worker_connections 65536;

# Использовать эффективный метод epoll для обработки соединений

use epoll;

}

http {

gzip off;

# Отключаем таймаут на закрытие keep-alive соединений

keepalive_timeout 0;

# Не отдавать версию nginx в заголовке ответа

server_tokens off;

# Сбрасывать соединение по таймауту

reset_timedout_connection on;

}

# Стандартные настройки для работы в качестве прокси

server {

listen 111.111.111.111 default deferred;

server_name host.com www.host.com;

log_format IP $remote_addr;

location / {

proxy_pass http://127.0.0.1/;

}

location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {

root /home/www/host.com/httpdocs;

}

}

В случае необходимости можно задействовать nginx-модуль ngx_http_limit_req_module, ограничивающий количество одновременных подключений с одного адреса (http://sysoev.ru/nginx/docs/http/ngx_http_limit_req_module.html). Ресурсоемкие скрипты можно защитить от ботов с помощью задержек, кнопок "Нажми меня", выставления кукисов и других приемов, направленных на проверку "человечности".
Универсальные советы

Чтобы не попасть в безвыходное положение во время обрушения DDoS-шторма на системы, необходимо тщательным образом подготовить их к такой ситуации:
Все сервера, имеющие прямой доступ во внешнюю сеть, должны быть подготовлены к простому и быстрому удаленному ребуту (sshd спасет отца русской демократии). Большим плюсом будет наличие второго, административного, сетевого интерфейса, через который можно получить доступ к серверу в случае забитости основного канала.
ПО, используемое на сервере, всегда должно находиться в актуальном состоянии. Все дырки - пропатчены, обновления установлены (простой, как сапог, совет, которому многие не следуют). Это оградит тебя от DoS-атак, эксплуатирующих баги в сервисах.
Все слушающие сетевые сервисы, предназначенные для административного использования, должны быть спрятаны брандмауэром ото всех, кто не должен иметь к ним доступ. Тогда атакующий не сможет использовать их для проведения DoS-атаки или брутфорса.
На подходах к серверу (ближайшем маршрутизаторе) должна быть установлена система анализа трафика (NetFlow в помощь), которая позволит своевременно узнать о начинающейся атаке и вовремя принять меры по ее предотвращению.

Добавь в /etc/sysctl.conf следующие строки:

# vi /etc/sysctl.conf

# Защита от спуфинга

net.ipv4.conf.default.rp_filter = 1

# Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная
машина, она сразу ответит. Дефолтовое значение - 2 часа.

net.ipv4.tcp_keepalive_time = 60

# Повторить пробу через десять секунд

net.ipv4.tcp_keepalive_intvl = 10

# Количество проверок перед закрытием соединения

net.ipv4.tcp_keepalive_probes = 5

Следует отметить, что все приемы, приведенные в прошлом и этом разделах, направлены на снижение эффективности DDoS-атак, ставящих своей целью израсходовать ресурсы машины. От флуда, забивающего канал мусором, защититься практически невозможно, и единственно правильный, но не всегда осуществимый способ борьбы заключается в том, чтобы "лишить атаку смысла". Если ты заимеешь в свое распоряжение действительно широкий канал, который легко пропустит трафик небольшого ботнета, считай, что от 90% атак твой сервер защищен. Есть более изощренный способ защиты. Он основан на организации распределенной вычислительной сети, включающей в себя множество дублирующих серверов, которые подключены к разным магистральным каналам. Когда вычислительные мощности или пропускная способность канала заканчиваются, все новые клиенты перенаправляются на другой сервер (или же постепенно "размазываются" по серверам по принципу round-robin). Это невероятно дорогая, но очень стойкая структура, завалить которую практически нереально.

Другое более-менее эффективное решение заключается в покупке дорогостоящих хардварных систем Cisco Traffic Anomaly Detector и Cisco Guard. Работая в связке, они могут подавить начинающуюся атаку, но, как и большинство других решений, основанных на обучении и анализе состояний, дают сбои. Поэтому следует хорошенько подумать перед тем, как выбивать из начальства десятки тысячи долларов на такую защиту.
Кажется, началось. Что делать?

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

Наличие SYN-флуда устанавливается легко - через подсчет числа "полуоткрытых" TCP-соединений:

# netstat -na | grep ":80\ " | grep SYN_RCVD

В обычной ситуации их не должно быть совсем (или очень небольшое количество: максимум 1-3). Если это не так - ты атакован, срочно переходи к дропанью атакующих.

С HTTP-флудом несколько сложнее. Для начала нужно подсчитать количество процессов Apache и количество коннектов на 80-ый порт (HTTP-флуд):

# ps aux | grep httpd | wc -l

# netstat -na | grep ":80\ " | wc -l

Значения, в несколько раз превышающие среднестатистические, дают основания задуматься. Далее следует просмотреть список IP-адресов, с которых идут запросы на подключение:

# netstat -na | grep ":80\ " | sort | uniq -c | sort -nr | less

Однозначно идентифицировать DoS-атаку нельзя, можно лишь подтвердить свои догадки о наличии таковой, если один адрес повторяется в списке слишком много раз (да и то, это может говорить о посетителях, сидящих за NAT'ом). Дополнительным подтверждением будет анализ пакетов с помощью tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера

Показателем служит большой поток однообразных (и не содержащих полезной информации) пакетов от разных IP, направленных на один порт/сервис (например, корень web-сервера или определенный cgi-скрипт).

Окончательно определившись, начинаем дропать неугодных по IP-адресам (будет гораздо больше эффекта, если ты сделаешь это на маршрутизаторе):

# iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port http -j
DROP

Или сразу по подсетям:

# iptables -A INPUT -s xxx.xxx.0.0/16 -p tcp --destination-port http -j
DROP

Это даст тебе некоторую фору (совсем маленькую; зачастую IP-адрес источника спуфится), которую ты должен использовать для того, чтобы обратиться к провайдеру/хостеру (с приложенными к сообщению логами web-сервера, ядра, брандмауэра и списком выявленных тобой IP-адресов). Большинство из них, конечно, проигнорируют это сообщение (а хостинги с оплатой трафика еще и порадуются - DoS-атака принесет им прибыль) или просто отключат твой сервер. Но в любом случае это следует сделать обязательно, – эффективная защита от DDoS возможна только на магистральных каналах. В одиночку ты справишься с мелкими нападками, направленными на истощение ресурсов сервера, но окажешься беззащитным перед более-менее серьезным DDoS'ом.

Как добавить Skype-контакты в Pidgin.

среда, 11 ноября 2009 г.
Один мой знакомый очень не любит Pidgin. Ну, не нравится он ему и все тут! Он - упертый поклонник SIM. А я, напротив, весьма не прочь использовать Pidgin для общения через ICQ и Jabber. Все ОК, но нет в Pidgin поддержки Skype… Вернее не было, а теперь вот есть! Рассмотрим способ добавления Skype-контактов в Pidgin.

Для добавления Skype-контактов в Pidgin, воспользуемся Skype API Plugin для Pidgin, который поможет нам реализовать наше “желание”.

Скачаем его, выполнив в консоли команду:

$ wget http://eion.robbmob.com/skype4pidgin.deb

Установим пакет skype4pidgin, выполнив:

$ sudo dpkg -i skype4pidgin.deb

Теперь, для корректной работы, нам необходимо выкачать и добавить в систему библиотеку libskype.so.

Для 32-битных систем, она доступна здесь. Владельцам 64-битных нужна эта ссылка.

После того, как мы успешно скачали необходимую нам библиотеку (например при помощи той же команды wget), необходимо поместить ее в каталог /usr/lib/purple-2/.

Теперь, когда все сделано, просто перезапустите Pidgin и выберите в его опциях возможность использования Skype. И это будет работать!