Ограничение доступа к сайтам centos

Обновлено: 04.07.2024

Помогите пожалуйста заблокировать не нужные сайты. например на windows-7 можно закинуть в черный список С:\windows\system32\driver\etc\hosts А на centos 6.5 как?



Лил, в гугл не можешь, а уже админишь @ блокируешь.

а в /etc/hosts добавить не смог?



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


Я centos практический не пользовался поэтому не знаю, в гугле конкретного ответа нету

лучше человека найми, линь не прощает такого бездумного тыканья

Даю вторую подсказку (первая была в первом комменте): Windows 7 сперла этот способ у Unix, даже файлы переименовать не потрудилась.



Это потому, что IP стек был взят из FreeBSD


Если все провайдеры будут блокировать сайты в своем же /etc/hosts, то я одобряю такие блокировки!




Говорят, что это раздутый миф.


Squid. Позволяет гибко указать нежелательные слова в адресах сайтов, закрытых для посещения.

центось на десктопе? И как оно? Какая версия ядра?


нет, не десктоп, шлюз, веб и почта для мелкой сетки.


Если все провайдеры будут блокировать сайты в своем же /etc/hosts, то я одобряю такие блокировки!

date

27.02.2020

directory

CentOS, Linux

comments

Комментариев пока нет

В этой статье мы рассмотрим основные концепции и конкретные настройки, которые помогут повысить защищенность вашего CentOS сервера в Интернете. Использование данных подходов позволит повысить защиту сервера от взлома и заражения. Инструкция в большей части универсальна и основные моменты подойдут для повышения безопасности любого Linux сервера.

Разбивка и опции монтирования дисков для изоляции

При установке CentOS (и любого дистрибутива Linux) на этапе разбивки диска, не создавайте один раздел, а отделите web-пространство от основного раздела, также создайте системные разделы:

При изоляции разделов злоумышленники не смогут подняться выше директории web при взломе сайта и внедрения в него вредоносных скриптов.

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

    noexec – не позволяет запускать бинарные файлы (нельзя использовать на корневой директории, так как это приведет к неработоспособности системы);

Данные параметры могут быть установлены на директорию, только если она существует как отдельный раздел. Вы можете настроить /etc/fstab согласно следующим рекомендациям, если таковые разделы на диске у вас существуют:

Все вышеперечисленные разделы монтируются с опцией rw (возможность записи).

Установка и обновление программного обеспечения в Linux (CentOS)

При усановке сервера никогда не используйте дистрибутивы ОС, собранные неизвестными лицами. Скачивайте дистрибутивы только с официальных зеркал и не пользуйтесь чужими кикстарт файлами для установки. Если вы не разбираетесь в чужом коде, лучше вообще отменить эту затею и установить все вручную, либо проанализировать кикстарт файл полностью, чтобы не установить что-то вредоносное на свой сервер.

Устанавливайте только минимально необходимое ПО. Установка и настройка только по делу и с помощью установщика yum и dnf. Проверьте все установленное ПО и удалите ненужные пакеты:

yum list installed
yum list packageName
yum remove packageName

Используйте только официальные и доверенные репозитории пакетов.

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

Отключайте неиспользуемые сервисы на своем сервере, если в данный момент удаление сервиса вам не подходит.

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

systemctl list-unit-files --type=service

linux centos отключение неиспользуемых сервисов

systemctl stop service
systemctl disable service

Всегда держите в актуальном состоянии установленное программное обеспечение на вашем сервере. Вовремя обновленное ПО, защитит вас от известных уязвимостей. Вы можете настроить автоматическое обновление системы, чтобы каждый раз не выполнять это вручную.

yum update — обновление системы

Защита SSH, авторизация по ключам

Для безопасной авторизации на сервере, используйте приватный ключ. Сгенерируйте ключ с помощью утилиты ssh-keygen:

генерация ключей для ssh авторизации

После генерации, вы можете подключиться с помощью данного ключа к серверу, через ssh-клиент.

Создайте дополнительного пользователя и выполняйте команды через sudo.

sudo groupadd sudo – создать группу sudo

adduser webmaster – создать пользователя

passwd webmaster – поменять пароль

usermod -aG sudo webmaster — добавить пользователя в группу sudo

В файле /etc/sudoers добавьте строку:

%sudo ALL=(ALL:ALL) ALL

Отключите в настройка ssh-сервера, авторизацию через root и по логину/паролю:

И изменяем значение указанных ниже строк на:

Смените стандартный порт для ssh. Порт по умолчанию для ssh, в первую очередь будет подвержен взлому.

Чтобы поменять стандартный порт на ssh, в конфигурационном файле /etc/ssh/sshd_config замените значение в строке:

смена порта ssh в sshd_config

Регулярная смена паролей в Linux

Если вы все же используете пароли для авторизации в Linux, то настройте срок действия пароля через утилиту chage.

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

По умолчанию для root у меня было установлено 99999 дней:

Чтобы изменить срок действия пароля (например 9 дней), воспользуйтесь командой:

Теперь при проверке информации о сроке пароля для пользователя root, информация поменялась:

Больше опций по утилите chage вы можете получить из справки:

Для блокировки пользователей при вводе неправильного пароля, воспользуйтесь утилитой fail2ban (она позволяет реализовать аналог групповых политик блокировки учетных записией в Windows). Fail2ban позволяет защитить сервер Linux и службы от подбора паролей.

Для установки fail2ban выполните:

yum install epel-release fail2ban -y

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

  • bantime = 600 — время бана при блокировке
  • maxretry = 3 – количество попыток неправильного ввода пароля, после которых пользователь будет заблокирован
  • findtime = 600 – временной отрезок, в которой нужно авторизоваться пользователю

Остальные настройки используются по желанию. Дополнительно вы можете настроить отправку отчетов к себе на почту.

Создайте файл /etc/fail2ban/jail.local и добавьте туда следующие строки:

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

После чего сохраните файл и перезапустите сервис fail2ban:

systemctl restart fail2ban

Таким образом, мы настроили блокировку пользователей для ssh:

fail2ban блокировка ssh при неправильном пароле

При неправильном вводе пароля, меня заблокировало на 10 минут. Вы можете настроить fail2ban для работы с любым сервисом, который работает с пользователями, например:

Повышение защиты сервера с помощью SELinux

Обычно при настройке сервера, я отключаю SELinux, хотя это не рекомендуется. Но настройка SELinux очень специфична и обширна. Настройка SELinux на сервере может затянуться на несколько дней. Если у вас есть время на настройку и отладку системы SELinux, то воспользуйтесь ей для безопасности вашего сервера.

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

  • Enforcing
  • Permissive
  • Disabled

В режиме enforsing SELinux применяет свою политику в системе и следит за несанкционированным доступом со стороны пользователей. Все попытки регистрируются в логах.

В режиме permissive политика SELinux не применяется, но вся информация фиксируется в логах, после чего вы можете их проанализировать. Данный режим полезен при настройке и отладке системы.

И disabled соответственно вообще отключает SELinux и ее политика не применяется вообще.

Тщательную настройку SELinux можно расписать на несколько статей, если вам нужна подробная информация, можно воспользоваться официальной документацией RedHat. Обычно при настройке сервера, все работает полноценно, я с включенным SELinux замечал, что возникают проблемы с ftp-сервером, а также с некоторым платным ПО.

Для более удобного изучения логов SELinux рекомендую использовать утилиты aureport и sealer.

Настройка брандмауэра Firewalld

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

Если у вас на компьютере/шлюзе доступа задан статический IP адрес, добавьте в исключения файервола ваш доверенный адрес и подключайтесь к серверу с него. Подробнее о настройке firewalld в CentOS (если вы привыкки к iptables смотрите статью Настройка Linux-файрвола с помощью iptables).

Чтобы проверить открытые порты на сервере, используйте утилиту netstat:

netstat -tulpn проверка открытых портов

Удаление X Windows

Не используйте на своем сервере систему X Windows. Удалите все ПО, которое связанно с этой системой, нет необходимости использовать это на Linux сервере:

yum group remove "GNOME Desktop"
yum group remove "KDE Plasma Workspaces"
yum group remove "Server with GUI"
yum group remove "MATE Desktop"

Защита ядра Linux

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

Включите execshield:

Отключите IP-маршрутизацию (если ваш сервер не используется как шлюз доступа в Интернет из LAN):

Включите защиту от спуфинга

Включите игнорирование широковещательных запросов

Включите регистрацию подозрительных пакетов

Права на файлы в Linux

Запустите поиск файлов без пользователя и группы, такие файлы потенциально несут угрозу и могут быть использованы злоумышленниками. Чтобы найти такие файлы, используйте команду:

find /директория -xdev \( -nouser -o -nogroup \) -print

Если файлы будут найдены, измените на них владельца и группу.

Установите флаг chattr на нужные файлы, чтобы защитить их от модификации. Ни один пользователь, не сможет изменить файл, пока данный флаг установлен. Например:

chattr +i /etc/mysript.sh

Не устанавливайте слишком высокие права на директории и файлы, например, стандартные права для web:

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

find /home -type f -perm 777

Защита Web-сервера

Если вы используете сервер под web, позаботьтесь о настройке web-сервисов. Закройте просмотр содержимого директорий через Options -Indexes, а также добавьте X-frame.

Данный параметр, запретит открывать страницу во фрейме, это предотвратит встраивание контента вашего сайта на другие сайты.

Отключите показ версии вашего web-сервера. Для apache в конфигурационном файле пропишите:

Если вы используете php, запретите небезопасные функции через php.ini:

— запретит показ версии php

– запретит использование данных функций

Так же настройте лимиты по выполнению скриптов и их размер, это обезопасит вас от мелких атак.

Защита физического сервера

Если на вашем сервере есть консоль для удаленного доступа ILO/IPMI/BMC, закройте доступ к ней из вне, оставьте только ваш доверенный IP, это позволит ограничить себя от лишних проблем.

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

И главный момент, размещайте свои сервера у проверенных провайдеров.

Резервное копирование сервера Linux

Конечно не стоит забывать о резервном копировании сервера. Вы можете выполнять резервные копии как всего сервера, так и отдельно взятые файлы или директории (можно настроить бэкап в бесплатные облачные хранилища скриптами). В случае какого-либо инцидента, у вас всегда под рукой будет актуальная резервная копия, из которой можно развернуть сервер или заменить конфигурационный файлы.

image

Большая часть операторов связи сейчас уже предоставляют маршрутизируемый доступ в Интернет, где фильтрация и антивирусная защита входящего траффика несколько более проблематична. В случаях, когда требуется ограничить пользователям доступ к определенным сайтам по категориям или по URL, а также требуется реализация проверки входящего веб-трафика, то в этом варианте использование прокси сервера является самым простым решением.

Squid на сегодняшний день является наиболее функциональным прокси сервером, который поддерживает большое количество возможностей. Для реализации антивирусной защиты предлагается использовать ClamAV – открытая реализация средств антивирусной защиты. Фильтрация контента по категориям будет реализована средствами Dansguardian.

Общая диаграмма решения схематично отражена ниже:

image

У нас есть Linux сервер под управлением CentOS 7. Сервер имеет маршрутизируемый доступ в Интернет.

  • Подключаем EPEL репозиторий, который нам понадобится для дополнительных пакетов

    Настраиваем конфигурационный файл /etc/squid/squid.conf (никакие изменения не требуются на данном этапе). Детальная настройка squid (ACL, авторизация и тп) находится за пределами данной статьи. Здесь мы используем конфигурационный файл, предоставляемый

    Правим конфигурационный файл.

  • Далее необходимо выложить пакеты из папки /root/rpmbuild/RPMS/x86_64 в общедоступное место
  • Устанавливаем пакеты для работы c-icap (пакеты были собраны ранее)
  • Редактируем конфигурационный файл (нужно добавить “Service squidclamav squidclamav.so” и отредактировать параметры производительности)
  • Редактируем систему для правильной установки права на временные файлы
  • Устанавливаем squidclamav через yum, так как он потянет зависимости
  • Редактируем конфигурационный файл. Здесь важно, чтобы squidguard был закомментирован
  • ВНИМАНИЕ! При активации опции squidguard сервис squidclamav не сможет инициализироваться
  • Запускаем сервис c-icap
  • Добавляем в конец конфигурационного файла squid
  • Мне не удалось поднять этот сервис, так как при указанном в squidclamav c-icap сообщал об ошибке инициализации squidclamav. Возможно, в других ОС или с другими опциями компиляции это будет работать
  • Устанавливаем squidGuard
  • Правим конфигурационный файл /etc/squid/squidGuard.conf

    Если требуется, то можем настроить категории и

  • Копируем скрипты от squidclamav в CGI директорию

Данная статья показывает, что настройка связки прокси сервера squid с антивирусным ПО ClamAV является несложным занятием, которое под силу даже начинающему администратору Linux/Unix.

Межсетевой экран в системе CentOS 7 контролируется программой iptables (для ipv4) и ip6tables (для ipv6).

С помощью утилиты iptables мы можем:

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

В данной инструкции рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.

2. Установка утилит межсетевого экрана iptables-services.

Отключение встроенного по умолчанию межсетевого экрана firewalld:

Установка iptables-services взамен firewalld:

Активация iptables-services на сервере:

И проверка работы:

Ответ:


Log-файл хранится здесь: /var/log/messages .

Файл настроек хранится здесь: /etc/sysconfig/iptables .

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

3. Показать статус.

Для начала деактивируем межсетевой экран любым способом и посмотрим как будет выглядеть система с отключенным межсетевым экраном и с включённым.

Вводим команду и смотрим на отключенный межсетевой экран:

Ответ:


Вводим команду и смотрим на включенный межсетевой экран:

Ответ:


4. Отобразить список правил с номерами строк.

Теперь выведем тоже самое, но с ключом демонстрации номеров строк:

Ответ:


Вы можете использовать номера строк для того, чтобы добавлять новые правила.

5. Отобразить INPUT или OUTPUT цепочки правил.

Чтобы посмотреть что входит в ваш сервер:

Ответ:


и выходит из вашего сервера:

Ответ:


6. Остановить, запустить, перезапустить межсетевой экран.

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

7. Удалить правила межсетевого экрана.

Чтобы отобразить номер строки с существующими правилами:

Получим список IP-адресов. Просто посмотрим на номер слева и удалим соответствующую строку.

К примеру для номера 3 :

Или найдем IP-адрес источника 202.54.1.1 и удалим из правила:

8. Добавить правило в межсетевой экран.

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

Ответ:


Чтобы вставить правило между 1 и 2 строкой:

Проверим, обновилось ли правило:

Ответ:


9. Сохраняем правила межсетевого экрана.

Сохранить их можно через утилиту iptables-save :

10. Восстанавливаем правила межсетевого экрана.

Восстановить их так же можно через утилиту iptables-restore :

11. Устанавливаем политики по умолчанию.

Внимание! Если вы сделаете это на удалённой машине или виртуальной машине, то вы потеряет над ней контроль и связь оборвётся! Пропустите этот шаг, если вы работаете удалённо! Вы не вернёте контроль над сервером, пока не внесете изменения в межсетевой экран через физическую консоль сервера.

Чтобы сбрасывать весь трафик:

Ответ:


