Главная страница
Навигация по странице:

  • Основные команды

  • Vagrant продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации


    Скачать 435 Kb.
    НазваниеVagrant продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации
    Дата03.12.2021
    Размер435 Kb.
    Формат файлаdoc
    Имя файлаVagrant.doc
    ТипДокументы
    #290205
    страница5 из 5
    1   2   3   4   5

    Скрипт безопасности MySQL

    У нас есть небольшая проблема с сервером MySQL — не задан пароль для root. Кроме того, пользователь root не может может подключаться по паролю, а только с помощью плагина auth_socket.

    Чтобы это исправить, нужно выполнить скрипт безопасности. После запуска скрипт задает вопросы и нам надо на них ответить:

    # mysql_secure_installationКопировать

    • Would you like to setup VALIDATE PASSWORD plugin?

    • Please set the password for root here.

    • Re-enter new password.

    • Remove anonymous users?

    • Disallow root login remotely?

    • Remove test database and access to it?

    • Reload privilege tables now?

    В этом нам поможет expect — инструмент, который позволяет создать скрипт, который ответит на вопросы от скрипта безопасности MySQL. Подключимся к виртуальной машине по ssh и установим expect:

    # apt install expectКопировать

    Вместе с expect будет установлен и autoexpect. Он позволяет запускать скрипты, которые надо автоматизировать, после чего записывает то, что они выводят, и то, что пользователь вводит, отвечая на их вопросы. Так что запускаем и отвечаем на вопросы:

    # cd /var/www # результат работы autoexpect будет в директрии d:/vagrant/www хост-машины

    # autoexpect mysql_secure_installationКопировать

    После завершения работы autoexpect сообщит о том, что собранные данные записаны в файл script.exp.

    #!/usr/bin/expect -f

    #

    # This Expect script was generated by autoexpect on Sun Nov 24 09:32:55 2019

    # Expect and autoexpect were both written by Don Libes, NIST.

    #

    # Note that autoexpect does not guarantee a working script. It

    # necessarily has to guess about certain things. Two reasons a script

    # might fail are:

    #

    # 1) timing - A surprising number of programs (rn, ksh, zsh, telnet,

    # etc.) and devices discard or ignore keystrokes that arrive "too

    # quickly" after prompts. If you find your new script hanging up at

    # one spot, try adding a short sleep just before the previous send.

    # Setting "force_conservative" to 1 (see below) makes Expect do this

    # automatically - pausing briefly before sending each character. This

    # pacifies every program I know of. The -c flag makes the script do

    # this in the first place. The -C flag allows you to define a

    # character to toggle this mode off and on.
    set force_conservative 0; # set to 1 to force conservative mode even if

    ; # script was not run conservatively originally

    if {$force_conservative} {

    set send_slow {1 .1}

    proc send {ignore arg} {

    sleep .1

    exp_send -s -- $arg

    }

    }
    #

    # 2) differing output - Some programs produce different output each time

    # they run. The "date" command is an obvious example. Another is

    # ftp, if it produces throughput statistics at the end of a file

    # transfer. If this causes a problem, delete these patterns or replace

    # them with wildcards. An alternative is to use the -p flag (for

    # "prompt") which makes Expect only look for the last line of output

    # (i.e., the prompt). The -P flag allows you to define a character to

    # toggle this mode off and on.

    #

    # Read the man page for more info.

    #

    # -Don

    set timeout -1

    spawn mysql_secure_installation

    match_max 100000

    expect -exact "\r

    Securing the MySQL server deployment.\r

    \r

    Connecting to MySQL using a blank password.\r

    \r

    VALIDATE PASSWORD PLUGIN can be used to test passwords\r

    and improve security. It checks the strength of password\r

    and allows the users to set only those passwords which are\r

    secure enough. Would you like to setup VALIDATE PASSWORD plugin?\r

    \r

    Press y|Y for Yes, any other key for No: "

    send -- "N\r"

    expect -exact "N\r

    Please set the password for root here.\r

    \r

    New password: "

    send -- "qwerty\r"

    expect -exact "\r

    \r

    Re-enter new password: "

    send -- "qwerty\r"

    expect -exact "\r

    By default, a MySQL installation has an anonymous user,\r

    allowing anyone to log into MySQL without having to have\r

    a user account created for them. This is intended only for\r

    testing, and to make the installation go a bit smoother.\r

    You should remove them before moving into a production\r

    environment.\r

    \r

    Remove anonymous users? (Press y|Y for Yes, any other key for No) : "

    send -- "Y\r"

    expect -exact "Y\r

    Success.\r

    \r

    \r

    Normally, root should only be allowed to connect from\r

    'localhost'. This ensures that someone cannot guess at\r

    the root password from the network.\r

    \r

    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : "

    send -- "Y\r"

    expect -exact "Y\r

    Success.\r

    \r

    By default, MySQL comes with a database named 'test' that\r

    anyone can access. This is also intended only for testing,\r

    and should be removed before moving into a production\r

    environment.\r

    \r

    \r

    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : "

    send -- "Y\r"

    expect -exact "Y\r

    - Dropping test database...\r

    Success.\r

    \r

    - Removing privileges on test database...\r

    Success.\r

    \r

    Reloading the privilege tables will ensure that all changes\r

    made so far will take effect immediately.\r

    \r

    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : "

    send -- "Y\r"

    expect eofКопировать

    Изменим имя скрипта (это можно сделать и в директриии d:/vagrant/www):

    # mv script.exp mysql_sec.shКопировать

    Запросы, которые нужно выполнить, чтобы root мог подключаться по паролю:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qwerty';

    FLUSH PRIVILEGES;Копировать

    После этого удаляем виртуальную машину и создаем заново. Но предварительно изменяем кофигурационный файл:

    Vagrant.configure(2) do |config|

    # образ системы Ubuntu 18/04 LTS (Bionic Beaver)

    config.vm.box = "bento/ubuntu-18.04"

    # не проверять репозиторий на наличие обновлений

    config.vm.box_check_update = false

    # отменить создание ssh-ключа

    config.ssh.insert_key = false
    config.vm.provider "virtualbox" do |vb|

    # имя виртуальной машины

    vb.name = "ubuntu-1804-test"

    # объем оперативной памяти

    vb.memory = 2048

    # количество ядер процессора

    vb.cpus = 1

    end

    # hostname виртуальной машины

    config.vm.hostname = "ubuntu-1804-test"

    # настройки сети

    config.vm.network "public_network"

    # синхронизация директорий

    config.vm.synced_folder ".", "/var/www"

    # установка пакетов

    config.vm.provision "shell", path: "provision.sh"

    config.vm.provision "shell", inline: "apt-get install -y expect"

    config.vm.provision "shell", path: "mysql_sec.sh"

    config.vm.provision "shell", inline: <<-QUERY

    mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qwerty'; FLUSH PRIVILEGES;"

    QUERY

    endКопировать

    Основные команды

    Проверить файл конфигурации Vagrantfile:

    $ vagrant validateКопировать

    Запустить или создать виртуальную машину:

    $ vagrant upКопировать

    Приостанавить работу виртуальной машины

    $ vagrant suspendКопировать

    Возобновить работу виртуальной машины:

    $ vagrant resume Копировать

    Перезагрузить виртуальную машину:

    $ vagrant reloadКопировать

    $ vagrant reload --provisionКопировать

    Подключиться к виртуальной машине по ssh:

    $ vagrant sshКопировать

    Посмотреть настройки подключения по ssh:

    $ vagrant ssh-configКопировать

    Остановить виртуальную машину:

    $ vagrant haltКопировать

    Удалить виртуальную машину:

    $ vagrant destroyКопировать

    Проверить состояние виртуальной машины:

    $ vagrant statusКопировать

    Проверить состояние всех виртуальных машин:

    $ vagrant global-statusКопировать

    Посмотреть все доступные команды:

    $ vagrant --help
    1   2   3   4   5


    написать администратору сайта