Posts Tagged ‘ Debian

Debian Jessie: Базовая настройка фаервола (iptables)

Это статья из цикла стетей моего небольшого HowTo по Debian Jessie.
Итак, на данном этапе мы уже порядочно продвинулись с настройками нашего сервера. Мы уже настроили ftp, dhcp, ntp, ssh и вплотную подошли к настройке web-сервера. Но перед этим я бы хотел написать коротенькую заметку про iptables. Это первая настройка фаервола, поэтому тут все будет очень лаконично, чуть позже, после настройки web-сервера мы вернемся к этому вопросу и немного углубимся в тему iptables и безопастности.
Очень рекомендую глянуть пример простейшей настройки iptables на официальном wiki Debian
Ну поехали … Читать полностью

Debian Jessie: DNS Server — установка и настройка Bind9

Это заметка из цикла стетей моего небольшого HowTo по Debian Jessie.

Для начала установим необходимые пакеты:

gw~$ sudo apt-get install bind9 bind9-host bind9utils

А также добавим bind9 в автозагрузку:

gw~$ sudo systemctl enable bind9

Дальше настройка.
Опишу несколько вариантов, чтоб дать возможность каждому понять что и как настраивать, а вы уже сами выбирайте что вам больше подходит:
1. Кэширующий DNS сервер
2. Внутренние зоны
3. Внешние зоны
4. Передача/прием зон (настройка режима master/slave)

Поехали … Читать полностью

Debian Jessie: Установка и настройка DHCP сервера (isc-dhcp-server)

Во вводной статье про свою тестовую сеть я перечислял необходимые сервисы, одним из которых является DHCP. Устанавливать и настраивать данный сервис я буду на сервере gw.my.local
Дело это не сложное, перед началом рекомендую полистать предыдущие публикации из моего маленького howto по Debian Jessie.
Для начала необходимо установить пакет isc-dhcp-server

gw:~ $ sudo apt-get install isc-dhcp-server

Сервис не запустится до тех пор пока в настройках не указать интерфейс на котором будет работать DHCP-сервер. Обслуживать он будет нашу локальную сеть, а значит запускать его нужно только на интерфейсе с линком в локальную сеть. Читать полностью

Debian Jessie: Вводная статья для небольшого HowTo

Итак, начиная свой маленький HowTo по Debian Jessie неплохо бы для начала определиться, а что мы собственно настраиваем? Что хотим получить в итоге?
Я сделал небольшую иллюстрацию на эту тему, визуально нашу задачу проще понять:
Моя тестовая сеть
А теперь задача: нужно построить простую плоскую локальную сеть с доступом в Интернет.
В локальной сети обязательно должны присутствовать такие сервисы:

  • DNS (локальная зона + кэширование внешних зон)
  • DHCP сервер
  • SMB сервер (для машин с OS Windows)
  • NFS сервер (для машин с OS Linux)
  • WEB сервер
  • BackUP сервер

Локальную сеть можно поделить на 2 части, Ethernet и Wi-Fi. Wi-Fi роутер будет работать в режиме «Точка доступа». Настройку точки доступа, в моем случае это была Cisco Aironet 1200 Series, я описывал ранее.
Что касается сервисов, то их розмещение у меня регламентировалось наличием железа. В моем распоряжении оказалась пара простеньких самосборных сервреров на Intel Atom. Я розпределил сервисы между ними вот так:
1. gw.my.local — роутер, DHCP-сервер, DNS-сервер, FTP-сервер, WEB-сервер (полноценный хостинг: Nginx + php-fpm + MySQL). В качестве OS был выбран Debian Jessie, установленный на софтовый RAID1 (зеркало).
2. nas.my.local — файлопомойка: SMB-сервер, NFS-сервер, WEB-сервер для torrent клиента, BackUP-сервер.

Конкретные пошаговые howto по сервисам будут приведены отдельными статьями. Конечто уже готово, коечто будет опубликовано чуть позже. В конечнои итоге я собираюсь опубликовать все статьи из этого списка.