После вышеперечисленных команд ни один пакет не покинет данный хост.

Ответ:


Ответ:


12. Блокировать только входящие соединения.

Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:

Ответ:


Ответ:


Ответ:


13. Сбрасывать адреса изолированных сетей в публичной сети.

Список IP-адресов для изолированных сетей:

14. Заблокировать входящие запросы порта.

Чтобы заблокировать все входящие запросы порта 80:

Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4 :

15. Заблокировать запросы на исходящий IP адрес.

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

Ответ:


Найдем CIDR для 157.240.205.35 :

Ответ:


Заблокируем доступ на 157.240.205.35/16 :

Также можно использовать домен для блокировки:

Ответ:


Как видно, ресурс заблокирован!

16. Заблокировать соединение.

16.1. Как заблокировать IP-адрес?

Посмотрим какие сетевые интерфейсы у нас имеются на сервере:

Ответ:


Запрограммируем межсетевой экран не принимать от 192.168.0.39 соединения на сетевом интерфейсе eth0 .

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

После настройки межсетевого экрана, поскребёмся с хоста 192.168.0.39 на целевой сервер 192.168.0.15 и посмотрим, как сервер 192.168.0.15 отслеживал его попытки подключиться с удалённого хоста.

Ответ:


Ответ:


Как видно 192.168.0.15 категорически отказывается принимать какие-либо сигналы с 192.168.0.39 .

16.2. Как заблокировать подсеть?

Используйте следующий синтаксис для блокирования 192.168.0.0/24 :

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

Действие настроек аналогично примеру выше, но уже для всего диапазона IP-адресов.

17. Разрешить или запретить ICMP Ping запросы.

17.1. Чтобы запретить ping :

17.2. Разрешить для определенных сетей / хостов:

17.3. Разрешить только часть ICMP запросов:

Примечание! Предполагается, что политики по умолчанию для входящих установлены в DROP .

Примечание! Разрешим отвечать на запрос.

18. Открыть диапазон портов.

19. Открыть диапазон адресов.

19.1. Разрешить подключение к порту 80 , если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 .

19.2. Пример для nat .

20. Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP , чтобы заблокировать порт.

20.1. Ssh tcp port 22.

20.2. Cups (printing service) udp/tcp port 631 для локальной сети.

20.3. Time sync via NTP для локальной сети (udp port 123).

20.4. Tcp port 25 (smtp).

20.5. DNS server ports.

20.7. Tcp port 110 (pop3).

20.8. Tcp port 143 (imap).

20.9. Samba file server для локальной сети.

20.10. Proxy server для локальной сети.

20.11. Mysql server для локальной сети.

20.12. Основные настройки iptables для web-сервера.

Запретим все входящие соединения:

Разрешим все исходящие соединения:

Разрешить входящие соединения с localhost:

Разрешить входящие соединения, которые уже были установлены:

Блокировать все нулевые пакеты:

Блокировать все пакеты XMAS:

Защищаемся от syn-flood:

Откроем порт 22, чтобы была возможность подключаться к серверу по SSH

20.13. Почта, порты для служб.

Открываем порты 25 и 465 для smtp-трафика:

Открываем порты 110 и 995 для pop-трафика:

Открываем порты 143 и 993 для imap-трафика:

21. Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется connlimit модуль.

Чтобы разрешить только 3 ssh соединения на одного клиента:

22. Помощь по iptables.

Для поиска помощи по iptables, воспользуемся man :

Чтобы посмотреть помощь по определенным командам и целям:

23. Проверка правила iptables.

Проверяем открытость / закрытость портов:

Ответ:


Проверяем открытость / закрытость определенного порта:

Ответ:


Проверим, что iptables разрешает соединение с 80 портом:

Ответ:


Если всё закрыто, то никакого ответа не будет.

В противном случае откроем его для всех:

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

Если вы редактировали конфигурационный файл, iptables нужно перезапустить:

Читайте также: