Home » Linux » CentOS » CentOS 7 настройка сервера

CentOS 7 настройка сервера

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

Введение

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

Еще раз обращаю внимание, что данные настройки я делаю на виртуальном сервере. Если у вас железный сервер, то рекомендуется выполнить еще некоторые настройки, о которых я здесь не упоминаю. К ним относится, к примеру, настройка и проверка отказоустойчивости при выходе одного из дисков. Отключение регулярной проверки массива mdadm и др.

Начальная настройка 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 update

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

# yum install mc

И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Дальше нам пригодятся сетевые утилиты. В минимальной настройке вы будете удивлены, когда наберете команду:

# ifconfig

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

-bash: ifconfig: command not found

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

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

Сделаем это:

# yum install net-tools

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

# nslookup

Будет вывод:

-bash: nslookup: command not found

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

# yum install bind-utils

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

# mcedit /etc/sysconfig/selinux

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

# reboot

Можно без перезагрузки применить отключение SElinux:

# setenforce 0

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

Теперь произведем настройку сети в CentOS.  Для этого открываем файл /etc/sysconfig/network-scripts/ifcfg-eth0

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

В поле IPADDR вводим свой адрес, в NETMASK маску сети, в GATEWAY шлюз, DNS1 адрес днс сервера. Сохраняем файл и перезапускаем сеть для применения настроек:

# /etc/init.d/network restart

Настраиваем firewall

Очень подробно вопрос настройки iptables в CentOS 7 я рассмотрел отдельно. Сейчас мы быстро и просто настроим firewall. В CentOS 7 в качестве фаервола выступает iptables. По-умолчанию он запущен. Чтобы посмотреть текущие правила, нужно ввести команду:

# iptables -L -v -n

Сразу хочу предупредить, что не имея доступа к консоли сервера, настраивать firewall плохая идея. Даже если вы очень хорошо понимаете что делаете и проделывали подобное много раз, все равно есть шанс остаться без доступа к серверу. Так что первым делом перед настройкой iptables проверяем доступ к консоли через KVM или физически.

В 7-й версии CentOS для управления iptables разработан новый инструмент под названием firewalld и все управление производится через него. Я не понял зачем это сделали, и не могу сказать, удобнее с ним стало или нет. По мне, так удобнее использовать одни и те же наработки по iptables. Мигрируя от сервера к серверу и от дистрибутива к дистрибутиву, я просто редактирую скрипт настроек фаервола.

Но CentOS зачем-то придумали firewalld, в Ubuntu стоит ufw, но суть одна и та же — это утилиты для конфигурирования iptables, который один и тот же во всех дистрибутивах. Я привык управлять iptables через самописный скрипт, который переношу от сервера к серверу и редактирую под конкретные потребности. Этим скриптом я и поделюсь. Так что для начала остановим и отключим firewalld:

# systemctl stop firewalld
# systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

Установим утилиты для iptables:

# yum -y install iptables-services

Включим автозапуск iptables:

# systemctl enable iptables

Теперь создадим файл /etc/iptables_rules.sh следующего содержания:

#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=eth0
export WAN_IP=149.154.71.205

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Рзрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для DNS
#$IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT
# Открываем порт для NTP
#$IPT -A INPUT -i $WAN -p udp --dport 123 -j ACCEPT

# Логирование
# Все что не разрешено, но ломится отправим в цепочку undef

$IPT -N undef_in
$IPT -N undef_out
$IPT -N undef_fw
$IPT -A INPUT -j undef_in
$IPT -A OUTPUT -j undef_out
$IPT -A FORWARD -j undef_fw

# Логируем все из undef

$IPT -A undef_in -j LOG --log-level info --log-prefix "-- IN -- DROP "
$IPT -A undef_in -j DROP
$IPT -A undef_out -j LOG --log-level info --log-prefix "-- OUT -- DROP "
$IPT -A undef_out -j DROP
$IPT -A undef_fw -j LOG --log-level info --log-prefix "-- FW -- DROP "
$IPT -A undef_fw -j DROP

# Записываем правила
/sbin/iptables-save  > /etc/sysconfig/iptables

В принципе, добавить нечего, в файле даны все комментарии. В таком виде, логи всего заблокированного будут писаться в файл /var/log/messages и записей там будет очень много. Так что в обычной работе эти строки нужно закомментировать, и использовать только во время отладки. Более подробное описание правил и примеры настроек firewall в случае, когда ваш сервер является шлюзом локальной сети, приведено по ссылке в начале раздела.

Делаем файл c правилами исполняемым и запускаем:

# chmod 0740 /etc/iptables_rules.sh
# /etc/iptables_rules.sh

Проверяем, применились ли правила:

# iptables -L -v -n

При каждом запуске файла с правилами iptables, все изменения записываются в файл /etc/sysconfig/iptables и применяются при загрузке системы.

Настройка SSH в CentOS 7

Дальше внесем некоторые изменения в работу ssh для увеличения безопасности. По-умолчанию, сервис работает на 22 порту и если все оставить как есть, то мы получим огромное количество попыток авторизоваться. Боты сканят непрерывно интернет и подбирают пароли к ssh. Чтобы обезопасить себя от сканов простых ботов, изменим порт, на котором работает ssh. Можно выбрать любой пятизначный номер, это не принципиально. От автоматического сканирования это защитит. Повесим демон ssh на 25333 порт. Для этого редактируем файл /etc/ssh/sshd_config

# mcedit /etc/ssh/sshd_config

Раскомментируем строку Port 22 и заменим значение 22 на 25333.
Так же я обычно разрешаю подключаться по ssh пользователю root. Мне так удобнее. Проблем с этим у меня никогда не возникало. Если вы считаете, что это не безопасно, не трогайте эту настройку. Чтобы разрешить пользователю root подключаться по ssh, раскомментируйте строку PermitRootLogin yes.

Сохраняем файл. Теперь обязательно изменяем настройки iptables, добавляем в разрешенные подключения вместо 22 порта 25333. Если этого не сделать, то после перезапуска sshd мы потеряем удаленный доступ к серверу. Итак, открываем /etc/iptables_rules.sh и меняем в строке

$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

22 на 25333 и исполняем файл. Наше текущее соединение не оборвется, так как оно уже установлено, но заново подключиться по ssh к 22 порту уже н получится.

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

# systemctl restart sshd

Проверяем какой порт слушает sshd:

# netstat -tulpn | grep sshd
tcp        0      0 0.0.0.0:25333           0.0.0.0:*               LISTEN      1799/sshd
tcp6       0      0 :::25333                :::*                    LISTEN      1799/sshd

Если вывод такой же как у меня, то все в порядке, теперь к ssh можно подключаться по 25333 порту.

Добавим еще одну небольшую настройку. Иногда, когда возникают проблемы с dns сервером, логин по ssh подвисает на 30-60 секунд. Вы просто ждете после ввода логина, когда появится возможность ввести пароль. Чтобы избежать этого замедления, укажем ssh не использовать dns в своей работе. Для этого в конфиге раскомментируем строку с параметром UseDNS и отключим его. По-умолчанию он включен.

UseDNS no

Для применения изменений нужно перезапустить ssh службу, как мы уже делали ранее.

Настраиваем время

Узнать, какое время на сервере можно с помощью команды date:

# date

Чтобы сменить часовой пояс, необходимо выбрать подходящий файл часовой зоны в /usr/share/zoneinfo. В случае, если у вас часовой пояс Москвы, выполните следующее:

# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Либо можете воспользоваться специальной утилитой, которая входит в комплект CentOS 7. Делает она ровно то же самое:

# timedatectl set-timezone Europe/Moscow

В CentOS 7 есть утилита для синхронизации времени chrony. В стандартной установке она должна быть установлена в системе, в минимальной ее нет. Если у вас она не стоит, то устанавливайте вручную:

# yum install chrony

Запускаем chrony и добавляем в автозагрузку:

# systemctl start chronyd
# systemctl enable chronyd

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

# systemctl status chronyd
● chronyd.service - NTP client/server
 Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
 Active: active (running) since Fri 2016-08-05 00:33:09 MSK; 52min left
 Main PID: 667 (chronyd)
 CGroup: /system.slice/chronyd.service
 └─667 /usr/sbin/chronyd