А теперь немного околоайтишного бреда … Что это, зачем это, почему это?
Ответ простой — мой опыт в IT говорит о том что в Украине катастрофически не хватает специалистов способных легко, просто и быстро настроить необходимые для работы компании любого масштаба сервисы. Часто нехватает денег на серверное железо, не говоря уже про лицензии на общепринятый софт от Microsoft да еще и антивирус. В моей практике были реальные случаи когда обычный PC с конфигурацией Celeron 700MHz + 256MB RAM + IDE HDD 40GB + 2 x 100Mb/s LAN’s 3 года обеспечивал небольшой офис ( до 100 сотрудников ) доступом в интернет. А все потому что на нем была установлена OpenBSD 🙂 Также на нем был поднят DNS внутренняя зона + кэш мира и VPN PPTP. Да, это обычный простейший шлюз, да можно было бы купить какойто хардварный за 50$ и настроить его. Но в том конкретном случае нужно было оперативно решить задачу доступа небольшой компании в новом офисе в Интернет. А тут под руками старый комп пылится на складе, списанный и никому ненужный, можно сказать, одной ногой в мусорнике. Но не смотря на скромную конфигурацию послужил бизнесу еще несколько лет …
К чему это я? Нет, не к тому чтоб Вы выбросили свои хардварные роутеры D-Link/TP-Link/Cisco, а к тому чтобы стали немножко шире мыслить и видеть разные варианты. Не всегда доступно то чего бы хотелось, но это не значит что нельзя найти достойную замену. Исходить всегда нужно из реальных потребностей, а не от цены решения (как это обычно делают конторы паразитирующие на откатах) или предпочтения бренда или прочей субьективной ерунды. Еще пример из практики: задача от руководства — обеспечить более оперативным инструментом общения чем электронная почта. Пока виндоадмины надували щеки и прикидывали конфигурацию железа для серверов под Lync, при этом чертыхаясь и матерясь … Ибо зачада свалилась как снег на голову, ресурсов нету, а бюджеты уже и так трещат по швам …. я тихо мирно поднял на FreeBSD ejabberd, спокойно … неспеша … Заняло это аж несколько часов в свободные промежутки от основных задач. И потребовало ресурсов аж 2GB RAM и одного виртуального ядра CPU. Места тоже неособо много … около 10GB (чтоб с запасом для логирования). И такое вот скромное решение спасло на тот момент отдел и дало необходимую отсрочку в полгода для закупки железа под поделие мелкософта. Такчто не ведитесь на гигабайты лапша кода который впаривает вам мелкософт, а юзайте простые, легкие и бесплатные решения Open Source 🙂

Хай щастить!

Debian Jessie: Начальная настройка системы

Статья из разряда «Что вы делаете сразу после установки Debian GNU Linux (или другого дистрибутива) на сервер?»
Чуть ниже я опишу свое видение необходимых начальных настроек системы. Также установку некоторых пакетов и коротко опишу их назначение.

Сразу после свежей установки Debian (любого, но в данном случае Jessie) меня раздражают 2 вещи:
1. Отсутствие моего любимого текстового редактора vim. Есть, правда, дико обрезанный в функциональности vim.tiny (по сути это самый обычный олдскульный vi) да nano — печальная картина. Хотя подозреваю что это необходимая мера чтобы вписаться в минималистичные размеры сборки netinstall.
2. «Бедный» конфиг источников пакетов /etc/apt/sources.list Я не против минимализма и чистоты системы от non-free скверны, но можно же хоть закоменченные строчки contrib/non-free репов в конфиг вписать … Unix way елки-палки. Ubuntu, например, имеет в системе изначально довольно широкий список sources.list с закоменченными опциональными репами. Уважаю в этом плане бубунту.

Порядок решения этих неприятностей обратный, сначала составляем жизненно необходимый конфиг /etc/apt/sources.list, а потом уже можно заняться установкой пакетов и всякими настройками системы.

Для удобства использования из консоли я выложил свой sources.list в виде архива по адресу http://diff.org.ua/configs/deb8_sources_list.gz (ниже есть листинг содержимого, если вы имеете красивый доступ в web, а сервер настраиваете через SSH — то лучше сделайте привычный copy/paste прямо из браузера в консоль ssh)
Использовать его очень просто, после входа на сервер по ssh, переходим под root (у нас пока нету sudo, так как в netinstall он не предустановлен):

user@deb:~$ su -
password:
root@deb:~#

скачиваем архив с помощью wget-а (благо он есть по умолчанию даже в netinstall сборке Debian):

root@deb:~$ wget -c http://diff.org.ua/configs/deb8_sources_list.gz

Дальше мы будем заменять системный конфиг, если Вы совсем новичок, рекомендую перед каждой правкой системных конфигов делать бэкап оригинала. Например для /etc/apt/sources.list это может выглядеть так:

root@deb:~# cp /etc/apt/sources.list /etc/apt/sources.list_orig

Теперь нужно заменить оригинальный конфиг скачанным:

root@deb:~# zcat deb8_sources_list.gz > /etc/apt/sources.list

Убедиться в том что конфиг обновился, можно так:

root@deb:~# cat /etc/apt/sources.list
# Main Debian Jessie Repository - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.ua.debian.org/debian/ jessie main contrib non-free

# Main Security Repository #
#deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Security Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian-security/ jessie/updates main contrib non-free

# Jessie-updates, previously known as 'volatile' - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.ua.debian.org/debian/ jessie-updates main contrib non-free

# Multimedia Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian-multimedia/ jessie main non-free

# Proposed Updates - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-proposed-updates main contrib non-free

# Jessie Backports - UA Mirror #
deb http://ftp.ua.debian.org/debian/ jessie-backports main contrib non-free
root@deb:~#

Как видно, обновился 🙂
После обновления сорс-листа необходимо перечитать источники пакетов, тоесть репозитарии:

root@deb:~# apt-get update

После исправления sources.list у меня возникает вот такая ошибка:

W: GPG error: http://ftp.ua.debian.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117

Решается она просто, импортом нужного ключа:

root@deb:~# gpg --keyserver pgpkeys.mit.edu --recv-key 5C808C2B65558117
...
root@deb:~# gpg -a --export 5C808C2B65558117 | sudo apt-key add -
OK
root@deb:~#

Также рекомендую выполнить обновление системы такой командой:

root@deb:~# apt-get dist-upgrade

Если APT предложит обновить какието пакеты — смело соглашайтесь (жмите Y на клавиатуре и Enter), на данный момент у нас свежая чистая система — ломаться особо нечему.

Теперь, когда мы настроили sources.list и сделали apt-get update, apt-get dist-upgrade — можно приступать к установке дополнительных полезных пакетов. Вот перечень того что я устанавливаю в первую очередь:
sudo — отличный системный инструмент позволяющий очень гибко настраивать доступ к администрированию системы. Например можно пользователю либо группе дать доступ хоть на одно хоть на несколько админских действий … вплоть до полного root-доступа. Гибко, удобно и просто.
tree — удобная консольная утилита для визуализации содержимого каталогов
mc — консольный двухпанельный олдскульный файловый менеджер. Удобный в работе и весьма функциональный.
screen — нечто наподобии оконного менеджера для консоли. Долго вникал в эту утилиту — но не зря, весьма удобно.
rsync — консольная утилита/сервис для синхронизации файлов
tcpdump — сетевая консольная утилита для просмотра траффика в реальном времени. Чтото типа wireshark.
mtr-tiny — сетевая консольная утилита для троссировки маршрутов. Аля tracert под виндой
vim — очень мощный консольный текстовый редактор
dmidecode — системная утилита для просмотра информации о железе сервера
curl — консольная утилита для работы с web контентом. Аля wget но более функциональная
dnsutils — пакет сетевых DNS утилит. Чаще всего из него я использую утилиты host и dig
git-core — git клиент, для клонирования проектов с git-репозиториев, таких например как github

Для установки данных пакетов использую стандартный инструмент — apt-get:

root@deb:~# apt-get install sudo tree mc screen rsync tcpdump mtr-tiny vim dmidecode curl dnsutils git-core

Ждем пока отработает команда по установке пакетов и потихоньку читаем дальше …

Перво наперво в новой системе я настраиваю sudo. Настройка sudo очень простая.
Открываем основной конфиг:

root@deb:~# visudo

Обычно в Debian даны права sudo для пользователей в группе sudo. Убедимся в этом:

%sudo   ALL=(ALL:ALL) ALL

добавить пользователя в группу sudo (это дает пользователю административные права, будьте осторожны!) можно так:

root@deb:~# gpasswd -a someuser sudo
Adding user someuser to group sudo
root@deb:~#

Если пользователь someuser был залогинен в системе — нужно перелогиниться чтобы применить настройки групп.
Вот и вся настройка, теперь пользователь someuser может с помощью sudo выполнять админские команды со своим паролем, например просмотр messages лога:

deb$ sudo cat /var/log/messages

Мне очень не нравится дэфолтная поддержка IPv6, не то чтобы я был совсем против данной технологии — просто она мне абсолютно не нужна. Да и к тому же портит вид выхлопа таких команд как:

$ ip a
$ ifconfig
$ netstat

и тп

Поддержку IPv6 можно легко выключить, совсем 🙂 Чем и предлагаю заняться.

Отключаем IPv6:
Тут есть 2 варианта, первый — отключить в загрузчике, и второй — с помощью sysctl. Я пользуюсь первым вариантом.
Открываем конфиг загрузчика:

deb$ sudo vim /etc/default/grub

и прописываем в параметр GRUB_CMDLINE_LINUX вот что:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

Обновляем настройки Grub:

deb$ sudo update-grub

После перезагрузки получите систему с выключенным ipv6 🙂 Пока не перегружаемся, это мы сделаем чуть позже …

Небольшая оптимизация APT:
Еще один момент про apt — если вы используете в системе locale отличную от en_US.* то apt тянет все доступные переводы для пакетной базы (украинские, русские, румынские, африканские и тд.), размер их не то чтобы огромный, но приличный — десятки мегабайт в сумме, обвновляются каждый запуск apt-get update … незнаю как вам, но мне такие переводы абсолютно не нужны. Проверить locale можно одноименной командой:
вот так у меня:

deb:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
deb:~$

в моем случае ничего делать не надо, если у вас локаль отличная от en_US.* — рекомендую отключить загрузку ненужных переводов, как это делать — я описывал ранее.

Настройка vim:
Две важные настройки без которых я жить не могу 🙂
Открываем основной конфиг:

deb:~$ sudo vim /etc/vim/vimrc

розкомментировать строчки:

syntax on
set background=dark

а вообще vim очень мощный инструмент и настроек у него огромное количество, почитайте о нем на досуге.

Также неплохо бы хоть базово настроить bash, не хочу повторяться, гляньте тут, возможно захотите поменять некоторые параметры 🙂

Настроить timezone можно простой перенастройкой пакета tzdata:

deb:~$ sudo dpkg-reconfigure tzdata

Я там говорил про ребут, пока еще не время 🙂
Сначала рекомендую настроить базовые сервисы, а потом уже можно reboot!

Хай щастить!

PXE Boot: Добавляем утилиту Memtest+

Сдох сервак, ругается на память. Нужен Memtest. Решил добавить в свой PXE (я писал ранее статью про настройку PXE Boot) отдельным пунктом Memtest, как оказалось — это весьма просто.

Все действия выполняются на сервере где розвернут TFTP сервис.
Переходим в рутовую директорию TFTP:

cd /var/lib/tftpboot

Создаем отдельную директорию для memtest:

$ sudo mkdir memtest

и переходим в нее:

$ cd memtest

Качаем бинарь memtest-а:

memtest$ sudo wget -c http://www.memtest.org/download/5.01/memtest86+-5.01.bin

в главный конфиг меню нужно добавить вот такой пунктик:

LABEL Memtest
        MENU LABEL Memtest86+
        KERNEL memtest/memtest86+-5.01.bin

Сохраняем конфиг меню и пользуем 🙂

P.S. Оказалось что сервак просто задолбался работать и требовал немного внимания … после чистки, мойки заработал как ни в чем не бывало.

Хай щастить!

Debian Jessie: Установка Erlang OTP от Erlang Solutions

Начал изучать Erlang. Мой Гуру посоветовал установить релиз Erlang из репозитория Erlang Solutions. Судя по доке данного ресурса, это проще простого, но прикол в том что у меня Debian Jessie, а в доке описан процесс максимум для Wheezy. На самом деле репозиторий содержит сборку для Jessie, просто доку, как это обычно бывает, забыли/не успели обновить. Такчто «идем по приборам» 🙂
Итак, репозитарий добавляется очень просто:

srv:~$ sudo sh -c 'echo "deb http://packages.erlang-solutions.com/debian jessie contrib" > /etc/apt/sources.list.d/erlang_solutions.list'

Добавляем ключ репозитария:

srv:~$ sudo wget -c -O - http://packages.erlang-solutions.com/debian/erlang_solutions.asc |sudo apt-key add -

Ну и дальше стандартно, перечитываем репозитории и устанавливаем нужный пакет (erlang-base):

srv:~$ sudo apt-get update
....
srv:~$ sudo apt-get install erlang-base

После установки проверяем erlang запуском интерпретатора:

srv:~$ erl
Erlang/OTP 17 [erts-6.4.1] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V6.4.1  (abort with ^G)
1> io:format("~s~n", ["Hello World!"]).
Hello World!
ok
2>

Ну и как говорится — «Изучай Erlang во имя добра!»

Хай щастить!

Debian Jessie: Установка и настройка FTP сервера (proftpd + mod-geoip)

Поскольку я планирую использование данного FTP сервера только в географических пределах своей страны — то логично ограничить к серверу доступ с помощью GeoIP. Это снизит бесполезную нагрузку создаваемую брутфорсерами, а также улучшит безопасность сервиса и сервера. Поскольку у меня всего пара-тройка пользователей FTP и те имеют отдельные системные аккаунты — авторизация будет PAM (системная).

