Главная   Новости   Описание   Вопросы-Ответы   Полезные статьи   Контакты

Установка сервера на Debian8


Статьи / Системное администрирование

0. Первичные установки, сеть

Версия системы
# uname -a
# lsb_release -a
Настройка сети
# nano /etc/network/interfaces
- вариант с DHCP
allow-hotplug eth0
iface eth0 inet dhcp
- вариант со статическим адресом
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1

Рестартим сеть
# /etc/init.d/networking restart


1.Обновление системы
# apt-get update
# apt-get upgrade

2. Настройка ssh
# nano /etc/ssh/sshd_config
Правим там:
Port 22
PermitRootLogin yes

# service sshd restart

3. Установка полезных утилит

# apt-get -y install mc
если требуется, то выберем редактор по-умолчанию:
# select-editor

# apt-get -y install htop
# apt-get -y install iftop
# apt-get -y install nload

# apt-get install sudo
# visudo
Для конкретного пользователя:
myuser ALL = NOPASSWD: ALL
Для всех пользователей группы sudo:
%sudo ALL= NOPASSWD: ALL

#apt-get install wget traceroute mtr curl

Установка и настройка SCREEN (полезная утилита для работы с консолью)
# apt-get install -y screen
# nano /root/.screenrc
Содержание файла:
#Выводим строку состояния
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

# Добавляем некоторые настройки
startup_message off
defscrollback 1000
defutf8 on
shell -$SHELL

# Создаем несколько окон
chdir
screen -t Main 1
chdir /etc
screen -t etc 2
chdir /var/log
screen -t logs 3

# Активное первое окно после запуска
select 1

#------------------конец файла---------------

Наиболее частые команды:

ctrl+a номер окна - переключение между окнами,
ctrl+a с - создать новое окно
ctrl+a M - мониторинг активности текущего окна
ctrl+a S - разделить окно на 2 по горизонтали (регионы)
ctrl+a TAB - переключение между окнами (регионами)
ctrl+a Q - закрыть все регионы кроме текущего
ctrl+a X - закрыть текущий регион
ctrl+a d - отсоединить консольную сессию и оставить ее в фоновом режиме
ctrl+a DD - то же что и d, и еще посылается сигнал закрытия (отключится консоль)
ctrl+a r - присоединиться к отсоединенное сессии
ctrl+a R - присоединиться к первой подходящей отсоединенной сессии
Подробнее тут:
http://itman.in/ssh-screen/

 

4. Время

Проверим:
# date
Если не дает вменяемого ответа, то идем дальше:

# apt-get -y install tzdata
Выберем часовой пояс
# dpkg-reconfigure tzdata
#apt-get install ntpdate
# ntpdate-debian
Если получаете ошибку:
28 Jan 00:02:09 ntpdate[3123]: the NTP socket is in use, exiting
Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.

# apt-get -y install ntp
Проверка запуска ntp сервиса:
# netstat -tulnp | grep ntp

5. Настройка firewall (iptables)

Полезные ссылки:
- http://serveradmin.ru/nastroyka-iptables-v-centos-7/

Проверка:
# iptables -L -v -n
# nano /etc/iptables.sh
Пишем в файл:

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

# Активный сетевой интерфейс
export WAN=eth0
export WAN_IP=192.168.1.24

# Очистка всех цепочек 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 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

# Разрешаем исходящие соединения самого сервера
$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

# Открываем порт для 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#
Открываем порт для WWW
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT

#---------Конец файла--------------


Даем файлу права на запуск:
# chmod 0740 /etc/iptables.sh
Запускаем скрипт:
# sh /etc/iptables.sh
Проверяем правила:
# iptables -L -v -n
Записываем правила
# /sbin/iptables-save > /etc/iptables_rules

Применение правил при загрузке сервера:
# nano /etc/network/interfaces
Добавляем в него:
post-up iptables-restore < /etc/iptables_rules

6. Настройка имени хоста и DNS

# hostname ИМЯ_Хоста
# nano /etc/hostname
пишем туда имя хоста

# apt-get -y install bind9 dnsutils
# nano /etc/bind/named.conf.options
Пишем туда :
acl mynetwork {192.168.0.0/24; 127.0.0.1; };
options {
directory "/var/cache/bind";
auth-nxdomain no;
forwarders {192.168.0.1; 8.8.8.8; };
listen-on-v6 { none; };
allow-query { mynetwork; };
};

Опция acl ограничивает адреса, которые могут запрашивать зоны с нашего сервера.
Про настройку зон можно посмотреть тут: http://www.code-inside.com/prostaya-nastroyka-dns-servera-bind9-na-debian-7-wheezy/#.WGO3b1OLSUk

Проверка на наличие ошибок в зонах
# named-checkconf -z

Обновление информации о зонах
# rndc reload

# nano /etc/resolv.conf
Пишем туда:
domain localdomain.net
search localdomain.net
nameserver 192.168.0.10
nameserver 192.168.0.1

Проверку можно сделать двумя командами:
nslookup localdomain.net
nslookup 192.168.0.10
Которые должны выдать cледующий результат:
Имя: ДОМЕННОЕ_ИМЯ
Address: 192.168.0.10

 

6. Установка LAMP

#apt-get install apache2
#apt-get install php5 php-pear libapache2-mod-php5

Если нужно найти дополнительные модули используйте команду
#apt-cache search php5-

#apt-get install mysql-server

#apt-get install redis-server

