Базовая настройка Ubuntu Server 18.04

После того как установлен Ubuntu Server необходимо его настроить

Вот что рекомендуется сделать:

1) Установите базовые программы

apt install aptitude mc nano htop iftop bwm-ng iperf iperf3 iotop tmux screen openntpd sshfs net-tools dnsutils

2) Ограничьте размер логов systemd

Пропишите в /etc/systemd/journald.conf строчку:

SystemMaxUse=10G

Это строчка ограничивает максимальный размер логов в 10 гигабайт. 
Перезагрузите конфигурацию systemd:

systemctl daemon-reload

Можно также в крон прописать строчку:

journalctl --vacuum-time=30d --vacuum-size=10G

Она будет оставлять логи за 30 дней

3) Создайте скрипт приветствия /etc/profile.d/01-wellcome.sh

IRED='\e[0;91m' # red
IBLUE='\e[0;94m' # blue
NOCOLOR='\e[0m' # No Color

if [ `whoami` = "root" ]; then
    HILIT=${IRED}
else
    HILIT=${IBLUE}
fi

HOSTNAME=`hostname`
PS1="\[${HILIT}\][\u@\h \W]\\$ \[${NOCOLOR}\]"

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/sbin:/bin"
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
export LANG
export LANGUAGE
export EDITOR=nano
export PATH

Вместо кодировки en_US.UTF-8 укажите свою кодировку. Список установленных кодировок можно посмотреть через команду locale -a.

Измените файл /root/.profile

. /etc/profile

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Скопируйте файл /root/.profile в /root/.bashrc

4) Сделайте sudo su -l без ввода пароля

Добавьте группу wheel и в нее пользователя user

groupadd -r wheel
usermod -a -G wheel user

в /etc/sudoers добавьте строчку

%wheel ALL=(ALL:ALL) NOPASSWD: ALL

Попробуйте залогиниться к серверу через отдельный терминал. И сделать sudo su -l.

5) Настройте ssh

В конфиге /etc/ssh/sshd_config измените строчки:

Порт, следует изменить на нестандартный. например:

Port 22050

Запретить авторизацию через root по паролю, только через ключ

PermitRootLogin prohibit-password

либо, вообще запретить заходить под рутом

PermitRootLogin no

Также можете указать:

ClientAliveInterval 5
ClientAliveCountMax 1000

Это позволит держать открытым ssh соединение 5000секунд при отсутствии активности. Это нужно, например, если вы используете sftp для редактирования файлов, и редактор переодически теряет соединение. Если такое происходит то нужно увеличить параметр ClientAliveCountMax, а интервал ClientAliveInterval поставить в 5сек

Разрешить авторизацию только определенным пользователям, укажите в самом конце файла:

AllowUsers root foo bar user

Сделайте перезапуск сервиса ssh

service sshd reload

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

6) Установите iptables

aptitude install iptables-persistent

При работе с iptables будьте осторожны. Одно неверное движение и доступ к серверу может быть заблокирован!!!

Обратите на порт SSH. Укажите свой порт, вместо 22050.

Пропишите в /etc/iptables/rules.v4 следующее содержимое:

*filter
:INPUT ACCEPT [19:913]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:3584]
:ALLOW-INPUT - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# Разрешаем входящие соединения ssh
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22050 -j ACCEPT

# Перейти к цепочке ALLOW-INPUT
-A INPUT -j ALLOW-INPUT

# Запрещаем остальные входящие соединения
-A INPUT -j REJECT
-A FORWARD -j REJECT

# Разрешить http
-A ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A ALLOW-INPUT -j RETURN

COMMIT

Обязателен ENTER в конце (перевод на новую строку).

Скопируйте rules.v4 в rules.v6

cp /etc/iptables/rules.v4 /etc/iptables/rules.v6

Установите новые правила iptables

iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6

Чтобы добавлять новые правила в iptables, например, тот же nginx нужно редактировать файл. Также вы можете выполнить команды

iptables -I ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -I ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Они добавят в начало цепочки ALLOW-INPUT два новых правила, но при этом файл не изменят.

7) Выключите mlocate.

Это ненужная служба, которая индексирует все файлы, и нагружает диск бесполезным IO.Удалите файл /etc/cron.daily/mlocate. Либо в начале этого файла пропишите exit 0

#! /bin/bash

exit 0

8) Содержимое файла ntpd.conf

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

В конце нужен Enter.

Перезапустите ntp

systemctl restart openntpd

9) Отключите bind9. Он не нужен, т.к. в systemd встроен DNS resolver

systemctl disable bind9
systemctl stop bind9

10) Подключитесь к ssh с другого терминала. Если соединение происходит упешно, перезагрузите сервер. И попробуйте подключить еще раз.