debian8-setup-sevo44

Debian 8 установка и настройка

Установим одну из самых стабильных операционных систем linux Debian 8. Настроим учитывая основные требования системного администратора. Нужна стабильность в работе? Выбирайте этот дистрибутив OC Linux. Самая большая база программ и огромное сообщество.

Предисловие

Операционная система Debian является основоположником целого семейства OC Linux и зарекомендовала себя как одна из самых надежных и стабильных систем. На рабочем компьютере устаревшие но проверенные версии программного обеспечения могут вызвать неудобство в работе но для сервера надежность прежде всего. Каждый выбирает сам, что он хочет получить, стабильность или современность. Для серверов мой выбор однозначно падает на стабильность.

Где скачать Debian 8

На сайте разработчика вы всегда можете скачать любую необходимую версию системы Debian.

Установка Debian 8

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

Для установки системы на RAID1 можете воспользоваться информацией из статьи «Установка на RAID1«.

Настройка Debian 8

Подключение по ssh

Откроем консоль и определим ip адрес:

local@xrdp:~$ ip addr
= вывод команды =
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 02:74:8a:ed:a9:d3 brd ff:ff:ff:ff:ff:ff
 inet 192.168.0.150/24 brd 192.168.0.255 scope global dynamic eth0
 valid_lft 31965sec preferred_lft 31965sec
 inet6 fe80::74:8aff:feed:a9d3/64 scope link 
 valid_lft forever preferred_lft forever

Подключимся по ssh под простым пользователем:

ssh local@192.168.0.150
= вывод команды =
Warning: Permanently added '192.168.0.150' (ECDSA) to the list of known hosts.
local@192.168.0.150's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
local@xrdp:~$

По умолчанию к системе Debian 8 нельзя подключится сразу под суперпользователем root!

Переключится на пользователя root:

local@xrdp:~$ su -
= вывод команды =
Пароль: 
root@xrdp:~#

Обновление

Обновим индекс пакетов в Debian 8 до актуального состояния:

apt-get update

Выполним обновление всех пакетов системы:

apt-get upgrade

Необходимые пакеты для работы

Установим без вопросов пакеты которые обычно используются в работе c Debian 8:

apt-get -y install mc htop iftop cifs-utils davfs2
  • mc — консольный редактор,
  • htop — консольный монитор просмотра состояния сервера,
  • cifs-utils — пакет необходимый для монтирование сетевых ресурсов,
  • davfs2 — пакет для подключения по протоколу WebDav

Определим редактор mc в системе по умолчанию:

select-editor
= вывод команды с необходимым параметром =
Select an editor. To change later, run 'select-editor'.
 1. /bin/nano <---- easiest
 2. /usr/bin/mcedit
 3. /usr/bin/vim.tiny

Choose 1-3 [1]: 2

Разрешим подключение root по ssh

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

mcedit /etc/ssh/sshd_config
= необходимые изменения =
# Можно поменять на другой порт при желании
Port 22
# Разрешение подключаться под root
PermitRootLogin yes

Перезагрузим сервис ssh:

service sshd restart

Проверим правильность изменения порта (если это делали):

netstat -tulnp | grep ssh
= вывод команды =
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2015/sshd 
tcp6 0 0 :::22 :::* LISTEN 2015/sshd

Можем теперь сразу подключаться под root.

Не забудьте добавить порт в настройки firewall!

Сетевые параметры

После установки наша система получает ip адрес используя DHCP.

При установке после определения сетевых параметров по DHCP вы можете сделать шаг назад и сразу настроить статический ip адрес.

Для назначения статического адреса вы можете использовать два варианты:

  1. Привязать mac адрес на DHCP сервере и закрепить нужный ip,
  2. Назначить сетевые параметры изменив настройки.

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

Изменим сетевые параметры (обратите внимание на название сетевой карты у нас она eth0):

mcedit /etc/network/interfaces
=вывод команды с необходимыми изменениями=
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# Запускать автоматически при загрузке системы
auto eth0 
# Интерфейс eth0 в диапазоне IPv4 со статическим адресом
iface eth0 inet static
# IP адрес
address 192.168.0.107
# Шлюз по умолчанию
gateway 192.168.0.106
# Маска сети
netmask 255.255.255.0
# DNS
dns-nameservers 8.8.8.8

Выполним перезапуск сети командой:

/etc/init.d/networking restart
= вывод команды =
[ ok ] Restarting networking (via systemctl): networking.service.

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

ip addr
= вывод команды =
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 02:74:8a:ed:a9:d3 brd ff:ff:ff:ff:ff:ff
 inet 192.168.0.150/24 brd 192.168.0.255 scope global dynamic eth0
 valid_lft 29523sec preferred_lft 29523sec
 inet 192.168.0.107/24 brd 192.168.0.255 scope global secondary eth0
 valid_lft forever preferred_lft forever
 inet6 fe80::74:8aff:feed:a9d3/64 scope link 
 valid_lft forever preferred_lft forever

После перезагрузки системы  отображение  inet 192.168.0.150/24 пропадет!

Проверим соединение с интернетом отправив 4 пакета на ya.ru:

ping -c 4 ya.ru
= вывод команды =
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=54 time=15.2 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=54 time=15.1 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=54 time=16.0 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=54 time=18.4 ms

--- ya.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 15.186/16.235/18.422/1.310 ms

Настройка iptables

Изначально фаервол в Debian 8 полностью открыт. Проверим это:

iptables -L -v -n
= вывод команды =
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination

Всё пропускает.

Самое удобное для работой с iptables это создать скрипт и при необходимости его редактировать указывая нужные параметры и применять.

Создадим скрипт настройки iptables:

mcedit /etc/iptables.sh
= вывод команды с необходимой информацией =
#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Сетевой интерфейс
export WAN=eth0
export WAN_IP=192.168.0.107

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

# Ping
$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
#$IPT -A INPUT -i $WAN -j ACCEPT

# Доступ к web серверу
#$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# Доступ к Samba
#$IPT -A INPUT -p tcp -m tcp --dport 137 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 138 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 901 -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
# Открываем порт для RDP
#$IPT -A INPUT -i $WAN -p tcp --dport 3389 -j ACCEPT
# Логирование
$IPT -N block_in
$IPT -N block_out
$IPT -N block_fw

$IPT -A INPUT -j block_in
$IPT -A OUTPUT -j block_out
$IPT -A FORWARD -j block_fw

$IPT -A block_in -j LOG --log-level info --log-prefix "--IN--BLOCK"
$IPT -A block_in -j DROP
$IPT -A block_out -j LOG --log-level info --log-prefix "--OUT--BLOCK"
$IPT -A block_out -j DROP
$IPT -A block_fw -j LOG --log-level info --log-prefix "--FW--BLOCK"
$IPT -A block_fw -j DROP
# Сохраняем правила
/sbin/iptables-save > /etc/iptables_rules

Даем файлу права на запуск:

chmod +x /etc/iptables.sh

Всегда очень внимательно настраивайте правила! В случае неправильной настройки вы можете потерять доступ к серверу!

Запускаем скрипт:

sh /etc/iptables.sh

Проверяем правила:

iptables -L -v -n
= вывод команды =
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 
 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 0
 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
 5 356 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0 
 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
 0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
 0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:123
 0 0 block_in all -- * * 0.0.0.0/0 0.0.0.0/0 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 
 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
 0 0 block_fw all -- * * 0.0.0.0/0 0.0.0.0/0 

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 
 3 308 ACCEPT all -- * eth0 0.0.0.0/0 0.0.0.0/0 
 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
 0 0 block_out all -- * * 0.0.0.0/0 0.0.0.0/0 

Chain block_fw (1 references)
 pkts bytes target prot opt in out source destination 
 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--FW--BLOCK"
 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 

Chain block_in (1 references)
 pkts bytes target prot opt in out source destination 
 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--IN--BLOCK"
 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 

Chain block_out (1 references)
 pkts bytes target prot opt in out source destination 
 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--OUT--BLOCK"
 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 

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

mcedit /etc/network/interfaces
= необходимое дополнение =
# Загрузка правил iptables при старте машины
pre-up iptables-restore < /etc/iptables_rules

Применим изменения командой:

/etc/init.d/networking restart
= вывод команды =
[ ok ] Restarting networking (via systemctl): networking.service.

 

Логирование Cron

В Debian нет отдельного файла логов cron. Исправим это недоразумение.

Редактируем необходимый файл:

mcedit /etc/rsyslog.conf
= Раскомментируем строку =
cron.*                                /var/log/cron.log
= Редактируем строку добавив cron.none =
*.*;auth,authpriv.none,cron.none     -/var/log/syslog

Перезапустим rsyslog:

service rsyslog restart

Осталось проверить ротацию логов cron:

mcedit /etc/logrotate.d/rsyslog
= вывод команды с необходимыми параметрами =
cat /etc/logrotate.d/rsyslog 
/var/log/syslog
{
 rotate 7
 daily
 missingok
 notifempty
 delaycompress
 compress
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
 rotate 4
 weekly
 missingok
 notifempty
 compress
 delaycompress
 sharedscripts
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

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

Результат

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *