Подобряване на сигурността и защитата на Linux / CentOS сървъра в Интернет

В тази статия ще обсъдим основните понятия и специфични настройки, които ще помогнат за повишаване на сигурността на вашия CentOS сървър в Интернет. Използването на тези подходи ще увеличи защитата на сървъра от хакване и инфекция. Ръководството е в по-голямата си част универсално и основните точки са подходящи за повишаване на сигурността на всеки Linux сървър.

Съдържание:

  • Опции за разделяне и монтаж на дискови устройства за изолиране
  • Инсталиране и актуализиране на софтуер на Linux (CentOS)
  • SSH защита, ключово разрешение
  • Linux парола се променя редовно
  • Повишаване сигурността на сървъра със SELinux
  • Конфигурирайте Firewalld
  • Деинсталирайте X Windows
  • Защита на ядрото на Linux
  • Разрешения за файлове в Linux
  • Сигурност на уеб сървъра
  • Физическа защита на сървъра
  • Архивиране на Linux сървър

Опции за разделяне и монтаж на дискови устройства за изолиране

Когато инсталирате CentOS (и всяка Linux дистрибуция) на етапа на разделяне на диска, не създавайте един дял, а отделно мрежа-пространство от основния дял, също създайте системни дялове:

  • / корен
  • / обувка
  • / вар
  • / tmp
  • /

Когато изолират дялове, нападателите няма да могат да се издигнат над директорията мрежа при хакване на сайт и въвеждане на злонамерени скриптове в него.

Използвайте специални опции за безопасно монтиране на някои дялове:

  • noexec - не позволява да се стартират двоични файлове (не може да се използва в главната директория, тъй като това ще доведе до неработоспособност на системата);
  • nodev - приема, че файловете на устройството няма да бъдат създадени на монтираната файлова система / dev. Също не е приложимо за главната директория;
  • nosuid - забранява операциите с SUID и SGID бита.

Тези параметри могат да бъдат зададени в директория само ако съществуват като отделен раздел. Можете да персонализирате / и т.н. / fstab съгласно следните препоръки, ако имате дялове на диска:

  • / начало - монтиране с опции nodev, nosuid, usrquota (включване на квоти);
  • / обувка - монтиране с опции nodev, nosuid, noexes - този раздел е необходим за зареждане на системата, забраняваме нещо да се променя в нея;
  • / вар - nosuid - работи като root не е забранено;
  • / var / log - монтиране с опции nodev, nosuid, noexeс;
  • / var / www - монтиране с опции nodev, nosuid;
  • / tmp - монтиране с опции nodev, nosuid, noexe - този раздел е необходим само за съхранение и запис на временни файлове.
Всички горепосочени секции са монтирани с опцията RW (Способност за запис).

Инсталиране и актуализиране на софтуер на Linux (CentOS)

Когато инсталирате сървъра, никога не използвайте дистрибуции на OS, съставени от неизвестни лица. Изтеглете дистрибуциите само от официални огледала и не използвайте файлове за стартиране на други хора за инсталиране. Ако не разбирате чужд код, по-добре е да отмените това начинание изцяло и да инсталирате всичко ръчно или да анализирате напълно файла за стартиране, за да не инсталирате нещо злонамерено на вашия сървър.

Инсталирайте само минимално необходимия софтуер. Инсталиране и конфигуриране само в бизнеса и с помощта на инсталатора Yum и DNF. Проверете целия инсталиран софтуер и премахнете ненужните пакети:

yum списък е инсталиран
списък с име
yum премахнете пакетName

Използвайте само официални и надеждни хранилища за пакети..

Не използвайте нешифрирани FTP, Telnet, Rlogin, Rsh.

Деактивирайте неизползваните услуги на вашия сървър, ако в момента премахването на услугата не ви допада.

За да проверите списъка с всички услуги, използвайте командата:

systemctl списък-единица-файлове --type = услуга

За да деактивирате и премахнете услуга от стартиране в CentOS, използвайте systemctl:

systemctl стоп услуга
systemctl деактивиране на услугата

Например, за да деактивирате услугата уеб- използва се следната команда:

systemctl спрете httpd.service
systemctl деактивира httpd.service

Винаги поддържайте актуалния инсталиран софтуер на вашия сървър. Навременният актуализиран софтуер ще ви предпази от известни уязвимости. Можете да настроите автоматични актуализации на системата, така че не е необходимо да правите това ръчно всеки път.

yum актуализация - актуализация на системата

SSH защита, ключово разрешение

За сигурна авторизация на сървъра използвайте частния ключ. Генерирайте ключа с помощта на полезната програма ssh-keygen:

# ssh-keygen

Генериране на публична / частна двойка rsa. Въведете файл, в който да запазите ключа (/root/.ssh/id_rsa): Въведете парола (празна за без парола): Въведете отново същата парола: Вашата идентификация е запазена в /root/.ssh/id_rsa. Публичният ви ключ е запазен в /root/.ssh/id_rsa.pub. Ключовият пръстов отпечатък е: SHA256: ffIDjWIfOgMZmOVbQmDWaOCADK4G3cYYy0dTIjqLkD8 [email protected] Случайното изображение на ключа е: + --- [RSA 2048] ---- + | * + .B = + | | oO @oO. | | *. *. B +. | | = + o *. о | | + .E + S * o | | ... o + * | | +. о | | о. | | | + ---- [SHA256]-----+ 

След поколение можете да се свържете с този ключ към сървъра, чрез SSH-клиентът.

Създайте допълнителен потребител и изпълнете командите чрез Sudo.

sudo groupadd sudo - създайте група Sudo

adduser webmaster - създаване на потребител

passwd уебмастър - промяна на паролата

usermod -aG sudo webmaster - добавете потребител към групата Sudo

Във файл / etc / sudoers добавете ред:

% sudo ВСИЧКИ = (ВСИЧКИ: ВСИЧКИ) ВСИЧКИ

Деактивирайте в настройката SSH-разрешение на сървъра чрез корен и вход / парола:

nano / etc / ssh / sshd_config

И променете стойността на линиите по-долу на:

PermitRootLogin no PasswordAuthentication no ChallengeResponseAuthentication no UsePAM не AuthenticationMethods publickey PubkeyAuthentication да 

Променете порта по подразбиране за SSH. Портът по подразбиране за SSH, ще бъде предразположена към напукване на първо място.

За да смените стандартния порт на SSH, в конфигурационния файл / etc / ssh / sshd_config заменете стойността в реда:

Пристанище 22

Linux парола се променя редовно

Ако все пак използвате пароли за упълномощаване в Linux, след това конфигурирайте паролата за паролата чрез помощната програма Chage.

За да проверите колко дни ще бъде валидна паролата за всеки потребител, използвайте командата:

chage -l корен

По подразбиране имах 99999 дни, зададени за root:

# chage -l корен

Последна промяна на паролата: никога Паролата не изтича: никога Парола неактивна: никога Сметката изтича: никога Минимален брой дни между смяна на паролата: 0 Максимален брой дни между смяна на паролата: 99999 Брой дни на предупреждение преди изтичане на паролата: 7 

За да промените периода на валидност на паролата (например 9 дни), използвайте командата:

chage -M 9 корен

Сега, когато проверявате информацията за изтичане на паролата за root потребител, информацията се е променила:

# chage -l корен

Последна промяна на паролата: никога Паролата не изтича: никога Парола неактивна: никога Сметката изтича: никога Минимален брой дни между смяна на паролата: 0 Максимален брой дни между смяна на паролата: 9 Брой дни на предупреждение преди изтичане на паролата: 7 

Можете да получите повече опции за помощната програма chage от помощта:

човечец

За да блокирате потребителите при въвеждане на грешна парола, използвайте помощната програма fail2ban (позволява ви да внедрите аналог на груповите правила за блокиране на акаунта в Windows). Fail2ban защитава Linux сървъра и услугите от намиране на парола.

За да инсталирате run2ban run:

yum инсталирайте epel-release fail2ban -y

Конфигурационният файл fail2ban се намира в /etc/fail2ban/jail.conf. Настройки, които ще засегнем:

  • bantime = 600 - време за забрана при блокиране
  • maxretry = 3 - броят на опитите за въвеждане на паролата неправилно, след което потребителят ще бъде блокиран
  • findtime = 600 - период от време, през който потребителят трябва да влезе

Други настройки се използват по желание. Освен това можете да конфигурирате изпращане на отчети на имейла си.

Създайте файл /etc/fail2ban/jail.local и добавете следните редове там:

След промяна на конфигурационния файл, рестартирайте услугата.

[DEFAULT] ignoreip = 127.0.0.1/24 [ssh-iptables] активиран = истински порт = ssh филтър = sshd действие = iptables [име = sshd, порт = ssh, протокол = tcp] logpath = / var / log / secure 

След това запазете файла и рестартирайте услугата fail2ban:

systemctl рестартиране fail2ban

По този начин, ние настроихме блокиране на потребител за ssh:

Ако паролата е въведена неправилно, бях блокирана за 10 минути. Можете да конфигурирате fail2ban да работи с всяка услуга, която работи с потребители, например:

  • proftpd
  • ИВ
  • постфиксната

Повишаване сигурността на сървъра със SELinux

Обикновено при настройка на сървъра изключвам SELinux, въпреки че това не се препоръчва. Но настройка SELinux много специфични и обширни. Конфигурирането на SELinux на сървъра може да отнеме няколко дни. Ако имате време да конфигурирате и отстраните грешката на вашата система SELinux, използвайте я, за да защитите вашия сървър.

SELinux има 3 режима на работа:

  • Налагане
  • толерантен
  • За хора с увреждания

В режим enforsing SELinux прилага своята политика към системата и следи за неоторизиран достъп от потребителите. Всички опити се регистрират.

В режим толерантен Политиката на SELinux не се прилага, но цялата информация се записва в дневниците, след което можете да ги анализирате. Този режим е полезен при настройка и отстраняване на грешки в системата..

и инвалиди съответно деактивира SELinux изцяло и неговата политика не се прилага изобщо.

Конфигурационен файл SELinux - / etc / selinux / config

Внимателна настройка SELinux можете да пишете на няколко статии, ако имате нужда от подробна информация, можете да използвате официалната документация RedHat. Обикновено при настройката на сървъра всичко работи напълно, аз съм на SELinux забеляза, че има проблеми с FTP-сървър, както и някакъв платен софтуер.

Проверка на състоянието:
# сестатус

Състояние на SELinux: деактивирано

За по-удобно проучване на SELinux дневниците препоръчвам да използвате помощните програми aureport и sealer.

Конфигурирайте Firewalld

Отворете само минимално необходимия набор от портове на сървъра, които наистина са необходими за работа. Например да работя мрежа-достатъчно е да отворите сървъри 80 и 443. Ако използвате mysql /mariadb, деактивирайте възможността да се свържете от отдалечени сървъри към порт 3306 (ако вашата база данни се използва само локално, не е включена в клъстера Galera и не се използва в скриптове за репликация).

Ако вашият компютър / шлюзът за достъп е настроен на статичен IP адрес, добавете вашия доверен адрес към изключенията на защитната стена и се свържете със сървъра от него. Научете повече за конфигурирането на firewalld в CentOS (ако сте свикнали да iptables, вижте Конфигуриране на защитната стена на Linux с iptables).

За да проверите отворените портове на сървъра, използвайте помощната програма NETSTAT:

netstat -tulpn

Деинсталирайте X Windows

Не използвайте системата на вашия сървър X прозорци. Премахнете целия софтуер, който е свързан с тази система, няма нужда да го използвате Linux сървър:

yum group премахнете "GNOME Desktop"
yum group премахване на "KDE плазмени работни пространства"
yum group премахнете "Сървър с GUI"
yum group премахнете "MATE Desktop"

Защита на ядрото на Linux

Използвайте настройките във файла /etc/sysctl.conf за допълнителна сигурност по време на зареждане на ядрото на Linux.

Включете execshield:

kernel.exec-shield = 1

Деактивира IP маршрутизиране (ако вашият сървър не се използва като шлюз за достъп до Интернет от LAN):

net.ipv4.conf.all.accept_source_route = 0

Активиране на защитата от изкривяване

net.ipv4.conf.all.rp_filter = 1

Активиране на игнориране на заявки за излъчване

net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_messages = 1

Активиране на подозрителна регистрация на пакети

net.ipv4.conf.all.log_martians = 1

Разрешения за файлове в Linux

Стартирайте търсене на файлове без потребител и група, такива файлове са потенциално опасни и биха могли да се използват от киберпрестъпници. За да намерите такива файлове, използвайте командата:

find / directory -xdev \ (-nouser -o -nogroup \) -print

Ако файловете се намерят, сменете собственика и групирайте ги.

Задайте флаг chattr до необходимите файлове, за да ги предпазите от модификация. Никой потребител не може да променя файла, докато този флаг е зададен. Например:

chattr + i /etc/mysript.sh

Не задавайте твърде високи разрешения за директории и файлове, например, стандартни права за мрежа:

  • 755 за директории
  • 644 за файлове

В някои случаи може да има изключения, но винаги внимателно подхождайте към този въпрос. Забранете на потребителите да задават разрешение 777. Можете да намерите такива файлове:

find / home -тип f -perm 777

Сигурност на уеб сървъра

Ако използвате сървър под мрежа, погрижете се за създаването на уеб услуги. Затворете разглеждането на съдържанието на директория чрез Опции -Индекси, също добавете X-кадър.

Заглавката винаги добавя опции за X-Frame SAMEORIGIN

Този параметър ще забрани отварянето на страницата в рамка, това ще предотврати вграждането на съдържанието на вашия сайт в други сайтове.

Деактивирайте показването на вашата версия мрежа-сървър. за Apache в конфигурационния файл напишете:

serverSignature Off

за Nginx в конфигурационния файл към секцията HTTP запишете:

изключен сървър;

Ако използвате php, деактивирайте опасни функции чрез php.ini:

expose_php = Изключено

- забрани показването на php версия

disabled_functions = exec, passthru, shell_exec, система, proc_open, popen

- забранява използването на тези функции

Също така конфигурирайте ограничения за изпълнението на скриптове и техния размер, това ще ви предпази от незначителни атаки.

Инсталирайте SSL сертификат на вашия уебсайт и поща, така че връзката в браузъра и при изпращане на поща да бъде криптирана. Можете да използвате безплатен сертификат от Let's Encrypt или да закупите евтин платен сертификат.

Физическа защита на сървъра

Ако вашият сървър има конзола за отдалечен достъп МОТ/IPMI/ BMC, затворете достъпа до него отвън, оставете само вашия доверен IP, това ще се ограничи от ненужни проблеми.

Ако вашият физически сървър се намира извън офиса / дома, затворете BIOS / UEFI парола.

И основната точка, поставете вашите сървъри с надеждни доставчици.

Архивиране на Linux сървър

Разбира се, не забравяйте за архивирането на сървъра. Можете да извършвате архивиране на целия сървър, както и на отделни файлове или директории (можете да конфигурирате архивиране за безплатни скриптове за съхранение в облак). В случай на инцидент, винаги ще имате под ръка текущото архивиране, от което можете да разгърнете сървъра или да замените конфигурационните файлове.