Настройка 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