четверг, 30 октября 2014 г.

Делаем красивую среду Gnome shell

Вообщем-то сегодняшняя статья будет посвящена НОВИЧКАМ. Людям, которые первый раз (или не первый) познакомились с такой замечательной ОС, как Linux Ubuntu 12.04. Я в принципе давно знаком с Ubuntu, и с версии 11.10 перешёл на графическую оболочку Gnome 3 (решительно отказавшись от Unity) В этой статье я расскажу, как я настраиваю систему и делаю её крайне привлекательной и приятной для глаз.
Итак по стандарту, когда вы установили Ubuntu 12.04 (скачать её можно ЗДЕСЬ) у вас предустановлено 2 графических интерфейса (Unity и Unity 2D). Но для создания рабочей среды, что на скриншоте нам нужна оболочка Gnome Shell. Поэтому открываем терминал, и используя copy/paste делаем всё по порядку.
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell
Ставим Gnome Tweak Tool — данная утилита понадобится нам для настройки shell.
sudo apt-get install gnome-tweak-tool
Сразу же заходим в Gnome Tweak Tools (дополнительные параметры системы). И переходим во вкладку «Shell». И здесь добавляем кнопки (свернуть, развернуть) к нашим окнам. Я пользуюсь только кнопками «Свернуть» и «Закрыть». Делается всё вот так:
Топаем дальше. Практически вся среда Shell становится красивой после того, как добавляешь в неё различные расширения, написанные всякими энтузиастами (в хорошем смысле слова). Поэтому делаем возможным устанавливать эти расширения:
sudo add-apt-repository ppa:webupd8team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell-extensions-common
Теперь переходим к внешнему виду. Я использую тему, под названием «Helios», скачать её можно отсюда:
Скачиваем zip архив справа вверху (смотрим изображение):
Теперь перейдём непосредственно к установке темы. Чтобы иметь возможность менять темы, нужно установить соответствующее расширение. Можно это сделать через терминал, но Linux настолько становится проще, что всё делается за пару минут без всяких усилий.
Заходим на САЙТ ЕДИНОЙ БАЗЫ РАСШИРЕНИЙ: https://extensions.gnome.org/
В поиск вбиваем «User Themes». Переходим на страницу нужного расширения и меняем положение выключателя, тем самым устанавливая расширение. Здорово, не правда ли?!
Далее нажимаем Alt+F2, вводим в строку букву «r», нажимаем Enter. Это используется для быстрого перезапуска графического интерфейса.
Теперь запускаем ранее установленный Gnome Tweak Tools (или же дополнительные параметры системы), переходим во вкладку «Расширения Shell» и активируем наше расширение.
Включили? Нажимаем снова Alt+F2, вводим в строку «r». Перезапустили графику и снова заходим в дополнительные параметры, теперь на вкладку «Тема». Ну и соответственно здесь меняем тему. Сначала загружаем ранее скачанный нами zip архив, а потом справа выбираем Helios.
Поговорим ещё о расширениях. На https://extensions.gnome.org/ можно добавить различного рода расширения, которые облегчат работу в использовании ОС и просто будут радовать глаз. Ниже приведен список расширений, которые использую я:
  • Alternative status menu — добавляет в меню статуса кнопки «Выключить» и «Ждущий режим».
  • Alternate Tab — изменяет режим переключения окон при нажатии Alt+Tab.
  • Workspace Indicator - отображает на верхней панели номер виртуального рабочего стола, и позволяет переключаться между ними.
  • Hide dash - убирает левую панель приложений при нажатии на кнопку «Обзор». Удобно тем, у кого стоит Cairo-Dock (об этой программе я напишу позже) или Docky.
  • Media Player Indicator - при запущенном проигрывателе аудио/видео во вкладке «Громкость» позволяет регулировать громкость отдельно приложения.
  • Window Overlay Icons - в режиме «Обзор» отображает иконки соответствующих приложений в правом нижнем углу каждой миниатюры окна, делая более наглядным и простым выбор нужной миниатюры и соответственно нужного окна/приложения.
  • Battery remainining time and percentage - показывает оставшееся время и процент батареи рядом с иконкой. (Для пользователей ноутбуков).
  • Removable Drive Menu - добавляет на верхнюю панель значок в виде диска, при клике на котором отображается меню со списком съемных устройств (флешки, USB-диски и т.д.).
  • Windows Navigator - если в режиме «Обзор« нажать на клавиатуре клавишу Alt, то каждой отображаемой миниатюре окна присваивается порядковый номер — этот номер отображается в левом верхнем углу каждой миниатюры. и теперь нажатием соответствующей цифровой клавиши на клавиатуре можно переключиться на соответствующее окно.
  • Remove Accessibility - удаляет значок «Специальные возможности» с верхней панели.
  • Application menu - на верхней панели чуть правее кнопки обзор добавляется значок «След», который выступает в роли меню для всех установленных приложений.
  • Qiut Button - заменяет имя пользователя и значок состоянию на кнопку выключения.
  • Message Notifier — показывает количество новых разговоров на верхней панели. (Проще говоря возвращает Pidgin в tray).
Все эти расширения вы легко сможете найти на единой базе расширений, и установить их также легко, как и расширение «User Themes». А вот о следующем расширении хотелось бы поговорить отдельно. В частности о процессе его установки, потому что данного расширения нет на сайте.
  • Weather Indicator - Отображает прогноз погоды на верхней панели. При клике по значению температуры отображается панель с дополнительной информацией о текущей погоде и с прогнозом погоды на текущие и последующие сутки. Устанавливается расширение вот так:
