Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>firewall iptables utils shell}} ====== Shorewall - Инструмент конфигурирования шлюза/фаервола ====== Shorewall - это инструмент конфигурирования шлюза/фаервола для GNU/Linux. Обычно применяется в качестве скриптовой обертки для [[:iptables|]], выполненная в виде сервиса. ===== Зоны ===== Правила хождения пакетов в Shorewall используют абстракцию зон — все сети, которые вы хотите обрабатывать, надо как-то обозвать. Для начала следует определиться с названиями зон. В моем случае их будет 4: необходимая зона, содержащая сам файрволл, домашняя сетка с DHCP, провайдерская локалка и интернет через PPPoE. Не забудьте скопировать заготовку из вашего пакета! Конфиг получился примерно такой: # nano /etc/shorewall/zones # ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall bots ipv4 net ipv4 mysql ipv4 Подробнее: http://www.shorewall.net/manpages/shorewall-zones.html ===== Интерфейсы и хосты ===== Когда вы определились с тем, какие у вас будут зоны, нужно сказать, как поделить между зонами сетевые интерфейсы (l2) и IP-сети (l3). В файле interfaces надо перечислить все обрабатываемые интерфейсы. Делается это в формате «В этой зоне будет этот интерфейс целиком», поэтому при делении интерфейса на несколько зон вместо зоны надо указать прочерк. Мой простейший вариант: # nano /etc/shorewall/interfaces #ZONE INTERFACE BROADCAST OPTIONS net eth0 detect tcpflags,logmartians,nosmurfs Подробнее: http://www.shorewall.net/manpages/shorewall-interfaces.html ===== Политики ===== Когда вы разделили окружающий мир на зоны, обязательно надо сказать, кому что можно делать по умолчанию. Называется это дело политиками, лежит в файле policy, необходимо определить политики для всех возможных направлений пробегания трафика. Лучше всего в конец дописать дефолтную политику, а чуть выше — исключения: # nano /etc/shorewall/policy # SOURCE DEST POLICY LOG LEVEL LIMIT:BURST $FW net ACCEPT net all DROP err # The FOLLOWING POLICY MUST BE LAST all all REJECT err ===== Hosts ===== # nano /etc/shorewall/hosts #ZONE HOST(S) OPTIONS mysql eth0:1.210.189.99 # db1.host.ru bots eth0:1.210.181.30 # backup.host.ru bots eth0:1.210.189.99 # db1.host.ru bots eth0:1.210.189.100 # ws1.host.ru bots eth0:1.210.139.154 # sphinx.host.ru bots eth0:1.210.143.80 # ws2.host.ru ===== Правила ===== # nano /etc/shorewall/rules #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP ACCEPT net $FW icmp ACCEPT $FW net icmp ACCEPT net $FW tcp 80 #ACCEPT net $FW tcp 8080 SSH/ACCEPT net $FW tcp 22 # ftp for 1c client ACCEPT net $FW tcp 40322 ACCEPT net $FW tcp 41000:42000 # all servers from hosts ACCEPT bots $FW ACCEPT $FW bots # MySql DNAT $FW mysql:62.210.189.99 tcp 3306 DNAT net mysql:62.210.189.99 tcp 3306 DNAT $FW $FW:62.210.189.100 tcp 25 - 46.222.222.222 # SMTP ACCEPT net $FW tcp 9999 Правила содержат действия, макросы их настройки. Все макросы находятся в папке /usr/share/shorewall и обозначаются как macro.[ACTION]. Пример: /usr/share/shorewall/macro.SSH, /usr/share/shorewall/macro.AMQP, /usr/share/shorewall/macro.SMTP === Port-forwarding === Если надо пробросить порт на внешнюю сеть, необходимо использовать DNAT, вместо ACCEPT. Для работы этого механизма надо обязательно включить в ядре поддержку перенаправления пакетов. nano /etc/sysctl.conf. <code> net.ipv4.ip_forward = 1 </code> И затем перегпузить настройки ядра командой: == linux == <code> $ sudo sysctl -p /etc/sysctl.conf </code> == Bsd == <code> $ sudo sysctl /etc/sysctl.conf reload </code> Read more: http://plutonit.ru/view_post.php?id=87#ixzz46AKYNB8P # nano /etc/shorewall/rules #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP DNAT all mork:navoff:31840 udp 31840 DNAT net mork:navoff:7777 udp 7777 DNAT net mork:navoff:7777 tcp 7777 === Firewall === # nano /etc/shorewall/rules #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP ACCEPT net $FW icmp ACCEPT $FW net icmp ACCEPT net $FW tcp 22 ACCEPT bots $FW ACCEPT $FW bots Разрешаем подключение по ssh и разрешаем все подключения из /etc/shorewall/hosts ===== shorewall.conf ===== # nano /etc/shorewall/shorewall.conf STARTUP_ENABLED=Yes — пусть запускается VERBOSITY=1 — многословность в консоли SHOREWALL_COMPILER=perl — чтобы не перепуталось, если что *_LOG_LEVEL — когда все заработаеткак надо, поставьте в none, чтобы не засоряло dmesg LOG_MARTIANS — так же IP_FORWARDING=On — для маскарадинга очень нужно. Можно, кончно, и в sysctl.conf это делать, но тут уместнее CLAMPMSS=Yes — лучше включить, если у аплинка MTU меньше, чем у какой-нибудь из машин в домашней сетке. No здесь может привести к крайне неприятному багу с неработающей википедией на части компов. ADMINISABSENTMINDED=Yes — не мните себя б-гом, оставьте так ===== Ссылки ===== * http://www.hub.ru/wiki/Shorewall * https://www.google.com/search?ie=UTF-8&oe=UTF-8&as_sitesearch=www.shorewall.net&q=Russian+Translation&btnG=Site+Search * http://shorewall.net/standalone_ru.html * http://shorewall.net/MultiISP_ru.html * http://www.shorewall.net/Anatomy_ru.html * http://www.shorewall.net/blacklisting_support_ru.html * http://www.shorewall.net/traffic_shaping_ru.html * http://shorewall.net/three-interface_ru.html * http://shorewall.net/two-interface_ru.html * http://www.opennet.ru/base/net/shorewall.txt.htmlСохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal