|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugene B. Berdnikov 2:5020/400 07 Jul 2004 14:03:25 To : Andrey Ovchinnikov Subject : Re: чудеса с маскарадингом -------------------------------------------------------------------------------- Andrey Ovchinnikov <Andrey.Ovchinnikov@p49.f70.n467.z2.fidonet.org> wrote: AO> In junk Eugene B. Berdnikov <berd@desert.ihep.su> wrote: EBB>> Сначала - поискать опечатки в скрипте и привести выдачу iptables -t nat EBB>> -L EBB>> до и после "ручной работы", а также содержимое /proc/net/ip_conntrack. AO> Я понимаю, что чудес на свете не бывает, но ошибку пока найти не могу. AO> Итак: AO> 1. Скрипт собственно брандмауера Позволю себе покомментировать... :) AO> ============ FIREWALL =============== AO> #!/bin/bash AO> # Internet Firewall start configuration AO> # eth1 is connected to the Internet AO> # eth0 is connected to a private subnet AO> AO> PRIVATE=192.168.2.0/24 AO> LOOP=127.0.0.1 AO> AO> # Delete old iptables rules and temporary block all traffic AO> iptables -P OUTPUT DROP AO> iptables -P INPUT DROP AO> iptables -P FORWARD DROP Лишнее. AO> iptables -F AO> iptables -F -t nat AO> AO> # Set default policies AO> iptables -P OUTPUT ACCEPT AO> iptables -P INPUT DROP AO> iptables -P FORWARD DROP ОК. AO> # Prevent external packets from using loopback addr AO> iptables -A INPUT -i eth1 -s $LOOP -j DROP AO> iptables -A FORWARD -i eth1 -s $LOOP -j DROP AO> iptables -A INPUT -i eth1 -d $LOOP -j DROP AO> iptables -A FORWARD -i eth1 -d $LOOP -j DROP Лишнее. Hикогда не сработает (см. счётчики), потому что эти марсиане забанены ещё фантастом Уэлсом (в сорцах ядра/net см. по слову martian). AO> # Anything coming from Internet should have a real Internet address AO> iptables -A FORWARD -i eth1 -s 192.168.0.0/16 -j DROP AO> iptables -A FORWARD -i eth1 -s 172.16.0.0/12 -j DROP AO> iptables -A FORWARD -i eth1 -s 10.0.0.0/8 -j DROP AO> iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP AO> iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP AO> iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP Тоже лишнее. Проще внести единичку в rp_filter на eth1, и отдыхать. AO> # Block outgoing NetBIOS AO> iptables -A FORWARD -p tcp --sport 137:139 -o eth1 -j DROP AO> iptables -A FORWARD -p udp --sport 137:139 -o eth1 -j DROP Брокасты и так не форвардятся. :) AO> iptables -A OUTPUT -p tcp --sport 137:139 -o eth1 -j DROP AO> iptables -A OUTPUT -p udp --sport 137:139 -o eth1 -j DROP Hа файрволе что-то виндовое живёт? Жабой удавить. :) AO> # Check source address validity on packets going out to Internet AO> iptables -A FORWARD -s ! $PRIVATE -i eth0 -j DROP Лишнее, аналогично: sysctl -w net.ipv4.conf.eth0.rp_filter=1 AO> # Allow local loopback AO> iptables -A INPUT -s $LOOP -j ACCEPT AO> iptables -A INPUT -d $LOOP -j ACCEPT Проще один раз -i lo. AO> # Allow incoming pings AO> iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT AO> AO> # Allow services such as ssh, www etc. AO> iptables -A INPUT -p tcp --dport ssh -j ACCEPT AO> iptables -A INPUT -p tcp --sport 20 -j ACCEPT Зачем ftp на файрволе? Унести ftpd на другую машину, а это - в FORWARD. AO> # Allow incoming OpenVPN packets AO> iptables -A INPUT -p udp --dport 5000 -j ACCEPT AO> AO> # Allow packets from TUN/TAP devices AO> iptables -A INPUT -i tun+ -j ACCEPT AO> iptables -A FORWARD -i tun+ -j ACCEPT AO> iptables -A INPUT -i tap+ -j ACCEPT AO> iptables -A FORWARD -i tap+ -j ACCEPT AO> AO> AO> # Allow packets from private subnet AO> iptables -A INPUT -i eth0 -j ACCEPT AO> iptables -A FORWARD -i eth0 -j ACCEPT ОК. AO> # Keep state of connections from local machine and private subnets AO> iptables -A OUTPUT -m state --state NEW -o eth1 -j ACCEPT Лишнее, там же policy=accept. AO> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ОК. AO> iptables -A FORWARD -m state --state NEW -o eth1 -j ACCEPT Лишнее, через eth0 транзит уже разрешён. AO> iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT AO> AO> # Masquerade local subnet AO> iptables -t nat -A POSTROUTING -s $PRIVATE -o eth1 -j MASQUERADE ОК. Далее поскипано. AO> 3. Результат команды iptables -L -t nat (маскарадинг не работает) Интересует конкретно iptables -t nat -nvxL POSTROUTING, чтобы все потроха были видны. А из контрака надо вычленить собственно то, что относится к маскараду, т.е. записи вида src=192.168... dst=<real> ... src=<real> dst=192.168... Пинг при этом ловить надо по префиксу "icmp", а с tcp - и так понятно. Давайте ещё раз. И попробуйте ещё SNAT вместо маскарада - если ошибка и не отловится, то заработать он должен. -- Eugene Berdnikov --- ifmail v.2.15dev5.3 * Origin: Institute for High Energy Physics, Protvino, Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.linux/365198e8802e.html, оценка из 5, голосов 10
|