sudo apt-get install gnome-shell-extensions-weather
Настраивается индикатор вот так: Сначала переходим на сайт http://www.weather.com/. Здесь справа Латинскими буквами вводим свой город.Получаем ссылку вверху, где копируем несколько букв и цифр. В моём случае это: «RSXX1460″.Затем заходим в настройки:И вставляем наше скопированное значение (Zip/Codeвашего города).
Всё! Теперь мы имеем потрясающую погоду.
Закончим о расширениях, теперь можно приступать к оформлению значков (иконок). На самом деле мне нравится 7 видов значков и время от времени я их меняю, когда какой-нибудь надоедает. Но по приоритету красоты я расставил их так:
1) Значки «Mac-x-reloaded».
2) Значки «Elementary».
3) Значки «Faenza».
4) Значки «Faince».
5) Значки «Awoken».
6) Значки «FS Icons».
7) Значки «Fast Forward».
Лично у меня стоят на данный момент «Mac-x». На скриншоте изображены именно они. Устанавливаются так:
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update && sudo apt-get install mac-x-lion-reloaded
Снова перезагружаем графическую среду при помощи Alt+F2. И заходим в наш родной Gnome Tweak Tools. Во вкладке тема ставим наши иконки.Также ниже описаны команды для установки других видов значков.
Для «Elementary» выполняем такие команды:
sudo apt-add-repository ppa:elementary-os/testing
sudo apt-get update && sudo apt-get install elementary-icon-theme
Для значков»Faenza»:
sudo add-apt-repository ppa:tiheum/equinox
sudo apt-get update && sudo apt-get install faenza-icon-theme
Для значков «Faince»:
sudo add-apt-repository ppa:tiheum/equinox
sudo apt-get update
sudo apt-get install faience-icon-theme
Для значков «Awoken»:
sudo add-apt-repository ppa:alecive/antigone
sudo apt-get update
sudo apt-get install awoken-icon-theme
Для значков «FS Icons»:
sudo add-apt-repository ppa:kroq-gar78/ppa
sudo apt-get update
sudo apt-get install fs-icons-ubuntu
Для значков «Fast Forward»:
sudo add-apt-repository ppa:upubuntu-com/themes
sudo apt-get update
sudo apt-get install ffw
Иконки установлены, и выбраны какие надо. Далее по плану тема GTK+. Родные темы очень даже не плохие, можно выбрать одну из них, однако я копался как-то экспериментировал и остановился на теме «orion». Устанавливается так:
sudo apt-add-repository ppa:satyajit-happy/themes
sudo apt-get update
sudo apt-get install orion-gtk-theme
Ну и соответственно выбираем её во вкладке «Тема» дополнительных параметров.
Теперь разбираемся со шрифтами. Делаем всё как на картинке. У меня монитор 15.6 дюймов, поэтому я не использую большие шрифты, большая часть десятого размера. Естественно, если у вас больше монитор можете ставить и 11, и даже 13 размер. Вообщем всё по вашему вкусу.
Вы, наверное обратили на скриншоте внизу красивая панель приложений в стиле MacOS. Такую красоту позволяет сделать приложение: Cairo-Dock. Для его установки в терминале необходимо набрать:
sudo -v
echo «deb http://ppa.launchpad.net/cairo-dock-team/ppa/ubuntu $(lsb_release -sc) main ## Cairo-Dock-PPA» | sudo tee -a /etc/apt/sources.list
sudo apt-key adv —keyserver keyserver.ubuntu.com —recv-keys E80D6BF5
sudo apt-get update
sudo apt-get install cairo-dock
О настройках данного приложения говорить смысла нет. Там их просто масса. Сами ставите что хотите, что не нужно удаляете. Всё делается, как обычно, методом тыка. Самое главное, когда всё настроите, сделайте так, чтобы Cairo-dock запускалось при старте системы.
Ну и последнее. Если вы не будете никогда использовать графическую оболочку Unity или Unity 2D, то её можно удалить, дабы она не занимала место и менеджер обновлений не вылазил так часто, чтобы обновлять её. Вводим команды:

sudo apt-get purge unity unity-services unity-lens-applications unity-lens-files unity-lens-music unity-lens-video unity-common unity-asset-pool unity-2d-common libunity-misc4
sudo reboot
Напоследок, если кому-то интересно, то обоину для рабочего стола я скачал отсюда: http://rewalls.com/natural/45594-kamni-more-skaly-voda.html
Спасибо за внимание и удачи в настройке вашей ОС!

Пошаговая настройка OpenVPN в Windows

Появилась у меня необходимость подключаться к компьютеру, находящемуся в локальной сети офиса из дома. Как варианты, рассматривал различные решения, будь то Team Viewer ,ssh-тунель и т.д., но в итоге было решено остановиться на OpenVpn, ввиду гарантированной безопасности, надежности соединения и фриварности софта.

Но к своему удивлению любую инструкцию, приходилось в той или иной степени дорабатывать. Поэтому решил предложить вашему вниманию свой вариант. Инструкция «сухая» без особых объяснений конфигов, рассчитанная на то, что можно особо не вдаваясь в смысл поднять шифрованный туннель.
Для начала, конечно, скачиваем программу с официального сайта(http://openvpn.net/index.php/download/community-downloads.html). Далее рекомендую установить её в директорию «c:\openvpn», дабы потом не возникало лишних проблем с путями. Также сразу надо создать «c:\openvpn\ssl», после поместим сюда все наши «ключики», «с:\OpenVPN\log\openvpn.log» и «с:\OpenVPN\log\openvpn-status.log» — для записи логов.
Приступаем к редактированию всех наших конфигов.Чтобы офисный файервол не мешал будущему соединению настроим серверную часть дома на ПК, а клиентскую на рабочем.

Настраиваем сервер.


Создаем:
с:\openvpn\easy-rsa\vars.bat

echo off
set path=%path%;c:\OpenVPN\bin
set HOME=c:\OpenVPN\easy-rsa
set KEY_CONFIG=openssl.cnf
set KEY_DIR=c:\OpenVPN\ssl
set KEY_SIZE=1024
set KEY_COUNTRY=RU
set KEY_PROVINCE=mycity
set KEY_CITY= mycity
set KEY_ORG=Comp
set KEY_EMAIL=admin@local

«с:\openvpn\easy-rsa\openssl.cnf»
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

# This definition stops the following lines choking if HOME isn't
# defined.
HOME =.
RANDFILE = $ENV::HOME/.rnd

# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section = new_oids

# To use this configuration file with the "-extfile" option of the
# «openssl x509» utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)

[ new_oids ]

# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6

####################################################################
[ ca ]
default_ca = CA_default # The default ca section

####################################################################
[ CA_default ]

dir = $ENV::KEY_DIR # Where everything is kept
certs = $dir # Where the issued certs are kept
crl_dir = $dir # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir # default place for new certs.

certificate = $dir/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/ca.key # The private key
RANDFILE = $dir/.rand # private random number file

x509_extensions = usr_cert # The extentions to add to the cert

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crl_extensions = crl_ext

default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match

# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

####################################################################
[ req ]
default_bits = $ENV::KEY_SIZE
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert

# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret

# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix: PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr: PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr

# req_extensions = v3_req # The extensions to add to a certificate request

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = $ENV::KEY_COUNTRY
countryName_min = 2
countryName_max = 2

stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = $ENV::KEY_PROVINCE

localityName = Locality Name (eg, city)
localityName_default = $ENV::KEY_CITY

0.organizationName = Organization Name (eg, company)
0.organizationName_default = $ENV::KEY_ORG

# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd

organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =

commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64

emailAddress = Email Address
emailAddress_default = $ENV::KEY_EMAIL
emailAddress_max = 40

# SET-ex3 = SET extension number 3

[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20

unstructuredName = An optional company name

[ usr_cert ]

# These extensions are added when 'ca' signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType = server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape's comment listbox.
nsComment = «OpenSSL Generated Certificate»

# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy

# Copy subject details
# issuerAltName=issuer:copy

#nsCaRevocationUrl = www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName

[ server ]

# JY ADDED — Make a cert with nsCertType set to «server»
basicConstraints=CA:FALSE
nsCertType = server
nsComment = «OpenSSL Generated Server Certificate»
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]


# Extensions for a typical CA


# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer:always

# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true

# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign

# Some might want this also
# nsCertType = sslCA, emailCA

# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy

# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF

[ crl_ext ]

# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.

# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always

Копируем index.txt.start в index.txt, а serial.start в serial в папку ssl

Пора создавать сертификаты


Открываем командную строку от имени администратора и выполняем последовательно:
  • vars
  • clean-all
  • build-ca
    #(принимаем все значения по умолчанию нажатием клавиши Enter)
  • build-dh
  • build-key-server SERVER_NAME(на ваш выбор)
    #При запросе на ввод Common name необходимо снова ввести наше SERVER_NAME 
    Далее во избежание проблем с созданием сертификата клиента очищаем index.txt папке ssl
  • buid-key KLIENT(на ваш выбор)
  • openvpn --genkey --secret %KEY_DIR%\ta.key

Создаем server.ovpn в папке config и редактируем его.
Создаем server.ovpn в папке config и редактируем его.
server.ovpn
dev tun
proto tcp-server
port 5190
tls-server
server 192.168.0.0 255.255.255.0
comp-lzo
dh C:\\OpenVPN\\ssl\\dh1024.pem
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\Server.crt
key C:\\OpenVPN\\ssl\\Server.key
tls-auth C:\\OpenVPN\\ssl\\ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
keepalive 10 120
status C:\\OpenVPN\\log\\openvupn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3

Отправляем CA.crt, klient.crt, klient.key, ta.key из «c:\openvpn\ssl» нашим клиентам (помещаем их в такую же директорию « c:\openvpn\ssl»).

Настройка клиента


На компьютере клиента необходимо установить скаченное нами приложение по такому же пути c:\openvpn. Cоздаем папку ssl и файлы openvpn.log, openvpn-status.log
Cоздаем clientVPN.ovpn в папке c:\openvpn\config и редактируем его.
”clientVPN.ovpn”
dev tun
proto tcp
remote x.x.x.x 7777 (адрес серевера по сети ip/dyndns)
route-delay 3
client
tls-client
ns-cert-type server
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\client.crt
key C:\\OpenVPN\\ssl\\client.key
tls-auth C:\\OpenVPN\\ssl\\ta.key 1
comp-lzo
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping-restart 60
ping 10
status C:\\OpenVPN\\log\\openvpn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3


На сервере запускаем файл server.ovpn(кнопка «StartOpenvpn…» в контекстном меню), на клиенте clientVPN.ovpn. При необходимости изменяем тип запуска нашей службы(OpenVPN Service) на «Автоматически». Туннель поднят, можете смело заходить на работу, допустим по RDP. Адрес сервера в нашей виртуальной сети будет 192.168.0.1. Надеюсь, этот пост сократит время для настройки OpenVpn, даже для самых начинающих до нескольких минут.

пятница, 10 октября 2014 г.

Смена пароля root на сервере

Смена пароля root для операционной системы FreeBSD


Для того, чтобы сменить пароль root-а, Вам необходимо будет проделать следующие действия:
1. Загрузится в однопользовательском режиме (в меню загрузки системы, нажать "4" ).
2. Смонитировать корневую файловую систему ("/") в режиме чтения/записи
mount -u /
3. Смонтировать все остальные файловые системы UFS, перечисленные в файле /etc/fstab
mount -a
4. Сменить пароль пользователя и root-а командой
passwd
5. Перезагрузить сервер командой
reboot

Смена пароля root для операционной системы CentOS/Fedora/Debian:

Необходимо проделать следующие действия: 
1. При появлении приглашения GRUB'a со списком загружаемых ОС или вариантами загрузки перевести курсор на обычную
загрузку и нажать е (edit);
2. В новом окне выбрать строку с параметрами загрузки (самая длинная будет) и снова нажать е;
3. Дописать в конце строки init=/bin/bash;
4. Нажать b (boot) - произойдет загрузка с этими параметрами;
5. Если все правильно, появится приглашение вида root@...#, различное для разных дистрибутивов;
6. Перемонтировать корень для записи mount -n -o remount,rw / (по умолчанию в однопользовательском режиме корень
монтируется в режиме readonly (ro);
7. Сменить пароль через passwd
8. Перезагрузить сервер командой reboot, загружаясь в нормальном режиме.

Смена пароля root когда нет возможности использовать GRUB загрузчик:

Если вы не используете GRUB по каким-то причинам, вы можете восстановить пароль с помощью live CD. Просто следуйте дальнейшим инструкциям(На примере LiveCD Ubuntu):
1. Загрузитесь с live CD.
2. Выберите «Попробовать Ubuntu без изменений на вашем компьютере» (Try Ubuntu without any changes to your computer).
3. Когда система будет готова, запустите окно терминала и приготовьтесь к выполнению некоторых действий в командной строке.
4. Напечатайте в окне терминала sudo fdisk -l. В результате мы узнаем, в какой раздел диска установлен линукс и непосредственно имя самого жесткого диска, в представленном примере нужный нам раздел называется /dev/sda1 . Если вы точно знаете нужный раздел, этот шаг можно пропустить.
5. Далее нам нужно монтировать линукс-раздел. Для этого создайте папку, в качестве точки для монтирования, используя команду: sudo mkdir /media/linx_part
6. Примонтируйте линукс-раздел командой sudo mount /dev/sda1 /media/linx_part
7. Измените рута в примонтированном разделе — sudo chroot /media/sda1
8. Используйте passwd для изменения текущего пароля на новый.
9. Перезагрузите систему с помощью команды reboot.

понедельник, 15 сентября 2014 г.

Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования сервера терминалов

В одной фирме жил да был прекрасный сервер Windows Server 2012, купленный официально. Лицензии на терминальный доступ были тоже официальные, но работать в один из дней отказался. Домена на фирме нет, лицензии куплены были на доступ на устройства, а установлены в системе лицензии на пользователей.

Соответственно система через 120 дней работы сказала, что лицензий у фирмы нету. Плюс еще одна засада - если сеть без домена Active Directory, то лицензирование может быть только не устройства.

Делат надо вот что:
Заходим на сервер локально, или запускаем 
mstsc.exe /admin
Далее идем в 
Диспетчер серверов\Службы удаленных рабочих столов\Серверы
Проверили, что
1. Windows server 2012 активирован
2. Запущены службы: удаленных рабочих столов , лицензирования удаленных рабочих столов
Далее в
Диспетчер серверов\Локальный сервер
там должна быть ошибка 
Льготный период лицензирования удаленных рабочих столов истек, а служба не была зарегистрирована на сервере лицензирования с установленными лицензиями. Для постоянной работы необходим сервер лицензирования удаленных рабочих столов. Сервер узла сеансов удаленных рабочих столов может работать без сервера лицензирования в течение 120 дней со дня первоначального запуска.
и
не установлен режим лицензирования удаленных рабочих столов
Однако режим лицензирования установлен, а служба лицензирования настроена и сам сервер активирован.
Настраиваем локальные политики для серверов находящихся в рабочей группе. Запускаем gpedit.msc и изменяем соответствующие ключи:
Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Использовать указанные серверы лицензирования удаленных рабочих столов (добавляем имя нашего сервера или его ip адресс)

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Задать режим лицензирования удаленных рабочих столов (выбираем тип лицензий на устройство)

Англоязычный вариант:
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Use the specified Remote Desktop license servers (добавляем имя нашего сервера или его ip адресс)

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Set the Remote licensing mode (выбираем тип лицензий на устройство)
Важно! Если мы выберем режим лицензирования на пользователя то ошибка останется и сервер продолжить повторять что отсутствуют доступные серверы лицензирования , потому что в рабочей группе может быть только режима лицензирования на устройство.

Далее запускаем gpupdate, Далее нужно переполучить лицензии для сервера:
панель управления - администрирование - службы удаленных рабочих столов - Диспетчер лицензирования удаленных рабочих столов
открываем все серверы - кликаем правой кнопкой по нашему серверу - управление лицензиями 
далее - перестроить базу данных сервера лицензирования -  база данных лицензирования удаленных рабочих столов повреждена 
нажимайте галку подтвердить удаление лицензий установленых на этом сервере
далее повторно устанавливаете лицензии:
соглашение open license - вводите ваш номер авторизации и номер лицензии. Тип лицензий обязательно выбрать на устройство.

После этого осталось перезапустить сервер, хотя достаточно перезапустить службы
лицензирования удаленных рабочих столов
удаленные рабочих столов

После этих манипуляций все заработало.

вторник, 19 августа 2014 г.

Использование Metasploit + Nessus в Ubuntu



Nessus_Introduction

Введение

Задаетесь вопросом, как использовать autopwn в Metasploit в операционной системе Ubuntu Linux? Хотите запустить и использовать Nessus в составе Metasploit? Какую базу данных я использую - sqlite3 или postgres? В этой статье я собираюсь объяснить причины и преимущества всех этих вещей. Общие представления, которые будут здесь описаны, помогут вам выполнять различные задачи, используя nessus-сервер и сканер nmap из командной строки msf.
Как хорошо известно, Nmap является сканером для обнаружения уязвимостей. Программа абсолютно бесплатна для некоммерческого использования - к примеру, в качестве применения в домашних условиях. Но есть версия Nessus для коммерческих целей. В этой статье я буду описывать бесплатную версию этой программы, совместно с популярным Metasploit Framework. Для начала нам нужно получить последнюю версию программы Nessus под операционную систему Ubuntu - nessus-4.4.1-ubuntu1010_i386.deb и затем зарегистрировать ее на домашнем сайте программы. Регистрация нужна для получения кода активации, которая позволит в дальнейшем производить обновления базы данных эксплоитов.
Для установки и настройки Nessus в Ubuntu необходимо руководствоваться инструкцией, представленной здесь. После инсталляции активируем Nessus и переходим по ссылке http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-code, для того чтобы скачать сам плагин активации.
Запускаем плагин активации из командной строки:
$ sudo /opt/nessus/bin/nessus-fetch -register 'registration code from nessus'
Здесь registration code from nessus - это регистрационный ключ, полученный в электронном письме при активации продукта на сайте производителей.
Для успешной работы в программе Nessus необходимо создать и добавить нового пользователя в группу nessus с помощью скрипта:
$ sudo /opt/nessus/sbin/nessus-adduser
Затем создаем и устанавливаем сертификат в помощью еще одного скрипта:
$ sudo /opt/nessus/sbin/nessus-mkcert
Теперь нам осталось запустить демон программы Nessus:
$ sudo /etc/init.d/nessusd start
Открываем любой web-браузер, вводим в адресную строку https://localhost:8834 и заходим в саму программу Nessus. Необходимо настроить политики сканирования в программе. В данной статье я создам несколько политик на основе различных операционных систем, которые мы будем сканировать. Если вы собираетесь сканировать машины, на которых установлено Windows-окружение, то плагин для операционных систем Linux или BSD в вашем Nessus будет явно бесполезным. Вам также стоит проверить, включен ли у вас режим безопасной проверки, выбран ли порт для сканирования, прочтите рекомендации, выберите плагины и соответствующие настройки. После окончания всех этих процедур вы получите свою собственную политику (набор правил), которую можете обозначить под номером 1. Однако, если у вас будут иметься несколько политик, вам следует давать в качестве имен последних не числа, а имена (к примеру - для анализа Windows-окружения - "windows"). Это желательно делать во избежание путаницы. Теперь можете выйти из программы Nessus и закрыть web-браузер.
Следующим шагом открываем эмулятор терминала и в командной строке ищем, куда у нас был установлен metasploit. Нам, для начала, нужно его обновить:

Прежде чем мы перейдем дальше - к командной строке msfconsole фреймворка Metasploit, слегка отвлечемся от темы в сторону базы данных. В последнее время для работы с последними я использую sqlite3. Мною даже был создано небольшое руководство по работе с sqlite3, расположенное на моем сайте. Стоит заметить, что иногда sqlite3 работает прекрасно. Но иногда программа выдает ошибку: "Note that sqlite is not supported due to numerous issues. It may work, but don't count on it." Для работы с Metasploit рекомендуется использовать Postgres. Поэтому ставим базу данных postgres и все сопутствующие ей библиотеки.

Базы данных установлены. Для правильной работы фреймворка Metasploit необходимо запускать установленную базу данных до того, как будет запущен Metasploit:
$ sudo /etc/init.d/postgresql-8.4 start
Переходим под учетную запись пользователя базы данных Postgres:

Создаем новую учетную запись пользователя базы данных:
$ createuser  -P
Задаем пароль для созданного пользователя:

Теперь создаем саму базу данных:
$ createdb -owner=(user account name) msf_database
И только сейчас мы можем запустить фреймворк Metasploit:
: /opt/framework-3.6.0/msf3$ sudo ./msfconsole
Этой командой мы вошли в окружение Metasploit. Вводим следующие команды:

Выполненные выше шаги имели одну цель - теперь, используя sqlite3, создание и подключение базы данных выполняется очень легко. Запускаем Metasploit и набираем следующие команды:

Проверяем, подключилась ли база данных:
msf> db_hosts
Если все прошло нормально и никаких ошибок не появилось, можно использовать команду db_nmap. Но иногда случаются ошибки и происходит падение программы. Поэтому использование postgres является более обоснованным, чем sqlite3. Ниже я опишу, почему это еще и более полезно. Наконец, теперь можно активировать базу данных при старте, задав команду:

Теперь каждый раз, как вы запускаете Metasploit, созданная вами база данных автоматически также запускается и вы подключаетесь к ней. На всякий случай можно удостовериться в том, что Postgres запустились. Обычно я делаю это так - вручную запускаю postgres перед тем, как запустить Metasploit (см. скриншот Figure1):
Figure 1
Figure 1
Теперь, когда у нас есть postgres в качестве базы данных для Metasploit, давайте запустим Nessus. Открываем второй терминал и убеждаемся в том, что Nessus запущен. Если нет, то загружаем демон nessus:
msf > load nessus
Figure 2
Figure 2
Посмотрим, какие команды Nessus Bridge для Metasploit 1.1 мы можем использовать. Для этого набираем команду nessus_help (см. скриншот Figure 3).
msf > nessus_help
Figure 3
Figure 3
Все команды разбиты на различные секции, озаглавленные Generic, Reports, Scan, Plugin, User и Policy. Перед запуском процесса сканирования нам нужно подключить Nessus-server с помощью команды nessus_connect.
msf > nessus_connect (nessus username):(password)@localhost:8834 ok
Эта команда подключает и авторизовывает вас. В этом окружении вы можете производить сканирование, просмотр результатов, загружать результаты сканирования в базу данных и использовать надстройку autopwn. Вы также можете просматривать результаты и находить уязвимости в тех системах, которые вы сканируете. Можно запустить эксплоит и получить доступ к оболочке meterpreter. В зависимости от окружения можно анализировать вывод программы Nessus и находить соответствующие сплоиты для применения. Вместо того, чтобы производить шум, запуская autopwn.
Давайте запустим сканирование, выполнив команду nessus_scan по шаблону nessus_scan_new <policy id> (политика уже должна была быть настроена в установках Nessus Policy) (generic) (ip address):
msf > nessus_scan_new 1 winXP_home 192.168.1.124
Для того, чтобы удостовериться - Nessus запустился и производит сканирование, выполняем команду (как на скриншоте Figure 4):
msf > nessus_scan_status
Figure 4
Figure 4
После завершения сканирования смотрим результат командой:
msf > nessus_report_list
Давайте посмотрим список хостов из результата сканирования:
msf > nessus_report_hosts UID
Более подробная информация может быть получена командой:
msf > nessus_report_host_ports  UID
Вывод этих команд можно посмотреть на скриншоте Figure 5:
Figure 5
Figure 5
Для просмотра списка хостов в файле базы данных используем команду db_host. Если вам необходимо удалить какой-либо хост из базы файла данных db_hosts, выполняем команду db_del_host (как на скришоте Figure 6):
Figure 6
Figure 6
Загрузка результатов сканирования в базу данных выполняется командой:
msf > nessus+report_get UID
Теперь, когда основная работа выполнена - сканирование произведено и список хостов загружен в файл db_hosts базы данных, можно запустить утилиту autopwn или найти эксплоит, соответствующий для работы с выбранной машиной-жертвой. Более подробно я освещу этот вопрос несколько позже.
Теперь давайте рассмотрим вопрос использования программы nmap совместно с фреймворком Metasploit.
Использование nmap в составе Metasploit выполняется командой db_nmap. Запускается процесс сканирования целевых машин и результат сохраняется в базу данных. В дистрибутиве BackTrack я применяю несколько другие команды, например, такую:
db_nmap -sS -sV -T 3 -Po -O  -D RND --packet-trace
Здесь я применил опции: -sS TCP SYN для сканирования в режиме stealth; -sV - показ версии сканирования; -T 3 - нормальное сканирование; -O - обнаружение операционных систем; -D RND - использование приманки и генерирование случайного не зарезервированного IP-адреса; и, наконец, --packet-trace - отслеживание отправленных и полученных пакетов и данных. Я люблю применять опцию packet-trace при сканировании больших сетей, потому что, если что-то пошло не так, то вы всегда можете увидеть, что случилось. Эта опция просто великолепна, но к сожалению, я могу использовать ее только в окружении msfconsole. Находясь в операционной системе Unbuntu, я не могу ее использовать при подключении к базе данных postgres в качестве пользователя последней. Почему? Потому что я получаю ошибку, говорящую о том, что только суперпользователь root имеет возможность использовать эту опцию утилиты nmap (см. скриншот Figure 7).
Figure 7
Figure 7
Я не могу выполнить команду db_nmap -v -sV 192.168.15.0/24 --packet-trace, запустив тем самым сканирование и произведя вывод программы nmap. Так что я вынужден просматривать результаты следующими командами (см. скриншот Figure 8):
Figure 8
Figure 8
То есть, если я хочу произвести комплексное сканирование с помощью программы nmap, я должен выйти из окружения msfconsole, выйти из базы данных postgres, остановить последнюю, зайти под учетную запись, используя команду sudo и воспользоваться базой данных sqlite3. Теперь нужно запустить команду:
msf > db_nmap -sS -sV -T 4 -P0 -O 192.168.15.0/24 -D RND --packet-trace
Figure 9
Figure 9
Посмотрите на разницу результатов, полученную командами db_hosts и db_services -c port,state. Сравните различия на скриншотах Figure 10 и Figure 8.
Figure 10
Figure 10

Заключение

Данная статья является неплохим пособием в случае проверки целостности и отказоустойчивости сети, если вы работаете специалистом по компьютерной безопасности и имеете разрешение на выполнение подобных задач. Статья была написана именно с этой целью

Настройка и оптимизация MySQL сервера

нашел на просторах интернета

В этой статье будут описаны различные настройки MySQL, преимущественно те, которые влияют на производительность. Для удобства все переменные разделены по разделам (базовые настройки, ограничения, настройки потоки, кэширование запросов, тайминги, буферы, InnoDB). Сначала уточним имена некоторых переменных, которые изменились в версии 4 MySQL, а в сети продолжают встречаться и старые и новые варианты имен, что вызывает вопросы.


Итак, в 4 версии у ряда переменных появилось окончание _size. Это касается переменной thread_cache_size и переменных из раздела Буферы. А переменная read_buffer_size до версии 4 называлась record_buffer. Также переменная skip_external_locking из раздела Базовые настройки до версии 4 называлась skip_locking.
Переменные делятся на две основных категории: переменные со значениями и переменные-флаги. Переменные со значениями записываются в конфигурационном файле в виде variable = value, а переменные-флаги просто указываются. Также вы наверное заметили, что в некоторых случаях в названиях переменных используется "-", а в некоторых "_". Переменные с дефисом являются стартовыми опциями сервера и их нельзя изменить при работе сервера (при помощи SET); переменные с подчеркиванием являются опциями работы сервера и их возможно изменять на лету. Если речь идет о «переменной состояния» или рекомендуется наблюдать за значением переменной, название которой записано в виде Variable_Name, то следует выполнять запрос SHOW STATUS LIKE "Variable_Name" для получения значения этой переменной, либо заглянуть на вкладку состояние в phpMyAdmin, где дополнительно будут комментарии по значению этой переменной.
А теперь займемся описанием переменных и их возможными значениями.

Базовые настройки


  • low-priority-updates — эта опция снижает приоритет операций INSERT/UPDATE по сравнению с SELECT. Актуально, если данные важно быстрее прочитать, чем быстрее записать.
  • skip-external-locking — опция установлена по умолчанию, начиная с версии 4. Указывает MySQL-серверу не использовать внешние блокировки при работе с базой. Внешние блокировки необходимы в ситуациях, когда несколько серверов работают с одними и теми же файлами данных, т.е. имеют одинаковую datadir, что на практике не используется.
  • skip-name-resolve — не определять доменные имена для IP-адресов подключающихся клиентов. При этом пользовательские разрешения нужно настраивать не на хосты, а на IP-адреса (за исключением localhost). Если вы соединяетесь с сервером только с локальной машины, то особого значения не имеет. Для внешних соединений ускорит установку соединения.
  • skip-networking — не использовать сеть, т.е. вообще не обрабатывать TCP/IP соединения. Общение с сервером при этом будет происходить исключительно через сокет. Рекомендуется, если у вас нет ПО, которое использует только TCP/IP для связи с сервером.

Ограничения


  • bind-address — интерфейс, который будет слушать сервер. В целях безопасности рекомендуется установить здесь 127.0.0.1, если вы не используете внешние соединения с сервером.
  • max_allowed_packet — максимальный размер данных, которые могут быть переданы за один запрос. Следует увеличить, если столкнетесь с ошибкой «Packet too large».
  • max_connections — максимальное количество параллельных соединений к серверу. Увеличьте его, если сталкиваетесь с проблемой «Too many connections».
  • max_join_size — запрещает SELECT операторы, которые предположительно будут анализировать более указанного числа строк или больше указанного числа поисков по диску. Используется для защиты от кривых запросов, которые пытаются считать миллионы строк. Значение по умолчанию более 4 миллиардов, поэтому вы скорее всего захотите его значительно уменьшить.
  • max_sort_length — указывает, сколько байт из начала полей типа BLOB или TEXT использовать при сортировке. Значение по умолчанию 1024, если вы опасаетесь некорректно спроектированных таблиц или запросов, то следует его уменьшить.

Настройки потоков


  • thread_cache_size — указывает число кэшируемых потоков. После обработки запроса сервер не будет завершать поток, а разместит его в кэше, если число потоков, находящих в кэше меньше, чем указанное значение. Значение по умолчанию 0, увеличьте его до 8 или сразу до 16. Если наблюдается рост значения переменной состояния Threads_Created, то следует еще увеличитьthread_cache_size.
  • thread_concurrency — актуально только для Solaris/SunOS вопреки тому, что пишут в сети. «Подсказывает» системе сколько потоков запускать одновременно, выполняя вызов функцииthr_setconcurrency. Рекомендованное значение — двойное или утроенное число ядер процессора.

Кэширование запросов


  • query_cache_limit — максимальный размер кэшируемого запроса.
  • query_cache_min_res_unit — минимальный размер хранимого в кэше блока.
  • query_cache_size — размер кэша. 0 отключает использование кэша. Для выбора оптимального значения необходимо наблюдать за переменной состояния Qcache_lowmem_prunes и добиться, чтобы ее значение увеличивалось незначительно. Также нужно помнить, что излишне большой кэш будет создавать ненужную нагрузку.
  • query_cache_type — (OFF, DEMAND, ON). OFF отключает кэширование, DEMAND – кэширование будет производиться только при наличии директивы SQL_CACHE в запросе, ON включает кэширование.
  • query_cache_wlock_invalidate — определяет будут ли данные браться из кеша, если таблица, к которым они относятся, заблокирована на чтение.

Кэш запросов можно представить себе как хэш-массив, ключами которого являются запросы, а значениями — результаты запросов. Кроме результатов, MySQL хранит в кэше список таблиц, выборка из которых закэширована. Если в любой из таблиц, выборка из которой есть в кэше, проиcходят изменения, то MySQL удаляет из кэша такие выборки. Также MySQL не кеширует запросы, результаты которых могут измениться.
При запуске MySQL выделяет блок памяти размером в query_cache_size. При выполнении запроса, как только получены первые строки результата сервер начинает кэшировать их: он выделяет в кэше блок памяти, равный query_cache_min_res_unit, записывает в него результат выборки. Если не вся выборка поместилась в блок, то сервер выделяет следующий блок и так далее. В момент начала записи MySQL не знает о размере получившейся выборки, поэтому если записанный в кэш размер выборки больше, чем query_cache_limit, то запись прекращается и занятое место освобождается, следовательно, если вы знаете наперед, что результат выборки будет большим, стоит выполнять его с директивой SQL_NO_CACHE.

Тайминги


  • interactive_timeout — время в секундах, в течение которого сервер ожидает активности со стороны интерактивного соединения (использующего флаг CLIENT_INTERACTIVE), прежде чем закрыть его.
  • log_slow_queries — указывает серверу логировать долгие («медленные») запросы (выполняющиеся дольше long_query_time). В качестве значения передается полное имя файла (например /var/log/slow_queries).
  • long_query_time — если запрос выполняется дольше указанного времени (в секундах), то он будет считаться «медленным».
  • net_read_timeout — время в секундах, в течение которого сервер будет ожидать получения данных, прежде чем соединение будет прервано. Если сервер не обслуживает клиентов с очень медленными или нестабильными каналами, то 15 секунд здесь будет достаточно.
  • net_write_timeout — время в секундах, в течение которого сервер будет ожидать получения данных, прежде чем соединение будет прервано. Если сервер не обслуживает клиентов с очень медленными или нестабильными каналами, то 15 секунд здесь будет достаточно.
  • wait_timeout — время в секундах, в течение которого сервер ожидает активности соединения, прежде чем прервет его. В общем случае 30 секунд будет достаточно.

Буферы


У всех буферов есть общая черта — если из-за установки большого размера буфера данные будут уходить в файл подкачки, то от буфера будет больше вреда, чем пользы. Поэтому всегда ориентируйтесь на доступный вам объем физической ОЗУ.
  • key_buffer_size — размер буфера, выделяемого под индексы и доступного всем потокам. Весьма важная настройка, влияющая на производительность. Значение по умолчанию 8 МБ, его однозначно стоит увеличить. Рекомендуется 15-30% от общего объема ОЗУ, однако нет смысла устанавливать больше, чем общий размер всех .MYI файлов. Наблюдайте за переменными состояния Key_reads и Key_read_requests, отношение Key_reads/Key_read_requests должно быть как можно меньше (< 0,01). Если это отношение велико, то размер буфера стоит увеличить.
  • max_heap_table_size — максимальный допустимый размер таблицы, хранящейся в памяти (типа MEMORY). Значение по умолчанию 16 МБ, если вы не используете MEMORY таблиц, то установите это значение равным tmp_table_size.
  • myisam_sort_buffer_size — размер буфера, выделяемого MyISAM для сортировки индексов приREPAIR TABLE или для создания индексов при CREATE INDEX, ALTER TABLE. Значение по умолчанию 8 МБ, его стоит увеличить вплоть до 30-40% ОЗУ. Выигрыш в производительности соответственно будет только при выполнении вышеупомянутых запросов.
  • net_buffer_length — объем памяти, выделяемый для буфера соединения и для буфера результатов на каждый поток. Буфер соединения будет указанного размера и буфер результатов будет такого же размера, т.е. на каждый поток будет выделен двойной размерnet_buffer_length. Указанное значение является начальным и при необходимости буферы будут увеличиваться вплоть до max_allowed_packet. Размер по умолчанию 16 КБ. В случае ограниченной памяти или использования только небольших запросов значение можно уменьшить. В случае же постоянного использования больших запросов и достаточного объема памяти, значение стоит увеличить до предполагаемого среднего размера запроса.
  • read_buffer_size — каждый поток при последовательном сканировании таблиц выделяет указанный объем памяти для каждой таблицы. Как показывают тесты, это значение не следует особо увеличивать. Размер по умолчанию 128 КБ, попробуйте увеличить его до 256 КБ, а затем до 512 КБ и понаблюдайте за скоростью выполнения запросов типа SELECT COUNT(*) FROM table WHERE expr LIKE "a%"; на больших таблицах.
  • read_rnd_buffer_size — актуально для запросов с "ORDER BY", т.е. для запросов, результат которых должен быть отсортирован и которые обращаются к таблице, имеющей индексы. Значение по умолчанию 256 КБ, увеличьте его до 1 МБ или выше, если позволяет память. Учтите, что указанное значение памяти также выделяется на каждый поток.
  • sort_buffer_size — каждый поток, производящий операции сортировки (ORDER BY) или группировки (GROUP BY), выделяет буфер указанного размера. Значение по умолчанию 2 МБ, если вы используете указанные типы запросов и если позволяет память, то значение стоит увеличить. Большое значение переменной состояния Sort_merge_passes указывает на необходимость увеличения sort_buffer_size. Также стоит проверить скорость выполнения запросов вида SELECT * FROM table ORDER BY name DESC на больших таблицах, возможно увеличение буфера лишь замедлит работу (в некоторых тестах это так).
  • table_cache (table_open_cache с версии 5.1.3) — количество кэшированных открытых таблиц для всех потоков. Открытие файла таблицы может быть достаточно ресурсоемкой операцией, поэтому лучше держать открытые таблицы в кэше. Следует учесть, что каждая запись в этом кэше использует системный дескриптор, поэтому возможно придется увеличивать ограничения на количество дескрипторов (ulimit). Значение по умолчанию 64, его лучше всего увеличить до общего количества таблиц, если их количество в допустимых рамках. Переменная состояния Opened_tables позволяет отслеживать число таблиц, открытых в обход кэша, желательно, чтобы ее значение было как можно ниже.
  • tmp_table_size — максимальный размер памяти, выделяемой для временных таблиц, создаваемых MySQL для своих внутренних нужд. Это значение также ограничивается переменной max_heap_table_size, поэтому в итоге будет выбрано минимальное значение из max_heap_table_size и tmp_table_size, а остальные временные таблицы будут создаваться на диске. Значение по умолчанию зависит от системы, попробуйте установить его равным 32 МБ и понаблюдать за переменной состояния Created_tmp_disk_tables, ее значение должно быть как можно меньше.

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

InnoDB


  • innodb_additional_mem_pool_size — размер памяти, выделяемый InnoDB для хранения различных внутренних структур. Если InnoDB будет недостаточно этой памяти, то будет запрошена память у ОС и записано предупреждение в лог ошибок MySQL.
  • innodb_buffer_pool_size — размер памяти, выделяемый InnoDB для хранения и индексов и данных. Значение — чем больше, тем лучше. Можно увеличивать вплоть до общего размера всех InnoDB таблиц или до 80% ОЗУ, в зависимости от того, что меньше.
  • innodb_flush_log_at_trx_commit — имеет три допустимых значения: 0, 1, 2. При значении равном 0, лог сбрасывается на диск один раз в секунду, вне зависимости от происходящих транзакций. При значении равном 1, лог сбрасывается на диск при каждой транзакции. При значении равном 2, лог пишется при каждой транзакции, но не сбрасывается на диск никогда, оставляя это на совести ОС. По умолчанию используется 1, что является самой надежной настройкой, но не самой быстрой. В общем случае вы можете смело использовать 2, данные могут быть утеряны лишь в случае краха ОС и лишь за несколько секунд (зависит от настроек ОС). 0 — самый быстрый режим, но данные могут быть утеряны как при крахе ОС, так и при крахе самого сервера MySQL (впрочем данные лишь за 1-2 секунды).
  • innodb_log_buffer_size — размер буфера лога. Значение по умолчанию 1 МБ, увеличивать его стоит, если вы знаете, что будет большое количество транзакций InnoDB или если значение переменной состояния Innodb_log_waits растет. Вам вряд ли придется увеличивать его выше 8 МБ.
  • innodb_log_file_size — максимальный размер одного лог-файла. При достижении этого размера InnoDB будет создавать новый файл. Значение по умолчанию 5 МБ, увеличение размера улучшит производительность, но увеличит время восстановления данных. Установите это значение в диапазоне 32 МБ — 512 МБ в зависимости от размера сервера (оценив его субъективно).

Также для мониторинга работы сервера удобно использовать phpMyAdmin, интерес представляют вкладки Состояние и Переменные. Дополнительно phpMyAdmin дает советы по тюнингу тех или иных переменных в зависимости от параметров работы сервера.
При подготовке статьи кроме официальной документации и собственной головы были использованы следующие материалы: