Максимальная безопасность в GNU / Linux

Привет друзья из DesdeLinux, то что обещали - это долг и вот пост про как максимизировать защиту систем Linux и оставайся таким сейф от злоумышленников, а также защита информации на ваших серверах, ПК или ноутбуках !!!!

начало

Фэйл2бан: - это приложение, написанное на Python для предотвращения вторжения в систему, которое действует, наказывая или блокируя удаленные соединения, которые пытаются получить доступ методом грубой силы.

Установка:

Fedora, RHEL, CentOS:

yum install fail2ban

Debian, Ubuntu:

apt-get install fail2ban

Настройка:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local nano /etc/fail2ban/jail.local

В части под названием [DEFAULT] мы раскомментируем и изменяем #bantime = 3600, оставляя его следующим образом:

#bantime = 3600 bantime = 604800

В части [sshd] мы вводим enabled = true, оставляя его так:

#enabled = true enabled = true

Сохраняем CTRL + O и закрываем CTRL + X

Запускаем сервис:

Fedora, RHEL, CentOS:

systemctl включить fail2ban.service systemctl start fail2ban.service

Debian, Ubuntu:

запуск службы fail2ban

Запретить root-доступ с помощью ssh:

Чтобы защитить нашу машину, мы собираемся запретить ssh через пользователя root. Для этого редактируем файл / etc / ssh / sshd_config следующим образом:

cp sshd_config sshd_config.bck nano / etc / ssh / sshd_config

Раскомментируем и меняем

#Protocol 2 Протокол 2

Раскомментируем и меняем

#PermitRootLogin да PermitRootLogin нет

Сохраняем CTRL + O и закрываем CTRL + X

Запускаем сервис:

Fedora, RHEL, CentOS:

systemctl включить sshd.service systemctl start sshd.service

Debian, Ubuntu:

запуск службы sshd

Запретить доступ к ssh-серверу с помощью пароля и разрешить ssh только с ключами RSA

Если мы хотим соединиться с ПК1 с Сервером1, первое, что нужно сделать, это сгенерировать наш ключ на ПК1. С нашим пользователем и без root на ПК1 выполняем:

ssh-keygen -t rsa -b 8192 (генерирует более чем безопасный ключ, поскольку обычно используются ключи от 1024 до 2048)

Получив пароль, мы загружаем его на Server1:

ssh-copy-id пользователь @ server_ip

Как только это будет сделано, мы собираемся подключиться к нашему серверу Server1 и изменить файл nano / etc / ssh / sshd_config с правами root:

Пользователь ssh @ Server1 nano / etc / ssh / sshd_config

Мы меняем строку с #PasswordAuthentication yes на это:

#PasswordAuthentication да
Пароль Аутентификация нет

Сохраняем CTRL + O и закрываем CTRL + X

Перезапускаем службу ssh:

Fedora, RHEL, CentOS:

systemctl перезапустить sshd.service

Debian, Ubuntu:

перезапуск службы sshd

Изменить порт прослушивания ssh

Снова редактируем / etc / ssh / sshd_config и в части, относящейся к порту, оставляем его так:

# Порт 22 Порт 2000 (или любой другой номер больше 2000. В наших примерах мы будем использовать это.)

Сохраняем CTRL + O и закрываем CTRL + X

Перезапускаем службу ssh:

Fedora, RHEL, CentOS:

systemctl перезапустить sshd.service

Debian, Ubuntu:

перезапуск службы sshd

Если они используют fail2ban, необходимо изменить конфигурацию sshd, настроив порт.

nano /etc/fail2ban/jail.local

[sshd]
port    = ssh, 2000

[sshd-ddos]
port    = ssh, 2000

[dropbear]
port    = ssh, 2000

[selinux-ssh]
port    = ssh, 2000

Сохраняем CTRL + O и закрываем CTRL + X

Продлеваем услугу:

Fedora, RHEL, CentOS:

systemctl перезапуск fail2ban.service

Debian, Ubuntu:

перезапуск службы fail2ban

Межсетевые экраны

Федора, RHEL, CentOS:

Selinux и Iptables активированы по умолчанию в этих системах, и я рекомендую вам продолжить этот путь. Как открыть порт с помощью iptables? Давайте посмотрим, как открыть новый порт 2000 порта ssh, который мы изменили ранее:

Открыто:

нано / и т.д. / sysconfig / iptables

и мы модифицируем строку, относящуюся к ssh-порту 22 по умолчанию, и оставляем ее так:

# -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 2000 -j ACCEPT

Сохраняем CTRL + O и закрываем CTRL + X

Перезапускаем сервис:

systemctl перезапустить iptables

Дебиан, Убунту:

В Debian, Ubuntu и производных у нас есть брандмауэр UFW, который упростит нам жизнь, поскольку он очень легко управляет Netfilter.

Установка:

apt-get install ufw ufw enable

Чтобы увидеть статус открытых портов, мы выполняем:

ufw статус

Чтобы открыть порт (в нашем примере это будет новый порт ssh 2000):

ufw разрешить 2000

Чтобы запретить порт (в нашем случае это будет порт по умолчанию 22 ssh):

ufw deny 22 ufw delete deny 22

И готовые друзья. Таким образом они сохранят ваши машины в безопасности. Не забываем комментировать и до следующего раза: D.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Sinnerman сказал

    и система шифрования, такая как: https://www.dyne.org/software/tomb/

    1.    Sinnerman сказал

      А также удерживайте пользователей в своем доме, если они подключаются через tty:
      http://olivier.sessink.nl/jailkit/index.html#intro
      https://operativoslinux.wordpress.com/2015/02/21/enjaular-usuarios-en-linux/ (легкий способ)

    2.    Юкитеру сказал

      Намного лучше и безопаснее зашифровать всю файловую систему.

    3.    Петерчеко сказал

      В следующем руководстве по безопасности в Linux я учту это: D.

      1.    Юкитеру сказал

        Также было бы неплохо поговорить об усилении защиты ядра с помощью sysctl, об активации случайной кучи и Exec-Shield в ядре, которое его поддерживает, о предоставлении доступа к dmesg и файловой системе / proc, о запуске демона аудита, о включении защиты TCP. SYN, ограничить доступ к / dev / mem, отключить параметры стека TCP / IP, которые могут быть опасными или небезопасными для системы (перенаправление, эхо, маршрутизация от источника), использовать pam_cracklib для пользователей для генерации надежных паролей, важность использование системы MAC, такой как Tomoyo, AppArmor и SELinux.

  2.   Кук сказал

    очень полезно!!!! именно то, что я искал, спасибо 🙂

    1.    Петерчеко сказал

      Добро пожаловать, друг :).

  3.   ангельский клинок сказал

    Если вы используете apache, не помешает добавить правила с помощью mod_rewrite, чтобы избежать ботов. Очень полезно

    http://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/

    1.    Роло сказал

      а для nginx есть какая-то хитрость или конфигурация?

  4.   Роло сказал

    В debian 8 файл / etc / ssh / sshd_config уже имеет активный протокол 2, а функция PermitRootLogin имеет параметр без пароля (вы можете войти в root только с ключом аутентификации и с компьютера, на котором есть закрытый ключ)

    pd в debian 8 firewalld, что оставляет его маленьким для ufw

    1.    Данхантер сказал

      Вы видели Ферм? Мне нравится, как определены правила.

      http://ferm.foo-projects.org/download/examples/webserver.ferm

    2.    Петерчеко сказал

      Что ж, я рад, что Debian 8 использует firewalld, так как он очень-очень-очень хорош ...

  5.   Данхантер сказал

    Остерегайтесь fail2ban, так как злоумышленник создает пакеты с IP-адресом локального компьютера и упрощает работу с DOS.

    1.    Гери сказал

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

  6.   Джейсон сото сказал

    Хорошие и очень эффективные рекомендации… Конечно, в серверной среде, и если мы размещаем веб-сайт, это требует дополнительных шагов…. В настоящее время мы поддерживаем проект под названием JackTheStripper, который представляет собой не что иное, как скрипт bash, который подготавливает и защищает сервер с GNU / Linux в соответствии с лучшими практиками безопасности для веб-приложений ... вы можете узнать о проекте по адресу http://www.jsitech.com/jackthestripper ....

    1.    Юкитеру сказал

      Хороший скрипт, хотя мне нравится сохранять значение kernel.randomize_va_space = 2

      1.    Джейсон сото сказал

        Хорошо, что перед запуском вы можете немного изменить его под свои нужды ... Здравствуйте ...

    2.    Петерчеко сказал

      Здравствуйте, конечно, в моем сообщении речь идет о застрахованной базе, и каждая из них должна защищать себя более или менее в зависимости от служб, которые он установил в своих системах, таких как LAMP или FTP, SFTP, BIND и т. Д. :)

      В следующем посте о безопасности я рассмотрю эти вопросы.

      Спасибо за положительный отзыв :).

  7.   NEX сказал

    @petercheco, у вас отличные руководства, было бы неплохо руководство по шифрованию для системы FreeeBSD, я не знаю, когда вы собираетесь делать вторую часть о FreeBSD, о настройке и настройке рабочих столов, о Firewall, о создании и настройке беспроводной сети.

    1.    Петерчеко сказал

      Привет, друг,
      Я немного занят, как показывают нечастые публикации, но я сохраню это в следующей публикации о FreeBSD.

      Приветствие :).

  8.   Солрак Радуга Воин сказал

    Что выровняли в комментариях, я понятия не имею, о чем вы говорите, никто xD
    Отличная статья!

  9.   ксунил сказал

    Эта мера безопасности подразумевает ограничение оборудования каким-либо образом?

    1.    Петерчеко сказал

      Нет ... Нормальное использование системы вообще не ограничено.

  10.   Sinnerman сказал

    И самое забавное (трагичное) состоит в том, что, как мы только что видели на машинах Lenovo, если в прошивку BIOS вмешивается вредоносное ПО, все ваши действия не имеют значения.

    1.    Петерчеко сказал

      Если вы используете Windows, предустановленную производителем ...

      1.    Sinnerman сказал

        ошибка: помните, что установили в прошивке bios, то есть запускается с системой при каждом перезапуске, до операционной системы, до демонов, в первую очередь, и не дает ничего с ней сделать. атак мало что можно сделать, поэтому идея uefi хороша в принципе.

  11.   Пабло сказал

    Интересная статья, сегодня днем ​​прочту ее внимательнее. Спасибо.

    1.    Петерчеко сказал

      Пожалуйста :). Я рада.

  12.   Карлос Бест сказал

    Отличная статья, я весь день развлекался, читая ее. Мы ценим время, которое вы тратите на то, чтобы все очень тщательно объяснить,

    Привет из Чили
    Чарли

    1.    Петерчеко сказал

      Привет Карлос,
      Большое спасибо :).

  13.   Брион сказал

    Машины Lenovo, если кажется, что в прошивку BIOS вмешалось вредоносное ПО, машины (портативный ПК - настольный компьютер) всегда поставляются с установленной производителем Windows с Windows, с учетом вышеизложенного ... пост ...

    1.    Юкитеру сказал

      Даже без этого все работает, поскольку вредоносное ПО создано для Windows, а не для Linux.

  14.   Синфлаг сказал

    В iptables не хватает многих вещей и уловок, таких как головокружительный nmap, так что из всех открытых портов ложь, что это ПК с Windows, использующий ttl и размер окна, scanlogd, apache mod security, grsec, selinux или что-то в этом роде. Замените ftp на sftp, ограничьте количество подключений на IP к каждой службе в порту X, чтобы избежать того, что перед DDoS они оставят нас без служб, а также заблокируйте IP-адреса, которые отправляют больше, чем такое количество UDP, в течение такого количества секунд.

    1.    Петерчеко сказал

      С примерами, которые вы представили, новый пользователь сошел бы с ума, читая их ... Нельзя поместить все в один пост. Сделаю несколько записей :).

  15.   Shini-Kire сказал

    Я получаю ошибку в archlinux в этот момент при запуске службы, я даю ей статус, и это выходит:
    sudo systemctl статус fail2ban
    ● fail2ban.service - сервис Fail2Ban
    Загружено: загружено (/usr/lib/systemd/system/fail2ban.service; включено; предустановка поставщика: отключено)
    Активно: не удалось (Результат: start-limit) с пт 2015 03:20:01 CLST; 10с назад
    Документы: man: fail2ban (1)
    Процесс: 1695 ExecStart = / usr / bin / fail2ban-client -x start (code = exited, status = 255)

    20 марта 01:10:01 Gundam systemd [1]: не удалось запустить службу Fail2Ban.
    20 марта 01:10:01 Gundam systemd [1]: Unit fail2ban.service перешел в состояние ошибки.
    20 марта 01:10:01 Gundam systemd [1]: fail2ban.service не удалось.
    20 марта 01:10:01 Gundam systemd [1]: запрос на запуск повторяется слишком быстро для fail2ban… ice
    20 марта 01:10:01 Gundam systemd [1]: не удалось запустить службу Fail2Ban.
    20 марта 01:10:01 Gundam systemd [1]: Unit fail2ban.service перешел в состояние ошибки.
    20 марта 01:10:01 Gundam systemd [1]: fail2ban.service не удалось.
    Подсказка: некоторые строки имеют многоточие, используйте -l, чтобы отобразить их полностью.
    некоторая помощь? D:

    1.    Петерчеко сказал

      Привет, если вы включили fail2ban с помощью systemctl enable fail2ban.service и systemctl start fail2ban.service, проблема будет в созданной вами конфигурации jails. Пожалуйста, проверьте свой джейл и убедитесь, что все в порядке.

      приветствия
      Петерчеко

      1.    Майкель Франко сказал

        Прежде всего, хороший учебник. Многого не хватает, но вы сосредоточились на основах.

        shini-kire, проверьте свой /var/log/fail2ban.log

        Привет.

      2.    Петерчеко сказал

        Спасибо @Maykel Franco :).

  16.   jony127 сказал

    хорошо,

    fail2ban должны ли они установить его на домашний компьютер или это больше для серверов ???

    Спасибо.

    1.    Петерчеко сказал

      Скорее для серверов, но если у вас есть Wi-Fi, доступный большему количеству людей, чем вы, это хорошо ...

  17.   Родриго сказал

    Привет, друг, я думаю, что это хороший пост по безопасности в части короткого пожара в дистрибутивах Gnu / Linux, я пишу этот комментарий, потому что я делаю это в дистрибутиве Ubuntu 14.04, зная, что это уже 15.04, что происходит, это следующая проблема Я ввожу nano /etc/fail2ban/jail.local как root, и у меня нет визуализации в части sshd, и я сохраняю. В части под названием [DEFAULT] мы раскомментируем и изменяем #bantime = 3600 и
    В части [sshd] мы вводим enabled = true, оставляя его так:
    #включено = верно
    включено = верно
    Не похоже, что sshd может быть потому, что я работаю с предыдущей версией, спасибо