|
Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Debian/Ubuntu - iptables для почтового сервера |
|
Debian/Ubuntu - iptables для почтового сервера
|
Сообщения: 595 |
Профиль | Отправить 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 |
Старожил Сообщения: 323
|
Профиль | Отправить 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 |
Старожил Сообщения: 323
|
Профиль | Отправить 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 |
Старожил Сообщения: 323
|
Профиль | Отправить 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 |
|