Centos 7, в отличие от CentOS 6, в базе идет с новым брандмауэром - firewalld. Его можно отключить и заменить на старый добрый iptables, но если к этому нет прямых предпосылок, то лучше привыкать к чему-то новому, а не упираться в старое. Это не значит, что Windows 10 лучше Windows 7, а Windows XP лучше Windows 7 ;) Хороший пример на эту тему - selinux. Если вначале почти все (и я тоже) его отключали и даже немного ругали, то теперь почти никто это не советует, только если есть уверенность, что так надо. Напротив, многие уже привыкли (или привыкают) пользоваться semanage. Не будем и мы сразу отключать firewalld, а попробуем, как он на вкус.

Firewalld - это не принципиально иной брандмауэр. Это другая надстройка над netfilter, поэтому если вы обладаете опытом работы с iptables, то помучившись немного вы спокойно начнете пользоваться новым инструментом.

Запуск и остановка firewalld

Проверим, запущен ли firewalld:

# systemctl status firewalld

Тут будет расширенная информация. Чтобы коротко, да (работает) или нет можно так:

# firewall-cmd --state
running

Ок, работает.

Остановка firewalld:

# systemctl stop firewalld

Запрет автостарта:

# systemctl disable firewalld

Запуск firewalld:

# systemctl start firewalld

Включение автостарта:

# systemctl enable firewalld

Зоны firewalld

В firewalld широко используется понятие зоны. Список всех допустимых зон по-умолчанию:

# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

Назначение зон (условно, конечно):

  • drop - все входящие пакеты отбрасываются (drop) без ответа. Разрешены только исходящие соединения.
  • block - входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited (или icmp6-adm-prohibited). Разрешены только инициированные системой соединения.
  • public - зона по-умолчанию . Из названия ясно, что эта зона нацелена на работу в общественных сетях. Мы не доверяем этой сети и разрешаем только определенные входящие соединения.
  • external - зона для внешнего интерфейса роутера (т.н. маскарадинг). Разрешены только определенные нами входящие соединения.
  • dmz - зона DMZ, разрешены только определенные входящие соединения.
  • work - зона рабочей сети. Мы все еще не доверяем никому, но уже не так сильно, как раньше:) Разрешены только определенные входящие соединения.
  • home - домашняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • internal - внутренняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • trusted - разрешено все.

Список всех активных зон:

# firewall-cmd --get-active-zones
public
interfaces: enp1s0

Ага, зона public, к которой присоединен сетевой интерфейс enp1so. Дальше в зону public добавим новый порт, на котором будет висеть sshd.

Зная имя сетевого интерфейса (например, enp1s0), можно узнать, к какой зоне он принадлежит:

# firewall-cmd --get-zone-of-interface=enp1s0
public

А можно узнать, какие интерфейсы принадлежат конкретной зоне:

# firewall-cmd --zone=public --list-interfaces
enp1s0

Пример: разрешаем ssh на нестандартном порте

Давайте разрешим доступ к серверу по ssh на порте 2234/tcp, а не на 22/tcp, как по-умолчанию. Попутно чуть-чуть коснемся selinux.

Сначала посмотрим, что вообще разрешено постоянно на нашем сервере:

# firewall-cmd --permanent --list-all
public (default)
interfaces:
sources:
services: ssh dhcpv6-client
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Я не использую пока ipv6, поэтому сразу уберу соотв. правило из firewalld:

# firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

Разрешим на постоянной основе (чтобы после перезагрузки не потерлось) соединение на порт 2234/tcp (на него повесим sshd):

# firewall-cmd --permanent --zone=public --add-port=2234/tcp

Перезагрузим правила:

# firewall-cmd --reload

Проверим:

# firewall-cmd --zone=public --list-ports
2234/tcp

Ок, порт открыт. Редактируем конфиг sshd:

# nano /etc/ssh/sshd_config
...
port 2234
...

# systemctl restart sshd.service

Но SELinux, которую вы, надеюсь, не отключали, не даст подключиться к ssh на нестандартном порте (порт 2234/tcp для sshd - нестандартный). Вы можете этот шаг пропустить и проверить, как сработатет защита SELinux, а можете сразу все настроить:

# yum provides semanage
# yum install policycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 2234

Вот теперь все ок. Проверяем подключение по ssh на новом порте. Если все ок, закрываем доступ к порту 22:

# firewall-cmd --permanent --zone=public --remove-service=ssh
# firewall-cmd --reload

Смотрим, что получилось:

# firewall-cmd --list-all
public (default, active)
interfaces:
sources:
services:
ports: 2234/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Вот и все.

Разные полезные команды:

Включить режим блокировки всех исходящих и входящих пакетов:

# firewall-cmd --panic-on

Выключить режим блокировки всех исходящих и входящих пакетов:

# firewall-cmd --panic-off

Узнать, включен ли режим блокировки всех исходящих и входящих пакетов:

# firewall-cmd --query-panic

Перезагрузить правила firewalld без потери текущих соединений:

# firewall-cmd --reload

Перезагрузить правила firewalld и сбросить текущие соединения (рекомендуется только в случае проблем):

# firewall-cmd --complete-reload

Добавить к зоне сетевой интерфейс:

# firewall-cmd --zone=public --add-interface=em1

Добавить к зоне сетевой интерфейс (сохранится после перезагрузки firewall):

