|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Debian/Ubuntu - iptables для почтового сервера |
|
|
Debian/Ubuntu - iptables для почтового сервера
|
|
Сообщения: 595 |
Добрый всем. Плиз подскажите. Поднимаю на debian 12 почтовик mailcow. Debian стоит на ВМ Proxmox. Порты с роутера проброшены. Вопрос по iptables.
Этот скрипт будет оптимален для настройки iptables для работы почтового сервера? #!/bin/bash
IPTABLES="/sbin/iptables"
#######################################################################################################
# Настройки
#######################################################################################################
# !!! НЕОБХОДИМО ИЗМЕНИТЬ НА СОБСТВЕННЫЕ !!!
IF_OUT="ens18" # Имя интерфейса подключенного к интернет
#######################################################################################################
IF_LO="lo"
ADDR_LO="127.0.0.1"
LOOPBACK="127.0.0.0/8"
sysctl -w net.ipv4.ip_forward=1 # Настройка ядра, для разрешения на продвижение пакетов
sysctl -w net.ipv4.ip_dynaddr=1 # Позволяет выполнять корректно MASQUERADE при динамическом изменении ip адреса
modprobe ip_nat_ftp # Для правильной работы активного режима FTP
#######################################################################################################
# Сброс и установка правил по умолчанию
#######################################################################################################
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
$IPTABLES -P INPUT DROP # По умолчанию блокирует входящий трафик
$IPTABLES -P FORWARD DROP # По умолчанию блокирует проходящий трафик
$IPTABLES -P OUTPUT ACCEPT # По умолчанию разрешает исходящий трафик
#######################################################################################################
# Создание цепочек правил
#######################################################################################################
# Базовая проверка пакетов - невалидные пакты (common-check)
$IPTABLES -N common-check
$IPTABLES -F common-check
$IPTABLES -A common-check -m state --state INVALID -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A common-check -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Обработка входящих icmp запросов (icmp-in)
$IPTABLES -N icmp-in
$IPTABLES -F icmp-in
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
# Разрешает уже установленные соединения (statefull)
$IPTABLES -N statefull
$IPTABLES -F statefull
$IPTABLES -A statefull -m state --state ESTABLISHED,RELATED -j ACCEPT
#################################################################################################
# Задание правил для входящего трафика
#################################################################################################
## Проверяем пакеты (!первое правило в цепочке)
$IPTABLES -A INPUT -j common-check
## Разрешаем icmp запросы к серверу (ping)
$IPTABLES -A INPUT -j icmp-in
## Разрешаем SSH (!из интернета)
$IPTABLES -A INPUT -p tcp --dport 22 -i $IF_OUT -j ACCEPT
#Разрешаем обращение к почтовым портам
Denis Yu, [20.11.2024 23:13]
iptables -A INPUT -p tcp -m multiport --dports 25,110,143,80,443,465,587,993,995,11211 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 25,110,143,80,443,465,587,993,995,11211 -j ACCEPT
## Разрешаем локальный интрефейс
$IPTABLES -A INPUT -i $IF_LO -d $LOOPBACK -j ACCEPT
## Разрешаем установленные соединения (!последнее правило в цепочке)
$IPTABLES -A INPUT -j statefull
#################################################################################################
# Задание правил для исходящего трафика
#################################################################################################
# По умолчанию исходящий трафик разрешен
## Проверяем пакеты (!первое правило в цепочке)
$IPTABLES -A OUTPUT -j common-check
#################################################################################################
# Задание правил для продвижения пакетов
#################################################################################################
## Проверяем пакеты (!первое правило в цепочке)
$IPTABLES -A FORWARD -j common-check
## Разрешаем установленные соединения (!последнее правило в цепочке)
$IPTABLES -A FORWARD -j statefull
##################################################################################################
iptables-save > /etc/iptables/rules.v4
echo done!
|
|
|
Отправлено: 03:34, 21-11-2024 |
|
Старожил Сообщения: 327
|
Профиль | Отправить PM | Цитировать YDen, вносить команды sysctl в этот скрипт особого смысла нет: они выполняются один раз при базовой настройке системы. Но и вреда тоже нет.
Второе: я обычно порт SSH меняю с 22 на что-нибудь другое. Так меньше долбятся. Ну и стилистика: если вы вместо multiport разнесёте правила на "строка-порт" вы а) получите гибкость; б) сможете на каждую строку написать комментарий. Иначе через полгода вы будете смотреть на этот скрипт и мучительно вспоминать - что зачем. P.S. Честно говоря, в строке "iptables -A OUTPUT" особого смысла не вижу. Или у вас на сервере ещё какая-то прикладуха, кроме почтового сервера, которой вы явно ходите запретить доступ? |
|
Отправлено: 04:19, 21-11-2024 | #2 |
|
Сообщения: 595
|
Профиль | Отправить PM | Цитировать Цитата sonny362:
Вы имеете ввиду сделать так, заместо мультипорта? # pop3 $IPTABLES -A INPUT -p tcp --dport 25 -i $IF_OUT -j ACCEPT # smtp $IPTABLES -A INPUT -p tcp --dport 110 -i $IF_OUT -j ACCEPT |
|
|
Отправлено: 04:35, 21-11-2024 | #3 |
|
Сообщения: 595
|
Профиль | Отправить PM | Цитировать Делаю:
sudo nano /etc/network/if-pre-up.d/fw.sh sudo chmod +x /etc/network/if-pre-up.d/fw.sh sudo /etc/network/if-pre-up.d/fw.sh Получаю: line 101: /etc/iptables/rules.v4: No such file or directory Куда тогда сохранить в дебиане? |
|
Отправлено: 05:08, 21-11-2024 | #4 |
|
Старожил Сообщения: 327
|
Профиль | Отправить PM | Цитировать Цитата YDen:
Цитата YDen:
Он а) создаёт все нужные правила в запущенном файерволле б) создаёт файл /etc/iptables/rules.v4. У вас должен быть файл /etc/network/if-pre-up.d/iptables с содержимым #!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4 На всех моих дебиановских серверах так. |
|||
|
Отправлено: 06:37, 21-11-2024 | #5 |
|
Сообщения: 595
|
Профиль | Отправить PM | Цитировать Цитата sonny362:
Вопрос: запускаю скрипт с правилами iptables вручную: sudo /etc/network/if-pre-up.d/fw.sh Как сделать, чтобы он после перезагрузки запускался? На убунте раз так делал, но блин не могу вспомнить как и найти свои шпаргалки. благодарю |
|
|
Отправлено: 07:06, 21-11-2024 | #6 |
|
Старожил Сообщения: 327
|
Профиль | Отправить PM | Цитировать YDen, можно через rc.local
|
|
Отправлено: 15:54, 21-11-2024 | #7 |
|
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Цитата sonny362:
|
|
|
Отправлено: 15:16, 23-11-2024 | #8 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Прочее - Подскажите программу для почтового сервера | vof44ik | Сетевые технологии | 2 | 01-08-2018 14:49 | |
| Железо для почтового сервера | Ruldik | Выбор отдельных компонентов компьютера и конфигурации в целом | 8 | 12-11-2014 14:25 | |
| Получить доменный сертификат для почтового сервера | El Scorpio | Программное обеспечение Linux и FreeBSD | 6 | 10-04-2013 14:23 | |
| [статья] Установка почтового шлюза на Postfix для почтового сервера MS Exchange 2010 | exo | Общий по Linux | 4 | 29-09-2011 17:08 | |
| D-Link - Настройка роутера для почтового сервера. | mspuz | Сетевое оборудование | 2 | 30-03-2009 15:13 | |
|