Aug 05 00:33:09 centos.local systemd[1]: Starting NTP client/server...
Aug 05 00:33:09 centos.local chronyd[667]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +DEBUG +ASYNCDNS +IPV6 +SECHASH)
Aug 05 00:33:09 centos.local chronyd[667]: Generated key 1
Aug 05 00:33:09 centos.local systemd[1]: Started NTP client/server.
Aug 05 00:33:26 centos.local chronyd[667]: Selected source 85.21.78.91
Aug 05 00:33:26 centos.local chronyd[667]: System clock wrong by -3595.761368 seconds, adjustment started
Aug 04 23:33:30 centos.local chronyd[667]: System clock was stepped by -3595.761368 seconds

Все в порядке, сервис работает. После запуска он автоматически синхронизирует время.

Для синхронизации времени вы можете воспользоваться более привычно программой, которая присутствует практически во всех unix дистрибутивах — ntp. Устанавливаем утилиту синхронизации времени ntp в CentOS:

# yum install ntp

Разово синхронизируем время:

# /usr/sbin/ntpdate pool.ntp.org

Если ntpdate не работает, посмотрите материал, может это ваш случай. Запустим демон синхронизации и запишем его запуск в автозагрузку:

# systemctl start ntpd
# systemctl enable ntpd
ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

Теперь наши часы будут автоматически синхронизироваться с сервером времени.

Более подробно об этой теме написано отдельно в моем материале — установка, настройка и синхронизация времени в CentOS.

Не используйте одновременно оба демона синхронизации времени — chrony и ntp. Выберите какой-нибудь один. Лично я не вижу в них разницы, сам чаще всего ставлю привычный ntp.

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

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

# yum install epel-release

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

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

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

# yum install http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
По последним данным, репозиторий rpmforge закрыт и больше не поддерживается 🙁 https://github.com/repoforge/rpms/issues/375 https://wiki.centos.org/AdditionalResources/Repositories/RPMForge

Настройка хранения истории в bash_history

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

  1. По-умолчанию, сохраняются только последние 1000 команд. Если их будет больше, то более старые будут удаляться и заменяться новыми.
  2. Не указаны даты выполнения команд, только их список в порядке выполнения.
  3. Файл со списком команд обновляется после завершения сессии. При параллельных сессиях часть команд может быть утеряна.
  4. Сохраняются абсолютно все команды, хотя в хранении некоторых нет никакого смысла.

Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history (в начале точка). Его можно открыть любым редактором и посмотреть. Для более удобного вывода списка, можно в консоли ввести команду:

# history

и увидеть пронумерованный список. Быстро найти конкретную команду, можно с помощью фильтрации только нужных строк, например вот так:

# history | grep yum

Так мы увидим все варианты запуска команды yum, которые хранятся в истории. Исправим перечисленные недостатки стандартных настроек хранения истории команд в CentOS 7. Для этого нужно отредактировать файл .bashrc, который находится в том же каталоге, что и файл с историей. Добавляем в него следующие строки:

export HISTSIZE=10000
export HISTTIMEFORMAT="%h %d %H:%M:%S "
PROMPT_COMMAND='history -a'
export HISTIGNORE="ls:ll:history:w:htop"

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

Для применения изменений необходимо разлогиниться и подключиться заново или выполнить команду:

# source ~/.bashrc

Автоматическое обновление системы

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

Для автоматической проверки обновлений нам поможет утилита yum-cron. Ставится она традиционно через yum из стандартного репозитория.

# yum install yum-cron

После установки создается автоматическое задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly. По-умолчанию, утилита скачивает найденные обновления, но не применяет их. Вместо этого, администратору на локальный почтовый ящик root отправляется уведомление об обновлениях. Дальше вы уже в ручном режиме заходите и решаете, устанавливать обновления или нет в удобное для вас время. Мне такой режим работы видится наиболее удобным, поэтому я не меняю эти настройки.

Конфигурационные файлы yum-cron находятся по адресу /etc/yum/yum-cron.conf и yum-cron-hourly.conf. Они неплохо прокомментированы, так что в подробных разъяснениях не нуждаются. Обращаю внимание на раздел [email], где можно указать параметры отправки сообщений. По-умолчанию стоит отправка почты через локальный хост. Можно тут изменить параметры и отправлять сообщения через сторонний почтовый сервер. Но вместо этого лично я предпочитаю глобально для всего сервера настроить пересылку локальной почты root на внешний почтовый ящик через авторизацию на другом smtp сервере.

Отключаем флуд сообщений в /var/log/messages

В дефолтной установке системы CentOS 7, весь ваш системный лог /var/log/messages через некоторое время работы сервера будет забит следующими записями.

Oct 16 14:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 14:01:01 xs-files systemd: Started Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Starting Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 15:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 15:01:01 xs-files systemd: Started Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Started Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 16:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 16:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 16:01:01 xs-files systemd: Started Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Starting Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Removed slice user-0.slice.

Никакой практической пользы они не несут, поэтому отключим их. Для этого создадим отдельное правило для rsyslog, где перечислим все шаблоны сообщений, которые будем вырезать. Разместим это правило в отдельном файле /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop

Сохраняем файл и перезапускаем rsyslog для применения настроек.

# systemctl restart rsyslog

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

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

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

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

# yum install iftop

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

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

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

CentOS 7 установка htop

Для вывода информации о том, какие файлы используются теми или иными процессами, советую поставить утилиту lsof. Она скорее всего рано или поздно пригодится, когда будете диагностировать работу сервера.

# yum install lsof

Рекомендую еще установить несколько нужных и полезных программ, которые часто необходимы, но отсутствуют в минимальной установке — wgetbzip2, traceroute, gdisk.

# yum install wget bzip2 traceroute gdisk

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

Настройка системной почты

В завершение настройки сервера CentOS 7 сделаем так, что бы почта, адресованная локальному root, отправлялась через внешний почтовый сервер на выбранный почтовый ящик. Если этого не сделать, то она будет локально складываться в файл /var/spool/mail/root. А там может быть важная и полезная информация. Настроим ее отправку в ящик системного администратора.

Подробно об этом я рассказал в отдельной статье — Отправка почты через консоль с авторизацией в linux. Здесь кратко только команды и быстрая настройка. Ставим необходимые пакеты:

# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Рисуем примерно такой конфиг для postfix.

cat /etc/postfix/main.cf
## DEFAULT CONFIG BEGIN ######################
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = localhost
inet_protocols = all
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
## DEFAULT CONFIG END ######################

# Имя сервера, которое выводит команда hostname
myhostname = centos7-test.xs.local
# Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель 
# фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
mydomain = centos7-test.xs.local
mydestination = $myhostname
myorigin = $mydomain
# Адрес сервера, через который будем отправлять почту
relayhost = mailsrv.mymail.ru:25
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may

Создаем файл с информацией об имени пользователя и пароле для авторизации.

# mcedit /etc/postfix/sasl_passwd
mailsrv.mymail.ru:25 admin@mymail.ru:password

Создаем db файл.

# postmap /etc/postfix/sasl_passwd

Теперь можно перезапустить postfix и проверить работу.

# systemctl restart postfix

К стандартному алиасу для root в /etc/aliases, добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.

Было:

#root: marc

Стало

root: root,admin@mymail.ru

Обновляем базу сертификатов:

# newaliases

Отправим письмо через консоль локальному руту:

# df -h | mail -s "Disk usage" root

Письмо должно уйти на внешний ящик. На этом настройка локальной почты закончена. Теперь все письма, адресованные локальному root, например, отчеты от cron, будут дублироваться на внешний почтовый ящик, причем с отправкой через нормальный почтовый сервер. Так что письма будут нормально доставляться, не попадая в спам (хотя не обязательно, есть еще эвристические фильтры).

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

  1. Пример настройки сервера мониторинга zabbix, либо только подключение centos к мониторингу путем установки на него агента.
  2. В отдельной рубрике zabbix есть много примеров для мониторинга различных полезных метрик.

Из наиболее популярных и масштабных статей по настройке различного функционала на базе сервера centos хочу отметить следующие:

И никогда не забывайте про бэкап и его проверку — бэкап или перенос linux сервера.

Обсуждение статьи на форумессылка открывается в новой вкладке.

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

Помогла статья? Есть возможность отблагодарить автора

134 комментария

  1. Приветствую! Я установил на свой сервер под управлением CentOS 7 скрипт для управления iptables (файл iptables_rules.sh), и при попытке пропинговать шлюз и 8.8.8.8 появилось сообщение «Команда запрещена». Это так и должно быть, или я что-то сделал не так? Все команды в файле я прописывал один в один с Ваших рекомендаций.

    • Zerox

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

      • Сегодня закомментирую все команды в iptables_rules.sh, если проблема исчезнет, то пришлю скрин текста файла на Вам проверку. Можно?

        Напишите, пожалуйста, на что еще обратить внимание?

        Заранее благодарен.

        • Zerox

          Могу посоветовать только внимательно все проверить. У статьи очень много просмотров и на ошибки никто не жалуется, кроме тех, кто либо не понимает, что делает, либо ошибается.

  2. Спасибо за статью! Все толково по делу кратко и четко!

    Скажите пожалуйста если Hetzner говорит в настройках, что мой внешний IP был изменен на другой посредствам NAT и его нужно использовать в настройках vServer соответственно везде где мы писали IP сервера я применяю уже этот IP ?

    Был (и есть только для доступа по SSH) IP 138.201.185.xxx а стал -> 172.31.1.xxx и вот именно 172.31.1.xxx он предлагает везде прописать в конфигах

    Не знаете зачем Hetzner так делает ?

    • Zerox

      Добрый день. IP к нату никакого отношения не имеет. Как я понял из написанного, у вас был прямой внешний IP, теперь его нет и есть серый IP и доступ через NAT. Как в таком случае получать доступ по ssh к серверу я не знаю. К серому IP невозможно подключиться через интернет, если не настроен проброс портов через NAT.

      Зачем хетзнер так делает, не знаю, не пользовался им никогда. Возможно прямой IP стоит отдельных денег и он его отключает через какое-то время.

  3. Доброго дня,

    Спасибо за статью помогла быстро развернуть сервер с минимальным необходимым набором ПО так же помогла статья по FTP.
    Удачи в работе и отдыхе!

  4. Кирилл

    Доброго дня, подскажите что делать тем кого обделила судьба присутствием файла «ifcfg-eth0»? Создать его в директории в которой было указано где он находится ? Или же конфигурировать файд ifcfg-lo ?

    • Zerox

      Так может интерфейс по-другому называется? Там есть еще какие-то файлы, начинающиеся на ifcfg?

      • Кирилл

        Да есть, «ifcfg-lo» в нем содержание ip, maska, broadcast.
        Но я создал файл «ifcfg-eth0» назвал его иначе «ifcfg-mlx4_ib3» mlx4_ib3 название мой сетевой карты и в этот файл внес Вами написанные конфигурации с мойми данными. Щас вот начну проверять и настраивать все заново с этим файлом.
        Посмотрю что получится, все настройки однозначно у меня получаются, только вот доходя до настройки порта с «22 на 25333», порт не меняется. Но скажу что ранее говорил, щас буду заново все настраивать.
        Интересно прям пипец почему порт не менялся, скорей всего из за этого файла «ifcfg-eth0» т.к. он отсутствовал, либо мои настройки с адресами были не верны в файле «ifcfg-lo»

        • Zerox

          Не-не-не, все не то. Название файла должно точно соответствовать имени сетевого интерфейса. Список всех сетевых интерфейсов можно посмотреть командой в консоли: «ip a», кавычки убрать.

  5. Добрый день, думаю, также будет полезно установить ntsysv и убрать из автозагрузки не нужные «вещи»

    • Zerox

      А есть список ненужных вещей? Я на самом деле давно собирался его подготовить, но руки так и не дошли. Использую дефолтную конфигурацию, отключаю только ntwork manager.

  6. Здравствуйте.
    Спасибо за статью.
    Я не очень внимательно читал статью, и не остановил firewalld. В результате столкнулся с проблемой доступа к Webmin.
    После перезагрузки порт 10000 был блокирован. Помогало iptables -I INPUT -p tcp —dport 10000 -j ACCEPT , но до перезагрузки.
    Я начал разбираться и наткнулся на статью (http://bozza.ru/art-259.html) где сказано «Centos 7, в отличие от CentOS 6, в базе идет с новым брандмауэром — firewalld». Я так понял firewalld боле продвинутая штука , например там есть понятия «зона». Iptables и firewalld могут жить вместе , но Firewalld имеет более высокий приоритет.
    Возможно не стоит сразу отказывается от нового, а потратить время на изучение. Например не отказываться сразу от SELinux, а посмотреть на SEManage.
    С уважением.

    • Zerox

      Firewalld это просто надстройка над iptables для удобства управления. Он от iptables не отделим. Так как мне приходится работать с разными серверами, а firewalld есть только на centos, то мне удобнее работать напрямую с iptables, так как эти конфигурации я могу легко переносить на разные сервера с разными системами. Это универсальное решение. К тому же firewalld был придуман для упрощения работы с iptables. Я уже и так умею работать с iptables, мне нет необходимости упрощенной работы с ними. Да и дебажить сложные конфигурации в iptables будет проще напрямую, нежели через firewalld.

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

  7. Добрый день!
    А есть материал как добавить сертификаты на сайт?

  8. Виктор

    Здравствуйте.
    Спасибо за труды, отличная статья. Есть маленькая проблемка…
    После того, как сделал файл исполняемым:
    chmod 0740 /etc/iptables_rules.sh
    и попытался запустить:
    /etc/iptables_rules.sh
    получил вот такое сообщение: iptables: No chain/target/match by that name.
    Если я правильно понимаю, то нет какого-то модуля?

  9. Доброго времени!
    Подскажите пожалуйста в чем может быть дело?
    Выполнив команды:
    ——————————-
    # systemctl stop firewalld
    # systemctl disable firewalld
    ——————————-
    не могу удалить эти файлы:
    ———————————————————————————
    rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
    rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’
    ———————————————————————————
    т.к их там просто нет.
    Если проигнорировать то что этих файлов нет то iptables не устанавливается.
    Вот что пишет:
    ==========================================================================================
    [root@centos-test ~]# yum -y install iptables-services
    Загружены модули: fastestmirror
    http://mirror.awanti.com/centos/7.3.1611/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 — «Failed to connect to 91.190.113.114: Сеть недоступна»
    Пробуем другое зеркало.
    http://centos-mirror.rbc.ru/pub/centos/7.3.1611/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 — «Failed to connect to 80.68.250.218: Сеть недоступна»

    …..(продолжает тестировать другие зеркала)

    Пробуем другое зеркало.
    http://mirror.yandex.ru/centos/7.3.1611/updates/x86_64/repodata/repomd.xml: [Errno 14] curl#7 — «Failed to connect to 2a02:6b8::183: Сеть недоступна»
    Пробуем другое зеркало.
    Loading mirror speeds from cached hostfile
    * base: mirror.yandex.ru
    * extras: mirror.yandex.ru
    * updates: mirror.yandex.ru
    Разрешение зависимостей
    —> Проверка сценария
    —> Пакет iptables-services.x86_64 0:1.4.21-17.el7 помечен для установки
    —> Проверка зависимостей окончена

    Зависимости определены

    ====================================================================================================
    Package Архитектура Версия Репозиторий Размер
    ====================================================================================================
    Установка:
    iptables-services x86_64 1.4.21-17.el7 base 50 k

    Итого за операцию
    ====================================================================================================
    Установить 1 пакет

    Объем загрузки: 50 k
    Объем изменений: 24 k
    Downloading packages:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    iptables-services-1.4.21-17.el FAILED
    http://mirror.awanti.com/centos/7.3.1611/os/x86_64/Packages/iptables-services-1.4.21-17.el7.x86_64.rpm: [Errno 14] curl#7 — «Failed to connect to 91.190.113.114: Network is unreachable»
    Пробуем другое зеркало.

    …..(продолжает тестировать другие зеркала)

    Это окончание —
    Error downloading packages:
    iptables-services-1.4.21-17.el7.x86_64: [Errno 256] No more mirrors to try.
    ==========================================================================================
    Самостоятельно решить задачу не удается.

    • Zerox

      Так тут налицо проблемы с сетью. В конце же четко написано: «Error downloading packages: iptables-services-1.4.21-17.el7.x86_64: [Errno 256] No more mirrors to try.» Так быть не должно. Для центос полно зеркал, надо разобраться, почему из них не скачивает.

  10. Алексей

    Доброго времени суток. Вопрос может показаться дурацким и глупым, но всё таки…Есть задача развернуть Zabbix в корпоративной сети(без доступа к интернету), на WMvare поставил CentOS и приступил к настройке, естественно с самого начала столкнулся с проблемами: yum update…НЕ подскажите, есть ли какая то возможность настроить сервер по вашей статье Оффлайн?Доступ в глобальную сеть невозможен, по причине корпоративной политики информационной безопасности.

    • Zerox

      Честно говоря, даже не знаю, что посоветовать. Не сталкивался с такой ситуацией. Уверен, что все можно настроить, нужно будет пакеты вручную качать и ставить. Практически не знаю, как это правильно сделать, так как ни разу не делал. Я бы поступил по-другому. Настроил где-то в другом месте образ и принес его в нужное место. И больше уже не обновлял без особой надобности. Разницы в том, скачаешь ты пакет из интернета и дашь его машине в режиме оффлайн ничем не отличается о того, что ты в другом месте все установишь автоматически из интернета и принесешь настроенный образ.

    • Ставите на виртуалке подключенной в инет, все обновляете, сливаете образ в файл / ovf template, разворачиваете на варе на месте.

  11. Команда ip как раз есть во всех unix-like дистрибутивах в отличии от ifconfig.

    • Zerox

      В freebsd нет. Я раньше много freebsd админил.

      • Странно, всегда думал наоборот. В любом случаем ifconfig уже устарел и менее информативен. Рекомендую почитать https://habrahabr.ru/post/320278/

        • Zerox

          Я все это знаю и сам почти всегда использую ip. Но на самом деле новое не кажется мне более удобным. Например, смотрим маршруты двумя командами:
          ip ro
          netstat -nr
          Или открытые порты:
          ss -tulnp
          netstat -tulnp
          Предлагаю сравнить самим, где вывод будет более информативен и удобен. По-моему, ответ чем пользоваться очевиден.

          • Сергей

            Не подскажите почему может отваливаться доступ к SSH (22порт)? После 7 первых выполненных пунктов. Так три раза пробовал, спасает только полный снос системы

  12. rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
    rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’

    На это, консоль мне отвечает «No such file or directory». Предыдущие шаги выполнены. Что-то не так или можно продолжать?

  13. А ещё, вот на этом у меня всё виснет:

    # Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
    $IPT -P INPUT DROP
    $IPT -P OUTPUT DROP
    $IPT -P FORWARD DROP

    …и Putty говорит «Connection Abort» Рестарт сессии приводит к отказу по таймауту. И это во второй раз, на том же месте. Digitalocean, если что.

    Что там может быть?

  14. Добрый день и спасибо за статью!
    Прошу показать: CentOS не запускает второй сетевой интерфейс.
    enp0s25 — запущен и работает

    lspci -v показывает два контроллера:

    00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network Connection (rev 02)
    Subsystem: Intel Corporation Device 0001
    Flags: bus master, fast devsel, latency 0, IRQ 29
    Memory at e0380000 (32-bit, non-prefetchable) [size=128K]
    Memory at e03a4000 (32-bit, non-prefetchable) [size=4K]
    I/O ports at 3400 [size=32]
    Capabilities:
    Kernel driver in use: e1000e
    Kernel modules: e1000e

    06:00.0 Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] (rev 8b)
    Subsystem: D-Link System Inc DFE-520TX Fast Ethernet PCI Adapter
    Flags: bus master, stepping, medium devsel, latency 32, IRQ 11
    I/O ports at 1000 [size=256]
    Memory at e0000000 (32-bit, non-prefetchable) [size=256]
    Capabilities:
    Что не так со вторым интерфейсом?

  15. >>Теперь создадим файл /etc/iptables_rules.sh следующего содержания:

    nano /etc/iptables_rules.sh — в него кстати, вместо mcedit, можно копипастить в консоль, тыкаясь в виртуалку с разрешенными
    isolation.tools.copy.disable false
    isolation.tools.paste.disable false

  16. >В CentOS 7 в качестве фаервола выступает iptables.

    Чего вдруг? Там дефолтно firewalld

    • Zerox

      А что такое firewalld? Это обвязка для управления iptables. Это просто скрипты управления. Фаервол там как и на большинстве линуксов — iptables.

  17. Я Ваш постоянный читатель. Спасибо за высокопрофессиональные публикации. Я, просто любитель. Случайно столкнулся с Centos. На VDS была предложена , как одна из систем, на выбор.

  18. Добрый вечер! Так же хотелось бы поблагодарить за профессиональные и подробные статьи. Установил несколько серверов, все отлично — хочу привести парк к «единому знаменателю». Но вот на очередном супермикровском серваке возник момент, когда установка останавливается на моменте ДО меню установки, тестирования и задания доп параметров инсталляции… Появляется одна строка с надписью «ISOLINUX 4. и т.д» и далее полное молчание. Образ рабочий: на других машинах с него влетает. Попробовал установку Debian, Ubuntu — все гуд. А вот Centos 7 х64 ну никак… На серваке железный RAID 1 под систему. Куда копнуть, чтобы найти причину? ))

  19. Александр

    не указана важная опция при настройки сети
    vi /etc/sysconfig/network-scripts/ifcfg-e*

    ONBOOT=yes

    без неё ничего никуда не работает.

    • Zerox

      Она там по-умолчанию всегда есть, специально добавлять не надо, если ранее не удаляли.

  20. Александр

    у меня наверное особый centos :), опция «с завода» выключена

    • Zerox

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

  21. Аноним

    Спасибо! Хорошая статья. Очень бы хотел увидеть пост, об использовании этой утилиты: mondorescue.org для резервного копирования сервера на Centos 7.

  22. Добрый день,
    а можно сделать в CentOS как во FreeBSD, чтобы root не мог напрямую логиниться по ssh, а только через другого пользователя по команде su?

    • Zerox

      Конечно можно. Это настраивается абсолютно так же, как во freebsd. В настройках ssh отключается возможность подключения пользователя root и создается другой пользователь для ssh, который уже использует команду su, или sudo.

    • Zerox

      Забыл добавить, что в Centos просто начальные настройки отличаются от настроек freebsd или debian/ubuntu. В последних нельзя руту подключаться по ssh, а в centos можно. Но это легко меняется.

  23. Спасибо! Попробую) Я уже так привык, что по-умолчанию нельзя)

  24. подскажите пожалуйста, я настраивал шлюз eth0 на который приходит инет от провайдера, eth1-локальная сеть и раздает интернет по dhcp через dnsmasq, все работает исправно, теперь мне нужно что бы появилась вторая локальная сеть, настроил я точно так же eth2 как и eth1, такие же сделал конфиги в iptables и dnsmasq, eth1 раздает инет и работает dhcp, а на eth2 не то, не другое, но интерфейс пингуется с другого системника через свитч. что нужно сделать?

    • Zerox

      Нужно аккуратно проверить все конфиги и правила iptables. Убедиться, что все везде корректно настроено, разрешено. Добавить еще один сетевой интерфейс это дело техники, ничего особенного делать не надо, поэтому какого-то конкретного совета я дать не могу. К тому же не понятно, в чем конкретно проблема. Могу предположить, что либо dnsmasq не обслуживает новый интерфейс, либо nat не настроен в iptables.

      • спасибо за ответ, буду пробовать, а конкретно проблема заключается в том что 2й интерфейс локальной сети не раздает интернет, да и если даже самому вбить айпи, всеравно в инет не пускает, пишет на винде неопределенная сеть. я так понял вот здесь может ошибка, у меня вот так:
        # Внешний интерфейс
        export
        WAN=enp6s0
        export
        WAN_IP=10.82.1.127

        # Локальная сеть

        export LAN1=enp6s1
        export LAN1_IP_RANGE=192.168.1.1/24

        export LAN2=enp6s2
        export LAN2_IP_RANGE=192.168.2.1/24

        NAT у меня вот так выглядит:

        # Включаем NAT

        $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE
        $IPT -t nat -A POSTROUTING -o $WAN -s $LAN2_IP_RANGE -j MASQUERADE

  25. Виктор

    Здравствуйте, сделал всю настройку сервера, настроил шлюз, локальные интерфейсы, dnsmasq, все работало, две подсети раздавали интернет, были вот такие настройки сетевых:
    wan enp6s0 192.168.1.254/24 шлюз 192.168.1.1
    lan enp6s1 192.168.2.1/24
    lan enp6s2 192.168.3.1/24
    но как только я изменил локальные подсети на 2-ю на 5-ю и 3-ю на 6-ю, то сразу перестали подсети раздавать интернет, причем не по dhcp ни статикой. в чем может быть подвох?

  26. Аноним

    Для начала, С Рождеством!!!
    в отключении флуда надо бы скобочки добавить

    • Zerox

      Спасибо. Не понял, куда именно добавить? Только вчера это правило добавлял именно в таком виде, как у меня представлено. Работает корректно.

  27. Аноним

    Добрый день, можете пожалуйста сбросить конфиги, если две сетевые смотрят в локальную сеть, что бы раздавать интернет, как именно прописывать в iptables? 1 сетевая раздает, а вторая нет, непознанная сеть на винде пишет. Заранее спасибо.

  28. Василий

    Отлично!!!! Спасибо!!!!!

  29. Здравствуйте, подскажите когда запускаю /etc/sysconfig/iptables_rules.sh , то выскакиевает ошибка
    Bad argument `ACCEPT’
    Try `iptables -h’ or ‘iptables —help’ for more information.
    Bad argument `ACCEPT’
    Try `iptables -h’ or ‘iptables —help’ for more information.

    • Zerox

      Может скопировалось не правильно? Иногда бывают такие проблемы, когда копируешь правила. Потом напишешь вручную, нормально срабатывает.

      • Может и да, я потом не поленился и все набрал вручную, далее вторую сетевую воткнул в системник, хочу что бы она тоже раздавала инет, вот что я прописывал в iptables.sh где фигурируют сетевые адаптеры локальной сети.
        #!/bin/bash

        export IPT=»iptables»

        # Внешний интерфейс
        export
        WAN=enp13s0
        export
        WAN_IP=10.171.1.126
        # Локальная сеть

        export LAN1=enp15s0

        export LAN1_IP_RANGE=192.168.1.0/24

        export LAN2=enp17s0

        export LAN2_IP_RANGE=192.168.2.0/24

        # Разрешаем localhost и локалку

        $IPT -A INPUT -i lo -j ACCEPT
        $IPT -A INPUT -i $LAN1 -j ACCEPT
        $IPT -A INPUT -i $LAN2 -j ACCEPT
        $IPT -A OUTPUT -o lo -j ACCEPT
        $IPT -A OUTPUT -o $LAN1 -j ACCEPT
        $IPT -A OUTPUT -o $LAN2 -j ACCEPT
        # Разрешаем доступ из локалки наружу

        $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
        $IPT -A FORWARD -i $LAN2 -o $WAN -j ACCEPT

        # Закрываем доступ снаружи в локалку

        $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
        $IPT -A FORWARD -i $WAN -o $LAN2 -j REJECT

        # Включаем NAT

        $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE
        $IPT -t nat -A POSTROUTING -o $WAN -s $LAN2_IP_RANGE -j MASQUERADE

        В итоге сетевая та что LAN1 enp15s0 работает на раздачу интернета, а LAN2 enp17s0 пишет непознанная сеть. В папке /etc/sysconfig/iptables кст ни слова о LAN2 enp17s0, хотя сохранял конфиг и перезапускал службу.

        • еще хотел добавить что при вводе команды Iptables -L -v -n нигде не фигурирует второй интерфейс локальной сети enp17s0, получается что iptables его игнорирует?или в чем причина? конфиги этих интерфейсов одинаковы (за исключением айпи). хотелось бы знать в чем секрет, может в одну строчку нужно прописывать в iptables LAN1 и LAN2…?

  30. Zerox, добрый день, подскажите вылетают вот такие ошибки:
    при рестарте службы сети:
    job for network.service failed because the control process exited with error code
    при status network.service
    (code=exited, status=1/FAILURE)
    Failed to start LSB Bring up/down networking
    при настройке эти действия выполнял
    # systemctl stop NetworkManager.service
    # systemctl disable NetworkManager.service
    статус NetworkManager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
    Docs: man:NetworkManager (8)

    • Zerox

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

  31. А лог системы из var/log/messages? если что могу сделать скрин, с сервером ничего не делал, единственное что перед тем как зупастить в качестве шлюза выполнил update, а потом по Вашей

  32. А лог системы из var/log/messages? если что могу сделать скрин, с сервером ничего не делал, единственное что перед тем как запустить в качестве шлюза выполнил update, а потом по Вашей инструкции настроил оповещение про выход новых обновлений cron и добавил репозиторий epel, больше ничего не делал, после некоторого времени перестал раздавать интернет, я перезапустил службу сети и в итоге увидел то, что вчера Вам описывал, после перезагрузки системы интернет заработал, но эти ошибки остались «Failed to start LSB Bring up/down networking», «job for network.service failed because the control process exited with error code», где наткнулся на статью что в сетевом конфиге строка должна быть BOOTPROTO=none, а у меня было BOOTPROTO=static, после того как я поменял ничего не произошло, так же было написано что параметр IPV4_FAILURE_FATAL=no так же должен быть незакомментирован.

  33. Вот сбрасываю логи примерно перед выключением системника, странно что в messages эти строки последние, нет логов за 22 число после обеда и 23,24 число тоже отсутствуют, хотя после этого системник я перезагружал несколько раз.
    Jan 22 09:47:01 serverdsm dracut: *** creating initramfs image file ‘/boot/initramfs-3.10.0-693.11.6.el7. x86_64. img’ done ***

    Jan 22 09:47:21 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 OST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 09:49:26 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 OST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 09:51:31 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.12 5 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 09:51:52 serverdsm systemd-logind: New session 2 of user root.

    Jan 22 09:51:52 serverdsm systemd: started session 2 of user root.

    Jan 22 09:51:52 serverdsm systemd: starting session 2 of user root.

    Jan 22 09:52:20 serverdsm yum[12363]: Installed: epel-release-7-9.noarch

    Jan 22 09:53:25 serverdsm yum[12375]: Installed: rpmforge-release-O. 5. 3-1. el7. rf. x86_64

    Jan 22 09:53:36 serverdsm kernel: —IN—BLOCKIN=enp6sO OUT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2

    Jan 22 09:55:41 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.12 5 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 09:56:51 serverdsm systemd: Reloading.

    Jan 22 09:56:51 serverdsm systemd: [/usr/1ib/systemd/system/ip6tables.service:3] Failed to add dependency on syslog.target,iptables.service, ignoring: invalid argument Jan 22 09:56:51 serverdsm yum[12382]: Installed: yum-cron-3.4.3-154.el7.centos.noarch

    Jan 22 09:57:46 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.12 5 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 09:58:15 serverdsm systemd: starting cleanup of Temporary Directories…

    Jan 22 09:58:15 serverdsm systemd: started cleanup of Temporary Directories.

    Jan 22 09:59:51 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.12 5 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:01:02 serverdsm systemd: started session 3 of user root.

    Jan 22 10:01:02 serverdsm systemd: starting session 3 of user root.

    Jan 22 10:01:56 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:04:01 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:06:06 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:08:11 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:10:16 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.171.1.125 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

    Jan 22 10:12:21 serverdsm kernel: —IN—BLOCKIN=enp6sO 0UT= MAC=01:00:5e:00:00:01:f8:dl:11:71:a8:00:08:00 SRC=10.1781.1.12 5 DST=224. 0. 0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PR0T0=2

  34. Владимир

    Я использую Centos как рабочую систему на которой экспериментирую. Поэтому давно есть желание понять какой порт (или порты) открыть что бы заработал обозреватель ресурсов сети? На данный момент открыл 135-139,445 порты TCP и UDP но этого мало похоже. В то же время когда отключаю ipables он отрабатывает как надо. Help me please…

  35. добрый день, отключил selinux, а после перезагрузки failed to load selinux policy freezing, что делать? перед загрузкой нажал «Е» в конце строки «linux16»: добавлено selinux = 0? но это непомогло, система загрузилась с профилем dracut. помогите!!!

    • в общем помогло через загрузчик все исправить, вот только не в то место я вписывал selinux=0, нужно в строку «linux16 после слова quiet, да и на сайте где был скриншот селинукс был как с нижним подчеркиванием после нуля selinux=0_ , когда убрал подчеркивание, то сразу понял что это мигал курсор, а не нижний штрих, а я вот думал это обязательно перед следующим словом. запустилась ОС, потом зашел в конфиг selinux и увидел ошибку, я disabled прописал в строке selinuxtype, вот такая беда из-за невнимательности))

  36. Александр

    Все статьи отличные, но!
    Что такое WAN_IP=149.154.71.205 ? Что за ип сюда писать? Моего сервера?
    Запустил файл и остался без доступа по ssh. Почему? Как Вернуть и как надо было делать, что был доступ по ssh?
    Почему этот момент упущен? Да, было предупреждение, но не было сказано именно эти настройки сразу обрубят доступ
    и не сказано, что изменить, что бы доступ был.
    Дальше, ваша фраза «Так что в обычной работе эти строки нужно закомментировать». Что конкретно закоментировать?

    • Zerox

      Рекомендую сначала все проверять на тестовом сервере, если нет понимания, как работает firewall. К тому же есть отдельная подробная статья с описанием настройки iptables.

  37. Андрей

    Добрый день. Я новичок в Linux системах. С CentOS знаком только два дня. На видео вы копипастили команды. Подскажите команду для вставке в консоль.

  38. Здравствуйте! Спасибо за полезные статьи.
    Подскажите в чем может быть проблема:
    настроил iptables как в статье, только ip изменил на свой. После применения правил, нет возможности установить что либо через yum, пишет неизвестная ошибка. Делаю stop iptables, yum начинает работать.
    И еще вопрос, если можно:
    Планирую использовать сервер как файлообменник, какие порты открыть для samba?

    • Zerox

      Скорее всего закрыли исходящий трафик для сервера, вот yum и не обновляется.
      Для samba нужно открыть tcp порты — 137,138,139,445.

  39. настроить сеть проще всего командой nmtui — это «графический» интерфейс в консоли.
    так же есть аналогичная программа для настройки фаервола: system-config-firewall-tui
    в гугле надо искать tui (text user interface) программы для centos

  40. Иоанн Борисов

    Добрый день! не могу найти решение ошибки. При заходи на сервер FreePBX в правом верхнем углу отображается красная надпись: Whoops\Exception\ErrorException Call to undefined method Error::singleton() File:/var/www/html/admin/modules/dashboard/classes/phpsysinfo/includes/output/class.Output.inc.php:40

    А в окне «System Overview» (У меня оно называется «Обзор системы») висит только надпись «There was an error asking for Overview. Check the error logs for more information.». Как можно это исправить?
    Я скачивал образ FreePBX с официального сайта.

  41. Тоже удивился, когда обнаружил отсутствие ifconfig. Однако тут разжевали

    • Zerox

      Скоро будем удивляться отсутствием iptables. Его тоже выпиливают из дистрибутивов. Уже есть договоренность. На замену идет nftables. Опять переучиваться 🙁 Там синтаксис другой.

      • Аноним

        Скажите, будущую версию ОС не смотрели (скажем, на примере Fedora)?
        Если смотрели, то какие бы ключевые изм.отметили бы?

        • Zerox

          А каким образом можно оценить и посмотреть будущую версию RHEL? Было бы интересно, но сомневаюсь, что на примере федоры можно сделать такую оценку.

          • Аноним

            Про RHEL:
            Насколько я помню, пользователи с активной подпиской на RHEL имеют возм.протестировать бета-версию новой RHEL. Правда, наск.мне известно, на данный момент RHEL 8 beta ещё не существует.
            (Многие коллеги сходятся в том, что основой RHEL 8 станет Fedora 27)

            Про nix:
            Из ваших статей, я заключаю, что из nix-like OS вы в основном работаете с 3-мя: FreeBSD, Debian & CentOS.
            Осмелюсь предположить, что вы начинали с FreeBSD и по-немногу дрейфовали в направлении Линукс. Это так?
            И, что касается Линукс… Как Debian & CentOS «уживаются» вместе? Здесь тоже имеет место ползучий дрейф от одной ОС к др.? Или они существуют в вашей жизни (работе) на в целом паритетных основаниях?

  42. Доброе утро!
    Скажите, а почему при применении правил iptables из файлика статьи все перестает работать? 🙂
    Какие логи смотреть?

    Хостинг DigitalOcean, CentOS 7.5

    Просто плюется в консольку статистикой работы iptables:например, что дронуло подключение с такого-то ip)))

    • Zerox

      Можно локально в консоли набрать команду:
      iptables -L -v -n
      и посмотреть, какие правила реально применились. Скорее всего у вас где-то ошибка. Я по этой статье постоянно настраиваю свои серверы. Тут нет ошибок, если все делать правильно.

    • Аноним

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

      • Zerox

        Это да, самая частая ошибка. Сам иногда попадаюсь на нее.

        • Аноним

          Я вот сейчас поднимал сервер, не посмотрел и просто сохранил. После чего пинг не проходит просто на просто. Вернул всё в исходное и поправил eth* и ip. Всё заработало нормально.
          В статье всё гуд. Спасибо.
          Только у меня одна трудность насчет ssh
          по пути etc/ssh/ssh_config есть, а не sshd_config. Открывая существующий конфиг, нет пункта для доступа рута через ssh.

        • Аноним

          Всё, нашел проблему. Пакета openssh-server небыло, поставил. Всё заработало и с SSH

  43. Не знаю, возможно)
    Я не в претензии просто интересно почему так.
    sshd слушает порт, а входящие пакеты на него все равно дропаются…
    Может собака порылась где-то в DO

    • Zerox

      Вполне может быть. Там скорее всего подготовленные определенным образом шаблоны. Возможно, некоторые предустановки выполнены заранее, например сети или firewalld. И эти настройки конфликтуют с тем, что описано у меня. Надо внимательно смотреть. Сам я DO не использую. Особенно последнее время, когда куча их адресов в блоке роскомнадзора.

  44. Николай

    Я создал домашний сервер на основе CentOS 7, работает всё, кроме доступа к ресурсам сервера (дискам, папкам файлам) из Linux через SSH. Доступ возможен только при посредстве Samba как «Сетевой диск Microsoft Windows», причём и из Linux, и из Windows. Подсоединиться к серверу и управлять им, через SSH, используя Putty получается и из Linux и из Windows. Однако при попытке подсоединения ресурса сервера по SSH (Процедура добавления сетевой папки SSH в Dolphin) выдаётся сообщение: «Невозможно подключиться к серверу. Проверьте параметры и повторите попытку». Все настройки сервера делал аналогично, как и на ранее используемой ОС сервера Fedora 27, однако на Fedora всё работало. Firewall настроен, необходимые порты (20, 21, 22, 80, 137, 138, 139, 443, 445, 9091) открыты, последний используется для работы Transmission-daemon. SELinux настроен, пробовал его отключать, однако проблема этим не решается. Заменить Fedora на CentOS решил по причине нестабильности Fedora, в ней, для ликвидации «нежданчиков», приходилось создавать резервный образ системы перед каждым её обновлением.
    После перевода одного из англоязычных сайтов нашёл сведения о том, что для доступа по SSH надо установить на сервер приложение «NFS сервер». Может быть именно из-за его отсутствия по-умолчанию в CentOS 7 у меня и нет доступа к ресурсам по SSH? Как проверить его наличие, не знаю. Когда я ранее устанавливал Fedora 27 на сервер, то использовал серверную редакцию дистрибутива, в частности образ «Fedora-Server-dvd-x86_64-27-1.6.iso».

    • Zerox

      Вы что-то путаете. SSH и NFS совершенно разные вещи, никак друг с другом не связанные. Через SSH можно получить доступ к файлам, но чаще всего этот протокол используют для управления сервером. А вот NFS как раз используется для доступа к файлам. На сервере настраивается nfs сервер, а nfs клиент подключается и получает доступ к настроенным для удаленного доступа директориям и файлам.

      • Николай

        У меня с тех пор, когда на сервере стояла Fedora в остальной локальной сети абсолютно ничего не изменилось те же операционные системы и те же настройки, в Федору на сервере NFS-сервер не устанавливал, если только он в ней был предустановлен по-умолчанию. А вообще-то проблему я решил. немного изменив расположение папок, в которые монтируются общие ресурсы, переместил их в отдельную папку и дал к ней доступ, через Самбу. Единственное, что сейчас не могу сделать на сервере, это редактировать системные файлы, через Dolphin и приходится запускать Putty, ранее с Федорой на сервере, делал это запросто, подсоединив любой ресурс по SSH, а далее делал, что хотел. Хотя, может быть, это и к лучшему.

      • Николай

        Вернулся на Федору. Ни с того, ни с сего CentOS-овский сервер начал выкидывать «коленца», во время перемещения, или записи файлов на диск, копирует примерно 80% файла и выводит сообщение о невозможности копирования, или перемещения в виду того, что диск назначения доступен только для чтения. Копирование (перемещение) производил и из Windows (проводником и Total Commander) по сети и зайдя на сервер, через Putty при помощи mc, как пользователь, член группы и как root, результат один. Проверил диск назначения на наличие ошибок, ошибок нет. Пробовал установить для этого диска chmod 777, не помогло. Восстановил Fedora 27 с образа, сделал несколько перемещений файлов на этот же диск, всё нормально. Стало быть проблема в CentOS.

  45. Максим

    приветствую)
    начал обучаться и что бы было понимание в centos 7.
    настроил по вашему расписанному примеру, все нормально, даже все отлично)
    Но до того момента пока не поменял порт с 22 на 25333, putty наотрез отказывается подключаться зараза…даже не могу понять в какую сторону копать…ниже приведу логирование из путти
    2018-09-16 03:03:30 Starting 4908 from user
    2018-09-16 03:03:32 Hyperlink patch: regex successfully compiled
    2018-09-16 03:03:32 Looking up host «IP»
    2018-09-16 03:03:32 Connecting to IP port 25333
    2018-09-16 03:03:32 We claim version: SSH-2.0-PuTTY_PuTTY
    2018-09-16 03:03:32 Hyperlink patch: regex successfully compiled
    2018-09-16 03:03:57 Failed to connect to ******: Ñåòåâàÿ îøèáêà: Âðåìÿ îæèäàíèÿ ñîåäèíåíèÿ èñòåêëî
    2018-09-16 03:03:57 Ñåòåâàÿ îøèáêà: Âðåìÿ îæèäàíèÿ ñîåäèíåíèÿ èñòåêëî
    2018-09-16 03:04:07 Lost connection, reconnecting…

    • Аноним

      2018-09-16 03:03:30 Starting 4908 from user
      2018-09-16 03:03:32 Hyperlink patch: regex successfully compiled
      2018-09-16 03:03:32 Looking up host «тут ip»
      2018-09-16 03:03:32 Connecting to тут ip port 25333
      2018-09-16 03:03:32 We claim version: SSH-2.0-PuTTY_PuTTY
      2018-09-16 03:03:32 Hyperlink patch: regex successfully compiled
      2018-09-16 03:03:57 Failed to connect to IP: Сетевая ошибка: Время ожидания соединения истекло
      2018-09-16 03:03:57 Сетевая ошибка: Время ожидания соединения истекло

      • Максим

        физического доступа к серверу нет, только ssh или снести его и поставить заного…
        но, это не вариант ибо там настроение уже по вашим методичкам)))
        подскажите, куда капать что бы подключиться…эх
        заранее благодарю…)

    • Zerox

      Проблемы с подключением к SSH после смены порта могут быть по следующим причинам:
      1. В конфиге SSH была сделана какая-то ошибки и он после перезапуска не запустился.
      2. Не перенастроен firewall на открытие нового порта.
      3. Работает SELinux, в нем не изменен порт SSH, в итоге он не дал стартануть демону sshd.

      В любом случае, если не подключается по ssh, нужен доступ к консоли сервера. Вообще, мне кажется очевидным, что нельзя переконфигурировать параметры, которые влияют на удаленное подключение к серверу (ssh, firewall и т.д.), если у вас нет прямого доступа к консоли. Пожалуй, стоит об этом упомянуть в статье.

      • Максим

        Получилось достучаться до сервака
        вот лог что работает ssh на порту 25333, но подключиться нереально с новым сеансом через путти
        # systemctl status sshd.service
        ● sshd.service — OpenSSH server daemon
        Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
        Active: active (running) since Вс 2018-09-16 21:10:25 MSK; 19s ago
        Docs: man:sshd(8)
        man:sshd_config(5)
        Main PID: 1415 (sshd)
        CGroup: /system.slice/sshd.service
        └─1415 /usr/sbin/sshd -D

        сен 16 21:10:25 sib systemd[1]: Starting OpenSSH server daemon…
        сен 16 21:10:25 sib sshd[1415]: Server listening on 0.0.0.0 port 25333.
        сен 16 21:10:25 sib sshd[1415]: Server listening on :: port 25333.
        сен 16 21:10:25 sib systemd[1]: Started OpenSSH server daemon.

        SELinux * отключен совсем
        firewall — отключен тоже, работает iptables
        В конфиге SSH была сделана какая-то ошибки — нет ошибок вообще, взята ваша конфигурация скрипта и исправлен только пор 22 и ip

        • Максим

          да логи ssh
          netstat -tulpn | grep sshd
          tcp 0 0 0.0.0.0:25333 0.0.0.0:* LISTEN 1361/sshd
          tcp6 0 0 :::25333 :::* LISTEN 1361/sshd

          • Максим

            в конфигах нет ошибок, я вот прям в ступоре куда капать и где ошибка.
            сейчас подключение ssh по порту 25333 и оно не дает подключиться.

            • Максим

              Все вопрос не актуальный…
              запустился доступ по ssh по порту 25333
              парадокс и фантастика…
              спасибо за советы и внимание к моей проблеме)
              данная ситуация разрешилась сама собой или как вариант из серии пользователей «оно само сломалось» и внезапно починилось)))

  46. Николай

    Прошу прощения, что не ответил. Очень рад за Вас, что всё получилось. Был занят другими неотложными делами и на сайт не заходил. У меня на сервере в CentOS появился «нежданчик», при копировании больших файлов (около 1 GB), копируется примерно 80% файла, а затем копирование прерывается с выдачей сообщения, что копирование невозможно по причине, что диск назначения только для чтения. Несколько раз перезагрузил сервер, проверил все настройки, диски на предмет ошибок, ничего не нашёл. Восстановил с образа Fedora 27, проблема пропала. Снова развернул образ CentOS на USB_HDD, который создал перед последним обновлением, всё работает. Очевидно проблема появилась при неудачном обновлении системы. Понаблюдаю с недельку и верну CentOS на SCSI винчестер. Видно придётся отказываться от обновлений.

  47. Николай

    Вот уже скоро месяц, как CentOS 7.5 работает нормально. Обновлений системы не делал, опасаюсь последствий. Понаблюдаю за системой пару месяцев, потом создам образ и снова обновлю. Может быть на этот раз повезёт.

  48. Привет!
    После того, как ставлю SELINUX=disabled
    Ребутаю, загрузка центоса останавливается на белой строке внизу, нажимаю вниз, там в нижней строке ошибка
    [!!!!!!!!!!!] Failed to load SElinux policy, freezing

    • Zerox

      Возможно какая-то ошибка в конфиге /etc/sysconfig/selinux

      • Но как войти в центос? он не загружается( Уже 2 раза переустанавливал и такая хрень вот(

        • ВСе, я тупанул, не туда дисабл ставил, ставил селинукстайп а не в селинукс)))

          • Николай

            Я SELinux не отключал, а всё-таки смог его настроить. Методом «научного тыка» включал политики для Samba и для SSH, в итоге всё получилось, сервер работает, доступ и из Windows и из Linux к серверу есть, разграничение доступа настроены. Хотелось бы найти описания политик для SELinux, хотя бы на английском языке, а то «метод тыка» слишком малопродуктивен.

            • Zerox

              Так информации полно в англоязычном гугле. В настройке SELinux ничего запредельно сложного нет. Просто мне чаще всего он не нужен. Ну и плюс некоторый софт с ним не работает, так что в руководствах разработчиков идет рекомендация отключать SELinux.

              • Николай

                Совершенно случайно набрёл на англоязычный сайт «httpd_selinux(8) — Linux man page», (https://linux.die.net/man/8/httpd_selinux). Похоже это то, что я искал, буду переводить и разбираться. Кому необходимо, используйте. Что же касается отключения SELinux, то с этим я немного не согласен, вещь, как будто бы хорошая, да и привычка у меня разбираться со всем непонятным. К тому же не просто так самая продвинутая компания SELinux разработала. А рекомендуют отключать скорее всего потому, что не знают, как настраивать и не хотят с этим заморачиваться.

                • Zerox

                  Не то, что не знают. Не всегда в этом есть смысл. Ну например, небольшая компания на 100 человек, сервер мониторинга внутренней инфраструктуры на zabbix. Зачем там SELinux? Или там же внутренний веб сервер с wiki.

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

                  • Николай

                    Вообще-то у меня домашний сервер. Его основная задача, скачивать из интернет ПО, фильмы, музыку и затем раздавать всё это в домашней сети. Просто выйдя на пенсию исполнил свою мечту и из оставшихся после апгрейта комплектующих, 6 лет назад сделал сервер. Всю жизнь работал сисадмином в сетях под Windows, а выйдя на пенсию решил разобраться в Linux и втянулся.

  49. Добрый день. Не получается настроить отправку почты на внешний ящик MAIL.RU
    Вот мои настройки

    /etc/postfix/main.cf

    # Имя сервера, которое выводит команда hostname
    myhostname = corp.moloko.ru
    # Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель
    # фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
    mydomain = corp.moloko.ru
    mydestination = $myhostname
    myorigin = $mydomain
    # Адрес сервера, через который будем отправлять почту
    relayhost = smtp.mail.ru:465
    smtp_use_tls = yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_tls_security_level = may

    /etc/postfix/sasl_passwd
    smtp.mail.ru:465 oleg@mail.ru:zxcasdzxc

  50. большое спасибо за статью. Однозначно в личное how-to

  51. Добрый день!
    Ситуация: был сервер FreeBSD, который после сбоя заменили на сервер CentOS 7
    на сервере два аппаратных RAID 0 (зеркало)
    на первом зеркале сейчас установлена ОС CentOS 7
    на втором зеркале всё, что ранее было на сервере FreeBSD
    оба зеркала в CentOS 7 видно, но зеркало от FreeBSD подмонтировать нельзя ввиду того, что там ufs

    /dev/mapper/centos-root: UUID=»5ee42aec-6c89-46d5-85d4-b4cf199fe4de» TYPE=»xfs»
    /dev/sda2: UUID=»7EdzoA-SvSU-laqn-f12e-pHsU-cni5-Td5RBj» TYPE=»LVM2_member»
    /dev/sda1: UUID=»be18db3a-6f99-48b4-97b3-e74a6b761c1e» TYPE=»xfs»
    /dev/mapper/centos-swap: UUID=»64b3f891-e9f2-4fb6-a500-66304e2b225d» TYPE=»swap»
    /dev/sdb1: UUID=»577f6498cc641d1c» TYPE=»ufs» PARTUUID=»c0f4b88b-44e5-11e6-b9ec-f4ce460f4d2f»
    /dev/mapper/centos-home: UUID=»5ce13c35-aeda-4970-a1f8-8521f3674286″ TYPE=»xfs»

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 931,5G 0 disk
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 930,5G 0 part
    ├─centos-root 253:0 0 50G 0 lvm /
    ├─centos-swap 253:1 0 7,9G 0 lvm [SWAP]
    └─centos-home 253:2 0 872,6G 0 lvm /home
    sdb 8:16 0 931,5G 0 disk
    └─sdb1 8:17 0 931,5G 0 part

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

    Есть вариант использовать для копирования информации другой BSD сервер, но хотелось бы решить эту задачу системно.
    Буду крайне признателен за совет/
    Спасибо.

    • Zerox

      Как мне кажется, проще всего загрузиться с какого-нибудь live cd с freebsd и перенести куда-нибудь данные. Я не помню, какие файловые системы поддерживает freebsd. Но можно что-то найти, что потом поймет и centos. Думаю, даже на fat32 будет проще всего, если freebsd не понимает ext4.

  52. Николай

    И снова здравствуйте! Сегодня мой сервер на CentOS 7.5 снова преподнёс «нежданчик». Копирование файла большого размера, около 2 GB после копирования половины файла, неожиданно завершилось сообщением, что копирование невозможно, диск защищён от записи. Скопированную часть файла даже не удалось удалить, зайдя на сервер с правами root. После нескольких перезагрузок сервера всё-таки удалось скопировать файл на сервер и то из-под Windows. Для этого файл сначала из-под Федоры переписал на раздел ntfs, а затем уже из-под Windows на сервер. Этот глюк CentOS у меня произошёл не в первый раз, в прошлый раз это было примерно 2 месяца назад. Систему на сервере не обновлял, вообще отключил обновление. Получается оно ни при чём. Ещё одна проблема и в Fedora 27(28) и в CentOS, в Dolphin, при перемещении файла из одной папки в другую, исходный файл не удаляется с выводом сообщения о невозможности удаления. Если я сначала копирую файл, а затем удаляю его вручную, всё происходит нормально. Буду благодарен за любую помощь по этим проблемам.
    PS: таких проблем у меня не было ни одного раза, ни в MS DOS, ни в любой, даже самой глючной Windows, даже в Millennium.

  53. Николай

    Развернул с образа Debian 9.5.0 Amd 64 вместо Fedora 28, произвёл полное обновление, обновился до версии 9.6.0. Перед заменой ОС попробовал скопировать и переместить большой файл из Федоры на сервер, снова появились обе ошибки. После замены системы на Debian и его обновления произвёл те же операции, ошибок нет. Получается, что проблема всё-таки в Федоре.

  54. Николай

    Сегодня снова попытался записать большой файл на сервер CentOS 7.5, теперь уже из Windows. Снова та же проблема, файл скопировался примерно на 40% и далее тормоз, всё застопорилось. Отменил копирование, зашёл, через Putty на сервер и попробовал удалить файл, не получилось, даже под root. Теперь я полностью уверен, что это проблема в CentOS. Ранее, когда на сервере стояла система Debian 7, за 5 лет интенсивной эксплуатации сервера не было ни одного сбоя. Видно придётся переходить на Debian, или совсем отказываться от Linux. Я более 25 лет работал сисадмином, начинал с Windows NT server, закончил Windows 2008 R2 server и за всё время не было ни каких проблем. Самое интересное, что после предыдущего раза ничего с системой не делал,только развернул её с образа и всё.

  55. Николай

    Проверил диски на наличие ошибок, ошибок нет. Загрузил систему с флешки и протестировал железо сервера, всё в норме. Снова восстановил систему с того же образа и система снова заработала. Надолго ли. Ничего не понимаю.

  56. Сергей

    Как установить memesh?
    Спасибо

  57. Сергей

    Ошибся. Как установить Memcache?
    Можете помочь установить CentOS 7? Я добавил вас в скайп. Мой скайп traderfx777

  58. Николай

    Недели две назад Transmission-daemon перестал запускать торренты из указанной папки, вручную запускаются нормально. Проверил всё, задавал вопросы на форумах, однако проблему решить не удалось и это вкупе с периодическими глюками файловой системы при записи файлов большого размера, заставляет меня отказаться от использования CentOS на сервере. К счастью у меня сохранился образ Ferdora 27 server, которой я разворачиваю на домашний сервер. Если он будет работать нормально, то проблема в CentOS, понаблюдаю и оставлю Fedora 27 на сервере. Диски проверил различными утилитами, ошибок нет. Только что развернул Fedora 27 server с образа, запустил, обе проблемы исчезли.

    • Zerox

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

      • Николай

        Fedora является обкаточным полигоном для новых разработок Red Hat и CentOS, стало быть они теоретически абсолютно совместимы. CentOS я устанавливал в разделы, подготовленные при установке Fedora, без каких бы то ни было изменений, настройку системы вел буквально по буквам подробнейшего руководства, которое составил при установке и настройке Fedora, конфигурационные файлы Transmission-daemon (settings.json, transmission-daemon, transmission-daemon.service) просто копировал в соответствующие каталоги, настраивал аналогично. Структура каталогов о обеих систем абсолютно идиентичная, поэтому сервер заработал сразу и без проблем. Но они появились немного позднее, сначала появилась проблема с копированием больших файлов. Замена винчестера не помогла, более того «глючный» винчестер прекрасно работает в Windows, а проблема осталась и с новым винчестером. Возможно проблема с Transmission-daemon связана с ним самим, много ранее, когда у меня на сервере 5 лет стоял Debian 7, Transmission тоже отказывался брать торрент файлы из указанного каталога (признавал их ошибочными) и приходилось добавлять их вручную.

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.