# firewall-cmd --zone=public --permanent --add-interface=em1

Можно в конфиге ifcfg-enp1s0 указать, какой зоне принадлежит этот интерфейс. Для этого добавим ZONE=work в файл /etc/sysconfig/network-scripts/ifcfg-enp1s0. Если параметр ZONE не указан, будет назначена зона по-умолчанию (параметр DefaultZone в файле /etc/firewalld/firewalld.conf.

Разрешить диапазон портов:

# firewall-cmd --zone=public --add-port=5059-5061/udp

Маскарад (masquerade, он же nat, он же...):

Проверить статус:

# firewall-cmd --zone=external --query-masquerade

Включить:

# firewall-cmd --zone=external --add-masquerade

Здесь надо отметить, что вы можете включить masquerade и для зоны public, например.

Перенаправить входящие на 22 порт на другой хост:

# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

Перенаправить входящие на 22 порт на другой хост с изменением порта назначения (с 22 на 192.168.1.23:2055):

# firewall-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

На этом закончу, т.к. примеров может быть бесконечно много. Добавлю только, что лично я не составил окончательно свое мнение по поводу нововведения firewalld, т.к. к синтаксису привыкаешь долго и если в вашем зоопарке встречаются разные OS Linux, то по первости могут быть проблемы именно с привычкой. Но освоив firewalld, вы расширите кругозор - чаще всего, это стоит затраченных усилий.

Не хочу firewalld! Верните мне старый iptables!

Если все же вы хотите вернуть прошлое и заменить firewalld на iptables, то сделать это совсем не трудно:

Новичкам тут не место:

# systemctl disable firewalld
# systemctl stop firewalld

Ставим старый добрый iptables:

# yum install iptables-services

Запускаем брандмауэр:

# systemctl start iptables
# systemctl start ip6tables

Автозапуск при включении:

# systemctl enable iptables
# systemctl enable ip6tables

Для сохранения правил iptables после перезагрузки:

# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables

Или по-старинке:

# service iptables save

Текущие правила находятся в файлах:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

Перезапуск iptables (например, после совершения каких-либо изменений):

# systemctl restart iptables.service

У меня имеется свежеустановленный сервер CentOS 7 на VDS с виртуализацией KVM. Я расскажу о том, как сделать базовую настройку сервера для использования его в любом качестве на ваше усмотрение. Это может быть web сервер ,vpn сервер , сервер мониторинга . Я расскажу о начальных настройках системы CentOS, которые повышают безопасность и удобство работы с сервером. Отмечу, что в 7-й версии системы произошли некоторые изменения по сравнению с предыдущими версиями.

Введение

Начальная настройка CentOS 7

Итак, у нас имеется: # uname -a Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Первым делом обновим базовую систему:

# yum -y update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:

# ifconfig

И увидите ответ:

Bash: ifconfig: command not found

По крайней мере я, когда впервые это увидел, прилично удивился. Подумал, что ошибся в написании команды, перепроверил все несколько раз, но без результата. Оказалось, что надо отдельно установить пакет для выполнения ifconfig и прочих сетевых утилит.

Вместо ifconfig в CentOS 7 теперь утилита ip . Я не понимаю, зачем пилить отдельные программы для управления сетевыми настройками, если ifconfig и так отлично справляется с задачей. К тому же мне всегда нравилось, что в различных дистрибутивах линукс все примерно одинаковое. С помощью ifconfig можно настроить сеть не только в linux, но и в freebsd. Это удобно. А когда в каждом дистрибутиве свой инструмент это неудобно. Так что предлагаю установить привычный ifconfig.

Сделаем это:

# yum -y install net-tools.x86_64

Теперь, чтобы у нас работали команды nslookup или, к примеру, host необходимо установить пакет bind-utils. Если этого не сделать, то на команду:

# nslookup

Будет вывод:

Bash: nslookup: command not found

Так что устанавливаем bind-utils:

# yum -y install bind-utils

Отключаем SELinux. Его использование и настройка отдельный разговор. Сейчас я не буду этим заниматься. Так что отключаем:

# mcedit /etc/sysconfig/selinux

меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:

# reboot

Указываем сетевые параметры

Добавление репозиториев

Для инсталляции различного софта необходимо подключить репозитории в CentOS . Наиболее популярные это EPEL и rpmforge, поэтому добавим их. Сначала ставим EPEL. С ним все просто, он добавляется из стандартного репозитория:

# yum -y install epel-release

Устанавливаем rpmforge:

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

Установка iftop, atop, htop на CentOS 7

И напоследок добавим несколько полезных утилит, которые могут пригодиться в процессе эксплуатации сервера.

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

# yum -y install iftop

И два интересных диспетчера задач, я чаще всего пользуюсь htop, но иногда пригодится и atop. Ставим оба, сами посмотрите, разберетесь, что вам больше нравится, подходит:

# yum -y install htop # yum -y install atop

Вот как выглядит htop:

На этом у меня все. Базовая настройка CentOS 7 закончена, можно приступать к установке и настройке основного функционала.

Заключение

Мы выполнили некоторые начальные шаги по настройке, которые я обычно делаю при подготовке сервера. Я не претендую на абсолютную истину, возможно что-то упускаю или делаю не совсем верно. Буду рад разумным и осмысленным комментариям и замечаниям с предложениями.

Полезно после настройки сразу же подключить сервер к системе мониторинга. Либо настроить ее, если у вас еще нет. У меня есть подробный цикл статей по настройке мониторинга:

  1. Пример настройки сервера мониторинга zabbix , либо только подключение centos к мониторингу путем установки на него агента.
  2. Настройка email оповещений zabbix через сторонний smtp сервер.
  3. Подробный мониторинг web сервера на базе nginx + php-fpm.
  4. Система мониторинга сайта на базе zabbix.
  5. Наблюдение за mysql репликацией в zabbix.

Видео по настройке CentOS 7

9 октября 2014 в 12:58

Создание файл-сервера на базе FreeBSD с авторизацией в AD

  • IT-инфраструктура ,
  • Сетевые технологии

В этой статье я опишу создание файл-сервера с установленной FreeBSD 9.2 (Samba-3.6) с авторизацией в домене Windows 2003.

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


Итак, начнём с начальных данных:

  • Имя домена: domain.ru;
  • Имя хоста: msrv-file.domain.ru;
  • IP хоста: 10.1.1.6;
  • Имя PDC (он же DNS/AD/DHCP/NTP): msrv-dc1.domain.ru;
  • IP PDC: 10.1.1.10;
  • Болванка с FreeBSD 9.2-i386-bootonly;
  • Доступ в Интернет - обязательно;
  • Печать не нужна.
Не буду углубляться в тонкости установки системы. По этому поводу в интернете тонны информации и как ставить систему пусть каждый решает сам. В данном случае я не пересобирал ядро и не поднимал RAID-массивы. Всё и так прекрасно работает.

Отмечу лишь некоторые нюансы:

  • 1. Во время инсталяции ОС при настройке сетевого интерфейса я осознанно выбрал DHCP, для чего на самом DHCP-сервере было сделано резервирование IP по MAC. Узнать MAC-адрес интерфейса можно с помощью утилиты dmesg.
  • 2. Для правильного резолва я сделал соответствие в DNS-сервере на файл-сервер, а также на самом файл-сервере в файл /etc/hosts добавил следующие строки:

    10.1.1.10 msrv-dc1.domain.ru 10.1.1.6 msrv-file.domain.ru

  • 3. После установки ОБЯЗАТЕЛЬНО сверяем время с PDC (конечно при условии, что он является NTP). При разнице во времени более 5ти минут, файл-сервер будет терять домен.
    Сверяемся командой:

    #ntpdate 10.1.1.10

Переходим к установке Samba (вот здесь первой моей ошибкой была установка порта Heimdal, который, как оказалось, вообще ставить не нужно):

#cd /usr/ports/net/samba36 #make install clean && rehash

Ставил с параметрами:

[X] LDAP With LDAP support [X] ADS With Active Directory support [X] WINBIND With WinBIND support [X] ACL_SUPPORT With ACL support [X] SYSLOG With Syslog support [X] QUOTAS With Disk quota support [X] POPT With system-wide POPT library

Все необходимые пакеты установщик подтянет автоматически согласно зависимостям. Во время установки каждого дополнительного пакета система часто будет спрашивать о параметрах установки. Я всё оставлял по дефолту, только лишь отключал поддержку протокола IPv6, т.к. он нам не нужен.

Далее забиваем конфиги, размещённые в конце статьи. Отмечу, что соблюдение регистра букв обязательно. Если используете Putty, то можно копипастить прямо из вложенных мной конфигов.
smb.conf должен лежать в /usr/local/etc/. Остальные конфиги - в /etc.
Если файла по какому-то недоразумению нет, то создаём его простой командой и тут же забиваем:

#ee /usr/local/etc/smb.conf
Или, например:

#ee /etc/krb5.conf
Проверить конфиг самбы можно утилитой testparm, которая укажет на неверные записи. Опять же, неверные записи не всегда являются таковыми. Тут нужно знать тонкости.

После того, как конфиги забиты запускаем службу samba:

# /usr/local/etc/rc.d/samba.sh start
Или проще:

#service samba start
Хорошим ответом будет:

Starting SAMBA: removing stale tdbs: Starting nmbd. Starting smbd. Starting winbindd.
После любого изменения в конфиге самбы нужно обязательно её перезапустить.

#service samba restart
Итак, система стоит, ПО скомпилировано, конфиги забиты. Пришло время ввода машину в домен.
Получаем билет:

# kinit -p dl_admin // где dl_admin - администратор домена [email protected]"s Password: // система попросит пароль админа домена # klist // проверяем полученный билет Credentials cache: FILE:/tmp/krb5cc_0 // ответ должен быть примерно таким Principal: [email protected] Issued Expires Principal Oct 05 10:37:52 Oct 05 17:17:52 krbtgt/[email protected]
Вводим самбу, а соответственно и сам сервер в Active Directory:

# net ads join -U dl_admin dl_admin"s password: Joined "MSRV-FILE" to realm "DOMAIN.RU"
Проверяем:

# wbinfo -p Ping to winbindd succeeded on fd 4

# wbinfo -t checking the trust secret via RPC calls succeeded

# wbinfo -g возвращает список групп пользователей

# wbinfo -u возвращает список пользователей

# id dl_admin возвращает идентификатор пользователя

На этом, собственно, можно и закончить, но чтобы не было проблем с записью в расшаренный каталог, рекомендую назначить админа домена в качестве владельца для расшары с указанием группы юзеров:

# chown -R dl_admin:"Domain Users" /home/share # chmod -R 770 /home/share

Вложения:

krb5.conf

Default = FILE:/var/log/kerberos/krb5libs.log kdc = FILE:/var/log/kerberos/krb5kdc.log admin_server = FILE:/var/log/kerberos/kadmin.log ticket_lifetime = 24000 default_realm = DOMAIN.RU dns_lookup_realm = false dns_lookup_kdc = false kdc_req_checksum_type = 2 checksum_type = 2 ccache_type = 1 forwardable = true proxiable = true clockskew = 300 v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } DOMAIN.RU = { kdc = tcp/10.1.1.10:88 admin_server = tcp/10.1.1.10:749 default_domain = DOMAIN.RU } .domain.ru = DOMAIN.RU domain.ru = DOMAIN.RU debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false krb4_convert = false krb4_get_tickets = false


nsswitch.conf

group: files winbind group_compat: nis hosts: files dns networks: files passwd: files winbind passwd_compat: nis #shells: files #services: compat #services_compat: nis #protocols: files #rpc: files


rc.conf

hostname="msrv-file.domain.ru" keymap="ru.koi8-r.win.kbd" ifconfig_bge0="DHCP" sshd_enable="YES" moused_enable="YES" ntpd_enable="YES" powerd_enable="YES" # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable dumpdev="NO" # -- sysinstall generated deltas -- # Sun Oct 5 10:31:10 2014 mousechar_start="3" font8x8="cp866-8x8" font8x14="cp866-8x14" font8x16="cp866b-8x16" scrnmap="koi8-r2cp866" keymap="ru.koi8-r" # smbd_enable="YES" samba_enable="YES" nmbd_enable="YES" winbindd_enable="YES" # -- sysinstall generated deltas -- # Sun Oct 5 15:09:56 2014 tcp_extensions="YES"


resolv.conf

# Generated by resolvconf nameserver 10.1.1.10


smb.conf

Dos charset = cp866 unix charset = koi8-r display charset = koi8-r workgroup = DOMAIN realm = DOMAIN.RU netbios name = MSRV-FILE server string = File Server %v security = ADS auth methods = winbind map to guest = Bad User log file = /var/log/samba/log.%m max log size = 50 client signing = Yes preferred master = No local master = No domain master = No dns proxy = No winbind use default domain = Yes inherit acls = Yes hosts allow = 10.1.1., 127. map acl inherit = Yes case sensitive = No nt acl support = Yes os level = 10 socket options = SO_RCVBUF=8192 SO_SNDBUF=8192 TCP_NODELAY load printers = No printing = bsd guest account = nobody guest ok = yes winbind enum users = Yes winbind enum groups = Yes winbind nested groups = No winbind refresh tickets = Yes idmap config * : range = 600-20000 idmap config * : backend = tdb interfaces = bge0 comment = Temporary file space path = /tmp read only = No create mask = 0666 create mode = 666 directory mode = 666 directory mask = 0777 guest ok = Yes comment = Share Directory path = /home/share write list = "@DOMAIN.RU\Domain Admins", "@DOMAIN.RU\Domain Users" read only = No create mode = 660 directory mode = 660 create mask = 0660 directory mask = 0770

Теги:

  • freebsd
  • samba
  • active directory
Добавить метки

Частях мы рассмотрели установку и настройку операционной системы Freebsd 10.1 для разворачивания на ней блога wordpress. Теперь предстоит установить и настроить программное обеспечение, необходимое для нашего web сервера.

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

Устанавливаем ftp сервер vsftpd

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

Первым делом обновим порты:

# portsnap fetch update

После обновления, ставим сервер:

# cd /usr/ports/ftp/vsftpd # make install clean

Компоненты оставляем по-умолчанию. Добавляем загрузку vsftpd в /etc/rc.conf :

# echo "vsftpd_enable="YES"" >> /etc/rc.conf

Редактируем конфиг /usr/local/etc/vsftpd.conf

Anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log listen=YES background=YES secure_chroot_dir=/usr/local/share/vsftpd/empty

Запускаем сервер:

# /usr/local/etc/rc.d/vsftpd start

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

# sockstat | grep 21

В ответ должны увидеть что-то похожее:

Root vsftpd 4793 3 tcp4 *:21 *:*

Это означает, что сервер запустился и слушает входящие соединения на 21 порт. С текущими настройками можно залогиниться учетной записью root и перемещаться по всему серверу. Это очень небезопасно, призываю внимательно относиться к этим возможностям. Рекомендую подробнее ознакомиться с настройками сервера, обратить внимание на директивы userlist_enable, userlist_file, chroot_local_uses, chroot_list_enable, chroot_list_file. С помощью них можно ограничивать доступ к серверу и перемещение пользователей по папкам. Вообще, у vsftpd много настроек и возможностей, в интернете достаточно статей на подобную тему. Можно без проблем хранить базу пользователей сервера в mysql. В завершение порекомендую ограничить доступ к ftp через firewall.

Установка и настройка Mysql

# cd /usr/ports/databases/mysql55-server # make install clean

Настройки оставляем дефолтные.

Сервер тянет за собой достаточно большое количество зависимостей. Установка постоянно тормозится и выскакивает окно с настройками очередной зависимости. Чтобы не отвлекаться на это и не тормозить процесс, я рекомендую перед командой make install clean ввести команду:

# make config-recursive

Она проверит все зависимости и выведет сразу настройки этих зависимостей. Потом в процессе сборки пакета уже не будет прерываний.

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

# echo "mysql_enable="YES"" >> /etc/rc.conf # echo "mysql_dbdir="/web/mysql"" >> /etc/rc.conf

Создаем необходимые папки и выставляем права:

# mkdir /web && cd /web && mkdir mysql && chown mysql:mysql mysql/

Создаем файл конфигурации:

# touch /web/mysql/my.cnf # chown mysql:mysql /web/mysql/my.cnf

Записываем следующее содержание в файл настроек:

Port = 3306 socket = /tmp/mysql.sock port = 3306 bind-address =127.0.0.1 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M thread_concurrency = 8 #log=/var/log/mysql.log # Лог всех SQL-запросов #log-bin=/var/log/mysql-bin.log # Бинарный лог всех SQL-запросов log-error=/var/log/mysql-err.log # Лог ошибок в работе демона СУБД MySQL #log-slow-queries=/var/log/mysql.slow # Лог всех медленных SQL-запросов #log-bin=mysql-bin #log=/var/log/mysql.log #binlog_format=mixed server-id = 1 quick max_allowed_packet = 16M no-auto-rehash key_buffer_size = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M interactive-timeout

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

Лог файлы нужно обязательно создать самим и выставить на них права пользователя mysql. Если этого не сделать, то сервер не будет стартовать, и что самое неприятное, не будет никаких сообщений в лог файлах. Они будут созданы с правами root:wheel и сервер ничего туда не сможет записать. Так что создаем файлы сами:

# touch /var/log/mysql-err.log # chown mysql:mysql /var/log/mysql-err.log

И стартуем сервер:

# /usr/local/etc/rc.d/mysql-server start

Проверяем, все ли запустилось как следует:

# ps axw | grep mysql

Если все в порядке, то вы увидите что-то похожее на это:

52490 - Is 0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/web/mysql/my.cnf --user=mysql --datadir=/web/mysql --pid-file=/web/mysql/websrv.local.pid 52784 - I 0:00.17 /usr/local/libexec/mysqld --defaults-extra-file=/web/mysql/my.cnf --basedir=/usr/local --datadir=/web/mysql --plugin-dir=/usr/local/lib/mysql/plugin --user=mysql --log-err 52802 1 S+ 0:00.00 grep mysql

# /usr/local/bin/mysql_secure_installation

Задаем пароль root пользователя mysql. Обращаю внимание, что это не системный root. В mysql свои пользователи. На остальные вопросы отвечаем положительно, в принципе, там все понятно описано, ничего сложного нет. Удаляется тестовая база, тестовый пользователь, запрещается удаленный доступ к серверу.

Устанавливаем и настраиваем apache24

Устанавливаем непосредственно web сервер apache:

# cd /usr/ports/www/apache24 # make config-recursive

Оставляем все настройки по-умолчанию. Запускаем установку:

# make install clean

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

# echo "apache24_enable="YES"" >> /etc/rc.conf

Теперь создадим 2 виртуальных хоста. На первом будет располагаться phpmyadmin, на втором наш сайт, в данном случае wordpress. Не забываем настроить в DNS эти хосты. Раскомментируем строчку в конфиге /usr/local/etc/apache24/httpd.conf

Include etc/apache24/extra/httpd-vhosts.conf

ServerAdmin [email protected] DocumentRoot "/web/sites/websrv.local/www" ServerName websrv.local ServerAlias www.websrv.local ErrorLog "/web/sites/websrv.local/log/error.log" CustomLog "/web/sites/websrv.local/log/access.log" common php_admin_value open_basedir "/web/sites/websrv.local:." php_admin_value upload_tmp_dir "/web/sites/websrv.local/tmp" php_admin_value session.save_path "/web/sites/websrv.local/tmp" AllowOverride All RewriteEngine On Require all granted DirectoryIndex index.php index.html index.htm Order allow,deny Allow from All ServerAdmin [email protected] DocumentRoot "/web/sites/pma53.websrv.local/www" ServerName pma53.websrv.local ServerAlias www.pma53.websrv.local ErrorLog "/web/sites/pma53.websrv.local/log/error.log" CustomLog "/web/sites/pma53.websrv.local/log/access.log" common php_admin_value open_basedir "/web/sites/pma53.websrv.local:." php_admin_value upload_tmp_dir "/web/sites/pma53.websrv.local/tmp" php_admin_value session.save_path "/web/sites/pma53.websrv.local/tmp" AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm Order allow,deny Allow from All

Я использую тестовый домен websrv.local В общем случае тут должен быть непосредственно домен вашего сайта, что-то вроде myblog.ru. Для phpmyadmin я использую поддомен с произвольным непопулярным именем, чтобы туда не заходил тот, кому не следует.

Обращаю внимание на параметр Require all granted . На предыдущих серверах я его не указывал. В этот же раз при обращении к виртуальному домену в логах получал ошибку:

AH01630: client denied by server configuration

Скорее всего это особенность apache24, до этого я пользовался более ранними версиями.

Сайты я размещаю в каталоге /web/sites. Для каждого домена отдельная папка. Для улучшения безопасности можно настроить отдельных пользователей для каждого поддомена, сделать пользователя ftp, доступ к логам и так далее. В этой статье я не буду касаться этого вопроса. У нас будет один сайт и один пользователь. Создаем необходимые папки:

