From: "Шенцев Алексей Владимирович" <ashen@nsrz.ru> To: ALT Linux sysadmin discuss <sysadmins@lists.altlinux.org> Subject: Re: [Sysadmins] iptables трансляция протокола Date: Mon, 3 Jul 2006 16:08:57 +0400 Message-ID: <200607031608.57303.ashen@nsrz.ru> (raw) In-Reply-To: <44A905EB.2080005@soc.adm.yar.ru> В сообщении от 3 июля 2006 15:56 Дворников М.В. написал(a): > *nat > :PREROUTING ACCEPT [49:10802] > :POSTROUTING ACCEPT [11:1372] > :OUTPUT ACCEPT [4:215] ?! У вас всё разрешено ?! > > # proxy > -A PREROUTING -s 10.X/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT > --to-ports 3128 Ага вот тут и засада. Вместо отправки на соединение с казначейством у вас будет заворачивать трафик на прокси сервер. У вас перед тем как будут отработано правило для работы с казначейством сработает сначала правило, перенаправляющее трафик на прокси, так что до казначейства трафик не дойдёт. Сначало работает PREROUTING, а потом POSTROUTING. Вам надо полностью перестроить правила для вашего файервола. Пример скрипта настройки iptables: ______________________________________ #!/bin/sh # service iptables stop # для удобства, ибо интерфейсов несколько INET_IFACE="eth1" #вместо ethX может стоять и pppX и любой другой интерфейс LAN_IFACE="eth0" INET_IP="" LAN_IP="" LAN="" LAN_MASK="24" BANK_IP="" BANK_USER_IP1="" ADMIN_IP1="" FREE_USER_IP1="" # тоже для удобства IPTABLES="/sbin/iptables" # включаем пересылку пакетов #echo 1 > /proc/sys/net/ipv4/ip_forward # стандартные действия $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD DROP # удаляем все имеющиеся правила $IPTABLES -F $IPTABLES -X # создаем свои цепочки # отбрасываем tcp с неправильными флагами $IPTABLES -N bad_tcp_packets # tcp, прошедшие основную проверку $IPTABLES -N allowed # все пакеты соотв. протоколов $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets # безусловно разрешаем соединения по локальному интерфейсу (loopback, 127.0.0.1) $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT # безусловно разрешаем соединения по интерфейсу ЛВС (et0) $IPTABLES -A INPUT -i $LAN_IFACE -j ACCEPT $IPTABLES -A OUTPUT -o $LAN_IFACE -j ACCEPT # сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но не имеющие флагов SYN,ACK # предохраняет от определенных типов атак, подробности в приложении B4 к Iptables Tutorial $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP # принимаем все пакеты, относящиеся к уже установленным соединениям $IPTABLES -A allowed -p TCP --syn -j ACCEPT $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT # а все остальные из этой цепочки сбрасываем $IPTABLES -A allowed -j DROP # здесь открываем некоторые порты, т.к. по умолчанию мы закрыли всё # Слушаем DNS $IPTABLES -A tcp_packets -p TCP -s 0/0 --sport 53 -j ACCEPT # Domain Name Server $IPTABLES -A udp_packets -p UDP -s 0/0 --sport 53 -j ACCEPT # Domain Name Server # Принимаем #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 20 -j ACCEPT # File Transfer [Default Data] #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 20 -j ACCEPT # File Transfer [Default Data] #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 21 -j ACCEPT # File Transfer [Control] #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 21 -j ACCEPT # File Transfer [Control] $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 25 -j ACCEPT # Simple Mail Transfer Protocol $IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 25 -j ACCEPT # Simple Mail Transfer Protocol $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 110 -j ACCEPT # Post Office Protocol - Version 3 $IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 110 -j ACCEPT # Post Office Protocol - Version 3 #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 995 -j ACCEPT # pop3 protocol over TLS/SSL #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 995 -j ACCEPT # pop3 protocol over TLS/SSL #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 143 -j ACCEPT # IMAP2 #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 143 -j ACCEPT # IMAP2 #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m udp --dport 220 -j ACCEPT # IMAP3 #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 220 -j ACCEPT # IMAP3 #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 993 -j ACCEPT # IMAP4 #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 993 -j ACCEPT # IMAP4 $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 80 -j ACCEPT # World Wide Web HTTP $IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 80 -j ACCEPT # World Wide Web HTTP #$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 443 -j ACCEPT # http protocol over TLS/SS #$IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 443 -j ACCEPT # http protocol over TLS/SS $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 5222 -j ACCEPT # Jabber Client Connection $IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 5222 -j ACCEPT # Jabber Client Connection $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --dport 5269 -j ACCEPT # Jabber Server Connection $IPTABLES -A INPUT -i $INET_IFACE -p udp -m udp --dport 5269 -j ACCEPT # Jabber Server Connection #Ну а теперь займёмся организацией выхода в инет определённых категорий юзеров #Админу можно всё ... :) $IPTABLES -t nat -A POSTROUTING -s $ADMIN_IP1 -d ! $LAN/$LAN_MASK -o $INET_IFACE -j SNAT --to-source $INET_IP $IPTABLES -A FORWARD -s $ADMIN_IP1 -d ! $LAN/$LAN_MASK -j ACCEPT #Форвардинг для блатных, когда админ добрый #$IPTABLES -t nat -A POSTROUTING -s $FREE_USER_IP1 -d ! $LAN/$LAN_MASK -o $INET_IFACE -j SNAT --to-source $INET_IP #$IPTABLES -A FORWARD -s $FREE_USER_IP1 -d ! $LAN/$LAN_MASK -j ACCEPT # NAT для программ типа банк-клиент, не желающих работать через прокси-сервер. # Для этих прошрамм нужно у клиента отключить прокси-сервер для ftp. $IPTABLES -t nat -A POSTROUTING -s $BANK_USER_IP1 -d $BANK_IP -o $INET_IFACE -j SNAT --to-source $INET_IP $IPTABLES -A FORWARD -s $BANK_USER_IP1 -d $BANK_IP -j ACCEPT # Принимаем установленное соеденения на $INET_IFACE $IPTABLES -A INPUT -i $INET_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT # Принимаем форвардинг для установленных соединений $IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Пишем лог для входящих соеденений на $INET_IFACE $IPTABLES -A INPUT -i $INET_IFACE -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-option # Пишем лог для исходящих соеденений на $INET_IFACE $IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-option # настал черед ICMP ... # из-за системы видеоконфиренции, использующую icmp, придётся его разрешить, # но ограничем 5-ю пакетами в секунду и максимальным размером в 110 байт $IPTABLES -A INPUT -p icmp -i $INET_IFACE -m limit -m length --limit 5/second --limit-burst 10 --length :110 -j ACCEPT # по поводу отправки будет менее жадны - 10 пакетов в секунду $IPTABLES -A OUTPUT -p icmp -o $INET_IFACE -m limit -m length --limit 10/second --limit-burst 20 --length :110 -j ACCEPT # разводим пакеты по соотв. цепочкам # tcp уходит на доп. проверку $IPTABLES -A INPUT -p tcp -j bad_tcp_packets # все пакеты, относящиеся к уже установленным соединениям (для tcp # из-за отдельной цепочки пришлось это правило еще раз указать выше) $IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets service iptables save -- С уважением Шенцев Алексей Владимирович. E-mail: ashen@nsrz.ru ICQ: 271053845
next prev parent reply other threads:[~2006-07-03 12:08 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-07-03 7:57 "Дворников М.В." 2006-07-03 8:00 ` Serge 2006-07-03 8:03 ` Шенцев Алексей Владимирович 2006-07-03 8:14 ` "Дворников М.В." 2006-07-03 8:16 ` Andrii Dobrovol`s`kii 2006-07-03 8:23 ` "Дворников М.В." 2006-07-03 9:01 ` Andrii Dobrovol`s`kii 2006-07-03 9:09 ` Dmytro O. Redchuk 2006-07-03 8:22 ` Шенцев Алексей Владимирович 2006-07-03 10:47 ` "Дворников М.В." 2006-07-03 10:51 ` Шенцев Алексей Владимирович 2006-07-03 11:23 ` Dmitriy L. Kruglikov 2006-07-03 11:56 ` "Дворников М.В." 2006-07-03 12:08 ` Шенцев Алексей Владимирович [this message] 2006-07-06 7:05 ` "Дворников М.В." 2006-07-06 8:00 ` Шенцев Алексей Владимирович 2006-07-06 8:09 ` Dmitriy L. Kruglikov 2006-07-03 12:16 ` Dmitriy L. Kruglikov 2006-07-03 21:48 ` Lego 2006-07-03 8:28 ` Dmitriy L. Kruglikov 2006-07-06 6:43 ` Maxim Britov 2006-07-06 7:00 ` "Дворников М.В." 2006-07-06 7:07 ` Шенцев Алексей Владимирович 2006-07-06 7:40 ` "Дворников М.В." 2006-07-06 7:44 ` Шенцев Алексей Владимирович
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=200607031608.57303.ashen@nsrz.ru \ --to=ashen@nsrz.ru \ --cc=sysadmins@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux sysadmins discussion This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \ sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com public-inbox-index sysadmins Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sysadmins AGPL code for this site: git clone https://public-inbox.org/public-inbox.git