воскресенье, 25 декабря 2016 г.

Настройка swap в Ubuntu 16.04

Оперативная память имеет очень важное значение для нормальной работы сервера. В ней размещаются все программы и их данные, когда память переполняется, программы могут выдавать различные ошибки или даже прекращать работу. Время отклика системы увеличивается настолько, что работать с ней становиться невозможным.
Самый простой способ увеличить количество оперативной памяти и защитить систему от переполнение памяти, это добавить раздел swap ubuntu. В этой статье будет рассмотрено как выполняется настройка swap Ubuntu 16.04. Мы рассмотрим вариант с добавлением раздела подкачки для обычных компьютеров, а также файла подкачки для серверов.

Обратите внимание

Хотя использование раздела подкачки на жестком диске HDD это привычное явление, применение такого метода для SSD может вызвать проблемы. SSD имеет ограниченное количество перезаписей одного сектора, а область swap постоянно перезаписывается, это очень сильно снизит срок службы вашего диска. Поэтому использование swap пространства на SSD строго не рекомендуется.

Что такое Swap?

Swap - это пространство подкачки это область на жестком диске, которая используется для временного хранения данных из оперативной памяти, для которых там больше нет места. Это позволяет увеличить объем информации, которую система может хранить в рабочей памяти. Пространство подкачки используется только тогда, когда память уже полностью занята, и туда будут помещаться только данные, которые давно использовались.
Работа с информацией будет выполняться намного медленнее, чем в оперативной памяти, но операционная система будет продолжать работать и использовать swap только для старых данных. В целом, это может быть отличной защитой от переполнения оперативной памяти. Пространство подкачки можно настроить двумя способами, добавив раздел подкачки ubuntu на диске или создать файл подкачки.

Проверка Swap

Перед тем как перейти к настройке давайте посмотрим не подключены ли другие разделы подкачки к системе. Для этого выполните:
$ sudo swapon --show
Если ничего не будет выведено, значит в вашей системе swap ubuntu не настроен. Вы также можете убедиться, что нет активного swap с помощью утилиты free:
$ free -h

Строка Swap пуста, значит раздела swap пока еще не подключен.

Настройка файла подкачки в Ubuntu 16.04

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

Проверка места на диске

Теперь убедитесь, что на диске есть достаточно свободного места. Самый простой способ узнать свободное место в терминале - это утилита df:
$ df -h

В нашем случае есть достаточно места для размещения пространства подкачки. Размер swap Ubuntu 16.04 зависит от ваших потребностей. Обычно рекомендуют использовать объем в два раза больше чем реальный размер оперативной памяти. Но больше 4 Гб использовать не нужно. Если вы планируете использовать гибернацию на персональном компьютере, то нужно использовать объем, равный объему ОЗУ.

Создание файла подкачки в Ubuntu 16.04

Самый быстрый способ создать swap файл ubuntu такой файл, это использовать утилиту fallocate, она создает файл нужного размера мгновенно. Поскольку у нас 1 Гб оперативной памяти, добавим раздел подкачки ubuntu на 2 Гб. Для этого выполните:
$ sudo fallocate -l 1G /swapfile

Посмотрите, действительно ли зарезервировано нужное количество памяти:
$ ls -lh /swapfile

Активация swap

Когда файл готов, нам нужно превратить его в файл swap Ubuntu. Сначала нужно заблокировать доступ к нему всем кроме суперпользователя. Для этого выполните:
$ sudo chmod 600 /swapfile
Теперь только root может читать и изменить этот файл:
$ ls -lh /swapfile
Затем создайте файловую систему swap командой:
$ sudo mkswap /swapfile
Когда файл будет размещен и промаркирован вы можете включить файл подкачки чтобы начать его использовать:
$ sudo swapon /swapfile
Вы можете убедиться что все работает с помощью команды:
$ sudo swapon --show
И еще раз смотрим вывод утилиты free:
$ free -h
Как видите, файл подкачки был успешно создан и активирован. Теперь памяти намного больше и система не зависнет. Но он будет работать только до перезагрузки.

Постоянный файл подкачки