# mkdir /web/sites # mkdir /web/sites/websrv.local && mkdir /web/sites/pma53.websrv.local # cd /web/sites/websrv.local && mkdir log tmp www # cd /web/sites/pma53.websrv.local && mkdir log tmp www # chown -R www:www /web/sites

На этом пока настройку apache закончим, мы к ней вернемся позже, когда установим остальные компоненты. Запускать его не будем, он все равно не запустится, выдаст ошибку.

Устанавливаем php и phpextensions

# cd /usr/ports/lang/php5 # make config-recursive # make install clean

После установки создаем файл конфигурации:

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Устанавливаем расширения:

# cd /usr/ports/lang/php5-extensions # make config-recursive

Помимо настроек по-умолчанию, обязательно добавляем CURL, DOM, POSIX, FTP, GD, HASH, ICONV, XML, JSON, MBSTRING, MYSQL, MYSQLI, OPENSSL, SOCKETS, TOKENIZER, XMLREADER, ZLIB, EXIF, GETTEXT,

# make install clean

Теперь поставим модуль php для apache. Он теперь стал почему-то отдельным портом. Я не сразу первый раз сообразил, куда делся модуль, который всегда ставился вместе с портом php. В общем, ставим отдельно:

# cd /usr/ports/www/mod_php5 # make install clean

Для того, чтобы apache правильно обрабатывал php файлы, необходимо в конфиг httpd.conf добавить следующие строки:

AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php index.html

Теперь можно запустить apache и проверить, все ли у нас в порядке. Сначала проверим, нет ли у нас ошибок в конфигурации:

# apachectl -t AH00526: Syntax error on line 15 of /usr/local/etc/apache24/extra/httpd-vhosts.conf: Invalid command "RewriteEngine", perhaps misspelled or defined by a module not included in the server configuration

У нас ошибка, модуль mod_rewrite не подключен. Чтобы это исправить, раскомментируем в конфиге апача строку

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Проверяем снова:

# apachectl -t AH00557: httpd: apr_sockaddr_info_get() failed for websrv.local AH00558: httpd: Could not reliably determine the server"s fully qualified domain name, using 127.0.0.1. Set the "ServerName" directive globally to suppress this message Syntax OK

Снова ошибка, но не критичная, можно работать и с ней, но мы все равно ее исправим. В фале httpd.conf находим строку со значением ServerName и приводим ее к виду:

ServerName websrv.local:80

Сохраняем файл, проверяем конфигурацию:

# apachectl -t Syntax OK

Все в порядке, можно стартовать apache:

# /usr/local/etc/rc.d/apache24 start

Проверяем, все ли запустилось:

# ps ax | grep httpd 60555 - Ss 0:00.06 /usr/local/sbin/httpd -DNOHTTPACCEPT 60556 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60557 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60558 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60559 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60560 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT

Если получаете что-то подобное, значит все в порядке. Сейчас можно в браузере набрать http://ip-сервера/ и увидеть страничку с одной единственной надписью:

It works!

Это означает, что веб сервер apache работает, все в порядке.

Настройка frontend сервера nginx

Теперь будем настраивать наш frontend — nginx. Он будет смотреть в интернет и принимать запросы от пользователей, чтобы потом их перенаправлять на apache. Идем в порты и устанавливаем nginx:

# cd /usr/ports/www/nginx-devel # make install clean

Выбираем опции:

[X] HTTP_MODULE Enable HTTP module [X] HTTP_ADDITION_MODULE Enable http_addition module [X] HTTP_DAV_MODULE Enable http_webdav module [X] HTTP_FLV_MODULE Enable http_flv module [X] HTTP_PERL_MODULE Enable http_perl module [X] HTTP_REALIP_MODULE Enable http_realip module [X] HTTP_REWRITE_MODULE Enable http_rewrite module [X] HTTP_SSL_MODULE Enable http_ssl module [X] HTTP_STATUS_MODULE Enable http_stub_status module [X] HTTP_SUB_MODULE Enable http_sub module [X] WWW Enable html sample files

Добавим nginx в автозагрузку:

# echo "nginx_enable="YES"" >> /etc/rc.conf

Редактируем конфиг nginx /usr/local/etc/nginx/nginx.conf , приводим его к следующему виду:

Worker_processes 1; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; sendfile on; keepalive_timeout 65; gzip on; server { listen 145.152.71.220:80; server_name localhost; location / { proxy_pass http://127.0.0.1; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_send_lowat 12000; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /var/tmp/nginx; } } }

Listen 145.152.71.220:80;

Указываем свой внешний ip адрес. Проверяем настройки nginx:

# nginx -t

Если видите:

Nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

значит все в порядке.

Теперь необходимо изменить конфигурацию apache, чтобы он слушал только локальный интерфейс 127.0.0.1, а все внешние запросы принимал nginx и перенаправлял к apache. Меняем в /usr/local/etc/apache24/httpd.conf строку с параметром Listen, приводим к виду:

Listen 127.0.0.1:80

Перезапускаем apache:

# /usr/local/etc/rc.d/apache24 restart

Запускаем nginx:

# /usr/local/etc/rc.d/nginx start

Наш веб сервер готов. Теперь проверим его работу. Создадим в папке /web/sites/websrv.local/www файл index.php с содержимым

Заходим в браузере по адресу http://websrb.local

Если вы видите информацию о версии php и его модулях, значит все настроено и работает.

Установка phpmyadmin на виртуальный хост

Остался последний шаг в нашем деле — установка phpmyadmin. В принципе, wordpress можно установить уже сейчас, но без удобного средства работы с mysql как-то неловко. В будущем оно все равно пригодится. Так что ставим из портов:

# cd /usr/ports/databases/phpmyadmin # make install clean

По-умолчанию, phpmyadmin устанавливается в папку /usr/local/www/phpMyAdmin, но так как мы для него создали отдельный виртуальный хост, то переносим все содержимое папки туда:

# mv /usr/local/www/phpMyAdmin/* /web/sites/pma53.websrv.local/www/ # chown -R www:www /web/sites/pma53.websrv.local/www/

Создаем папку для конфига:

# mkdir /web/sites/pma53.websrv.local/www/config # chmod 0750 /web/sites/pma53.websrv.local/www/config && chown www:www /web/sites/pma53.websrv.local/www/config

Дальше идем по адресу http://pma53.websrv.local/setup/ нажимаем «новый сервер» и настраиваем. Не буду подробно на этом останавливаться, там все просто и многократно описано в интернете. Выбираем все значения инсталлятора по умолчанию.

На этом все. Наш web сервер готов. Загружаем скрипты сайта в /web/sites/websrv.local/www и пользуемся.

Я думаю, для быстрого старта в любой новой профессиональной области нет лучшего источника информации — в её концентрированном и систематизированном виде, — чем специализированная на этой же самой теме книга. Как минимум, так было раньше. Сейчас появилась очень хорошая альтернатива этому, которая очень хорошо пошла особенно у молодежи — это обучающие видеокурсы .

В самом деле, их наглядность и доступность порой творят чудеса — какие-то совершенно новые концепции здесь можно хорошо усваивать буквально «с колес». Лично моё мнение, чаще всего такие видеоуроки не могут (пока?) полноценно заменить стоящую и глубокую книгу, но вот в качестве быстрого введения и чисто психологического средства снятия различных фобий и блоков у «полного нуля» перед новой для него темой — это самое то, что нужно.

Итак, я уже освещал подробно все книги (печатные) вышедшие , теперь настала пора перечислить (с работающими линками на скачку, конечно) — все обучающие видеокурсы на русском по FreeBSD.

Скачивайте и учитесь быстро и легко!

Перед началом перечисления оных — сразу замечание. Все эти курсы предназначены для начинающих пользователей только! Здесь даются столь важные основы для самостоятельного старта — короче, самое сложное и нужное именно для новичка, здесь нет никаких элементов rocket science. Все ссылки мною были проверены на момент публикации — все работало. И даже если где-то что-то уже и не скачиватся, с помощью поиска, почти всегда по выходным данным курса, приведенным здесь, можно самостоятельно найти какие-то альтернативные рабочие ФО для их скачки.


№1: FreeBSD: Базовый и сетевой курс по FreeBSD, Программируй на Unix Shell — Г.Чилингаров

  • Базовый тренинг по FreeBSD — для самых новичков, как ставить систему, как инсталлировать программное обеспечение и так далее.
  • Сетевой курс по FreeBSD — как настраивать сеть, как установить ip адреса, маршрутизация и настройка NAT. Дается теоретический материал по работе сетей, по работе протокола IP, по основам маршрутизации.
  • Программируй на Unix Shell — пособие для тех, кто уже пользуется shell, но пока тратит свое время впустую и не заставляет shell делать большую часть задач автоматически.
  • BONUS — ответы на вопросы, дополнительные материалы.

FreeBSD: Базовый курс:

  • небольшой экскурс в историю UNIX систем, идеология системы, установка системы с нуля, дисковые разделы в FreeBSD, как стоит разбивать жесткий диск во время установки системы
  • инсталляция базового програмного обеспечения, установка/удаление пакетов и портов, обновление портов
  • добавление/удаление пользователей, смена пароля, управление пользователями, группы, как работают привилегии доступа
  • список популярных команд (посмотреть на пример подкаста)
  • текстовые редакторы (pico/vi/vim)
  • введение в ip сети, настройка сети
  • введение в ip маршрутизацию, что такое статическая/динамичесткая маршрутизация, настройка статической маршрутизации
  • настройка синхронизации времени, другие полезные сетевые сервисы
  • статистика сети
  • периодические задачи, cron, crontab
  • процессы в FreeBSD, статистика процессов, статистика дискового ввода-вывода

FreeBSD: Сетевой курс:

  • модель OSI, физический уровень, LLC
  • IP сети, tcpdump, настройка интерфейсов
  • введение в IP маршрутизацию, настройка маршрутизации в FreeBSD
  • Как работает маршрутизация в Unix системах
  • Настройка Bridging и NAT в FreeBSD. Полезные программы для отладки сети.
  • Полезные сетевые сервисы, inetd, sshd, ftpd

FreeBSD: Программируй на Unix Shell:

  • Каст #1 — Вводный материал
  • Каст #2 — Базовые понятие shell
  • Каст #3 — Ввод-вывод в shell, использование subshell
  • Каст #4 — Команды case, eval и эмуляция массивов в shell
  • Каст #5 — Команда sed
  • Каст #6 — Команда awk
  • Каст #7 — Что делать дальше?

Скачать можно здесь:


№2: Установка виртуальной машины FreeBSD в VMware

Оригинальное название: Установка виртуальной машины FreeBSD в VMware
Год выхода: 2010
Жанр: Видеоурок
Режиссер: Смоляной Сергей
Видео кодек: XviD
Видео: XVID MPEG-4 640×480 at 15.000 fps
Аудио: MPEG 1 Audio, Layer 3 (MP3) at 32.0 Кбит/сек 1 канал, 44.1 КГц
Размер: 1.59 Gb
  1. Инсталляция FREEBSD в программе VMWARE. 12 мин.
  2. Соединение 2-х виртуальных машин в локальную сеть. Часть 1 24 мин.
  3. Соединение 2-х виртуальных машин в локальную сеть.
  4. Часть 2 11 мин.
  5. Копируем файлы по сети. 6 мин.
  6. Русифицируем. 7 мин.
  7. Монтируем 23 мин.
  8. Украшаем. 15 мин.
  9. Подключаем интернет, порты (обновляем,устанавливаем,удаляем). 9 мин.
  10. Midnight Commander. 28 мин.
  11. Маска подсети. 20 мин.
  12. Инсталляция сервера DNS (master). 29 мин.
  13. Инсталляция SAMBA (share). 25 мин.
  14. WEB-сервер (Apache,PHP,MYSQL). 18 мин.
  15. FIREWALL (IPFW). 43 мин.
  16. Оконный менеджер Fluxbox (запуск, заставка на рабочий стол). Часть 1. 11 мин
  17. Оконный менеджер Fluxbox (русификация, перключатель раскладки клавиатуры xxkb). Часть 2. 9 мин.
  18. Оконный менеджер Fluxbox (меню). Часть 3. 17 мин.
  19. Оконный менеджер Fluxbox (иконки idesk, рабочие столы). Часть 4.


№3: Видео уроки по FreeBSD от Besha

Название: FreeBSD (видеотренинг)
Год выпуска: 2009
Исполнитель: http://besha.bos.ru/
Язык: русский
Жанр: компьютерные видеоуроки
Формат: AVI
Видео кодек: CRAM
Аудио кодек: PCM
Видео: 740×592, 10 Гц, 210 Кбит/сек
Аудио: 44100 Гц, Моно, 705 Кбит/сек
Размер: 1.21 GB
  • Урок 1: Показывается как можно установить операционную систему FreeBSD 7.2 на виртуальную машину
  • Урок 2: Демонстрируется выполнение некоторых команд FreeBSD которые помогут начинающим производить действия над файлами и папками, так же показано создание пользователя в системе.... З.Ы. Не забывайте об команде man)))
  • Урок 3: Рассказывается о базовых командах FreeBSD. О правах доступа к файлам и другое.
  • Урок 4: Показана установка MySQL сервера под операционной системой FreeBSD
  • Урок 5: Показана установка веб сервера Apache под операционной системой FreeBSD
  • Урок 6: Показывается процесс установки PHP под операционной системой FreeBSD
  • Урок 7: Рассказывается об обновлении дерева портов в FreeBSD
  • Урок 8: Показано как можно настроить FTP сервер на FreeBSD
  • Урок 9: Показано как настроить TFTP сервер на FreeBSD
  • Урок 10: Показано как настроить VPN сервер (MPD5) на FreeBSD
  • Урок 11: Настройка VPN IPSEC


№4: 8 видеоуроков по FreeBSD 8

Данный сборник содержит 8 видеоуроков по FreeBSD 8. В них наглядно и подробно описывается установка и настройка различных программ (с соответствующими привязками).

К каждому уроку прилагаются соответствующие файлы конфигурации.

Название: 8 видеоуроков по FreeBSD 8
Год выпуска: 2010
Жанр: Обучающее видео
Качество видео: Virtual PC Rec (~ 750kbps)
Видеокодек: Xvid (1024×768)
Язык: Русский
Формат файлов: AVI
Продолжительность: ~ 16ч.23м.
Размер файлов: 1,22 GB — Rar (4,70 GB — UnRar)
Видео: 1024×768, Format: MPEG-4 Visual, Format profile: Simple@L1, Codec: XVID, Width: 1 024 pixels
Height: 768 pixels
Display aspect ratio: 4:3
Frame rate: 10.000 fps

  • 01. Samba — файл сервер в сети Microsoft, проверка валидации пользователей в Active Directory. (2ч.20м.)
  • 02. Настройка VPN сервера MPD5 на FreeBSD 8.1. (1ч.18м.)
  • 03. IPFW + NAT + кеширующий DNS BIND + прозрачный прокси Squid. (3ч.08м.)
  • 04. Настройка прокси сервера Squid с авторизацией в Active Directory. (1ч.26м.)
  • 05. Samba + OpenLDAP как контроллер домена Windows. (2ч.54м.)
  • 06. Система мониторинга Nagios на FreeBSD 8.1. (2ч.35м.)
  • 07. Почтовый сервер на базе FreeBSD 8 (SendMail) + SpamAssassin + IMAP-UW. (1ч.04м.)
  • 08. Подробное руководство по установке и настройке почтовой системы Postfix с привязкой к базе данных MySQL, POP3 и IMAP серверу Dovecot, антувирусу clamav, антиспаму Spamassassin. Установка Web-интерфейса Postfixadmin. (+ Руководство в формате PDF) (1ч.38 м.)