Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Debian/Ubuntu - iptables для почтового сервера

Ответить
Настройки темы
Debian/Ubuntu - iptables для почтового сервера


Сообщения: 595
Благодарности: 5

Профиль | Отправить PM | Цитировать


Добрый всем. Плиз подскажите. Поднимаю на 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

 

Аватара для sonny362

Старожил


Сообщения: 325
Благодарности: 43

Профиль | Отправить PM | Цитировать


YDen, вносить команды sysctl в этот скрипт особого смысла нет: они выполняются один раз при базовой настройке системы. Но и вреда тоже нет.
Второе: я обычно порт SSH меняю с 22 на что-нибудь другое. Так меньше долбятся.
Ну и стилистика: если вы вместо multiport разнесёте правила на "строка-порт" вы а) получите гибкость; б) сможете на каждую строку написать комментарий. Иначе через полгода вы будете смотреть на этот скрипт и мучительно вспоминать - что зачем.
P.S. Честно говоря, в строке "iptables -A OUTPUT" особого смысла не вижу. Или у вас на сервере ещё какая-то прикладуха, кроме почтового сервера, которой вы явно ходите запретить доступ?
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:19, 21-11-2024 | #2



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

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



Сообщения: 595
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата sonny362:
Ну и стилистика: если вы вместо multiport разнесёте правила на "строка-порт" »
Благодарю за консультацию.
Вы имеете ввиду сделать так, заместо мультипорта?
# 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
Благодарности: 5

Профиль | Отправить 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


Аватара для sonny362

Старожил


Сообщения: 325
Благодарности: 43

Профиль | Отправить PM | Цитировать


Цитата YDen:
# 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 »
Да, я это и имел в виду.

Цитата YDen:
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 »
Что-то не понял. Вы свой скрипт пускали?
Он а) создаёт все нужные правила в запущенном файерволле б) создаёт файл /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
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата sonny362:
Что-то не понял. Вы свой скрипт пускали?
Он а) создаёт все нужные правила в запущенном файерволле б) создаёт файл /etc/iptables/rules.v4.
У вас должен быть файл /etc/network/if-pre-up.d/iptables с содержимым
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
На всех моих дебиановских серверах так. »
Разобрался. Пакет iptables-persistent не был установлен.

Вопрос: запускаю скрипт с правилами iptables вручную: sudo /etc/network/if-pre-up.d/fw.sh
Как сделать, чтобы он после перезагрузки запускался?

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

благодарю

Отправлено: 07:06, 21-11-2024 | #6


Аватара для sonny362

Старожил


Сообщения: 325
Благодарности: 43

Профиль | Отправить PM | Цитировать


YDen, можно через rc.local

Отправлено: 15:54, 21-11-2024 | #7


Аватара для MakaBooka

Старожил


Сообщения: 342
Благодарности: 46

Профиль | Отправить PM | Цитировать


Цитата sonny362:
я обычно порт SSH меняю с 22 на что-нибудь другое. Так меньше долбятся. »
...а на 22 порт надо вешать endlessh, пусть долбятся.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:16, 23-11-2024 | #8



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Debian/Ubuntu - iptables для почтового сервера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Подскажите программу для почтового сервера 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




 
Переход