Начнем править конфиги:
в /etc/apache22
Для рестарта апача
#systemctl restart apache2

 

Команды для управления LAMP

Остановка/запуск/перезагрузка Web сервера Apache

systemctl start apache2
systemctl stop apache2
systemctl restart apache2
systemctl status apache2

systemctl start apache2
systemctl stop apache2
systemctl restart apache2
systemctl status apache2

systemctl start mysql
systemctl stop mysql
systemctl restart mysql
systemctl status mysql

systemctl start mysql
systemctl stop mysql
systemctl restart mysql
systemctl status mysql

 

Установка NGINX

Посмотрим как быстро поставить nginx последней стабильной версии на свеженький Debian 8. Для начала нам нужно прикрутить nginx-репозитории к apt:

# echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list
# echo "deb-src http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list

Теперь добавляем PGP-ключ nginx с помощью apt-key:

# cd ~ wget http://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key

Чтоб не замусорить систему - файл ключа теперь м#ожно удалить:

# rm nginx_signing.key
 
Вообще PGP-ключ нужен всего-лишь чтоб ОС проверила подпись пакетов. С вашей точки зрения его можно не ставить, но тогда при установке операционная система будет переспрашивать вас и выкидывать варнинги.

Осталось обновить индексы apt-get и установить nginx:

# apt-get update
# apt-get install nginx

Суммируя, если вы под админской учеткой, то можно в один "копипсат" выполнить следующий набор команд:

# echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list
# echo "deb-src http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list cd ~
# wget http://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key apt-get update apt-get install nginx

Теперь на вашем сервере установлена последняя стабильная версия nginx. На момент написания статьи это была версия 1.10.1.

В приведенном примере мы устанавливали последнюю стабильную версию nginx. Если вы предпочитаете последнюю релизную версию, то можете заменить url http://nginx.org/packages/debian/ из первых команд на http://nginx.org/packages/mainline/debian/. На момент написания статьи это была версия 1.11.1.
 

Рассмотрим базовые команды Nginx.

Чтобы остановить сервер, введите:

# sudo service nginx stop

Для запуска веб-сервера используйте:

# sudo service nginx start

Чтобы перезапустить сервер, введите:

# sudo service nginx restart

Чтобы настроить автоматический запуск веб-сервера при загрузке системы, используйте:

# sudo update-rc.d nginx defaults

Чтобы проверить работу конфигурации, перезагрузите сервер.

# sudo shutdown -r now

Если ругается:
Failed to start nginx.service: Unit nginx.service is masked.
то пишем:
# sudo systemctl unmask nginx.service

Для корректного IP отключаем RPAF и подключаем:

a2dismod rpaf
a2enmod remoteip

дальше создаем конфиг:

echo "
        RemoteIPHeader X-Forwarded-For
        RemoteIPTrustedProxy 127.0.0.1
" > /etc/apache2/conf-available/remoteip.conf

загружаем конфиг:

a2enconf remoteip
service apache2 restart

На самом деле команды загрузки конфигов можно заменить просто созданием соответствующих символических ссылок

В логах апача до настоящего момента будет писаться правильно только nginx. Чтобы то, что идёт через nginx -> apache было не 127.0.0.1, надо сделать так:

Код:
sed -i "s@LogFormat "%h %l@LogFormat "%a %l@" /etc/apache2/apache2.conf

или вручную заменить в /etc/apache2/apache2.conf

Код:
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined

на 

Код:
LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined

получится так:

Код:
LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
#LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

и всё. Теперь в возможностях не трогаем Apache и Nginx.
А то всё слетит.

 

7. Как посмотреть, какие порты используются debian, ubuntu:
показать прослушиваемые порты в системе (и кто их слушает):
# netstat -lp --inet

показать активные соединения:
#netstat -p --inet

также можно пользоваться утилитой lsof
прослушиваемые порты
# lsof -i | grep LIST

активные соединения
# lsof -i | grep ESTAB

для того, чтобы увидеть, какие программы слушают на каких портах, необходимо иметь root-привилегии.

# netstat -pan | grep LIST

# nmap -F

 

9. Почта

Удалим:
apt-get purge exim4 exim4-base exim4-config exim4-daemon-light

Поставим:
apt-get install sendmail

Зайдем в папку /etc/mail и в файле sendmail.mc и изменим строки, вписав туда свой IP:
DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1`)dnl
DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1`)dnl

в конце впишем свой домен в строку:
MASQUERADE_AS(`ДОМЕН.ru')dnl

в файле submit.mc в строке пропишем свой IP адрес:
CLIENT_OPTIONS(`Family=inet, Address=, Name=MTA')dnl 

после этого в папке выполним:
# make
# /etc/init.d/sendmail reload

в /etc/hostname должен стоять проавильное имя хоста и DNS должен быть настроен корректно, включая обратную зону

В php.ini добавим (раскомментим)
sendmail_path = /usr/sbin/sendmail -t -i

Полезные ссылки:

http://serveradmin.ru/debian-nastroyka-servera/


Вернуться обратно


Смотрите также:

14.09.2017: Делаем https

12.01.2017: Построение Linux-кластера в облаке
полезное видео по теме
11.01.2017: Tarantool - полезная информация

22.11.2016: Docker - средство контейнерной виртуализации

30.06.2016: Видеонаблюдение Freebsd


     



Откройте страницу
на смартфоне!

Логин:
Пароль:
 

Карта сайта
Сopyright © 2003-2017 mnbv.ru