ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
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

  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