Forwarding portów - Iptables

Serwery i sieci oparte na Slackware, wszelkiego rodzaju usługi, troubleshooting.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
Ciuciu
Administrator
Posty: 921
Rejestracja: 2004-05-26, 21:01
Lokalizacja: 3C17y
Kontakt:

Re: Forwarding portów - Iptables

Post autor: Ciuciu »

To ja się dla odmiany zapytam:
forwarodanie portów tcp i udp w iptables (BEZ zewnętrzych programów) w obie strony...

Większośc zaproponowanych mi przez ludzi rozwiązań robi to tylko w jedną stronę (pakiety nie mogą dojść w drugą.. i w sumie nie wiem czemu)
[color=#888888][i][size=75]Whatever walks in my heart
Will walk alone...[/size][/i][/color]
jezior
Użytkownik
Posty: 20
Rejestracja: 2004-06-02, 10:44

Re: Forwarding portów - Iptables

Post autor: jezior »

hm... A moze tak zapodasz jakies rozwiazanie, ktore nie dziala?
Nie chce dawac Ci nastepnego niedzialajacego rozwiazania ;)
--
jezior
"I znowu k$#%^ nie byłem asertywny!"
Awatar użytkownika
bzyk
Moderator w st. spocz.
Posty: 991
Rejestracja: 2004-06-05, 06:32
Lokalizacja: Pszczyna
Kontakt:

Re: Forwarding portów - Iptables

Post autor: bzyk »

pokaz wynik komendy iptables -L
In /dev/null no one can hear you scream.
Oskar
Użytkownik
Posty: 1
Rejestracja: 2004-06-15, 12:00
Kontakt:

Re: Forwarding portów - Iptables

Post autor: Oskar »

iptables -t nat -A PREROUTING -p tcp -d ZEW_IP --dport 1:65535 -j DNAT --to WEW_IP

Naprzyklad tak.Przyklad nei ejst zly i dziala na 100%.Jesli Ci nie zadziala cos robisz zle.
Awatar użytkownika
Ciuciu
Administrator
Posty: 921
Rejestracja: 2004-05-26, 21:01
Lokalizacja: 3C17y
Kontakt:

Re: Forwarding portów - Iptables

Post autor: Ciuciu »

No więc ja próbowałem wystawić sobie swój ftp na zewnątrz, ustawiłem go na dziwny port:

Kod: Zaznacz cały

[ciuciu:root]:[~]: cat /etc/inetd.conf | grep 9176
9176     stream  tcp     nowait  root    /usr/sbin/tcpd  proftpd
A na serverze dodałem takie linijki:

Kod: Zaznacz cały

iptables -A FORWARD -p tcp -d $EXTIP --dport 9176 -j TCPACCEPT
iptables -A FORWARD -p udp -d $EXTIP --dport 9176 -j TCPACCEPT
iptables -t nat -A PREROUTING -d $EXTIP -p tcp --dport 9176 -j DNAT --to 192.168.0.9
iptables -t nat -A PREROUTING -d $EXTIP -p udp --dport 9176 -j DNAT --to 192.168.0.9
tak wiem, udp nie jest potrzebne, ale to miało pierwotnie co innego robić. teraz: lokalnie na ftp:

Kod: Zaznacz cały

[ciuciu:ciuciu]:[~]: telnet localhost 9176
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [ciuciu]
natomiast z servera:

Kod: Zaznacz cały

[kroofka:root]:[~]: telnet localhost 9176
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
iptables:

Kod: Zaznacz cały

[kroofka:root]:[~]: iptables -L | grep 9176
TCPACCEPT  tcp  --  anywhere             ri170               tcp dpt:9176
TCPACCEPT  udp  --  anywhere             ri170               udp dpt:9176
Ja tego nie rozumiem.. wszyskim działa a mi nie.... gdzieś robię jakiś błąd ? coś trzeba w kenerla wkmpilować czy co?
[color=#888888][i][size=75]Whatever walks in my heart
Will walk alone...[/size][/i][/color]
NIKO
Użytkownik
Posty: 25
Rejestracja: 2004-06-14, 16:07
Lokalizacja: Suwałki

Re: Forwarding portów - Iptables

Post autor: NIKO »

Przede wszystkim do ftpa potrzeba dwóch portów TCP !!

# -- - - -------- FTP forwarding --------- - - --
iptables -I FORWARD -i $EXTIF -o $INTIF -p tcp --dport 4824 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -i $EXTIF -t nat -p tcp -d $EXTIP --dport 4824 -j DNAT --to 192.168.1.24:4824
iptables -I FORWARD -i $EXTIF -o $INTIF -p tcp --dport 4825 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -i $EXTIF -t nat -p tcp -d $EXTIP --dport 4825 -j DNAT --to 192.168.1.24:4825
#- -E-N-D- -

Zostało jeszcze ustawienie zakresu portów na serwerze ftp
np. Serv-U pod winde, dajesz 4824 - 4825
(konkretnie w <<local server>> -> settings -> advanced -> PASV port range)

i działa pięknie w trybie pasywnym w obie strony.

:P
Awatar użytkownika
Ciuciu
Administrator
Posty: 921
Rejestracja: 2004-05-26, 21:01
Lokalizacja: 3C17y
Kontakt:

Re: Forwarding portów - Iptables

Post autor: Ciuciu »

Nawet jeśli porty do przesyłu pasywnego są zablokowane to normalnie można się zalogować (ale już nie listować np)... z tym że ja dostaje connection refused, a to nie powinno tak działać..
[color=#888888][i][size=75]Whatever walks in my heart
Will walk alone...[/size][/i][/color]
Gall
Użytkownik
Posty: 22
Rejestracja: 2004-06-14, 18:29
Lokalizacja: Bytom

Re: Forwarding portów - Iptables

Post autor: Gall »

W kernelu - NAT of local connections
i regułka, żeby serwer mógł się dostać na przeforwardowany port:
iptables -t nat -A OUTPUT -o lo -d adres:port_lokalny -j DNAT --to-destination adres:port_zdalny
Zdaje się jakoś tak powinno być dla konkretnego portu. Używam tego przy SNAT/DNAT IP na inną maszynkę, na której jest serwer poczty, www itd, i działa z serwera, który robi SNAT/DNAT, a nie tylko z zewnątrz.
1973_PL
Użytkownik
Posty: 6
Rejestracja: 2004-06-16, 21:31
Lokalizacja: Szczecin

Firewall z maskaradą (udostępnianie połączenia sieciowego)

Post autor: 1973_PL »

Kod: Zaznacz cały

#!/bin/sh

############################## KONFIGURACJA ###########################

# Dane wyjscia na swiat

INET_IP="192.168.1.1"
INET_IFACE="eth0"
INET_BROADCAST="0.0.0.0"

# Dane sieci wewnetrznej

LAN_IP="192.168.25.1"
LAN_ADMIN_IP="192.168.25.2"
LAN_IP_RANGE="192.168.25.0/24"
LAN_BROADCAST_ADDRESS="192.168.25.255"
LAN_IFACE="eth1"

# Dane localhosta

LO_IFACE="lo"
LO_IP="127.0.0.1"

# Gdzie jest program iptables?

IPTABLES="iptables"

#MAX ilosc polaczen na 1 usluge (bylo 5)
MAX_CON_SERV="10"
#MAX ilosc polaczen wszystkich na 1 IP w LANie
MAX_CON="20"

################################# MODULY ############################

# Moduly do zaladowania - nic nie trzeba ladowac bo wsio wkompilowane w kernel

# /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_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

############################# LANCUCHY ###########################

# Podstawowe zasady dla lancuchow

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

# Tworzymy lancuch dla zlych pakietow TCP

$IPTABLES -N bad_tcp_packets

# Tworzymy lancuch dla zablokowanych hostow

$IPTABLES -N blocked_ips

# Tworzymy oddzielne lancuchy dla ICMP, TCP i UDP

$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets



######################### blocked_ips ########################

# Lancuch zablokowanych hostow (blokada na input)

#$IPTABLES -A blocked_ips -s z.z.z.z -j DROP



######################### bad_tcp_packets #####################

# Lancuch zlych pakietow TCP

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP



############################## allowed #############################

# Dozwolone pakiety TCP

$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




############################ tcp_packets ########################

# Ograniczenie liczby polaczen z jednego IP z zewnatrz do 5 jednoczesnie
# dla WWW i FTP
#!!!
#$IPTABLES -A tcp_packets -p TCP -i $INET_IFACE -s 0/0 --dport 21 --syn -m connlimit --connlimit-above $MAX_CON_SERV -j DROP
#$IPTABLES -A tcp_packets -p TCP -i $INET_IFACE -s 0/0 --dport 80 --syn -m connlimit --connlimit-above $MAX_CON_SERV -j DROP

# Ograniczenie liczby polaczen z jednego IP z zewnatrz do 50 jednoczesnie
# dla innych uslug
#!!
#$IPTABLES -A tcp_packets -p TCP -i $INET_IFACE -s 0/0 --syn -m connlimit --connlimit-above $MAX_CON -j DROP

# Otwarte porty TCP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --sport 20 --dport 1024:65000 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 119 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 143 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 389 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 443 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 8074 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 2002 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 4025 -j allowed

#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 4661 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 4662 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 8767 -j allowed
#vpn
#$IPTABLES -A tcp_packets -p TCP --dport 1723 -j allowed
#$IPTABLES -A tcp_packets -p 47  -j allowed

############################# udp_packets ###########################

# Otwarte porty UDP

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 8767 -j ACCEPT

#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4665 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4672 -j ACCEPT

# Nie logowac broadcastow MS

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST --destination-port 135:139 -j DROP

# Nie logowac requestow DHCP

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP



############################## icmp_packets ###########################

# Otwarte ICMP

$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



######################## INPUT CHAIN #########################

# Zablokowane IP-ki

$IPTABLES -A INPUT -j blocked_ips

# Zle pakiety TCP

$IPTABLES -A INPUT -p TCP -j bad_tcp_packets

# Siec wewnetrzna

$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 ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT

# Requesty DHCP z wewnatrz LANU

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

# Pakiety przychodzace z netu

$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

# Nie logowac multicastow

$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP




######################### FORWARD CHAIN ######################

# Zle pakiety TCP

$IPTABLES -A FORWARD -p TCP -j bad_tcp_packets

# Pakiety do port-forwardowania (patrz: prerouting)

$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 2555 -j allowed
#$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 4661 -j allowed
$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 2555 -j allowed

#$IPTABLES -A FORWARD -p UDP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 411 -j ACCEPT
#$IPTABLES -A FORWARD -p UDP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 4665 -j ACCEPT
#$IPTABLES -A FORWARD -p UDP -i $INET_IFACE -o $LAN_IFACE -d $LAN_ADMIN_IP --dport 4672 -j ACCEPT

# Ograniczenie liczby polaczen z sieci lokalnej do netu do 50

#$IPTABLES -A FORWARD -p TCP -i $LAN_IFACE --syn -m connlimit --connlimit-above $MAX_CON -j DROP

# Pakiety do forwardowania z LAN-u do netu

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT




####################### OUTPUT CHAIN #######################

# Zle pakiety TCP

$IPTABLES -A OUTPUT -p TCP -j bad_tcp_packets

# Pakiety ktore wypuszczamy

$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



########################### PREROUTING ########################

# port forward

$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $INET_IP --dport 2555 -j DNAT --to-destination $LAN_ADMIN_IP
$IPTABLES -t nat -A PREROUTING -p UDP -i $INET_IFACE -d $INET_IP --dport 2555 -j DNAT --to-destination $LAN_ADMIN_IP
#$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $INET_IP --dport 4661 -j DNAT --to-destination $LAN_ADMIN_IP
#$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $INET_IP --dport 4662 -j DNAT --to-destination $LAN_ADMIN_IP
#$IPTABLES -t nat -A PREROUTING -p UDP -i $INET_IFACE -d $INET_IP --dport 4665 -j DNAT --to-destination $LAN_ADMIN_IP
#$IPTABLES -t nat -A PREROUTING -p UDP -i $INET_IFACE -d $INET_IP --dport 4672 -j DNAT --to-destination $LAN_ADMIN_IP
#nieplacacy
#$IPTABLES -t nat -A PREROUTING -s 192.168.0.6 -d ! 80.55.145.210 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.1:211
#$IPTABLES -t nat -A PREROUTING -s 192.168.0.16 -d ! 80.55.145.210 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.1:211
#$IPTABLES -t nat -A PREROUTING -s 192.168.0.11 -d ! 80.55.145.210 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.1:211
#$IPTABLES -t nat -A PREROUTING -s 192.168.0.15 -d ! 80.55.145.OC210 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.1:211

# znakowanie pakietow do htb -NIEUZYWANE!!!

# znakowanie ICMP
#$IPTABLES -t mangle -A PREROUTING -p ICMP -j MARK --set-mark 0x1
#$IPTABLES -t mangle -A PREROUTING -p ICMP -j RETURN

# znakowanie SSH
#$IPTABLES -t mangle -A PREROUTING -p TCP -m tcp --dport 22 -j MARK --set-mark 0x2
#$IPTABLES -t mangle -A PREROUTING -p TCP -m tcp --dport 22 -j RETURN

# znakowanie pakietow TCP zaczynajacych sesje
#$IPTABLES -t mangle -A PREROUTING -p TCP -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
#$IPTABLES -t mangle -A PREROUTING -p TCP -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN

# znakowanie pozostalych pakietow
#$IPTABLES -t mangle -A PREROUTING -j MARK --set-mark 0x9
########################## POSTROUTING ########################

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
wystarczy zapisać w plilu

Kod: Zaznacz cały

/etc/rc.d/rc.firewall
należy tylko dostosować sobie:

Kod: Zaznacz cały

# Dane wyjscia na swiat

INET_IP="192.168.1.1"
INET_IFACE="eth0"
INET_BROADCAST="0.0.0.0"

# Dane sieci wewnetrznej

LAN_IP="192.168.25.1"
LAN_ADMIN_IP="192.168.25.2"
LAN_IP_RANGE="192.168.25.0/24"
LAN_BROADCAST_ADDRESS="192.168.25.255"
LAN_IFACE="eth1"
W powyższym przykładzie IP karty sieciowej od strony Internetu to 192.168.1.1 a od strony sieci lokalnej to 192.168.25.1. Reszta w powyższym opisie. Skrypt nie jest mój. Pochodzi z sieci (a dostałem go od znajomego administratora) i przeszedł kilka modyfikacji (w tym i moje zmiany w udostępnianych portach).
-------------------------------------------------
K jak kajak...
kanedaaa
Użytkownik
Posty: 4
Rejestracja: 2004-07-06, 10:43

Re: Forwarding portów - Iptables

Post autor: kanedaaa »

Wedlug mnie winne jest to, ze probojesz sie laczysz na interfejs po Loopbacku i wtedy nie wchodzisz w regulki preroutingow. Sprobj sie polaczyc na ten port z zewnetrznego adresu IP i sprawdz wtedy...

kanedaaa
ODPOWIEDZ