Centos 5 настройка сервера

Обновлено: 05.07.2024

После загрузки примерно 24 мегабайт и непродолжительной установки, приступаем к настройке.

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


создаем в каталоге /home папку /incoming и даем полный доступ на чтение, запись и выполнение всем пользователям

Создаем в этом же каталоге папку /read с теми же правами, что и на предыдущую созданную папку (права доступа, вы конечно же можете выставить другие, в зависимости от политики безопасности вашего сервера, здесь же я рассматриваю простейшую установку анонимного сервера SAMBA)

Далее идем настраивать конфигурационный файл "самбы" /etc/samba/smb.conf
По умолчанию в нем уже есть предварительный конфиг, с кучей комментариев и настроек. Можно конечно подредактировать его и немного почитав литературу создать свой супер умный и непробиваемый конфиг, но как я уже сказал выше, мы запускаем простейшую конфигурацию, поэтому затираем наш файл командой:

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

[global] - в этом блоке описываются глобальные установки нашего сервера
workgroup = "имя рабочей группы в вашей сети"

netbios name = "имя вашего компьютера, которое будет отображаться в "Сетевом окружении"
server string = "описание вашего компьютера можно любое предложение (включая русский язык)"
security = "уровень безопасности вашего Samba сервера" (в данном случае share )
browseable = "видимость ресурса в сети" (если поставить NO, то зайти на предоставленный ресурс можно будет только указав в адресной строке явный путь к расшареной папке)
[incoming] - "имя нашей папки в сети, а также блок с настройками для этой папки"

path = "полный путь в системе до папки которую мы расшариваем"

readonly = "права на запись", NO - можно записывать в эту папку, Yes - папка доступна пользователям только для чтения (таким образом папка incoming у нас стоит в "полном доступе", а папка read - только для чтения)

[read] - "имя нашей папки в сети, а также блок с настройками для этой папки"

Итак, конфиг успешно заполнен - сохраняем и закрываем его.

Проверим, на всякий случай, не допустили ли мы синтаксических ошибок в нашем файле,при помощи команды testparm:

Все должно успешно запустится.

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

либо поставим "звездочку" напротив smb в меню "системные службы", с помощью команды SETUP.

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

Сетевой интерфейс Linux

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

Настройка сетевого интерфейса это типичная задача при установке сервер на colocation и в ней нет нечего сложного.

Какие файлы влияют на работу сетевого интерфейса в Linux CentOS 5:

/etc/modprobe.conf – здесь загружаются модули ядра для различных устройств:

/etc/hosts – здесь находится список ip-адресов и назначенных им имен.

Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать эти имена на всю сеть.

/etc/resolv.conf – в этом файле указываются DNS сервера. DNS-сервер задается директивой nameserver

/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени. В нашем случае сначала используем /etc/hosts а только потом DNS-сервер.

/etc/init.d/network – скрипт останавливающий и запускающий работу сети

/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить. Включение осуществляется передачей "1” в этот файл.

/etc/sysconfig/network — здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера. Default gateway рекомендуется указывать здесь.

В /etc/sysconfig/network-scripts/ находятся различные скрипты влияющие на работу сетевого интерфейса:

Для нас самое большое значение имеют скрипты ifcfg-*. Именно в них описываются настройки сетевых интерфейсов присутствующих в сервере.

Давайте посмотрим что у них внутри.

DHCP iface

Данный интерфейс работает с использованием службы DHCP.

Мой компьютер работает по DHCP, что отчетливо видно по директиве BOOTPROTO=dhcp. То есть сетевые настройки мы получаем у dhcp-сервера при загрузке нашего сервера. Другие директивы означают следующее:

DEVICE=eth0 — как будет называться наш интерфейс, принято первый интерфейс называть как eth0, второй eth1 и так далее

HWADDR=00:0C:29:43:5B:3D — MAC-адрес нашей сетевой карты. Media Access Control — это уникальный идентификатор сетевой карты. У каждой сетевой карты свой MAC-адрес и в идеале он не повторяется больше ни с каким в мире. Иногда MAC-адрес пытаются подменить чтобы выдать свой компьютер за чужой, по каким либо соображениям, обычно враждебным.

Длина MAC-адреса составляет 48 бит что позволяет иметь 281 474 976 710

656 уникальных комбинаций. У каждого производителя сетевых плат есть свой диапазон в котором он назначает MAC-адреса своим платам. MAC-адрес пишется в шестнадцатеричной форме счисления.

ONBOOT=yes — включать ли этот интерфейс автоматически при включение сервера. Думаю, что скорее всего это и нужно.

Loopback iface

loopback-интерфейс необходим для нормальной работы ОС.

Custom iface

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

Практика

Настроим сетевой интерфейс в Linux. Мы знаем что lo всегда включен и его не нужно вообще трогать.

Мой конфигурационный файл выглядит так:

Далее нужно перезагрузить сетевой интерфейс чтобы прочитались новые настройки

Проверим все ли поднялось

Жирным выделены особенно интересные нам участки в выводе команды ifconfig. Как видим все похоже на правду и интерфейс «поднят», то есть находится в рабочем режиме.

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

  • MTU:1500 — это Maximum Transfer Unit. Различные сети и каналы передачи имеют разные скорости обмена. Это определяет максимальную длину пакета, пересылка которого с высокой вероятностью произойдет без ошибок. Для Ethernet — сетей значение MTU составляет 1500 байт.
  • Metric:1 — чем меньше это значение тем лучше считается маршрут до этой сети. На серверах скорее всего это менять не придется. Этот параметр играет большую роль в работе протоколов маршрутизации.
  • Сollisions:0 — нулевое значение говорит о том, что с сетевым интерфейсом все в порядке на физическом уровне.
  • RX bytes — сколько данных принято
  • TX bytes — сколько данных отослано

Так идем дальше. В примере выше, после настройки сетевого интерфейса мы полностью перезагружали службу network. Когда на сервере только один интерфейс это не страшно, но если их несколько и какие-то уже работают и выполняют свои функции прерывать их работу нежелательно. Тут нам на помощь приходит скрипт ifup/ifdown. Он нужен для перезагрузки какого либо одного сетевого интерфейса. Короткий пример.

Шаг 1. Вносим изменения в /etc/sysconfig/network-scripts/ifcfg-eth0

Маршрутизация

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

netstat – команда позволяющая отслеживать сетевые подключения сервера

В выводе мы увидим список сетей и как до них добраться. То есть какой шлюз использовать для достижения пункта назначения. Помните, когда мы настраивали сетевой интерфейс eth0 мы указали директиву GATEWAY в ifcfg-eth0 ? Этот gateway был помечен как default, то есть шлюз по умолчанию.

Весь трафик в сети, которые явно не описаны в таблице маршрутизации, отправляются через шлюз по умолчанию. В нашем случае default gateway —192.168.146.2

Вывод команды "netstat -r” нам говорит следующее:

Первая строка. Чтобы попасть в подсеть 192.168.146.0 нам не нужен никакой шлюз (*), поскольку мы и так находимся в этой сети

Вторая строка — это default, то есть маршрут по умолчанию. Весь трафик предназначенный по все остальные сети будет уходить через этот шлюз.

Genmask — это сетевая маска, благодаря маске можно отделить сетевую часть адреса от адреса хоста

Flags: U — это UP, то есть маршрут поднят и функционирует сейчас

Flags: UG — UP, Gateway. Маршрут поднят и использует gateway в своей работе

MSS – Maximum Segment Size, определяет максимальный размер пакета для этого маршрута.

Window – размер окна. Максимальный размер пакета, который система готова принять.

irtt — initial round trip time, задает значение которое используется при установке соединения. Round trip time – представляет из себя отрезок времени, если в течение которого от удаленного хоста не пришло подтверждение о получение пакета, пакет будет выслан снова.

Iface – показывает к какому интерфейсу относится маршрут

Прописываем маршруты

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

Приведу пример. У нас два сетевых интерфейса eth0 и eth1. Через eth0 мы получаем доступ во внешние сети и по умолчанию весь трафик направляется через него. Через eth1 мы получаем доступ ко внутренней сети 192.168.147.0/24 но что еще важнее, в этой сети есть сервер 192.168.147.1 у которого есть сетевой интерфейс в подсеть 192.168.148.0/24 и мы очень хотим туда попадать. А для того что туда попадать необходимо прописать правильные маршруты у себя в ОС.

Так выглядит таблица маршрутизации в нашем случае

То есть в подсеть 192.168.148.0/24 (внутренняя подсеть) мы попадаем через eth1 -> 192.168.147.1, сервер выполняющий роль шлюза в эту подсеть. Все остальное идет через default шлюз. Все очень просто. Ну и собственно как привести настройки к этому.

Шлюз по умолчанию

И самое главное, файл в котором мы прописываем статический маршрут для eth1.

Для того чтобы прописать маршруты для какого либо интерфейса, необходимо создать файл route-<название интерфейса> в каталоге /etc/sysconfig/network-scripts/ После того как все готово к работе, мы перезагружаем сетевой сервис.

Теперь подведем итоги, что и как мы сделали.

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

Мы могли добавить маршрут в подсеть 192.168.148.0/24 командой route

Но после перезагрузки сервера информация о маршруте пропала бы. Чтобы такого не произошло используется специальный механизм. А именно создание файла вида route-<имя интерфейса> в /etc/sysconfig/network-scripts В него мы вносим список сетей и как до них добраться. Каждая новая запись начинается с новой строки.

Про шлюз

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

  1. На сервере корректная таблица маршрутизации благодаря которой он поймет что делать с пакетами дальше;
  2. Включена передача пакетов между интерфейсами;
  3. Включен маскарадинг (или установлен прокси) для нужной нам сети, например вот так (перенаправлять пакеты для хостов из подсети 192.168.146.0/24):

Полезные ключи netstat

  • r – показывает таблицу маршрутизации
  • n – выводит статистику по ip-адресу, не пытается определить имя хоста. Это работает несколько быстрее и обычно, вывод команды удобнее читать
  • a – показывает состояние всех сокетов на сервере. Сокет – это конечная точка сетевых коммуникаций. Каждый сокет имеет тип и ассоциированный с ним процесс.
  • t – протокол tcp
  • u – протокол udp
  • i – отображает таблицу сетевых интерфейсов
  • l – отображает сокеты в режиме LISTEN, то есть ожидающие соединения
  • p – показать PID (process ID) и имя программы с которой взаимодействует сокет

netstat на практике

Параметров выше вполне достаточно, чтобы многое узнать из жизни сетевых служб.

Слушает ли кто нибудь 25-й порт ?

Видим что 25-й порт слушает процесс sendmail с PID 2710

root 2710 0.0 0.7 8992 1836 ? Ss 11:17 0:00 sendmail: accepting connections

Посмотрим текущие ESTABLISHED-соединения по tcp, то есть с кем у нас есть подключение и по какому порту

Как видим это только соединения по ssh

Также, будет полезно знать какие состояния бывают у сокетов:

  • ESTABLISHED – сокет с установленным соединением;
  • SYN_SENT – сокет в процессе установки соединения;
  • SYN_RECV – был принят запрос установки соединения из сети;
  • FIN_WAIT1 – сокет закрыт и соединение закрывается;
  • FIN_WAIT2 – сокет закрыт и сокет ждет закрытия соединения с удаленного хоста;
  • TIME_WAIT – сокет после своего закрытия, еще какое-то время принимает пакеты из сети;
  • CLOSED – сокет не используется;
  • CLOSE_WAIT – удаленный хост отключился, ожидаем закрытия сокета;
  • LAST_ACK – удаленный хост отключился и сокет закрыт. Ожиданиепотдверждения;
  • LISTEN – сокет ожидает входящие подключения;
  • CLOSING – оба сокета отключились но еще не все наши данные отосланы;
  • UNKNOWN – статус сокета неизвестен.

Мы научились настраивать один и более сетевых интерфейсов. Разобрались с маршрутизацией. Узнали какие файлы и как влияют на работу сети в Linux CentOS 5. Сейчас мы познакомимся с двумя программами которые играют существенную роль в работе сети. Это программа nmap – которая сканирует порты удаленного хоста и сообщается какие порты на нем открыты. И программа tcpdump, она переводит вашу сетевую плату в режим promiscuous, что позволяет перехватывать весь трафик проходящий через карту.

Nmap позволяет сканировать удаленные компьютеры на предмет открытых портов. С более агрессивными опциями можно узнать версию ОС и некоторые другие вещи.

Просканируем удаленный хост. Как видим есть кое что интересное.

У nmap много различных опций, подробнее о них можно прочитать в man nmap

tcpdump

Иногда в целях выявления неисправностей нам нужно выяснить, какие пакеты передаются по сети. Это не сложно сделать с помощью tcpdump.

Слушаем весь трафик для MAC-адреса 00:a0:80:00:2f:fe на интерфейсе eth1

Слушаем трафик для определенного ip-адреса и порта

Сканируем диапазон портов

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

Администрирование Linux сервера CentOS

Настройка сети CentOS

Рекомендую сначала скопировать данные файлы в другой каталог и делать так в дальнейшем со всеми настраиваемыми конфигами:

mkdir /backup

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /backup

nano /etc/sysconfig/network-scripts/ifcfg-eth0

Далее прописываем имя сервера, используемый протокол IPv4/IPv6:

nano /etc/sysconfig/network

После этого проверяем наличие DNS записей, при отсутствии добавить в указанном формате:

nano /etc/resolv.conf

Nameserver IP/DNS

Nameserver IP/DNS

service network restart

Добавление нового пользователя

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

useradd itechf2 -G wheel -u 777

passwd itechf2

chown -R itechf2:itechf2 /home/itechf2/

chmod 700 /home/itechf2/

Далее для удобства работы снимаем комментарий со строки из файла /etc/sudoers:

nano /etc/sudoers

%wheel ALL=(ALL) NOPASSWD: ALL

Для применения настроек делаем logout и заходим под созданным пользователем.

Настройка времени и даты

Выставляем правильный часовой пояс. Удаляем стандартный файл, заменяем другим, с корректными данными:

sudo rm -f /etc/localtime

sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Теперь устанавливаем пакет ntp для синхронизации времени на сервере:

Отключить SElinux

Итак, переходим в файл и меняем первое значение на disabled:

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

Добавление репозитария EPEL и обновление системы

Сначала добавляем репозитарий:

Затем обновляем систему:

sudo yum -y update

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

sudo yum install -y mc nano man vim pv wget gcc autoconf screen nmap netstat yum-plugin-priorities mailx traceroute sudo telnet

Логирование времени выполнения команд в .bash_history

sudo bash -c «echo ‘export HISTTIMEFORMAT=’%d/%m/%y %T ‘ >>/etc/bashrc»

export

Увеличение числа открытых файлов CentOS

sudo bash -c ‘echo «* soft nofile 150000″ >> /etc/security/limits.conf’

sudo bash -c ‘echo «* hard nofile 500000″ >> /etc/security/limits.conf’

sudo bash -c ‘echo «fs.file-max = 500000″ >> /etc/sysctl.conf’

Запретить подключаться по SSH под root

Продолжаем тему безопасности и отключаем возможность заходить на сервер по SSH от имени root. Для любых операций лучше использовать sudo:

sudo nano /etc/ssh/sshd_config

Затем перезапускаем службу SSH:

sudo service sshd restart

Базовая настройка сервера CentOS для различных задач, в том числе веб- (LAMP) и файлового сервера завершена. Буду рад услышать Ваши замечания, предложения или личные предпочтения в конфигурировании ОС. Оставляйте комментарии 😉

Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter

На днях занимались настройкой виртуального сервера (VPS ) под CentOS 5 на базе OpenVZ. В данной статье опишем быстрый старт по установке и настройке VPS /VDS под CentOS 5 на базе OpenVZ. Установка и обновление Apache, PHP 5.3, MySQL, phpMyAdmin, ISPConfig.

OpenVZ — реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых «виртуальные частные серверы» (Virtual Private Servers, VPS ) или «виртуальные среды» (Virtual Environments, VE).

Веб сервер " httpd.i386 - 2.2.3-53.el5.centos.3 " уже установлен, домашний/публичный веб каталог расположен в /var/www/html но, как видим, для полного счастья нам не хватает MySQL сервера, PHP и phpMyAdmin.

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

Ставим MySQL сервер баз данных под CentOS 5:

Запускаем MySQL сервер под CentOS 5:

Следуя рекомендациям устанавливаем пароль MySQL сервера для root, где 'new-password' наш желаемый пароль:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Проверяем и включаем на автозапуск MySQL сервера под CentOS 5:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Установка PHP 5.3 под CentOS 5

Устанавливаем базовый пакет PHP 5.3 под CentOS 5:

Устанавливаем все расширения для PHP 5.3 под CentOS 5:

Компиляция и установка модуля mcrypt для PHP 5.3 под CentOS 5

Теперь установим компилятор, так как в CentOS 5 он отсутствует по умолчанию:

Можно начинать процес компиляции. Конфигурируем:

Создаём файл конфигурации, подключаем mcrypt.so

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Перезапускаем веб сервер

Поднимаемся в домашний каталог и удаляем всё его содержимое

Установка Pear для PHP 5.3 под CentOS 5

Установка phpmyadmin в CentOS 5

В репозиториях по умолчанию нет пакета phpmyadmin, а поэтому будем скачивать и устанавливать с оф. сайта:

При cookie-аутентификации, в конфигурационном файле необходимо задать парольную фразу установив значение директивы $cfg['blowfish_secret'].

Для увеличения времени жизни сессии phpMyAdmin, добавляем в конец файла config.inc.php строки:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Читайте также: