Настройка Ubuntu сервера.

 

1. Настройка netplan

2. Обновляемся и ставим mc и iftop

3. Настроим синхронизацию времени.

4. Отключаем проверку онлайн сервисов

5. Настройка Iptables и форвардинг.

 

1. Настройка netplan

 

Подробнее по настройке netplan ====>

Для того чтобы посмотреть все сетевые интерфейсы введите команду ifconfig -a.

 

 $ sudo ifconfig -a

 

Смотрим как называются наши интерфесы. Например ens2.

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

 

 $ sudo nano /etc/netplan/*.yaml

 

Для того чтобы сохранить документ в nano надо нажать "Ctrl+o"->"Enter", а чтобы закрыть "Ctrl+x"->"Enter".

Конфигурация для указания настроек сети вручную.

----------------------------------------------------------------------------------

  network:

    renderer: networkd

    ethernets:

        ens160:

            addresses: [192.168.3.13/24]

            gateway4: 192.168.3.1

            dhcp4: no

            dhcp6: no

            nameservers:

              addresses: [8.8.8.8,8.8.4.4]

        ens192:

            addresses: []

            dhcp4: true

    version: 2

-----------------------------------------------------------------------------------

Проверим конфигурацию на наличие ошибок и применим изменения

 

  $ sudo netplan try

 

Если ошибок нет, то вы получите сообщение: "Вы хотите сохранить эти настройки?" Нажмите ENTER.

Но навсякий случай введем команду применения настроек

 

  $ sudo netplan apply

 

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

 

  $ sudo ifconfig

 

2. Обновляемся и ставим mc и iftop

 

Обновляем пакеты системмы:

 

$ apt-get update

$ apt-get dist-upgrade

$ apt-get autoclean

 

Установим файловый менеджер mc

 

 $ apt-get 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

 

Для контроля сетевой нагрузки устанавливаем iftop.

 

 $ apt install iftop

 

3. Настроим синхронизацию времени.

 

Узнать дату, время, часовой пояс можно командой date:

 

$ date

 

Mon 12 Aug 2019 02:29:03 PM MSK

 

Дальше синхронизируем время с сервером времени в интернете. Для разовой или ручной синхронизации понадобится отдельная утилита. Установим ntpdate на сервер:

 

$ apt-get install ntpdate

 

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

 

# ntpdate-debian

 

12 Aug 14:30:21 ntpdate[8688]: adjust time server 89.109.251.21 offset 0.004529 sec

 

Если получаете ошибку:

 

12 Aug 14:30:21 ntpdate[8688]: the NTP socket is in use, exiting

 

Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.

 

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

 

$ apt-get install ntp

 

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

 

$ netstat -tulnp | grep ntp

-------------------------------------------------

 

udp          0      0   10.20.1.16:123                 0.0.0.0:*        8855/ntpd

udp          0      0   127.0.0.1:123                   0.0.0.0:*        8855/ntpd

udp          0      0   0.0.0.0:123                      0.0.0.0:*       8855/ntpd

udp6       0      0   fe80::cce1:23ff:fe4:123   :::*                 8855/ntpd

udp6       0      0   ::1:123                               :::*                 8855/ntpd

udp6       0      0   :::123                                 :::*                 8855/ntpd

----------------------------------------------------

 

4. Отключим проверку онлайн сервисов

 

Это нужно чтобы сервер при загрузке не задумывался на 15 минут.

Взято тут

 

$ sudo systemctl disable systemd-networkd-wait-online.service

$ sudo systemctl mask systemd-networkd-wait-online.service

 

5. Настроим Iptables и форвардинг.

 

Очень подробно вопрос настройки iptables ===>

 

Для начала нужно установит пакет iptables-persistent, который позволяет сохранять наборы правил брандмауэра и автоматически использовать их в дальнейшем.

 

$ sudo apt-get install iptables-persistent

 

Во время установки пакет предложит вам сохранить текущий набор правил брандмауэра. Чтобы сделать это, выберите yes.

Если вдруг такого вопроса не возникло то сохраняем настройки вручную

 

$ sudo iptables-save > /etc/iptables/rules.v4

 

Далее нужно включить форвардинг пакетов. Подробнее о sysctl ===>

Для этого редактируем конфиг /etc/sysctl.conf:

 

# mcedit /etc/sysctl.conf

 

net.ipv4.ip_forward=1

 

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

 

# sysctl -p

 

На выходе работы команды в консоли будет выведен измененный параметр со значением 1.

 

Возвращаемся к Iptables. Текущие настройки iptables можно посмотреть командой

 

$ sudo iptables -L -v -n

 

Чтобы настроить политику брандмауэра, отредактируйте файлы /etc/iptables/rules.v4 и /etc/iptables/rules.v6.

Откроем файл /etc/iptables/rules.v6 и заблокируем IPv6:

 

------------------------------------------

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

COMMIT

------------------------------------------

 

Проверяем файл на наличие ошибок:

 

$ sudo ip6tables-restore -t /etc/iptables/rules.v6

 

Если файлы правил не содержат ошибок, можно применить новые правила с помощью команды:

 

$ sudo service iptables-persistent reload

 

Эта команда обновит списки правил брандмауэра. Чтобы убедиться в том, что теперь брандмауэр использует новые правила, запросите текущие наборы правил:

 

$ sudo ip6tables -S

 

Теперь IPV6 заблокирован.

 

Далее настроим IPV4.

 

Создадим файл с правилами iptables:

 

$ mcedit /etc/iptables.sh

 

-------------------------------------------------------------------------------

 

#!/bin/bash

 

export IPT="iptables"

 

# Внешний интерфейс

export WAN=eth0

export WAN_IP=192.168.1.24

 

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

export LAN1=eth1

export LAN1_IP_RANGE=10.0.15.0/24

 

# Очищаем правила

$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

 

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

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -i $LAN1 -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A OUTPUT -o $LAN1 -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

# Разрешаем все входящие подключения сервера

#$IPT -A INPUT -i $WAN -j ACCEPT

 

# разрешаем установленные подключения

$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

 

# Отбрасываем неопознанные пакеты

$IPT -A INPUT -m state --state INVALID -j DROP

$IPT -A FORWARD -m state --state INVALID -j DROP

 

# Отбрасываем нулевые пакеты

$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

 

# Закрываемся от syn-flood атак

$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 -s 84.122.21.197 -j REJECT

 

# Пробрасываем внешний порт 23543 на локальный адрес и порт 3389

#$IPT -t nat -A PREROUTING -p tcp --dport 23543 -i ${WAN} -j DNAT --to 10.1.3.50:3389

#$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp --dport 3389 -j ACCEPT

 

# Разрешаем доступ из локалки наружу

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

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

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

 

# Включаем NAT

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

 

# открываем доступ к SSH

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

 

# Записываем правила в файл

/sbin/iptables-save > /etc/iptables/rules.v4

-----------------------------------------------------------------------------------------------------

 

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

 

$ chmod 0740 /etc/iptables.sh

 

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

 

$ sh /etc/iptables.sh

 

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

 

$ iptables -L -v -n

 

Если правила не применились, то проверим файл rules.v4 на ошибки.

 

$ sudo iptables-restore -t /etc/iptables/rules.v4

 

Подправив ошибки, можно применить новые правила с помощью команды:

 

$ sudo service iptables-persistent reload