Przekierowanie ssh
Piotr Pawełek
ppawelek w onet.pl
Wto, 9 Sty 2007, 15:36:24 CET
Sytuacja wygląda tak:
[PLD]
LAN <-- 10.1.1.1(eth0) (eth1)83.12.213.26 <-- [internet]
|
|
10.1.1.254
(tu ssh nasłuchuje na porcie 22)
Nie jestem biegły w iptablesach, więc proszę o ewentualną radę,
bo nijak nie mogę zmusić routerka PLD by forwardował ssh na porcie 22
do lokalnej maszyny 10.0.0.254:22.
Dodam, że na PLD jest również uruchomiona usługa ssh, ale na porcie
2222 i działa jak należy z sieci lokalnej i z zewnątrz.
Z maszyny PLD mogę się bez problemu zalogować po ssh (port 22)
na 10.1.1.254, ale już z zewnątrz sieci lipa.
Inne usługi są przekierowywane i działają, a ssh niestety leży
Forwardig w kernelu ustawiony. Nie widzę już, gdzie może tkwić błąd ?
Wydaje mi się, że polityka łańcuchów jest prawidłowa
dla takiego połączenia, czyli łańcuch FORWAD ma ACCEPT,
w łańcuchu INPUT dozwolone nawiązywanie połączeń na 22
(jak wspomniełem do PLD po porcie 2222 jest OK),
odp. reguła przekierowująca jest
iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 22 \
-j DNAT --to 10.1.1.254:22
a mimo to nie bangla.
Jak to zdiagnozować, czy czegoś nie brakuje ?
Wydaje mi się, że wszystkiego w skrypcie juz próbowałem ...
=================
A to mój rc.firewall
#!/bin/bash
UPLINK="eth1"
ROUTER="yes"
NAT="83.12.213.26"
INTERFACES="lo eth0 eth1"
SERVICES="domain http https ftp smtp rsync 22 2222 63389"
#
if [ "$1" = "start" ]; then
echo "Startowanie Firewall..."
iptables -P INPUT DROP
# Dopuszczenie interfejsow lokalnych
iptables -A INPUT -i ! ${UPLINK} -j ACCEPT
# Utrzymanie zestawionych poł±czeń
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Akceptujemy pakiety ICMP Echo (ping) wchodzace i wychodzace
# Akceptacja odpowiedzi jest realizowana przez modul state RELATED
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# dopuszcza do wybranych serwisów
for x in ${SERVICES}
do
iptables -A INPUT -p tcp --dport ${x} -m state --state NEW \
-j ACCEPT
done
iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with \
tcp-reset
iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with \
icmp-port-unreachable
# Ustawienie prawidlowego mtu
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS \
--clamp-mss-to-pmtu
# wył±czenie ECN (o ile jest)
if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
# wył±czenie spoofowania na wszystkich interfejsach
for x in ${INTERFACES}
do
echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
done
if [ "$ROUTER" = "yes" ]; then
# je¶li jeste¶ ruterem wł±cz IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Załadowanie modułu ¶ledzenia połaczenia ftp
modprobe ip_conntrack_ftp
# Przekierowanie z sieci wewnętrzej(http) na wewnętrzny IP, bo
# po ustawienu DNAT adres zródłowy(zwenetrzny) pozostaje i pakiety
# nie s± kierowane do lokalnego hosta 10.1.1.50, a na adres zewnętrzny
iptables -t nat -A POSTROUTING -o ${UPLINK} -s 10.1.1.0/24 \
-d 83.12.213.26 -p tcp --dport 80 -j SNAT --to 10.1.1.50
# Przekierowanie http
iptables -t nat -A PREROUTING -i ${UPLINK} -p tcp --dport 80 \
-j DNAT --to 10.1.1.50:80
# Przekierowanie na Windows 2003 Server - zdalny pulpit
iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 63389 \
-j DNAT --to 10.1.1.50:3389
# Przekierowanie ssh na portach 22 do 10.1.1.254
iptables -t nat -I PREROUTING -p tcp -i ${UPLINK} --dport 22 \
-j DNAT --to 10.1.1.254:22
#
if [ "$NAT" = "dynamic" ]; then
# dynamiczny IP, użycie maskarady
echo "Wł±czenie maskarady(dynamiczny IP)..."
iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE
elif [ "$NAT" != "" ]; then
# ststyczny IP używa SNAT
echo "Wł±czanie SNAT (statyczny IP)..."
iptables -t nat -A POSTROUTING -o ${UPLINK} -j SNAT --to ${NAT}
#
fi
fi
elif [ "$1" = "stop" ]; then
echo "Zatrzymanie Firewalla..."
iptables -F INPUT
iptables -P INPUT ACCEPT
# wył±czenie NAT/maskarady je¶li jest
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -F FORWARD
fi
# KONIEC =======================
Z góry dzięki za wszelkie podpowiedzi
--
Piotr Pawełek :: ppawelek.SKASUJ (at) USUŃ.onet (dot) pl ::
Więcej informacji o liście dyskusyjnej pld-users-pl