Как я уже сказал, этот swap ubuntu будет работать только до перезагрузки сервера или компьютера. Чтобы настройка Swap Ubuntu 16.04 сохранялся после перезагрузки нужно отредактировать файл /etc/fstab. Вы можете вручную добавить строку в файл, но вы можете использовать такую команду:
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Настройка раздела подкачки в Ubuntu

Я не буду писать много про то, как выполняется настройка swap Ubuntu 16.04 в виде раздела. Все действия аналогичны тем, которые применяются для файла, только вместо файла используется раздел. Допустим, мы хотим использовать раздел /dev/sda2. Сначала создать swap Ubuntu из обычного раздела:
$ sudo mkswap /dev/sda2
Затем активируйте раздел подкачки:
$ sudo swapon /dev/sda2
И проверьте все ли прошло правильно:
$ sudo swapon --show
Если да, то в списке подключенных разделов вы увидите нужный. Осталось добавить строку в /etc/fstab для автоматической активации после перезагрузки:
$ echo '/dev/sda2 none swap sw 0 0' | sudo tee -a /etc/fstab

Дополнительные настройки

Вы можете контролировать интенсивность использования пространства подкачки в Ubuntu с помощью параметра ядра swappiness:
$ cat /proc/sys/vm/swappiness
По умолчанию установлено значение 60. Если это значение ближе к 100, система будет пытаться поместить в подкачку больше данных и сберечь память, при значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости. Этот вариант может сделать систему быстрее, особенно актуально для домашних компьютеров.
Чтобы установить значение 10 выполните:
$ sudo sysctl vm.swappiness=10
А для сохранения этой настройки после перезагрузки:
$ sudo sysctl -w vm.swappiness=10
Другой параметр, который влияет на количество используемой памяти - это vfs_cache_pressure. Он указывает системе какое время нужно хранить открытые файлы в кэше оперативной памяти. Значение 100 заставляет систему удалять такие файлы очень быстро, 0 - держать их в памяти как можно дольше. Посмотрите текущее состояние:
$ cat /proc/sys/vm/vfs_cache_pressure
Чтобы хранить файлы дольше, можно установить значение в 50:
$ sudo sysctl -w vm.vfs_cache_pressure=50

Выводы

С помощью этой инструкции вы можете на время решить проблему с пространством подкачки если серверу недостаточно памяти, или поможет предотвратить компьютер от зависания. Настройка swap Ubuntu 16.04 выполняется очень просто. Если у вас остались вопросы, спрашивайте в комментариях!

суббота, 17 декабря 2016 г.

Установка ssl сертификата Apache от Lets Encrypt

В самом начале развития интернета все данные между сайтом и компьютером пользователя передавались открыто по протоколу HTTP, без шифрования, а это означает, что любой пользователь, находящийся между сервером и компьютером может прочитать эти данные или даже изменить. По такой схеме даже сейчас работает много сайтов. Но в нашем мире это не безопасно, поэтому был разработан протокол HTTPS, который позволяет шифровать данные для передачи между устройствами.
Для шифрования данных в этом протоколе используются сертификаты SSL. Сейчас HTTPS набирает большую популярность, такие компании, как Google пытаются заставить все больше сайтов интернета использовать SSL для защиты своих данных и организации более безопасного соединения. С другой стороны появился сервис Lets Encrypt, который позволяет получить SSL сертификат каждому полностью бесплатно. В этой статье мы рассмотрим как выполняется установка ssl сертификата Apache от Lets Encrypt.

Установка SSL сертификата Lets Encrypt в Apache

Я буду предполагать, что Apache у вас уже установлен и настроен для работы по протоколу http. Если это не так посмотрите статью установка и настройка Apache. Перед тем как переходить к самой настройке веб сервера нам нужно получить ssl сертификат, а для этого нужно установить клиент сервиса в систему.

Шаг 1. Установка клиента Lets Encrypt

Мы будем выполнять установку клиента Lets Encrypt из официальных репозиториев. Официальный клиент от Lets Encrypt называется certbot, в репозиториях Ubuntu 16.04 есть упрощенная версия - Letsencrypt. Нам полностью хватит ее функциональности. Для установки выполните команды:
$ sudo apt update
$ sudo apt install python-letsencrypt-apache
После этого клиент будет готов к использованию.

Шаг 2. Настройка Apache

Если Apache настроен на работу по http, то перед тем как идти дальше, должна быть выполнена настройка ssl apache. Нам нужно активировать модуль ssl и включить использование ssl по умолчанию.
Для активации модуля наберите:
$ sudo a2enmod ssl
Для использования SSL по умолчанию включаем конфигурационный файл:
$ sudo a2ensite default-ssl.conf
Осталось перезапустить веб-сервер для применения изменений:
$ sudo systemctl restart apache2

Шаг 3. Получение SSL сертификата

Установка ssl сертификата с помощью клиента Lets Encrypt выполняется очень просто. Клиент автоматически запросит и установит новый сертификат для принадлежащего вам домена.
Чтобы получить сертификат для одного домена, достаточно передать этот домен в параметрах команды:
$ sudo letsencrypt --apache -d example.com
Если нужно сделать сертификат действительным для нескольких доменов или субдоменов вы можете передать их в дополнительных параметрах. Первое доменное имя будет основным, поэтому рекомендуется передавать первым домен верхнего уровня, а уже потом субдомены:
$ sudo letsencrypt --apache -d example.com -d www.example.com
Дальше нужно будет ввести несколько настроек для сертификата, сначала укажите адрес электронной почты, который будет использоваться для восстановления утерянного ключа или отправки уведомлений:
Затем примите лицензионное соглашение Lets Encrypt:
Утилита сама выполнит настройку веб-сервера Apache, вам только нужно будет выбрать надо ли разрешать http трафик или сразу перенаправлять все на https. Безопаснее и более правильно перенаправлять весь входящий трафик на https.
Когда установка SSL сертификата Apache ubuntu будет завершена, вы найдете созданные файлы сертификатов в папке /etc/letsencrypt/live. В этой папке будут четыре файла:
  • cert.pem - ваш сертификат домена;
  • chain.pem - сертификат цепочки Let's Encrypt;
  • fullchain.pem - cert.pem и chain.pem вместе;
  • privkey.pem - секретный ключ вашего сертификата.
Теперь вы можете зайти на сайт по https. Чтобы проверить как работает SSL и правильно ли выполнена установка ssl сертификата на сайт, вы можете открыть в браузере такую ссылку:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Шаг 4. Автопродление сертификата

Настройка ssl Apache завершена. Но есть один минус, все сертификаты, полученные от Lets Encrypt действительны только на протяжении 90 дней и рекомендуется продлевать и срок действия каждые 60 дней. Клиент letsecnrypt имеет команду renew, которая позволяет проверить установленные сертификаты и обновить их если до истечения срока осталось меньше 30 дней.
Чтобы запустить процесс обновления для всех настроенных доменов выполните:
$ sudo letsencrypt renew
Если сертификат был выдан недавно, то команда проверит его дату истечения и выдаст сообщение, что продление пока не требуется. Если вы создали сертификат для нескольких доменов, то в выводе будет показан только основной домен. Но обновление будет актуально для всех.
Самый простой способ автоматизировать этот процесс - добавить вызов утилиты в планировщик corn. Для этого выполните команду:
$ crontab -e
Затем, в открывшемся текстовом редакторе добавьте строку и сохраните изменения:
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
Таким образом, мы создали задачу, которая будет выполнять команду обновления каждый понедельник, в 2:30 утра. Информация про результат выполнения будет сохранятся в файл /var/log/le-renewal.log.

Выводы

В этой статье мы рассмотрели как выполняется установка ssl сертификата apache lets encrypt. Это поможет защитить ваш сайт от MITM атак, подслушивания и модификации трафика, а также благодаря тенденциям поощрения перехода на https может положительно сказаться на росте трафика.

вторник, 13 декабря 2016 г.

Бесплатные публичные DNS серверы

Обычно DNS-серверы предоставляются провайдером при подключении или при конфигурации хостинга. Однако в некоторых случаях могут потребоваться дополнительные серверы или взамен предоставляемых. В этом случае могут пригодиться публичные серверы DNS. 
Еще одной причиной поиска бесплатных публичных DNS серверов стала возможность фильтрации спама на серверах с помощью RBL, правда, некоторые из служб черных списков перестали отвечать популярным бесплатным DNS серверам. Так, например, SpamHaus не работает, если на сервере используются DNS серверы Google или OpenDNS.
В первую очередь это конечно Google Public DNS— экспериментальный альтернативный DNS-сервер с закрытым исходным кодом, разрабатываемый корпорацией Google. Google Public DNS предоставляет следующие адреса публичных серверов для DNS-запросов: 8.8.8.8 и 8.8.4.4. Также серверы имеют IPV6-адреса 2001:4860:4860::8888и 2001:4860:4860::8844.
opendns-common-logoOpenDNS предоставляет следующие адреса серверов для публичного использования: 208.67.222.222(resolver1.opendns.com) и 208.67.220.220(resolver2.opendns.com). Из особенностей надо отметить редирект на страницы с поиском и рекламой в случае набора неправильных запросов, отключение страницы с поиском и рекламой исключительно платное.
Из русских проектов надо отметить Яндекс.DNS — это более 80 DNS-серверов, расположенных в разных городах и странах. Предлагается 3 уровня:
  1. Базовый — быстрый и надежный DNS: 77.88.8.8 и 77.88.8.1
  2. Безопасный — без мошеннических сайтов и вирусов: 77.88.8.88 и 77.88.8.2
  3. Семейный — без сайтов для взрослых: 77.88.8.7 и 77.88.8.3
SkyDNS — еще один российский облачный интернет-сервис, предоставляющий услуги контент-фильтрации и защиты от сетевых угроз. В настоящее время работает как в бесплатном режиме, так и предлагает коммерческие продукты для частных лиц, организаций, образовательных учреждений и операторов связи. Для публичного использования предоставляется адрес 193.58.251.251.
SmartViper Public DNS предоставляет бесплатные DNS серверы для разрешения только IPv4 адресов. Для использования необходимо настроить на компьютере или сервере следующие DNS серверы — 208.76.50.50и 208.76.51.51.
Norton DNS — интернет-сервис компании Symantec Corporation, предоставляющий общедоступные DNS-серверы. Опять же на выбор предоставляется несколько уровней защиты:
  1. Без блокировки: 198.153.192.1 и 198.153.194.1
  2. С блокировкой вредоносных сайтов: 198.153.192.40 и 198.153.194.40
  3. С блокировкой вредоносных сайтов и сайтов для взрослых: 198.153.192.50 и 198.153.194.50
  4. С блокировкой вредоносных сайтов, сайтов для взрослых и сайтов распространяющих файлы: 198.153.192.60 и 198.153.194.60
comodo-logo-mainComodo Secure DNS предоставляет следующие адреса публичных DNS-серверов: 8.26.56.26 и 8.20.247.20. Comodo Secure DNS использует список блокировки в режиме реального времени (RBL) вредных веб-сайтов и предупреждает вас, когда вы пытаетесь получить доступ к сайтам, содержащим потенциально опасный контент.
Список DNS-серверов, предоставляемых Verizon / Level 3 Communications своим подписчикам и не только, является самым длинным: 4.2.2.14.2.2.24.2.2.34.2.2.44.2.2.5 и 4.2.2.6.
Список рекурсивных бесплатных DNS-серверов DNS Advantage (они же UltraDNS): 156.154.70.1 и 156.154.71.1.
freednsСерверы FreeDNSрасположены в Австрии, их адреса 37.235.1.174и 37.235.1.177. Заявлено, что нет никакой регистрации, нет ведения статистики запросов, отсутствуют какие-либо ограничения.
Alternate DNS предоставляют серверы 198.101.242.72 и 23.253.163.53. Сервис не хранит статистику запросов и блокирует «нежелательную рекламу».
Серверы GreenTeamDNS 81.218.119.11и 209.88.198.133, согласно ответам на часто задаваемые вопросы на сайте, предотвращают доступ к опасным и незащищенным сайтам. Владельцы премиум аккаунтов могут менять политику фильтрации на свое усмотрение

воскресенье, 11 декабря 2016 г.

Как сменить пароль в Linux

Операционная система Linux изначально проектировалась как многопользовательская и безопасная система. Поэтому здесь у каждого пользователя есть пароль. Полномочия пользователей и способ их аутентификации заложен на уровне системы.
Иногда возникает необходимость изменить пароль в linux. Во первых это может произойти если вы забыли пароль или просто хотите его поменять. Другая же причина, это безопасность. Пароли нужно менять по крайней мере несколько раз в год, и если вы системный администратор компании, важно заставить ваших пользователей тоже менять пароли время от времени и у Linux для этого тоже есть инструменты. В этой статье мы рассмотрим как поменять пароль в Linux.

Основы

В Linux есть несколько утилит с помощью которых может быть выполнена смена пароля linux. В этой статье мы будем рассматривать только способы с помощью терминала, с графическими способами я думаю вы и так без труда разберетесь, к тому же они не дают нужной нам гибкости.
Список пользователей в Linux хранится в файле /etc/passwd, вы можете без труда открыть его и посмотреть, их пароли выделены в отдельный файл - /etc/shadow. Этот файл можно открыть только с правами суперпользователя, и более того, пароли здесь хранятся в зашифрованном виде, поэтому узнать пароль linux не получиться, а поменять вручную их будет сложно.
В большинстве случаев смена пароля выполняется с помощью утилиты passwd. Это очень мощная утилита, она позволяет не только менять пароль, но и управлять сроком его жизни. У нее такой синтаксис:
$ passwd опции пользователь
Рассмотрим опции, чтобы лучше ориентироваться в использовании утилиты:
  • -d - удалить пароль пользователя, после этого он не сможет войти
  • -e - сделать пароль устаревшим
  • -i - через сколько дней после того, как пароль устарел отключить аккаунт если пользователь не сменил пароль
  • -l - запретить пользователю входить в систему
  • -n - минимальное количество дней между сменами пароля
  • -S - отобразить информацию об аккаунте
  • -u - отменяет действие параметра -l
  • -x - максимальное количество дней, пока пароль можно использовать.
  • -w - количество дней, после которых нужно предупреждать пользователя, о том, что надо сменить пароль.
Возможно, сейчас все выглядит очень непонятно, но на примерах станет проще. Мы рассмотрим зачем и в каких случаях нужно использовать все эти опции, чтобы сменить пароль в Linux. Переходим к практике.

Как сменить пароль пользователя

Вы можете сменить свой пароль когда захотите. Для этого вам не нужно особых прав суперпользователя, только знать свой текущий пароль. Просто откройте терминал и выполните утилиту password без параметров:
$ passwd
passwd
Дальше необходимо ввести новый пароль и готово, теперь ваш пароль изменен. Он шифруется с помощью необратимого шифрования и сохраняется в файле /etc/shadow Но заметьте, что вы не можете использовать здесь любой пароль. Система Linux заботится о том, чтобы пользователи выбирали достаточно сложные пароли. Если пароль будет очень коротким или будет содержать только цифры вы не сможете его установить.
Общие требования для пароля такие: должен содержать от 6 до 8 символов, при чем один или несколько из них должны относиться как минимум к двум из таких множеств:
  • Буквы нижнего регистра
  • Буквы верхнего регистра
  • Цифры от нуля до девяти
  • Знаки препинания и знак _
Теперь рассмотрим как изменить пароль Linux для другого пользователя.

Как сменить пароль другого пользователя

Со своим паролем все понятно, но если вы захотите поменять пароль для другого пользователя, то все не так просто. Для этого вам нужны права суперпользователя. А во всем остальном все так же:
$ sudo passwd user

Здесь user - это пользователь, для которого нужна смена пароля Linux. Требования для пароля такие же, вы не сможете установить слишком простой пароль.
Вы можете удалить пароль Linux для пользователя, тогда он не сможет войти в систему:
$ sudo passwd -d user

Как поменять пароль группы

Наверное вы видели в своей системе файл /etc/gshadow. Этот файл эквивалентен /etc/shadow, только содержат пароли для групп. Вы не можете войти от имени группы, но зато зная ее пароль, можете получить доступ к предоставляемым ею функциям в отдельной командной оболочке с помощью команды newgrp.
Для установки пароля на группу используется утилита очень похожая на passwd - gpasswd. Естественно, нам нужны права суперпользователя. Например:
$ sudo gpasswd disk
passwd1
Теперь попробуем получить полномочия группы:
passwd2
После ввода пароля мы временно оказываемся в этой группе и можем работать с теми файлами, к которым разрешено доступ этой группе. Чтобы удалить пароль linux из группы используется опция -r:
$ sudo gpasswd -r disk

