Настройки безопасности linux

Restricted user и ограничение прав

Заходить по дефолту из под root не безопасно, поэтому нужно создать пользователя с ограниченными правами и, если есть надобность, добавить его в sudo group.

adduser admin
adduser admin sudo

Установка срока истечения пароля тоже поможет повысить безопасность системы, поэтому делаем👇:

chage -M 90 -m 7 -W 7 user
: '
Срок истечения - 90 дней
Менять пароль можно будет только раз в 7 дней
Предупреждения о смене пароля будут последние 7 дней
перед истечением срока
'

Ограничение прав:

chmod 700 /root
chmod -R 700 /etc/skel
chmod 600 /etc/rsyslog.conf
chmod 640 /etc/security/access.conf
chmod 600 /etc/sysctl.conf

chmod 700 /root - полные права только владельцу каталога /root, чтобы предотвратить доступ посторонних пользователей.

chmod -R 700 /etc/skel - (рекурсивно) ограниченные права доступа по дефолту для всех новых юзеров, создаваемых на основе этого шаблона, чтобы предотвратить доступ других лиц к личным данным юзеров.

chmod 600 /etc/rsyslog.conf - права чтения и записи конфигурационного файла системного журнала только владельцу (обычная защита от изменений).

chmod 640 /etc/security/access.conf - доступ к файлу настроек SELinux только юзеру root.

chmod 600 /etc/sysctl.conf - тоже предотвращение ненужных изменений параметров ядра.


Автоматические обновления

Обновления нужны, в том числе, для исправления багов и уязвимостей, если речь о ИБ. Но на серверах могут возникнуть сбои во время обновления, поэтому лучше автоматически устанавливать только обновления безопасности.
Есть пакет unattended upgrades для настройки автоматических обновлений (для debian-based dists).

Установка и конфигурация:

apt update && apt install unattended-upgrades -y
# /etc/apt/apt.conf.d/20auto-upgrades content:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
# /etc/apt/apt.conf.d/50unattended-upgrades content:
Unattended-Upgrade::Origins-Pattern {
	"origin=Debian,codename=${distro_codename},label=Debian-Security";
};
 
Unattended-Upgrade::Package-Blacklist {
};
 
Unattended-Upgrade::Automatic-Reboot "false";
# Перезагрузка сервиса
systemctl restart unattended-upgrades.service

Fail2ban

Fail2ban позволяет блокировать IP-адреса, с которых предпринимаются множественные неудачные попытки подключения по SSH.

Установка и конфигурация:

apt update && apt install fail2ban -y
# sudo vim /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 86400
maxretry = 4
findtime = 600
 
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3

sshd_config

Образец:

Include /etc/ssh/sshd_config.d/*.conf

Port 2886
ListenAddress 0.0.0.0
ListenAddress ::
HostKey /etc/ssh/ssh_host_rsa_key
Protocol 2
SyslogFacility AUTH
LogLevel INFO
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM no
X11Forwarding no
PrintMotd yes
AcceptEnv LANG LC_*
Subsystem	sftp    /usr/lib/openssh/sftp-server

ufw

Важно помнить простое правило: все, что не разрешено - должно быть запрещено. Иными словами, открыты только порты для используемых сервисов, все остальные должны быть закрыты.

Установка и конфигурация:

sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2886
sudo ufw enable

Security tips

securityufwfail2bansshunattended-upgrades