Настройки безопасности 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