Разместить рекламу в интернете esmoney.ru


Системы безопасности.
Статьи,Законы.
Услуги,Помощь.
Катера,Запчасти.
Фото,Видео,Аудио.
Программирование. Программирование.
Настройка
Примеры.
  • « Подключение к интернету. »
  • « Как защитить свой форум. »
  • « Как сделать свой сайт. »
  • « FTP-команды. »
  • « Как сделать html страничку. »
  • « Ваш IP адрес ,Ваш броузер. »
  • « Создание сайта,сделать сайт. »


Информация.



Общие принципы обеспечения безопасности

Общие принципы обеспечения безопасности

4.2.1 Общие принципы обеспечения безопасности С данным разделом должны ознакомиться все, кто использует MySQL на компьютерах, подключенных к Internet, - чтобы избежать наиболее распространенных ошибок, приводящих к нарушению безопасности системы.
При обсуждении вопросов безопасности мы акцентируем внимание на необходимости защиты всего серверного хоста (а не одного лишь сервера MySQL) от всех возможных типов атак: перехвата, внесения изменений, считывания и отказа в обслуживании. Данный раздел не охватывает всех аспектов готовности к работе и отказоустойчивости.
Используемая в MySQL система безопасности для всех подключений, запросов и иных операций, которые может пытаться выполнить пользователь, базируется на списках контроля доступа ACLs (Access Control Lists). Обеспечивается также некоторая поддержка SSL-соединений между клиентами и серверами MySQL. Многие из рассматриваемых здесь концепций не относятся исключительно к MySQL; те же общие соображения применимы практически ко всем приложениям.
При работе в MySQL старайтесь следовать приведенным ниже инструкциям:
Не предоставляйте никому (за исключением пользователя mysql под именем root) доступа к таблице user в базе данных mysql! Это чрезвычайно важно. В MySQL зашифрованный пароль является реальным паролем. Узнав пароль, занесенный в таблицу user, и имея доступ к удаленному компьютеру, занесенному в соответствующую учетную запись, войти в систему под именем зарегистрированного владельца пароля легко может кто угодно. Изучите систему прав доступа MySQL. Для управления доступом к MySQL служат команды GRANT и REVOKE. Предоставляйте ровно столько прав, сколько необходимо, и не больше. Никогда не предоставляйте права всем хостам. Полезно проводить следующие контрольные проверки: Выполните команду mysql -u root. Если удается успешно установить соединение с сервером без получения запроса пароля, значит, у вас имеются проблемы. Это означает, что кто угодно может подсоединиться к вашему серверу MySQL как клиент MySQL под именем root, получая таким образом право неограниченного доступа! Проанализируйте инструкцию по инсталляции MySQL, обращая особое внимание на ту часть, которая касается задания пароля пользователя root. С помощью команды SHOW GRANTS проверьте, кто и к каким ресурсам имеет доступ. Воспользуйтесь командой REVOKE, отмените права доступа, которые не являются необходимыми. Не храните в базе данных незашифрованных паролей. Если злоумышленнику удастся получить доступ на ваш компьютер, то в его руках окажется полный список паролей, которыми он может воспользоваться. Применяйте для шифрования MD5(), SHA1() или другие односторонние хеш-функции. Не используйте в качестве пароля слова из словарей. Для взлома такого рода паролей имеются специальные программы. Даже слова типа ``xfish98'' - это очень плохие пароли. Куда лучше ``duag98'': здесь используется то же слово ``fish'', но при этом буквы в нем заменены ближайшими к ним слева буквами клавиатуры QWERTY. Еще один метод - составить парольное слово из первых букв слов какого либо словосочетания, например ``Mhall'' - по фразе ``Mary had a little lamb.'' Такой пароль легко запоминается и его легко вводить. А вот разгадать его тому, кто не знает ключевой фразы, будет непросто. Приобретите брандмауэр. Эта мера обеспечит защиту как минимум от половины всех видов несанкционированного использования любого ПО, с которым вы работаете. Разместите MySQL за брандмауэром или в демилитаризованной зоне (demilitarised zone - DMZ). Полезно проводить следующие контрольные проверки: Попробуйте просканировать ваши порты из Internet с помощью утилиты типа nmap. MySQL использует по умолчанию порт 3306. Этот порт должен быть недоступен с неблагонадежных компьютеров. Еще один простой способ проверить, открыт или нет ваш MySQL-порт, - попытаться выполнить с какой либо удаленной машины следующую команду, где server_host - имя хоста, на котором установлен ваш сервер MySQL: shell> telnet server_host 3306

Если соединение будет установлено, и вы получите какие-либо бессмысленные символы, это будет означать, что порт открыт, и его нужно закрыть на брандмауэре или маршрутизаторе (если, конечно, нет действительно веских причин держать его открытым). Если же telnet просто зависнет или в подсоединении будет отказано, тогда все в порядке: порт заблокирован. Не доверяйте никаким данным, которые вводят пользователи. Возможны попытки перехитрить вашу программу путем ввода последовательностей специальных или экранированных символов в веб-формы, URL-ы или любое приложение, созданное вами. Убедитесь, что защита вашего приложения не будет нарушена, если пользователь введет что-нибудь типа "'; DROP DATABASE mysql;''. Это крайний случай, но действия хакеров, использующих подобную технологию, могут привести к потере информации и появлению брешей в системе безопасности, если вы не готовы к ним. Не следует также забывать о необходимости проверки цифровых данных (распространенной ошибкой является защита только строк). Некоторые полагают, что если в базе данных хранятся только открытые данные, то в ее защите нет необходимости. Это неверно. Такие базы могут стать объектом успешных атак типа отказа от обслуживания. Простейший способ защиты от взломов такого типа - заключать числовые константы в кавычки: SELECT * FROM table WHERE ID='234', а не SELECT * FROM table WHERE ID=234. MySQL автоматически преобразует эту строку в число и выбросит из нее все нецифровые символы. Полезно проводить следующие контрольные проверки: Для всех веб-приложений:
Попробуйте ввести во все ваши веб-формы одинарные и двойные кавычки - `'' и `"'. Если MySQL выдаст любое сообщение об ошибке, немедленно разберитесь, в чем дело.
Попробуйте видоизменять динамические URL, добавляя в них %22 (`"'), %23 (`#'), и %27 (`'').
Попробуйте модифицировать типы данных в динамических URL - замените числовые на символьные, используя символы из предыдущих примеров. Ваше приложение должно быть устойчиво к подобного рода атакам.
Попробуйте вводить в числовые поля вместо цифр буквы, пробелы и специальные символы. Ваше приложение должно либо удалять их до передачи в MySQL, либо выдавать сообщение об ошибке. Пропускать в MySQL значения без проверки очень опасно!
Проверяйте размер данных перед тем, как они будут переданы в MySQL.
При подключении приложения к базе данных лучше использовать имя пользователя, отличное от того, которое вы используете для целей администрирования. Не предоставляйте своим приложениям больше прав доступа, чем это необходимо.

Пользователям PHP: Проверьте функцию addslashes(). Что касается PHP 4.0.3, то в нем имеется функция mysql_escape_string(), базирующаяся на функции с тем же именем из MySQL C API. Пользователям MySQL C API: Проверьте API-вызов mysql_real_escape_string(). Пользователям MySQL++: Проверьте такие модификаторы, как escape и quote, - для потоков запросов. Пользователям Perl DBI: Проверьте метод quote() или используйте для проверки заполнители. Пользователям Java JDBC: Используйте для проверки объект PreparedStatement и символы-заполнители. Не передавайте по Internet открытые (незашифрованные) данные. Они могут оказаться у кого угодно, имеющего достаточно времени и возможностей для того, чтобы перехватить их и использовать в своих целях. Используйте вместо этого протоколы с шифрованием данных, такие как SSL и SSH. MySQL, начиная с версии 4.0.0, поддерживает собственные SSL-соединения. Пересылка по SSH (SSH Port Forwarding) может быть использована для создания туннеля передачи данных с шифрованием и сжатием. Научитесь пользоваться утилитами tcpdump и strings. В большинстве случаев проверить, являются ли потоки данных MySQL зашифрованными, можно с помощью команды, подобной той, которая приведена ниже: shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings

(Она работает под Linux, и будет, с незначительными изменениями, работать под другими системами.) Предупреждение: если вы не видите данных, это еще не гарантирует того, что они зашифрованы. Если требуется высокий уровень безопасности, обратитесь к экспертам в этой области.

4.2.2 Как обезопасить MySQL от хакеров
При подключении к серверу MySQL используется, как правило, пароль. По линии связи пароль не передается в виде открытого текста, но алгоритм шифрования не очень сложный. Толковый хакер, если ему удастся перехватить трафик между клиентом и сервером, при определенной настойчивости может взломать пароль. Поэтому если связь между клиентом и сервером осуществляется по ненадежной сети, для шифрования связи следует использовать SSH-туннель.
Вся остальная информация передается в текстовом виде и может быть прочитана кем угодно, кто в состоянии отлеживать подключение. Если это вас беспокоит, можно воспользоваться протоколом со сжатием данных (в MySQL 3.22 и последующих версиях), что значительно затруднит подобные действия. Чтобы еще более повысить безопасность связи, следует использовать протокол ssh. Open source-клиент ssh доступен на веб-сайте http://www.openssh.org/, а коммерческий ssh-клиент можно получить на веб-сайте http://www.ssh.com/. С помощью такого протокола можно обеспечить зашифрованную связь по протоколу TCP/IP между сервером MySQL и клиентом MySQL.
Если вы используете MySQL 4.0, то можете также использовать предусмотренную в этой версии поддержку протокола OpenSSL. Обратитесь к разделу See section 4.3.9 Использование безопасных соединений. Для обеспечения безопасности MySQL-системы необходимо строго придерживаться следующих рекомендаций: У всех пользователей MySQL должны быть пароли. Для приложений клиент/сервер является общепринятым, что клиент может указывать любое имя пользователя, но если для other_user не задан пароль, то кто угодно может зайти под любым именем, просто введя mysql -u other_user db_name. Чтобы этого избежать, можно изменить пароль для всех пользователей, отредактировав скрипт mysql_install_db перед запуском приложения, или только пароль для root-пользователя MySQL, как это показано ниже: shell> mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root'; mysql> FLUSH PRIVILEGES;
Не запускайте демон MySQL от имени пользователя Unix root. Это очень опасно, потому что любой пользователь, имеющий привилегию FILE, будет в состоянии создавать файлы как пользователь root (например ~root/.bashrc). Чтобы предотвратить это, mysqld откажется запускаться от имени пользователя root, если это не будет задано напрямую с помощью опции --user=root. В то же время mysqld может быть запущена от имени обычного непривилегированного пользователя. Можно также, в целях еще большего укрепления безопасности, создать новый аккаунт Unix-пользователя mysql. При запуске mysqld от имени другого пользователя Unix у вас отпадает необходимость заменять имя пользователя root в таблице user, так как имена пользователя в MySQL не имеют ничего общего с аккаунтами пользователей Unix. Для запуска mysqld от имени другого пользователя Unix добавьте в группу [mysqld] файла опций `/etc/my.cnf' или файла опций `my.cnf', находящегося в каталоге данных сервера, строку user, задающую имя пользователя. Например: [mysqld] user=mysql
В результате сервер будет запущен от имени назначенного пользователя, независимо от того, производится запуск вручную или посредством safe_mysqld или mysql.server. Для получения дополнительной информации обратитесь к разделу See section A.3.2 Запуск MySQL от обычного пользователя. Откажитесь от поддержки символических ссылок на таблицы (ее можно запретить с помощью опции --skip-symlink). Это особенно важно в том случае, если вы запускаете mysqld от имени пользователя root, поскольку у того, кто имеет право доступа для записи в каталоги данных mysqld, появляется возможность стереть любой файл в системе! Обратитесь к разделу See section 5.6.1.2 Использование символических ссылок для таблиц. Удостоверьтесь, что пользователь Unix, от имени которого запускается mysqld, является единственным пользователем, имеющим привилегии чтения/записи в директории базы данных. Не предоставляйте привилегии PROCESS всем пользователям. Команда mysqladmin processlist выводит текст запросов, обрабатываемых в данный момент. Следовательно, любой пользователь, имеющий право на выполнение этой команды, получает возможность прочитать, например, такой запрос другого пользователя, как UPDATE user SET password=PASSWORD('not_secure'). mysqld резервирует добавочное подключение для пользователей, имеющих привилегию PROCESS, так что пользователь MySQL под именем root может подключиться и осуществлять контроль даже в том случае, когда все обычные подключения заняты. Не предоставляйте привилегии FILE всем пользователям. Любой пользователь, имеющий такую привилегию, может записать в любом месте файловой системы файл с привилегиями демона mysqld! Чтобы обеспечить здесь хоть минимальную защиту, все файлы создаваемые с помощью команды SELECT ... INTO OUTFILE, сделаны общедоступными для записи, но перезаписать существующие файлы нельзя. Привилегия FILE может быть также использована для чтения любого файла, доступного пользователю Unix, от имени которого запускается сервер. Можно также прочитать любой файл в текущую базу данных. Это может быть использовано в корыстных целях. Возможно, например, с помощью команды LOAD DATA загрузить `/etc/passwd' в таблицу и прочесть ее позже с помощью SELECT. Если вы не доверяете своему DNS-серверу, используйте в таблицах привилегий вместо имен хостов IP-адреса. В любом случае следует очень осторожно относиться к внесению в таблицы привилегий записей, в которых значения имени хоста содержат шаблонные символы! Чтобы ограничить число подключений, доступных для отдельного пользователя, можно в mysqld задать значение переменной max_user_connections.

4.2.3 Опции запуска mysqld, относящиеся к безопасности К безопасности имеют отношение следующие опции mysqld:
--local-infile[=(0|1)] При установке опции --local-infile=0 теряется возможность выполнять команду LOAD DATA LOCAL INFILE. --safe-show-database Если установлена эта опция, команда SHOW DATABASES возвращает только те базы данных, для которых пользователь имеет какую-либо привилегию. Начиная с версии 4.0.2 эта опция отменена и не служит ни для чего (она включена по умолчанию), т.к. сейчас у нас имеется привилегия SHOW DATABASES. Обратитесь к разделу See section 4.3.1 Синтаксис команд GRANT и REVOKE. --safe-user-create При установке этой опции пользователь не может создавать новых пользователей с помощью команды GRANT, если у него отсутствует привилегия INSERT для таблицы mysql.user. Чтобы предоставить пользователю доступ именно для создания новых пользователей с теми привилегиями, которые он имеет право предоставлять, для этого пользователя следует установить следующую привилегию: mysql> GRANT INSERT(user) ON mysql.user TO 'user'&hacute;ostname';

Задание такой привилегии гарантирует, что этот пользователь не сможет непосредственно вносить изменения ни в одном из столбцов привилегий, а для предоставления привилегий другим пользователям должен будет использовать команду GRANT. --skip-grant-tables Установка этой опции запрещает серверу вообще использовать систему привилегий. Это открывает кому бы то ни было полный доступ ко всем базам данных! (После запуска сервера можно заставить его снова использовать таблицы привилегий с помощью команды mysqladmin flush-privileges или mysqladmin reload.) --skip-name-resolve При установке данной опции имена хостов не разрешены. Все значения в столбцах Host таблиц привилегий должны быть либо IP-адресами, либо localhost. --skip-networking Не разрешает осуществлять подсоединений по протоколу TCP/IP через сеть (данная опция запрещает такие подсоединения). Все подсоединения к mysqld должны осуществляться посредством сокетов Unix. Для MySQL старше 3.23.27 эта опция непригодна для систем, в которых используются MIT-потоки, так как MIT-потоки на тот момент не поддерживали сокеты Unix. --skip-show-database Разрешает выполнение команды SHOW DATABASES только в том случае, если пользователь имеет привилегию SHOW DATABASES. Начиная с версии 4.0.2 в этой опции больше нет необходимости, т.к. теперь доступ может предоставляться избирательно с помощью привилегии SHOW DATABASES.

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

Добро пожаловать! Наши проекты,партнёры.

Информационный портал. Инструкции. www.kamera24.ru
Системы Безопасности и контроля доступа. www.comkvb.ru
Познавательно-поучительный ресурс. Web-программирование. newsip.ru
Рецептурный ресурс. www.recept.newsip.ru
Катера,Моторы. http://www.kater.kamera24.ru
Авто ресурс. http://auto.kamera24.ru
php

«Все вопросы пишите на форуме.»
  Форум.forum.newsip.ru
« Вопросы по работе сайта:»
  [email protected]  
   Заказать разработку сайта!


  • Установить видеонаблюдение.
  • Если Вы хотите установить систему видеонаблюдения.
    Мы предлагаем различные варианты монтажа систем видеонаблюдения.
    Установить видеонаблюдение www.kamera24.ru

  • Помощь в создании сайта.

  • Разработка сайта:
    Помощь начинающим в создании и продвижении собственного сайта. Помощь в создании сайта

  • Ссылка на сайт newsip.ru

  • При использовании печатных материалов с сайта активная ссылка на сайт Ссылка на сайт newsip.ru обязательна.
    Приглашаем к сотрудничеству!

    newsip.ru

  • Работа программисту PHP и HTML

  • «Постоянная и временная занятость Понимание современных тенденций в WEB разработке»
    Работа для программиста.
  • Как защитить Web-портал.

  • Web-портал, как правило, включает в себя следующие основные компоненты:
    Как защитить Web-портал
Регистратор доменов.
Читать.
Партнёрам.
www.comkvb.ru
kamera24
Катера,Моторы.
auto.kamera24.ru
«Все вопросы пишите на форуме.»
  Форум.forum.newsip.ru
« Вопросы по работе сайта:»
  [email protected]  
   Заказать разработку сайта!

newsip.ru