The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"помогите настроить редирект в iptables"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"помогите настроить редирект в iptables"  
Сообщение от panas (ok) on 23-Дек-08, 16:30 
День добрый!
не ругайте, прочитал все что нашел в форуме по настройке iptables и проброса  портов, но ничего не получилось...
задача предоставить доступ на терминальный сервер внутри сети с инета.. на роутере  стоит debian
прочитав "Руководства по iptables (Iptables Tutorial 1.1.19)" и взяв за основу rc.firewall с него же, получил такой скрипт:

    INET_IP="192.168.1.2"
    INET_IFACE="eth1"
    INET_BROADCAST="192.168.1.255"
    
    LAN_IP="192.168.0.81"
    LAN_IP_RANGE="192.168.0.0/24"
    LAN_IFACE="eth0"
    
    LO_IFACE="lo"
    LO_IP="127.0.0.1"

    IP_ADR="192.168.0.132 192.168.0.191"
    
    IPTABLES="/sbin/iptables"
    
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -X
    $IPTABLES -t nat -X
    
    /sbin/depmod -a
    /sbin/modprobe ip_tables
    /sbin/modprobe ip_conntrack
    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_mangle
    /sbin/modprobe iptable_nat
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_limit
    /sbin/modprobe ipt_state
    /sbin/modprobe ipt_REJECT
    #/sbin/modprobe ip_conntrack_ftp
    #/sbin/modprobe ip_nat_ftp

    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD DROP
    
    $IPTABLES -N bad_tcp_packets
    $IPTABLES -N allowed
    $IPTABLES -N tcp_packets
    $IPTABLES -N udp_packets
    $IPTABLES -N icmp_packets
    
    $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
    $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
    $IPTABLES -A bad_tcp_packets -p tcp ! --syn -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 -p TCP -j DROP
    
    #$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3389 -j allowed
    
    $IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
    $IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST --destination-port 135:139 -j DROP  
    $IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP          

    $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
    $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
    
    $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
    $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
    $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
    $IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
    $IPTABLES -A INPUT -p ALL -d $INET_IP -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
    $IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP
    $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
    
    $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
    for i in $IP_ADR
    do
    #$IPTABLES -A FORWARD -p tcp --dport 21 -i $LAN_IFACE -s $i -j ACCEPT
    #$IPTABLES -A FORWARD -p tcp --dport 80 -i $LAN_IFACE -j ACCEPT #что бы через прокси ходили
    $IPTABLES -A FORWARD -p tcp --dport 995 -i $LAN_IFACE -s $i -j ACCEPT  
    $IPTABLES -A FORWARD -p tcp --dport 110 -i $LAN_IFACE -s $i -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 25 -i $LAN_IFACE -s $i -j ACCEPT
    done
    $IPTABLES -A FORWARD -p udp --dport 53 -i $LAN_IFACE -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "
    
    $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
    
    $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
    $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
    $IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
    $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

    $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
    echo "1" > /proc/sys/net/ipv4/ip_forward

для проброса порта добавляю следующие правила:
$IPTABLES -t nat -A PREROUTING -d $INET_IP -s X.X.X.X -p tcp -m tcp --dport 3389 -j DNAT --to-destination $192.168.0.100:3389
$IPTABLES -t nat -A POSTROUTING -d $192.168.0.100 -p tcp -m tcp --dport 3389 -j SNAT --to-source $INET_IP
$IPTABLES -A FORWARD -d $192.168.0.100 -p tcp -m tcp --dport 3389 -m state --state NEW -j ACCEPT

router:/etc/init.d# iptables-save
# Generated by iptables-save v1.3.6 on Tue Dec 23 16:09:44 2008
*mangle
:PREROUTING ACCEPT [367658:176117167]
:INPUT ACCEPT [212949:33807366]
:FORWARD ACCEPT [154391:142244413]
:OUTPUT ACCEPT [198441:21735236]
:POSTROUTING ACCEPT [347980:163677267]
COMMIT
# Completed on Tue Dec 23 16:09:44 2008
# Generated by iptables-save v1.3.6 on Tue Dec 23 16:09:44 2008
*nat
:PREROUTING ACCEPT [5664:677274]
:POSTROUTING ACCEPT [91:11582]
:OUTPUT ACCEPT [3061:198654]
-A PREROUTING -s 192.168.1.132 -d 192.168.1.2 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100:3389
-A POSTROUTING -d 192.168.0.100 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.2
-A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.2
COMMIT
# Completed on Tue Dec 23 16:09:44 2008
# Generated by iptables-save v1.3.6 on Tue Dec 23 16:09:44 2008
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [241:15324]
:allowed - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_packets - [0:0]
:udp_packets - [0:0]
-A INPUT -p tcp -j bad_tcp_packets
-A INPUT -s 192.168.0.0/255.255.255.0 -i eth0 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.0.81 -i lo -j ACCEPT
-A INPUT -s 192.168.1.2 -i lo -j ACCEPT
-A INPUT -d 192.168.1.2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -p tcp -j tcp_packets
-A INPUT -i eth1 -p udp -j udp_packets
-A INPUT -i eth1 -p icmp -j icmp_packets
-A INPUT -d 224.0.0.0/255.0.0.0 -i eth1 -j DROP
-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT INPUT packet died: " --log-level 7
-A FORWARD -p tcp -j bad_tcp_packets
-A FORWARD -d 192.168.0.100 -p tcp -m tcp --dport 3389 -m state --state NEW -j ACCEPT
-A FORWARD -s 192.168.0.132 -i eth0 -p tcp -m tcp --dport 995 -j ACCEPT
-A FORWARD -s 192.168.0.132 -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -s 192.168.0.132 -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -s 192.168.0.191 -i eth0 -p tcp -m tcp --dport 995 -j ACCEPT
-A FORWARD -s 192.168.0.191 -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -s 192.168.0.191 -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -i eth0 -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT FORWARD packet died: " --log-level 7
-A OUTPUT -p tcp -j bad_tcp_packets
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.0.81 -j ACCEPT
-A OUTPUT -s 192.168.1.2 -j ACCEPT
-A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT OUTPUT packet died: " --log-level 7
-A allowed -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn:"
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A udp_packets -p udp -m udp --dport 123 -j ACCEPT
-A udp_packets -d 192.168.1.255 -i eth1 -p udp -m udp --dport 135:139 -j DROP
-A udp_packets -d 255.255.255.255 -i eth1 -p udp -m udp --dport 67:68 -j DROP
COMMIT
# Completed on Tue Dec 23 16:09:44 2008

подключиться не удается, tcpdump выдает:
IP 192.168.1.132.2397 > 192.168.1.2.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.1.2.2397 > 192.168.0.100.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.0.100.3389 > 192.168.1.2.2397: S 424898435:424898435(0) ack 2112752088 win 17520 <mss 1460>
IP 192.168.0.100.3389 > 192.168.1.2.2397: S 424898435:424898435(0) ack 2112752088 win 17520 <mss 1460>
IP 192.168.1.132.2397 > 192.168.1.2.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.1.2.2397 > 192.168.0.100.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.0.100.3389 > 192.168.1.2.2397: . ack 1 win 17520                                                                                  
IP 192.168.0.100.3389 > 192.168.1.2.2397: S 424898435:424898435(0) ack 2112752088 win 17520 <mss 1460>
IP 192.168.1.132.2397 > 192.168.1.2.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.1.2.2397 > 192.168.0.100.3389: S 2112752087:2112752087(0) win 8760 <mss 1460>                          
IP 192.168.0.100.3389 > 192.168.1.2.2397: . ack 1 win 17520    

а если пишу так:
    $IPTABLES -t nat -A POSTROUTING -d $192.168.0.100 -o $INET_IFACE -p tcp -m tcp --dport 3389 -j SNAT --to-source $INET_IP        
снова подключение не происходит, а tcpdump выдает:
IP 192.168.1.132.2403 > 192.168.1.2.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                                  
IP 192.168.1.132.2403 > 192.168.0.100.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                              
IP 192.168.0.100.3389 > 192.168.1.132.2403: S 2492537059:2492537059(0) ack 1215192329 win 17520 <mss 1460>
IP 192.168.0.100.3389 > 192.168.1.132.2403: S 2492537059:2492537059(0) ack 1215192329 win 17520 <mss 1460>
IP 192.168.1.132.2403 > 192.168.1.2.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                                  
IP 192.168.1.132.2403 > 192.168.0.100.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                              
IP 192.168.0.100.3389 > 192.168.1.132.2403: . ack 1 win 17520                                                                                      
IP 192.168.1.132.2403 > 192.168.1.2.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                                  
IP 192.168.1.132.2403 > 192.168.0.100.3389: S 1215192328:1215192328(0) win 8760 <mss 1460>                              
IP 192.168.0.100.3389 > 192.168.1.132.2403: . ack 1 win 17520                                                                                      
IP 192.168.0.100.3389 > 192.168.1.132.2403: S 2492537059:2492537059(0) ack 1215192329 win 17520 <mss 1460>                

понимаю что упустил где-то что-то, но вот где и что никак не соображу...
решил даже было плюнуть на все и воспользоваться simpleproxy, но если я подключаюсь по внутреннему IP (192.168.0.81), проброс на 192.168.0.100 происходит, если на внешний (192.168.1.2) - никак не хочет...        

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "помогите настроить редирект в iptables"  
Сообщение от velizarov email on 23-Дек-08, 17:04 
при использование политики DROP нужны вот такие правила:


$IPT -A FORWARD -d внешний_ip_роутера -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT

$IPT -A FORWARD -s локальный_ip_машина_куда_пробрасываем -i eth1 -p tcp -m tcp --sport 3389 -j ACCEPT

$IPT -t nat -A PREROUTING -d внешний_ip_роутера -i eth0 -p tcp -m tcp --sport 1024:65535
--dport 3389 -j DNAT --to-destination локальный_ip_машины_куда_пробрасываем

$IPT -t nat -A POSTROUTING -d локальный_ip_машина_куда_пробрасываем -o eth1 -p tcp -m tcp --dport 3389 -j SNAT --to-source $INET_IP

$IPT=iptables

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "помогите настроить редирект в iptables"  
Сообщение от panas (ok) on 24-Дек-08, 12:00 
не соединяется :(
поставил правила:
$IPTABLES -A FORWARD -d $INET_IP -p tcp -m tcp --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -s $TRM_IP -p tcp -m tcp --sport 3389 -j ACCEPT

$IPTABLES -t nat -A PREROUTING -d $INET_IP -i $INET_IFACE -p tcp -m tcp --sport 1024:65535 --dport 3389 -j DNAT --to-destination $TRM_IP

$IPTABLES -t nat -A POSTROUTING -d $TRM_IP -o $INET_IFACE -p tcp -m tcp --dport 3389 -j SNAT --to-source $INET_IP

tcpdump пишет что:
IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>
IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>
IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>

что т я совсем запутался :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "помогите настроить редирект в iptables"  
Сообщение от reader (ok) on 24-Дек-08, 13:33 
>[оверквотинг удален]
>ACCEPT
>$IPTABLES -A FORWARD -s $TRM_IP -p tcp -m tcp --sport 3389 -j
>ACCEPT
>
>$IPTABLES -t nat -A PREROUTING -d $INET_IP -i $INET_IFACE -p tcp -m
>tcp --sport 1024:65535 --dport 3389 -j DNAT --to-destination $TRM_IP
>
>$IPTABLES -t nat -A POSTROUTING -d $TRM_IP -o $INET_IFACE -p tcp -m
>tcp --dport 3389 -j SNAT --to-source $INET_IP
>

пакет на 192.168.0.100 будет уходить через LAN_IFACE , а не INET_IFACE, если конечно не замутили хитрый маршрут, хотя судя по первому дампу пакеты на 192.168.0.100 уходили и возвращались , а вот на 192.168.1.132 их не отдавали, почему не знаю, посмотрите что попадает в лог iptables.  
так же не пойму , почему вы усердно пакеты идущие на 192.168.0.100 маскируете адресом 192.168.1.2 , а не 192.168.0.81 и вообще зачем их маскировать.
>tcpdump пишет что:
>IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>
>IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>
>IP 192.168.1.132.1420 > 192.168.1.2.3389: S 4142642958:4142642958(0) win 8760 <mss 1460>
>
>что т я совсем запутался :(

попробуйте упростить по максимуму правила и добейтесь работы, а потом будете наворачивать правила.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "помогите настроить редирект в iptables"  
Сообщение от panas (ok) on 25-Дек-08, 15:29 
всем спасибо огромное, сделал как посоветовал reader, т.е. все разрешил и начал потихоньку закрывать... и заработало :D
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру