Acl centos 7 настройка

Обновлено: 02.07.2024

iSCSI протокол базируется на TCP/IP и разработан для установки взаимодействия и управления системами хранения данных, серверами и клиентами.

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

Основные термины

IQN WWID (iSCSI Qualified Name) - уникальный идентификатор устройства.

LUN - номер «части» диска, к которому идёт обращение. Ближайший аналог — раздел на жёстком диске.

Portal - несколько target’ов, которые анонсируются одним сервером.

Установка пакетов

Установим необходимые пакеты для работы iSCSI

Запустим сервис и добавим в автозагрузку:

Добавим правила на Firewall:

Первоначальная очистка настроек в случае наличия прошлых установок:

Поскольку targetcli является интерактивной оболочкой аналогичной bash , то запускаем её командой targetcli .

Просмотрим существующие ресурсы:

Подключаем блочное устройство к iSCSI ресурсу:

Отключение устройства выполняется командой:

Создание iSCSI таргета

Удаление ресурса выполняется командой:

Создание портала

Подключение устройств в качестве логических «юнитов» (LUNs):

Определение имён iSCSI-ресурсов (IQN) для узлов кластера:

Host-01

Host-02

Создаем список доступа (ACL) для узлов:

Подключение на стороне клиента (Initiator)

Установим необходимые пакеты:

Найдем доступные iSCSI устройства:

Отредактируем идентификатор устройства в соответствии с результатами выполнения предыдущей команды:

Запустим сервис и добавим в автозагрузку:

Проверяем состояние на ноде:

Для удаления связи используем команду:

Для закрытия сессии:

Для удаления доступных записей:

Данный пример подходит для настройки в локальной сети. Для работы с внешним миром лучше использовать CHAP авторизацию.

Конфигурация с CHAP авторизацией

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

Сохраняем настройки и выходим из оболочки:

Настроим клиент для работы с CHAP, для этого изменим конфигурационный файл /etc/iscsi/iscsid.conf :

Для снижения вычислительных затрат на создание и обработку SCSI-команд был создан TCP/IP offload engine (TOE). Для достижения наилучшей производительности рекомендуется использовать iSCSI-адаптеры, в которых кроме TOE аппаратно реализован и уровень iSCSI

В данной инструкции мы рассмотрим установку и настройку кластера системы обнаружения сервисов Consul. Данный кластер будет состоять из трех нод, каждая из которых будет под управлением операционной системы Rocky Linux или CentOS версий 7 / 8.

Подготовка сервера

Выполним предварительные операции по настройке наших серверов.

1. Установка дополнительных пакетов

yum install unzip wget

  • unzip — необходим для распаковки архивов.
  • wget — утилита для загрузки файлов по сети.

2. Настраиваем время

Задаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере мы задаем московское время. Полный перечень возможных вариантов можно получить командой: timedatectl list-timezones.

Устанавливаем утилиту для синхронизации времени:

yum install chrony

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

systemctl enable chronyd --now

3. Настройка имени серверов

Для сервера консул важно, чтобы серверы были доступны по именам. Для начала настроим последние:

hostnamectl set-hostname consul01.dmosk.local

hostnamectl set-hostname consul02.dmosk.local

hostnamectl set-hostname consul03.dmosk.local

* предполагается, что нашим трем серверам будут заданы имена consul01, consul02 и consul03. Они будут в домене dmosk.local.

Чтобы серверы могли обращаться друг к другу по именам, мы должны либо зарегистрировать их в локальной системе DNS, либо добавить на каждом сервере записи в файл hosts:

192.168.0.15 consul01.dmosk.local
192.168.0.20 consul02.dmosk.local
192.168.0.25 consul03.dmosk.local

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

Открываем порты в брандмауэре:

firewall-cmd --add-port=/udp --permanent

* подробное описание портов есть на странице Что такое Consul.

Установка и запуск Consul

Выполним установку компонентов, сборку кластера и его запуск.

Установка

Установка будет выполнена путем копирования бинарного файла. Для начала перейдем на страницу загрузки программного продукта и посмотрим его последнюю версию.

После подставим нужную версию в переменную:

* в моем примере будет устанавливаться версия 1.10.2.

После загружаем архив с бинарником:

И распаковываем его:

Копируем полученных бинарник в каталог /usr/bin:

mv consul /usr/bin/

Проверяем, что приложение может запускаться в наших системах:

Мы должны увидеть что-то на подобие:

Consul v1.10.2
Revision 3cb6eeedb
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

Можно переходить к настройке.

Настройка

Создаем учетную запись, от которой будет работать консул:

* в данном примере мы создадим учетную запись consul, которая будет системной. Также мы добавим небольшой комментарий.

Создаем каталоги для приложения консул:

mkdir -p /var/lib/consul /etc/consul.d

И выставим на него нужные права:

chown consul:consul /var/lib/consul /etc/consul.d

chmod 775 /var/lib/consul /etc/consul.d

* в данном примере мы указали, что владельцем данных каталогов будет созданная учетная запись consul. Права будут полные у владельца, остальные смогут читать данные.

Сгенерируем ключ для консула на любой из нод кластера:

Полученный ключ сохраняем. Его мы будем использовать при настройке всех узлов кластера.

Создаем конфигурационный файл для консула:

Проверяем корректность конфигурационного файла:

consul validate /etc/consul.d/config.json

Мы должны увидеть:

.
Configuration is valid!

В завершение настройки создадим юнит в systemd для возможности автоматического запуска сервиса:

[Service]
Type=simple
User=consul
Group=consul
ExecStart=/usr/bin/consul agent \
-node=consul01.dmosk.local \
-config-dir=/etc/consul.d
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
TimeoutStopSec=5
Restart=on-failure
SyslogIdentifier=consul

Обратите внимание, что в данном примере указан сервер consul01.dmosk.local. Мы должны заменить это значение для каждого из настраиваемых серверов. Таким образом, у нас будет три файла с разными значениями для опции node.

Перечитываем конфигурацию systemd:

Система установлена, настроена и готова к запуску.

Запуск и проверка

Стартуем наш сервис:

systemctl start consul

Также разрешаем автоматический старт при запуске сервера:

systemctl enable consul

Смотрим текущее состояние работы сервиса:

systemctl status consul

Мы должны увидеть состояние:

.
Active: active (running) since .
.

Состояние нод кластера мы можем посмотреть командой:

А данной командой можно увидеть дополнительную информацию:

consul members -detailed

Аутентификация

При входе на веб-интерфейс или работе из командной строки, мы заметим, что система позволяет выполнять операции без запроса идентификационных данных. Если нам нужно обезопасить систему, настроим ACL и донастроим сервис.

Включение ACL

Открываем конфигурационные файлы на всех нодах нашего кластера:

* обратите внимание, что строка "ui_config": < "enabled": true >, у нас уже была в конфигурационном файле, но мы добавили запятую в конце, так как это критично для конфига в формате json. Наша добавленная настройка acl запрещает по умолчанию доступ и требует ввода токена безопасности.

Проверяем корректность внесенных настроек:

consul validate /etc/consul.d/config.json

Если ошибок нет, то перезапускаем сервис:

systemctl restart consul

Заходим на веб-интерфейс — мы обнаружим, что в правом верхнем углу появилась ссылка для входа в систему:

В правом верхнем углу веб-панели консула поялась ссылка для входа в систему

Мы идем в правильном направлении.

Работа с токенами

Получаем токен командой:

consul acl bootstrap

* если команда нам вернула ошибку Failed ACL bootstrapping: Unexpected response code: 500 (The ACL system is currently in legacy mode.), то значит, что мы не на всех нодах применили новую настройку. Проверяем, на всех ли серверах кластера внесены соответствующие изменения по добавлению ACL.

Мы получим ответ на подобие:

Если нам нужно удалить данный токен, вводим команду:

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

Создать новый токен можно командой:

consul acl token create -policy-name global-management

Чтобы увидеть список токенов, вводим:

consul acl token list

Если нам понадобиться удалить токен, мы должны использовать его AccessorID:

consul acl token delete -id 54b5f2bb-1a57-3884-f0ea-1284f84186f5

* где будет удален токен с AccessorID 54b5f2bb-1a57-3884-f0ea-1284f84186f5.

Настройка политики для DNS

После включения ACL наша система перестанет отвечать на запросы DNS. Это связано с политикой блокировки по умолчанию. Для разрешения запросов мы должны создать политику с разрешением данных запросов, получить для ее токен и применить данный токен на всех нодах консула.

На одной из нод создаем файл с политикой:

Создаем политику в консуле:

consul acl policy create -name "dns-requests" -rules @dns-request-policy.txt

Создаем токен безопасности на основе политики:

consul acl token create -description "Token for DNS Requests" -policy-name dns-requests

Мы должны увидеть что-то на подобие:

AccessorID: b53741e2-7663-eag6-fd67-a64dbd32feb5
SecretID: 42bd65e5-42a5-356b-a81b-60eff20f657
Description: Token for DNS Requests
Local: false
Create Time: 2021-09-02 12:37:42.342511655 +0300 MSK
Policies:
89e42b6b-bbec-5263-bc7b-60f3a604a0d6 - dns-requests

* где SecretID — это нужный нам токен.

На всех компьютерах с consul авторизовываемся:

consul acl set-agent-token default 42bd65e5-42a5-356b-a81b-60eff20f657

* где 42bd65e5-42a5-356b-a81b-60eff20f657 — тот SecretID, который мы получили на основе политики, разрешающей запросы DNS.

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

После окончания создания нового VPS-сервера, вам будет выдан пароль для суперпользователя root. Сразу после подключения к вашему серверу по SSH, необходимо его изменить, т.к. иногда выданный пароль не является устойчивым к подбору (brutforce).

Зададим новый пароль для root.

В связи с этим, администратор сервера создаёт нового пользователя, которому частично делегируют привилегии root. Ниже рассмотрим процесс создания и настройки учетной записи нового пользователя системы.

Создадим новую учетную запись, из под которой будем всегда работать на сервере.

Добавим пароль для входа в систему.

Если вдруг вы забудете пароль, то этой же командой можно будет установить новый пароль, а старый пароль будет сброшен.

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

Сделать это можно добавив учетную запись в группу суперпользователей - wheel .

Теперь новый пользователь username может исполнять команды от имени root , используя утилиту sudo .

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

Для защиты от нежелательных внешних соединений с нашим сервером, обязательно нужно установить и включить файрвол.

Установим службу файрвола:

Включим файрвол и добавим его в список служб для автозапуска при рестарте системы:

sudo systemctl start firewalld;
sudo systemctl enable firewalld;

Так как в сети существует большое количество запущенных по всему миру брутфорс-программ, которые день и ночь подбирают пароли к пользователю root и есть вероятность того, что ваш VPS тоже попадет под раздачу. В таком случае, разумным решением будет запретить возможность подключения root пользователя по SSH.

Откроем конфигурационный файл - /etc/ssh/sshd_config :

Изменим значение директивы PermitRootLogin .

Также изменим стандартный номер порта SSH, т.к. именно на стандартный 22 порт "стучатся" брутфорс-программы.

Все порты можно разделить на три группы:

Для начала выберем номер порта, на котором будет работать SSH. Выбирать значение номера порта рекомендуется в пределах 49152 - 65535. Чтобы выбрать какой-либо порт, сначала нужно проверить не занят ли он другим сервисом. Для примера, я выберу порт с номером 63356.

Проверим занятость порта 63356 следующей командой:

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


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

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

Обычно компьютер выполняющий роль программного шлюза имеет в своей конфигурации два сетевых адаптера. Первый сетевой адаптер подключается к сети Интернет, а второй включается в сетевой "switch" (hub). Туда же в "switch" подключают сетевые адаптеры компьютеров, которым нужно дать доступ в сеть Интернет.

Наш шлюз будет состоять из следующего программного обеспечения:

  • CentOS - операционная система уровня предприятия
  • Squid - кэширующий прокси сервер
  • SquidGuard - фильтр для блокировки сайтов (аналоги rejik + DBL или DansGuardian)
  • iptables - стандартная утилита для управления фаерволом Linux
  • HTB.init - шейпер трафика

Перечисленные компоненты роутера будут установлены на новую операционную систему CentOS 7 x64.

Краткое содержание записки:

1. Исходные данные

2. Отключаем и удаляем NetworkManager

3. Настройка сетевых адаптеров

4. Установка и базовая настройка Squid

5. Установка и настройка SquidGuard

6. Установка анализатора логов Sarg

7. Настройка firewall

9. Установка и настройка шейпера HTB.init

10. Установка и настройка кэширующего DNS сервера

11. Проверка Интернет доступа

12. Установка и настройка DHCP сервера

Этап установки операционной системы сознательно - пропущен, так как он стандартен, и в основном требует от пользователя обычных нажатий кнопок - Далее/Далее/Готово. Хотя лучше конечно установить второй жесткий диск и потратить немного времени на настройку программного рейд массив во время установки операционной системы. Мало ли, один жесткий диск может выйти из строя. А если он сломается, на устранение такой проблемы потребуется много времени. Простои в работе офиса могут снизить прибыль и навредить репутации компании.

После установки ОС первым делом настраиваются сетевые адаптеры, чтобы сервер мог выйти в Интернет и обновить свое программное обеспечения.

1. Исходные данные

Здесь описаны данные которые понадобятся при настройке в моих примерах. Как и говорилось выше, сервер имеет два установленных сетевых адаптера.

Первый адаптер выйдет в интернет, его сетевые настройки:

  • Названия интерфейса в ОС: enp0s3
  • IP-адрес адаптера: 217.15.172.50
  • Маска сети: 255.255.255.248
  • Адрес шлюза: 217.15.172.49
  • IP адреса DNS серверов: 217.15.150.1 и 217.15.150.1

Второй адаптер подключен в локальную сеть через SWITCH (HUB):

  • Названия интерфейса в ОС: enp0s8
  • IP-адрес адаптера: 10.168.50.2
  • Маска сети: 255.255.255.0

Какие клиенты будут у шлюза:

  • Ноутбуки с работающими адаптерами в режиме DHCP клиента
  • Стационарные компьютеры с сетевыми картами получающими IP адреса автоматически
  • Разные смартфоны, планшеты
  • Сервера со статическими IP адресами

Что нам нужно от шлюза:

  • Фильтрация трафика
  • Запрет на использование некоторых сайтов
  • Распределение канала
  • Статистика по посещению сайтов
  • Проброс RDP порта 3389 на терминальный сервер

2. Отключаем и удаляем NetworkManager

Вспомогательная утилита операционной системы под названием NetworkManager (NM) облегчает настройку сетевых соединений на пользовательском компьютере, но на сервере от ее работы возникают не понятные глюки. Чтобы лишний раз не тратить время на борьбу с NM, удалите утилиту по следующей инструкции:

Открываем файл /etc/sysconfig/network для включения сети:

В записке не используется selinux, он отключен:

Находим и меняем значение:

3. Настройка сетевых адаптеров

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


Видим что есть два не настроенных адаптера enp0s3 и enp0s8. Чтобы настроить интерфейсы потребуется изменить содержимое двух одноименных файлов лежащих в каталоге /etc/sysconfig/network-scripts/

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

ifcfg-enp0s3 ifdown-post ifup-bnep ifup-routes

ifcfg-enp0s8 ifdown-ppp ifup-eth ifup-sit

ifcfg-lo ifdown-routes ifup-ippp ifup-Team

ifdown ifdown-sit ifup-ipv6 ifup-TeamPort

ifdown-bnep ifdown-Team ifup-isdn ifup-tunnel

ifdown-eth ifdown-TeamPort ifup-plip ifup-wireless

ifdown-ippp ifdown-tunnel ifup-plusb init.ipv6-global

ifdown-ipv6 ifup ifup-post network-functions

ifdown-isdn ifup-aliases ifup-ppp network-functions-ipv6

Как видим все на месте, два адаптера помечены жирным шрифтом.

Первый адаптер ifcfg-enp0s3

Открываем первый файл /etc/sysconfig/network-scripts/ifcfg-enp0s3

Настраиваем его - дописываем или меняем сетевые реквизиты:

HWADDR=08:00:27:DF:58:83

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s3

UUID=9825ca5b-d916-4514-b3ac-fdc7964c8362

ONBOOT=yes

IPADDR=217.15.172.50

NETMASK=255.255.255.248

GATEWAY=217.15.172.49

Жирным шрифтом помечены изменения которые были внесены мною. Здесь дописаны такие основные параметры как:

  • IP адрес компьютера
  • указан признак статического адреса для хоста
  • маска сети
  • адрес шлюза

Теперь укажем адреса DNS серверов.

В файл /etc/resolv.conf вписываем IP адрес DNS сервера провайдера:

nameserver 217.15.150.1 //указываем первичный DNS провайдера

nameserver 217.15.150.2 //указываем вторичный DNS провайдера

Примечание: В новой версии CentOS 7 x64, после отключения NetworkManager, иногда нужно за место "nameserver <IP server>" прописывать "DNS1=<IP server>"

После изменения сетевых настроек, перезапустим сетевую службы:

Теперь можно проверить наличие интернета на сервере простым "пингом":

Второй адаптер ifcfg-enp0s8

Открываем второй файл /etc/sysconfig/network-scripts/ifcfg-enp0s8

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

HWADDR=06:10:27:DF:18:83

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s8

UUID=6825ca5b-j916-4514-b3ac-аdc7964c8367

ONBOOT=yes

IPADDR=10.168.50.2

NETMASK=255.255.255.0

Разрешим пересылку пакетов через наш шлюз:

Применим новую настройку без перезагрузки:

Заодно перезапустим сетевую службу:

4. Установка и базовая настройка Squid

В этом разделе установим Squid и настроим его для работы в прозрачном режиме.

Откроем конфигурационный файл прокси сервера для настройки:

Находим строчку в файле:

Меняем ее значение на:

И добавляем к этой строчке строку:

Поставим службу прокси сервера в автозагрузку:

Блокировка потокового Video/Audio в Squid, чтобы пользователи не смогли просматривать онлайн видео и слушать аудио с сайтов.

Открываем файл /etc/squid/squid.conf и добавляем в конец файла:

Файл /etc/squid/users.txt содержит диапазон компьютеров: Файл /etc/squid/vip-users.txt содержит IP адреса начальства:

Дополнительные настройки, добавляем в конец файла:

5. Установка и настройка SquidGuard

Обычно после установки SquidGuard, идет его настройка по следующим шагам:

  • Настраивается прокси сервер Squid для работы с SquidGuard
  • Качается база в которой содержаться www и IP адреса для блокировки нежелательный сайтов
  • В SquidGuard указываются IP адреса компьютеров кому надо запрещать доступ
  • А также в SquidGuard указывают что требуется блокировать: порно, рекламу, онлайн видео и т.д.

Скачаем пакет фильтра SquidGuard (SG) и установим его:

К сожалению лежащий в репозитории Epel пакет SquidGuard оказался не рабочим, во время старта всегда вываливался в "Segmentation Fault". Поэтому установил пакет от предыдущей ОС. Как починят этот пакет, можно будет его ставить.

Настроим прокси сервер Squid для работы с SquidGuard, откроем файл /etc/squid/squid.conf

Создаем два каталога, первый для хранения базы, второй для хранения логов:

Ставим владельца на созданные каталоги, пусть им будет пользователь squid:

  • Указываем время работы бана
  • Указываем IP адреса кому блокировать сайты, открываем файл /etc/squid/squidguard.conf:

Ставим время работы фильтра, открываем файл /etc/squid/squidguard.conf:

Указываем IP адреса кому блокировать сайты, открываем файл /etc/squid/squidguard.conf:

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

Скажу от себя: списки работают, но некоторые сайты не блокируются.

После распаковки появится каталог /var/squidGuard/BL со содержимым:

BL/anonvpn/urls

BL/anonvpn/domains

BL/adv/

BL/adv/urls

BL/adv/domains

BL/global_usage

BL/religion/

BL/religion/urls

BL/religion/domains

BL/sex/

BL/sex/education/

* * * * * *

Каждый подкаталог - это категория для блокировки, например нам нужно заблокировать рекламу, не проблема, используем подкаталог adv (advertising). Аналогично с подкаталогом porn (porngraphy).

Категории - они же подкаталоги содержать в себе два файла основных файла:

В первом файле содержаться www адреса для блокировки, а второй файл несет в себе IP адреса.

Когда мы будем блокировать надо будет указывать нужный каталог чтобы заблокировать просмотр онлайн видео, порнографию или рекламу.

Настраиваем SquidGuard для блокировки сайтов, открываем файл /etc/squid/squidguard.conf:

Здесь я захотел блокировать рекламу, контент для взрослых и онлайн кинотеатры. Если вам нужно что-то еще заблокировать, посмотрите внутренность каталога /var/squidGuard/BL/, может там есть подходящая вам категория.

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

Создаем дополнительный каталог для логов:

Если сайты не блокируются, смотрите логи в каталогах: /var/log/squid и /var/log/sguidGuard

6. Установка анализатора логов Sarg

Здесь много разных настроек, подправим его под наши нужды:

Откроем файл sarg.conf:

В этом файле добавляем строчку:

Эта настройка открывает доступ к отчетам анализатора для всех ПК.

Запустим и поместим веб сервер Apache в автозагрузку:

Запустим Sarg в тестовом режиме:


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


Выбираем IP адрес, по которому хотим увидеть отчет.



Можно увидеть график, если щелкнуть пиктограмму графика:


7. Настройка Firewall

Настройка фаерволла должна идти по следующей последовательности:

1. Чистка всех цепочек

2. Закрыть все и вся (DROP).

3. Пропускать все уже инициированные и их дочерние соединения.

4. Разрешить локальные соединения.

6. Пишем что открыть, пробросить и другие свои дополнительные правила и т. п.

Предварительно отключаем Firewalld и устанавливаем iptables:

Можно сразу поменять порт SSH с 22 на 1234 в целях безопасности, открываем файл /etc/ssh/sshd_config:

Находим строку под номером 17

Создаем файл с правилами фаерволла:

iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.168.50.50:3389 iptables -t nat -A POSTROUTING -p tcp -d 10.168.50.50 --dport 3389

Даем права на запуск файла (исполняемый файл):

Запускаем скрипт c командами iptables и замещаем им текущие правила фаерволла:

Примечание: В моих правилах, устройствам выходящим в Интернет - доступны все порты.

Открываем файл /etc/sysconfig/firewall.sh и вносим туда блокировку неугодных сайтов:

iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".youtube.com" -j DROP iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".facebook.com" -j DROP iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".vk.com" -j DROP iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".my.mail.ru" -j DROP iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".odnoklassniki.ru" -j DROP iptables -I FORWARD -s 10.168.50.0/24 -p tcp -m string --algo bm --string ".vkontakte.ru" -j DROP

iptables -I FORWARD -s 10.168.50.50/24 -p tcp -j ACCEPT

9. Установка и настройка шейпера HTB.init


Интернет в данном примере поступает от ADSL модема.

Наша задача решить с помощью шейпера следующее:

  • разделение входящей и исходящей скорости канала поровну между машинами локальной сети

Скрипт HTB.init задействует утилиту tc составляя правила с помощью нее и дисциплины htb. Почему используют скрипт HTB.init для контроля скорости трафика? Потому что с помощью него наглядно и легко можно динамически управлять пропускной способностью канала. Что и нужно обычному пользователю, такому как я :)

Вся идеология этого шейпера строится на классах. Описание классов производится с помощью простых текстовых файлов. Все правила по ограничению скорости лежать в них, эти файлы находятся в папке /etc/sysconfig/htb/

Поставьте его в автозагрузку:

Создайте каталог для конфигурации:

Перейдите в каталог конфигурации htb.init:

Сперва настроим входящею скорость для компьютеров локальной сети.

Создадим корневой файл enp0s8:

В нем впишем текст:

Здесь строчка DEFAULT=20 задает параметр по которому будет учитываться трафик не попадающий ни под одно правило шейпера.

Здесь мы указали скорость нашего адаптера локальной сети.

Здесь запятая говорит нам, что нужно шейпить исходящею скорость (исходящий порт - source port). Без запятой, шейпится входящая скорость (порт назначения - destination port).


Как видно из картинки, скорость почти соответствует нашим настройкам. На этом же скрине, уже исходящая скорость тоже распределена. Настройки исходящей скорости смотрите внизу.

Теперь скрин из Download Master:


Здесь у нас почти 8Мбит = 940Кбайт

Теперь надо порезать исходящею скорость

Создадим корневой файл enp0s3:

В нем впишем текст:

ИТОГО: Мы дали компьютерам локальной сети 10.168.50.0/24 исходящею скорость в 1Мбит, скорость эта делиться поровну между компьютерами локальной сети, если качает только один ПК, ему дается весь 1Мбит.

При этом мы не трогаем входящею и исходящею скорость самого интернет шлюза в локальную сеть и обратно. Смысла резать локальную скорость - нет.

Последний шаг - запуск системы контроля трафика с помощью следующей команды:

При запуске HTB выйдет окошко с ошибкой:

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

Так как ошибка не критичная, и не влияет на работу скрипт, на нее можно не обращать внимания.

Если вы еще не поставили демон в автозагрузку:

Иногда нужно чистить кэш HTB.Init:

10. Установка и настройка кэширующего DNS сервера

Установим пакет Bind, который позволит добавить функцию кэширующего DNS сервера на наш шлюз:

Поставим его в автозагрузку:

Настроим его, откроем файл /etc/named.conf и изменим содержимое:

Запускаем службу named:

11. Проверка Интернет доступа

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

IP адрес - 10.168.50.20

Адрес шлюза - 10.168.50.2

DNS сервер - 10.168.50.2 или DNS провайдера - 8.8.8.8

Адрес DNS сервера берем нашего шлюза или провайдерский.


12. Установка и настройка DHCP сервера

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

Создаем конфигурационный файл /etc/dhcp/dhcpd.conf

Запускаем серверную службу DHCP:

Ставим службу в автозагрузку:

13. Создаем общею папку

Давайте создадим две общие папки на нашем шлюзе, чтобы хранить в них разные дистрибутивы программ и отсканированные документы. Эти папки будут видны Windows машинам по сети.

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