Как заставить пользователя поменять пароль

Безопасность сервера, это одна из самых важных вещей. Часто причиной проблем с безопасностью становятся сами пользователи, которые недостаточно часто меняют пароли или делают их слишком простыми. Если вы администратор, у вас есть возможность заставить пользователей выполнять смену пароля время от времени, а также автоматически отсылать им предупреждения о том что пора сменить пароль пользователя linux.
Все это позволяет сделать утилита passwd. Сначала давайте рассмотрим как посмотреть информацию о пароле в passwd. Для этого используется опция -S:
$ passwd -S user
passwd3
  • Первое поле - имя пользователя
  • Второе поле показывает одно из значений: P - пароль установлен, L - пользователь заблокирован, NP - пароля нет.
  • 07/21/2016 - дата последнего изменения пароля.
  • 0 - минимальное время до смены пароля
  • 99999 - максимальное время действия пароля
  • 7 - за сколько дней нужно предупреждать об истечении срока действия пароля
  • -1 - через сколько дней пароль нужно деактивировать.
Например через тридцать дней после смены, пароль пользователя станет устаревшим:
$ sudo passwd -x 30 test
passwd4
За три дня до того, как пароль устареет предупредим пользователя, что пароль нужно сменить:
$ sudo passwd -w 3 test
Если он этого не сделает в течении пяти дней, аккаунт нужно отключить:
$ sudo passwd -i 3 test
Пароль можно менять не чаще, чем раз в 10 дней:
$ sudo passwd -n 10 test
Смотрим теперь, что у нас получилось:
$ sudo passwd -S test
passwd5
Все правильно.

Как поменять пароль root

Изменить пароль Linux для root очень просто, точно так же, как и для любого другого пользователя. Только нужно иметь права суперпользователя. Вот так это будет выглядеть:
$ sudo passwd root
passwd6
Все работает. Также таким способом можно задать пароль root в Ubuntu.

Как вручную поменять пароль

Операционная система Linux не была бы Linux, если бы мы не имели возможность настроить пароль вручную безо всяких утилит. Как я уже говорил, пароли хранятся в файле /etc/shadow. И хранятся они там в зашифрованном виде. Расшифровать пароль невозможно.
Когда система сохраняет пароль, она выполняет шифрование по определенному алгоритму и сохраняет уже зашифрованный результат, а когда пользователю нужно войти в систему, она просто берет его пароль, опять же шифрует и сверяет с тем, что хранится в /etc/shadow. Если совпадает - пользователь авторизован.
Даже таким способом сменить пароль пользователя linux не так уж сложно. И так, сначала нам нужно получить зашифрованный пароль. Это можно сделать несколькими способами, например с помощью openssl:
$ openssl passwd -1 -salt xyz yourpass
Замените xyz на любую случайную комбинацию символов, чем больше, тем лучше. yourpass, это ваш новый пароль.
Скопируйте полученный результат в буфер обмена, затем откройте файл /etc/shadow и найдите там нужного пользователя. Я хочу сменить пароль linux для test:
$ sudo vi /etc/shadow
passwd8
Синтаксис этого файла такой:
имя_пользователя:пароль:::::
Следующее поле указывает последнее изменение пароля в виде количества дней, прошедших с первого января 1970. Остальные поля нас не интересуют, да и вы с ними очень просто разберетесь просто сопоставив данные.
Теперь замените пароль, на полученный выше и сохраненный в буфер обмена. Сохраните файл и можете пробовать войти под новым паролем:
$ su test
passwd7
Все работает. Как я уже говорил, есть еще несколько алгоритмов шифрования, с помощью которых вы можете получить пароль, вот они:
$ makepasswd --clearfrom=- --crypt-md5 <<< YourPass
$ mkpasswd -m sha-512 -S salt -s <<< YourPass
$ perl -e 'print crypt("YourPass", "salt"),"\n"'
$ openssl passwd -crypt -salt XRYourPass
Во всех этих примерах salt - это случайная строка для увеличения надежности шифрования, а YourPass - ваш пароль. Что делать с полученным данными вы уже знаете.