Настройка iptables centos 8 для почтового сервера

Обновлено: 04.07.2024

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

firewall

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

Рассказывать буду на примере CentOS , но, в общем-то, оно применимо и для других систем.

Базовая защита с помощью IPTables

IPTables — простой фаервол, установленный на большинстве дистрибутивов Linux . Мануалы Linux 'ов гласят, что IPT — это инструмент управления пакетными фильтрами IPv4 и NAT , то есть, это инструмент фильтрации и блокировки интернет-трафика. Короче есть почти везде и используется частенько.

Давайте приступим. Все команды указаны для SSH , но их результирующую можно в общем-то добавлять ручками в сам список iptables непосредственно через редактор. Смотрите как Вам удобнее, по мне проще SSH 'шем.

Для начала порой есть смысл выполнить:

Сие сбрасывает правила фаерволла как таковые.

Можно не выполнять, если IPTables уже был кем-то настроен и Вы боитесь потерять сделанные настройки. К слову, при определенных правилах маршрутов может сделать сервер недоступным и придется обращаться к хостеру для отключения IPTables. В общем можно, но с осторожностью.

Базовые правила фильтрации ереси (сначала идет команда, потом мой комментарий, комментарий забивать в консоль не надо):

Базовая защита SSH (на этом примере можно защищать FTP и другие порты):

Разрешаем порты для нужных сервисов (на примере нескольких базовых):

Почта (если сервер не выступает как почтовый, то можно не разрешать):

Разрешаем исходящие соединения, в целях, например, использования ping и других внутренних приложений:

По аналогии разрешите доступ ко всем нужным портам, в частности, со своего IP-адреса. Порты могут быть любыми, в частности, если на сервере есть панель, то не забудьте разрешить доступ к её порту, а то не попадете туда через веб-морду.

Проделав всё необходимое, собственно, остается лишь:

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

Послесловие

Такие дела. Пользуйтесь на здоровье.

Если есть вопросы, дополнения и всё такое прочее, то то велком в комментарии.

Белов Андрей (Sonikelf) Заметки Сис.Админа [Sonikelf's Project's] Космодамианская наб., 32-34 Россия, Москва (916) 174-8226


Нужно все таки, установить IPtables.

Настройка IPtables для web сервера на Unix/Linux

Изначально проверим настройки IPtables, следующей командой:

Вот вывод данной программы (иптейблс):

так выглядит стандартный IPtables на CentOS

так выглядит стандартный IPtables на CentOS

Если это чистый сервер и нужно его настроить с самого начала, то выполняем ряд действий. Для начала, выставляем цепочку INPUT на прием всех соединений ( разрешить все соединения):

Затираем все правила:

Давайте сделаем так, чтобы можно было получать уже открытые конекшены:

Еси есть смысл ( логично разрешить), то разрешим ping на сервер ( для ICMP пакетов):

Т.к на сервер нужно заходить, то пробрасываем 22-й порт ( порт для SSH):

Если имеются FTP на сервере, то пробросим:

Т.к некоторые ФТП использую порты 30000-50000, то пробросим мы и их:

Разрешаем доступ по 8080-му порту.

Разрешаем доступ по 443-му порту:

Или, если нужно пробросить все это дело для определенного интерфейса:

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

Настроенный iptables под веб сервер (открыты, 80, 8080 и 443 порты)

Настроенный iptables под веб сервер (открыты, 80, 8080 и 443 порты)

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

Сохраняем и перезапускаем IPtables, следующим образом:

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

One thought on “ Настройка IPtables для web сервера на Unix/Linux ”

Прекрасная статья! Наконец-то нашёл, как настроить домашний сервер на Fedora. Именно эта проблема мне не давало возможность запустить сервер. Удалённое управление сервером есть и из Windows, и из Linux, программы устанавливаются, интернет есть. Даже ping проходит и из Windows и из Linux, а сервер просто не виден в сети. Большое спасибо! Буду настраивать.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Как установить и настроить почтовый сервер Postfix на CentOS 8

640?wx_fmt=jpeg

Postfix - это бесплатный MTA (агент передачи почты) с открытым исходным кодом, используемый для маршрутизации или доставки электронной почты в системах Linux. В этом руководстве вы узнаете, как установить и настроить Postfix в CentOS 8.

Postfix - это бесплатный MTA (агент передачи почты) с открытым исходным кодом, используемый для маршрутизации или доставки электронной почты в системах Linux. В этом руководстве вы узнаете, как установить и настроить Postfix в CentOS 8.

◈ Имя хоста: server1.crazytechgeek.info (убедитесь, что имя домена указывает на IP-адрес сервера)

Шаг 1) Обновление системы

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

Прежде чем продолжить, убедитесь, что других MTA (таких как Sendmail) нет, так как это приведет к конфликту с настройкой Postfix. Например, чтобы удалить Sendmail, выполните следующую команду:

Шаг 2) Установите имя хоста и обновите / etc / hosts

Используйте следующееhostnamectlКоманда устанавливает имя хоста в системе:

Кроме того, вам нужно /etc/hosts Добавьте имя хоста и IP-адрес системы:

Сохраните и выйдите из файла.

Шаг 3) Установите почтовый сервер Postfix

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

640?wx_fmt=png

Шаг 4) Запустите и включите службу Postfix

После успешной установки Postfix выполните следующую команду, чтобы запустить и включить службу Postfix:

Чтобы проверить статус Postfix, пожалуйста, запустите следующееsystemctlКоманда:

640?wx_fmt=png

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

Шаг 5) Установите почтовый клиент mailx

Перед настройкой сервера Postfix нам нужно установитьmailx, Чтобы установить его, выполните следующую команду:

640?wx_fmt=png

Шаг 6) Настройте почтовый сервер Postfix

Конфигурационные файлы Postfix находятся по адресу /etc/postfix/main.cf Средний. Нам нужно внести некоторые изменения в файл конфигурации, поэтому, пожалуйста, используйте ваш любимый текстовый редактор, чтобы открыть его:

Измените следующие строки:

Когда закончите, сохраните и выйдите из файла конфигурации. Перезапустите службу postfix, чтобы изменения вступили в силу:

Шаг 7) Проверьте почтовый сервер Postfix

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

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

При выполнении команды, как описано выше, вы должны получить следующий вывод:

Приведенные выше результаты подтверждают, что соединение с почтовым сервером postfix является нормальным. Далее введите команду:

Вывод выглядит так:

Затем запустите выделенную оранжевым команду, например mail from 、 rcpt to 、 data И, наконец, введите quit :

640?wx_fmt=png

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

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

640?wx_fmt=png

Журналы почтового сервера Postfix

Почтовые журналы почтового сервера Postfix сохраняются в файлах /var/log/maillog В, используйте следующую команду для просмотра журнала в реальном времени,

640?wx_fmt=png

Защитите почтовый сервер Postfix

Рекомендуется всегда обеспечивать безопасность связи между клиентом и сервером Postfix, что может быть достигнуто с помощью SSL-сертификатов, которые могут поступать из доверенного органа или самозаверяющего сертификата. В этом уроке мы будем использоватьopensslКоманда генерирует самозаверяющий сертификат для Postfix,

Я предполагаюopensslОн уже установлен в вашей системе, если он не установлен, используйте следующиеdnfКоманда:

Используйте следующееopensslКоманда для генерации закрытого ключа и CSR (запрос на подпись сертификата):

640?wx_fmt=png

Теперь используйте следующую команду openssl для создания самозаверяющего сертификата:

Теперь скопируйте закрытый ключ и файлы сертификата в /etc/postfix По содержанию:

Обновите путь к файлам закрытого ключа и сертификата в файле конфигурации Postfix:

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

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

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

640?wx_fmt=png

Примечание. Если ваш IP-адрес нигде не занесен в черный список, то отправленная вами почта во внешний домен будет отправлена, в противном случае она будет возвращена обратно, и это приведет к тому, что ваш IP-адрес будет занесен в черный список базы данных, такой как spamhaus.

Проверьте почтовую очередь Postfix

исполняйте! Наша конфигурация Postfix работает! Это все на данный момент. Мы надеемся, что вы найдете это руководство полезным и что вы можете легко настроить локальный сервер Postfix.

Эта статья состоит изLCTT○ оригинальная компиляция,Linux КитайЧесть запуск


В данной инструкции выполнена настройка полноценного почтового сервера. Список всех особенностей и возможностей:

  • Почтовая система на базе Postfix;
  • Поддержка виртуальных доменов;
  • Хранение почты на сервере;
  • Подключение к почтовым ящикам по POP3 и IMAP (Dovecot);
  • Поддержка шифрования;
  • Хранение части настроек в MariaDB;
  • Защита от СПАМа и вирусов;
  • Доступ к почте с помощью веб-интерфейса (Roundcube);
  • Возможность управления почтовыми ящиками с помощью PostfixAdmin.

Данная инструкция является обновлением для статьи

Шаг 1. Подготовка системы

Напоминаю, данная инструкция написана под систему Linux CentOS версии 8. Предварительно, выполним следующие действия.

Общие настройки

Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа.

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

dnf install chrony wget

* chrony для возможности синхронизировать время на сервере; wget — клиент для загрузки файлов.

Задаем временную зону (в данном примере московское время):

timedatectl set-timezone Europe/Moscow

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

Запускаем сервис для обновления времени:

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

Заранее открываем порты на брандмауэре с помощью firewalld:

* где мы откроем следующие порты:

Отключение SELinux

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

* первая команда отключит SELinux для текущей загрузки. Вторая оставит его отключенным на постоянной основе.

Шаг 2. Настройка веб-сервера: NGINX + PHP + MariaDB

Система управления PostfixAdmin работает как веб-приложение, разработанное на PHP, а информацию хранит в базе данных. В нашем примере будет использоваться веб-сервер на NGINX, а база данных — MariaDB.

Установка NGINX

Устанавливаем nginx командой:

dnf install nginx

Разрешаем автозапуск сервиса и запускаем его:

Проверяем работоспособность веб-сервера, обратившись к нему в браузере по IP-адресу. Если видим заголовок «Welcome to nginx!», NGINX настроен верно.

PHP + PHP-FPM + NGINX

Устанавливаем php и php-fpm. Мы будем использовать репозиторий remi, так как в репозитории CentOS отсутствует нужный нам php-imap.

И так, устанавливаем EPEL и REMI:

dnf install epel-release

Теперь устанавливаем PHP из репозитория REMI:

dnf module install php:remi-7.2

После ставим php-fpm:

dnf install php-fpm

* где /usr/share/nginx/html — каталог для размещения данных nginx по умолчанию.

systemctl restart nginx

Для проверки, создаем индексный файл в директории сайта со следующим содержимым:

Открываем сайт в браузере по его IP-адресу. На открывшейся странице мы должны увидеть подробную информацию по php:

MariaDB

Устанавливаем сервер баз данных следующей командой:

dnf install mariadb-server

Включаем автозапуск сервиса и запускаем его:

Задаем пароль для пользователя sql root:

mysqladmin -u root password

Шаг 3. Установка и настройка PostfixAdmin

Устанавливаем дополнительные компоненты для PHP:

dnf install php-mysqli php-mbstring php-imap

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

systemctl restart php-fpm

В директории сайтов nginx создаем каталог для postfixadmin и распаковываем в него архив:

Создаем каталог templates_c внутри папки портала (без него не запустится установка):

Задаем права на каталог:

chown -R apache:apache /usr/share/nginx/html/postfixadmin

* несмотря на то, что мы используем веб-сервер nginx, php-fpm по умолчанию, запускается от пользователя apache.

Создаем базу данных postfix и учетную запись в mariadb:

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* где postfix — имя базы.

* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.

Выходим из командной оболочки MariaDB:

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

И добавляем следующее:

* где configured говорит приложению, что администратор закончил его конфигурирование; default_language — используемый язык по умолчанию; database_password — пароль для базы данных, который мы задали на предыдущем шаге; emailcheck_resolve_domain — задает необходимость проверки домена при создании ящиков и псевдонимов.

Начнется процесс проверки конфигурации и установки портала PostfixAdmin. После ее окончания мы увидем окно с результатами — проверяем, чтобы не было ошибок и предупреждений:


После перезагрузки страницы копируем хэш:

Так выглядит хэш PostfixAdmin

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

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

После, на той же странице, где показан хэш, добавляем суперпользователя PostfixAdmin:

* где Setup password — пароль, который мы ввели на предыдущей странице; Пароль — новый пароль для создаваемой учетной записи.

В итоге мы увидим следующее:

Мы создали суперпользователя для управления Postfix

Вводим логин и пароль для созданного пользователя. Мы должны войти в postfix.admin:

Шаг 4. Установка и настройка Postfix

Установка Postfix в CentOS 8 выполняется командой:

dnf install postfix postfix-mysql

* помимо самого postfix, мы также установили postfix-mysql для возможности работы с СУБД.

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

groupadd -g 1024 vmail

useradd -d /home/mail -g 1024 -u 1024 vmail -m

* сначала мы создаем группу vmail и guid 1024, после — пользователя vmail с uid 1024 и домашней директорией /home/mail — в ней у нас будет храниться почта. Обратите внимание, что в некоторых системах идентификатор группы и пользователя 1024 может быть занят. В таком случае необходимо создать другой, а в данной инструкции ниже заменить все 1024 на альтернативный.

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

chown vmail:vmail /home/mail

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

И редактируем следующие строки:

Теперь в конец конфигурационного файла допишем следующее:

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Создаем файл с настройками обращения к базе с алиасами:

* где user и password — логин и пароль для подключения к MySQL; hosts — имя сервера баз данных (в нашем случае, локальный сервер); dbname — имя базы данных; query — шаблон запроса к данным.

Создаем файл с инструкцией получения данных по виртуальным доменам:

И файл с почтовыми ящиками:

Открываем файл master.cf и дописываем в самый конец:

* после команды идут аргументы ее запуска. Они могут переопределять параметры, заданные в main.cf. Каждый аргумент записывается с новой строки и начинается с двух пробелов. В данном примере мы используем следующие аргументы:

  • smtpd_tls_security_level — задает уровень безопасности с применением TLS. В данном примере may говорит о возможности его использования.
  • smtpd_sasl_auth_enable — разрешает sasl аутентификацию.
  • smtpd_sasl_type — указывает тип аутентификации.
  • smtpd_sasl_path — путь до временных файлов обмена информацией с сервером хранения почты (в нашем случае Dovecot). Указывается либо абсолютный путь, либо относительный queue_directory.
  • smtpd_sasl_security_options — дополнительные опции настройки sasl.
  • smtpd_sasl_local_domain — добавить домен для пользователей, которые проходят smtp-аутентификацию.
  • syslog_name — префикс названия службы при занесении ее в системный журнал.
  • smtpd_tls_wrappermode — запускать ли службу в нестандартном режиме (для поддержки TLS).
  • smtpd_client_restrictions — настройки ограничения клиентских соединений. В данном примере разрешить только авторизованных.

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

mkdir -p /etc/ssl/mail

И сгенерируем их следующей командой:

Разрешаем запуск postfix:

Шаг 5. Настройка Dovecot

Устанавливаем Dovecot с компонентом для работы с СУБД:

dnf install dovecot dovecot-mysql

Настраиваем слушателя для аутентификации:

service auth unix_listener /var/spool/postfix/private/auth mode = 0666
user = postfix
group = postfix
>
unix_listener auth-userdb mode = 0600
user = vmail
group = vmail
>
>

* в данном примере мы настраиваем сервис для аутентификации и создаем два прослушивателя: /var/spool/postfix/private/auth — для возможности постфиксом использовать авторизацию через Dovecot (обращаем внимание, что /var/spool/postfix/private/auth — это тот же private/auth, который был прописан нами в postfix); auth-userdb — сокет для авторизации через dovecot-lda. Опция mode задает права на сокет, например, 666 позволит любому пользователю к нему подключиться; user и group задает пользователя и группу владельцев на сокет.

А также в этом файле добавим строки:

service stats unix_listener stats-reader user = vmail
group = vmail
mode = 0660
>
unix_listener stats-writer user = vmail
group = vmail
mode = 0660
>
>

* в противном случае, мы увидим в логе ошибку error net_connect_unix(/var/run/dovecot/stats-writer) failed permission denied, так как у пользователя vmail не будет прав.

Настраиваем аутентификацию в Dovecot:

* в данном случае мы просто комментируем обычную аутентификацию и снимаем комментарий для использования sql-аутентификации.

Настраиваем использование шифрования:

ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key

* ssl = required укажет dovecot требовать от клиентов использования шифрования; ssl_cert — путь до открытого сертификата (также нами указывался в postfix); ssl_key — путь к закрытому ключу.

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

Настраиваем подключение к нашей базе данных:

passdb …
args = /etc/dovecot/dovecot-sql.conf.ext
>

userdb …
args = /etc/dovecot/dovecot-sql.conf.ext
>

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

Создаем файл с настройками работы с mysql:

* в данном примере мы настроили запрос на получение данных из базы mysql (mariadb). password_query — запрос на получение пароля из таблицы mailbox; user_query — запрос на получение данных пользователя (домашняя почтовая директория, идентификатор 1024 (идентификатор созданного нами ранее пользователя vmail).

И, напоследок, настраиваем интерфейс, на котором будет слушать dovecot:

* по умолчанию, dovecot слушает также на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, в логах dovecot появятся ошибки:
master: Error: service(imap-login): listen(. 143) failed: Address family not supported by protocol
master: Error: service(imap-login): listen(. 993) failed: Address family not supported by protocol

Шаг 6. Создаем первый почтовый ящик и проверяем работу сервера

Вводим логин и пароль от административной учетной записи, которую мы создали на шаге 3. Перед нами появится страница управления учетными записями.


Заполняем формы и нажимаем по Добавить домен:



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


Теперь можно подключиться к серверу с помощью любой почтовой программы, например, Mozilla Thunderbird.

Параметры для подключения:

  • Сервер: имя сервера или его IP-адрес (не желательно, так как сертификат выдается по доменному имени).
  • IMAP: 143 STARTTLS или 993 SSL/TLS
  • POP3: 110 STARTTLS или 995 SSL/TLS
  • SMTP: 25 STARTTLS или 465 SSL/TLS или 587 STARTTLS

* для корректной работы сервера на портах 993, 995, 465 (SSL/TLS) необходим правильный сертификат (для нашего домена и выпущенный доверенным центром сертификации).

Шаг 7. Устанавливаем и настраиваем Roundcube Webmail

В данной инструкции мы разберем использование веб-клиента Roundcube. При необходимости, можно установить другой, например, WebMail Lite или несколько одновременно.

На официальном сайте заходим на страницу загрузки Roundcube. Смотрим ссылку на версию продукта с длительной поддержкой (LTS):


Используем ссылку, чтобы загрузить архив программы:

Создаем каталог, где будут размещаться файлы портала:

И распаковываем скачанный архив:

Копируем шаблон конфига:

cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php

И открываем его на редактирование:

* первую строку мы редактируем, а вторую добавляем. В первой строке roundcube:roundcube123 — логин и пароль для доступа к базе данных; localhost — сервер базы данных; roundcubemail — имя базы данных. Вторая строка разрешает установку портала.

Также дописываем в конфигурационный файл следующее:

* Без данной настройки, если не создавались папки другим клиентом, веб-клиент будет выдавать ошибки при перемещении писем, например, при их удалении.

Задаем владельца apache на папку портала:

chown -R apache:apache /usr/share/nginx/html/webmail

Создаем в MariaDB базу для roundcubemail:

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

И загружаем в созданную базу данные:

mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

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

dnf install php-pear php-mcrypt php-intl php-ldap php-pear-Net-SMTP

* в данном примере мы задаем московское время и возможность загружать файл размером в 30 Мб (это будет максимальным объемом вложений, которые можно отправлять через веб-интерфейс).

systemctl restart php-fpm

* данной настройкой мы также разрешим загрузку файлов размером 30 Мб.

Перезапустим nginx для применения настройки:

systemctl restart nginx

На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.

Открываем конфигурационный файл roundcube:

Запрещаем установку портала:

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

\rm -R /usr/share/nginx/html/webmail/installer

Шаг 8. Защищаемся от вирусов и СПАМа

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

Установка и настройка Clamav + Amavisd

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

Открываем конфигурационный файл amavis:

Редактируем следующие параметры:

Открываем конфигурационный файл clamd:

Снимаем комментарий для опции TCPSocket:

Теперь разрешаем запуск антивируса и amavis:

Настройка Postfix

Добавляем в postfix:

content_filter = scan:[127.0.0.1]:10024
receive_override_options = no_address_mappings

Теперь редактируем master.cf:

date

13.12.2019

directory

CentOS, Linux

comments

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

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

Отключение firewalld в CentOS 7

В CentOS 7 для управления файрволом по умолчанию используется системная служба firewalld. Она предоставляет свой интерфейс, но в итоге также работает через утилиту iptables. При этом управление файроволом должно осуществляться либо через firewalld, либо напрямую через iptables.

firewalld не замена, а обертка вокруг iptables, пользоваться из этого можно тем, что больше нравится, или больше подходит в конкретных условиях. iptables более универсален, это базовый инструмент, но он немного сложнее в освоении. firewalld предоставляет более простой интерфейс, но, например, в CentOS 6 воспользоваться им не получится, да и для других дистрибутивов необходимо наличие нужных установочных пакетов. К тому же, если вы используете приложения, которые производят свои настройки в файрволе, они должны быть совместимы с firewalld (пример таких приложений docker, fail2ban).

Проверим статус firewalld и отключим его.

systemctl status firewalld

systemctl status firewalld в centos 7

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

Останавливаем службу и выключаем для нее автозагрузку:

systemctl stop firewalld
systemctl disable firewalld

Повторно проверяем статус:

firewalld отключить в centos

Теперь вывод команды показывает disabled для автозагруки (выключена), и inactive означает, что служба выключена.

Синтаксис и правила iptables в CentOS/Red Hat

Iptables – это утилита, с помощью которой настраиваются правила для файрвола в Linux.

Iptables группирует правила файрвола в таблицах, основные это:

  • Таблица filter – используется для фильтрации трафика, то есть разрешения и запрещения соединений
  • Таблица nat – используется для преобразования адресов (NAT)
  • Таблица mangle – прочие модификации заголовков ip пакетов.

Для начала проверим, что iptables установлен в системе(должен быть умолчанию):

rpm -q iptables - версия iptables в centos

Вывод команды показывает, что текущая установленная версия iptables – 1.4.21.

Работа с iptables в командной строке требует root привилегий, поэтому далее будем работать под пользователем root.

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

iptables [-t таблица] -L [цепочка] [параметры]

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

Например, результат команды iptables -L, когда в таблицах еще не создано правил:

iptables -L - таблицы правил файервола в centos redhat

Рассмотрим вывод команды подробнее.

Таблица filter содержит три типа правил, так называемые chain(цепочки):

  • INPUT – в этой цепочке обрабатываются входящие ip пакеты, предназначенные для самого хоста;
  • OUTPUT – в этой цепочке обрабатываются исходящие ip пакеты от самого хоста;
  • FORWARD – эта цепочка нужна для перенаправления ip пакетов. Используется, если вы хотите использовать сервер, как маршрутизатор.

Напротив каждой цепочки указана политика по умолчанию (policy), которая определяет, что нужно делать, в случае, если соединение не попало ни в одно из правил. Политика по умолчанию может принимать два значения и определяет сам подход к организации файрвола:

  • ACCEPT – по умолчанию все соединения разрешены, правилами блокируются нежелательные соединения;
  • DROP – по умолчанию все соединения запрещены, правилами разрешаются нужные соединения.

Создание правил фильтрации трафика в iptables

Фильтр iptables по интерфейсу

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

iptables [-t таблица] -A <цепочка> <критерии> -j <действие>

Для начала, разрешим трафик через локальный loopback интерфейс(127.0.0.1), что необходимо для работы некоторых приложений:

iptables -A INPUT -i lo -j ACCEPT

Разберем по порядку:

Фильтр iptables по порту, протоколу или IP адресу

Теперь добавим разрешающее правило для подключения к нашему Linux серверу по SSH на порт 22.

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Допустимо указывать диапазон портов через двоеточие, например

iptables -A INPUT -p tcp -s 94.41.174.122 --dport 22 -j ACCEPT

доступ на 22 порт будет разрешен только с ip адреса 94.41.174.122.

Частично разрешим icmp запросы, 3-х типов:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT

Эти правила разрешают работу утилит ping, traceroute и позволяют работать механизму для определения MTU между двумя хостами.

Фильтр iptables по состоянию соединения

Для корректной работы потребуется создать правило, разрешающее уже установленные соединения:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Здесь в критерии используется ключ -m, для загрузки модуля state, который дает возможность определить текущее состояние ip пакета из возможных:

Задание политики iptables по умолчанию

Минимальный набор разрешающих правил для файрвола готов, осталось установить политику по умолчанию, запрещающую все входящие соединения, не соответствующие нашим правилам. Для этого в команде iptables служит ключ -P, устанавливает политику по умолчанию для заданной цепочки, в нашем случае:

iptables -P INPUT DROP

Внимание: прежде чем использовать эту команду, необходимо убедиться, что ваши текущие правила разрешают вам подключиться к серверу, иначе вы просто заблокируете себе доступ!
Посмотрим на результатурующую таблицу правил iptables, добавим ключ -v, чтобы показать более подробный вывод:
iptables -L -v

iptables -L -v

Включить логи iptables

Iptables позволяет записывать информацию о проходящих ip пакетах в системный журнал. Реализуется это с помощью специфичного действия LOG над соединением, после которого, ip пакет продолжает движение по цепочке нетронутым. Для примера, создадим правило, которое будет записывать в системный журнал все события соединений на порт 445 (tcp):

iptables -A INPUT -p tcp --dport 445 -j LOG --log-prefix "IN SMB DROP: "

логи iptables

Разберем вывод:

Сохранение и восстановление правил фильтрации iptables

В заключении, настроим автозагрузку правил, после перезагрузки сервера. Для этого должен быть установлен пакет iptables-services и активирован сервис. Установим пакет через yum:

yum install iptables-services
systemctl enable iptables

Проверим статус службы iptables:

systemctl status iptables

systemctl enable iptables

Параметр автозагрузки установлен в enabled (включена), параметр active указывает, что служба запущена.

При загрузке сервис будет читать содержимое файла /etc/sysconfig/iptables, и восстанавливать сохраненные правила. Чтобы сохранить в него наши правила, воспользуемся командой:

Можно восстановить правила из файла командой:

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

В следующей статье мы покажем, как использовать iptables для создания NAT правил перенаправления трафика для шлюза-доступа на базе CentOS из / во внутренюю сеть организации.

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