Установим необходимые пакеты:

deb$ sudo apt-get install proftpd-basic proftpd-mod-geoip geoip-database

Пакеты установили — вперед к настройке … Читать полностью

Debian Jessie: Настройка базовых сервисов (ssh, ntp)

После установки и базовой настройки системы Debian GNU Linux, рекомендую настроить пару важных системных сервисов — ssh и ntp.

1. sshd:
открываем основной конфиг:

deb:~$ sudo vim /etc/ssh/sshd_config

И смотрим все что там есть … Я обращаю внимание на следующие опции:

Port 22
Protocol 2
PermitRootLogin without-password
StrictModes yes
TCPKeepAlive yes

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

deb:~$ sudo systemctl restart ssh.service

2. ntpd:
Время тоже важная штука, особенно на сервере. Для постоянной синхронизации с серверами точного времени в Интернете рекомендую установить и настроить ntp-server.
Установим:

deb:~$ sudo apt-get install ntp

Открываем основной конфиг:

deb:~$ sudo vim /etc/ntp.conf

и приводим в такое состояние:

driftfile /var/lib/ntp/ntp.drift

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server 0.ua.pool.ntp.org iburst
server 1.ua.pool.ntp.org iburst
server 2.ua.pool.ntp.org iburst
server 3.ua.pool.ntp.org iburst

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# разрешаем localhost в качестве клиента синкать время
restrict 127.0.0.1
restrict ::1
# Если хотим разрешить использование сервиса ntp
# для локальной сети, розкомментировать строчку
# и вписать свою сеть по образу и подобию:
#restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

Перезаапускаем сервис (он автоматически запускается после инсталяции):

deb:~$ sudo systemctl restart ntp.service

Добавляем сервис в автозагрузку:

deb:~$ sudo systemctl enable ntp.service
Synchronizing state for ntp.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d ntp defaults
Executing /usr/sbin/update-rc.d ntp enable
deb:~$

Проверить статус работы ntp-server-а можно так:

deb:~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*exb-gate.dgma.d 62.149.0.30      2 u   46   64    1   22.416   10.433   0.030
 91.218.89.74    207.3.130.6      2 u   46   64    1    6.653   11.025   0.796
 ns1.rx-name.net 232.213.183.238  3 u   45   64    1   10.493   12.001   0.043
 82.193.117.90.i 140.203.204.77   2 u   45   64    1    1.656   11.772   0.063
deb:~$

Если вместо циферок delay, offset, jitter вы видите прочерки или пустоту — значит чтото настроено не верно. Проверяйте сеть, firewall, конфиг ntp.conf и тд

Хай щастить!

Debian Jessie: Мой маленький HowTo

Скопился целый ворох мелких howto по настройке всякой всячины в Debian Jessie. Решил объединить их в виде некоего мини-туториала.
Список того что будет опубликовано в ближайшее время:
0. Чтото вместо вступления. Тут же простенькое ТЗ и топология сети.
1. Начальная настройка системы (disable IPv6, timezone, APT sources.list, APT tuning)
2. Решение мелких проблем после установки (firmware realtek, some lvm+mdadm trick)
3. Настройка базовых сервисов (sshd, ntpd, smartd)
4. Настройка DNS сервера (bind9)
5. Базовая настройка фаервола (iptables)
6. Установка и настройка FTP сервера с поддержкой GeoIP (proftpd)
7. Установка и настройка DHCP сервера (isc-dhcp-server)
8. Установка, настройка и backup баз mysql-server (mariadb-server)
9. Установка и базовая настройка компонентов вэб сервера (Apache2, Nginx, PHP5-FPM)
10. WEB сервер на любой вкус:
— вариант №1 (nginx + apache2 + mod_php5)
— вариант №2 (nginx + php5-fpm)
— вариант №3 (nginx + php5-fpm in chroot)
11. «Ускоряем» WEB-сервер (memcached, xcache)
12. Трюки вокруг доступа к sshd (iptables, ipset, geoip)
13. Установка и настройка backup сервера (bacula)
14. Установка и настройка Mail сервера с WEB интерфейсом (exim4, dovecot, postfixadmin, roundcube)
— этап №1 — подготовка
— этап №2 — настройка postfixadmin
— этап №3 — настройка dovecot
— этап №4 — настройка exim4
— этап №5 — настройка roundcube
15. Домашний NAS на основе Debian Jessie (NFS, Samba)
16. Домашний NAS на Debian Jessie — установка и настройка Torrent клиента с WEB интерфейсом

Хай щастить!