Вы здесь

Пробрасывание SSH порта средствами iptables

Здравствуйте!
Уважаемые гуру прошу Вашей помощи, так как самому разобраться нет возможности и изучить мануалы по IPtables за 1 день нет времени:).

Что есть:

1) Есть установленный шлюз (192.168.0.1) на котором поднята служба SSH и на которую без проблем можно войти извне.
2) Внутри сети есть подсеть и в ней комп с IP: 192.168.15.10 на котором также поднята служба SSH
3) Есть прокси сервер, который используется как биллинговая система для подсчета использованного пользователями трафика и весь трафик идет соответственно через порт прокси (3128)

Вот Иptables правила:
-------------------------------------------------- -------------------------------------------------- ------------
#! / bin / bash
iptables-F
iptables-t nat-F

iptables-P INPUT ACCEPT
iptables-P OUTPUT ACCEPT
iptables-P FORWARD DROP

export LAN = eth1
export WAN = eth0

iptables-I FORWARD-i eth1-d 192.168.15.0/255.255.255.0-j DROP
iptables-A FORWARD-i eth1-s 192.168.15.0/255.255.255.0-j ACCEPT
iptables-A FORWARD-i eth0-d 0.0.0.0/0.0.0.0-j ACCEPT

iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE

iptables-t nat-A PREROUTING-i eth1-p tcp - dport 80-j REDIRECT - to-port 3128

# drop torrent
iptables-A INPUT-p tcp - destination-port 6881:6999-j DROP
iptables-A OUTPUT-p tcp - destination-port 6881:6999-j DROP

# drop trojan port
iptables-A FORWARD-p udp - sport 16355-j DROP
iptables-A FORWARD-p udp - sport 21111-j DROP

# Protect from syn attack
iptables-A INPUT-p tcp - tcp-flags SYN, ACK SYN, ACK-m state - state NEW-j REJECT - reject-with tcp-reset
iptables-A INPUT-p tcp! - syn-m state - state NEW-j DROP
iptables-A INPUT-p tcp - tcp-flags SYN, ACK, FIN SYN-i eth0-m state - state NEW-m limit - limit 30/second - limit-burst 30-j RETURN
iptables-A INPUT-p tcp - tcp-flags SYN, ACK, FIN SYN-i eth0-m state - state NEW-j DROP

echo 1> / proc/sys/net/ipv4/ip_forward
for f in / proc/sys/net/ipv4/conf / * / rp_filter; do echo 1> $ f; done

/ etc / init.d / iptables save
iptables-L-v

Ifconfig
-------------------------------------------------- --------------------------------------
eth0 Link encap: Ethernet HWaddr 00:1 b: 21:10:53: e3
inet addr: 192.168.0.1 Bcast: 192.168.0.255 Mask: 255.255.255.0
inet6 addr: fe80:: 21b: 21ff: fe10: 53e3/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 12334550 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 10321568 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 100
RX bytes: 3775764211 (3.5 GiB) TX bytes: 1382854938 (1.2 GiB)

eth1 Link encap: Ethernet HWaddr 00:1 d: 60:43: c9: 4f
inet addr: 192.168.15.254 Bcast: 192.168.15.255 Mask: 255.255.255.0
inet6 addr: fe80:: 21d: 60ff: fe43: c94f/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 18049107 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 17656581 errors: 0 dropped: 0 overruns: 0 carrier: 1
collisions: 0 txqueuelen: 1000
RX bytes: 2026352521 (1.8 GiB) TX bytes: 1734602717 (1.6 GiB)

lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
inet6 addr::: 1 / 128 Scope: Host
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 244733 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 244733 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 0
RX bytes: 85991772 (82.0 MiB) TX bytes: 85991772 (82.0 MiB)

Что надо:

Надо чтобы я извне мог войти на ssh внутренней машины (192.168.15.10) введя например IP машины и указанный порт:
Например ssh

-p 2013

Просьба не отвечать на вопрос ответами типа:
1) Читай мануалы
2) поищи в Google
3) поищи на форуме
3) ... И все в таком духе, настоящих "линукс гуру";)

Большое спасибо.

man iptables часть про DNAT - там всё просто.
Или вы хотите конкретное правило получить? так лучше один раз самому разобраться.

Сказать читай мануалы всегда проще, чем дать полезный совет или просто ответить на вопрос. Раз все просто помогите. Напишите правило. Пожалуйста.

С каждого форума по строчке, так получился Ваш "Иptables" скрипт?

вникнуть в структуру вашей сети гораздо сложнее посторонним людям, вам так не кажется? а изучать правила iptables все равно придется так или иначе, это факт. так что воспользуйтесь советом про man и почитайте секцию DNAT, на худой конец(если плохо с английским) - http://www.opennet.ru/docs/RUS/iptables
Там руководство, по-русски.

Нейтральность - высшее достижение сознания!

Мне кажется что если я незнаю ответ на вопрос и не могу или не хочу понять структуру сети то лучше помолчать. Если бы я имел время изучать IPtables то я бы не писал на этом форуме.

Пожалуйста, не можете дать ответ то не пишите. Не тратьте зря Вашего и моего времени, или написав "читай мануалы" Вы становитесь умнее?

Вам на (free/web)lancer.(com/ru/xxx) или цену вопроса в личку ;)

И сколько будет стоить ответ?

На самом деле ваш вопрос описано в примере в указанном выше руководстве. Если бы вы хотябы заглянули туда, ушло бы меньше времени, чем разводить этот флейм.
P.S.
iptables -t nat -A PREROUTING --dst $EXTERNAL_IP -p tcp --dport 10000 -j DNAT --to-destination $LOCAL_SSH_HOST:22

вот и надо было таки убедить человека заглянуть в ман, я ведь даже указал какой именно раздел читать)))

Большое спасибо, за ответ. Хоть один человек все же сделал попытку помочь. Спасибо Вам. Но вот я написал:
iptables -t nat -A PREROUTING --dst [myip.xxx.xxx.xxx] -p tcp --dport 9000 -j DNAT --to-destination 192.168.15.10:22

И пытаюсь подключиться из своего офиса к серверу:
vasyl@mserver ~ $ ssh root@[serverip.xxx.xxx.xxx] -p 9000
ssh: connect to host [serverip.xxx.xxx.xxx] port 9000: Connection refused

Подскажите, пожалуйста, в чем проблема

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

Вы меня неправильно поняли, у нас офис а вот сервер находится у клиента.

Я как раз то и делаю, читаю мануалы, именно там где Вы и указали.
Я уже по всякому пробую но получаю "Connection refused"

Извините за продолжения флэйма, но вам не кажется что место этому топику в коммерческом разделе т.к. это конкретное ТЗ:

mayvas написал:
Надо чтобы я извне мог войти на ssh внутренней машины (192.168.15.10) введя например IP машины и указанный порт:
Например ssh

-p 2013

mayvas написал:
самому разобраться нет возможности и изучить мануалы по IPtables за 1 день нет времени:).

mayvas написал:
Просьба не отвечать на вопрос ответами типа:
1) Читай мануалы
2) поищи в Google
3) поищи на форуме
3) ... И все в таком духе, настоящих "линукс гуру";)

mayvas написал:
у нас офис а вот сервер находится у клиента

mayvas написал:
Раз все просто помогите. Напишите правило.

Я один здесь считаю, что помочь != сделать что-то за кого-то?

[myip.xxx.xxx.xxx] и [serverip.xxx.xxx.xxx] разные?

Если у вас нет времени изучать то, с чем вы работаете, то, простите, как вы тогда работаете? Если вы не понимаете как вы что-то делаете, то, простите, КАК вы это делаете?

P.S. И, как уже указали выше, ответ на ваш вопрос был в мане. Там рассмотрена практически такая же схема. Если вы еще что-то недопоняли - выложите куда-нибудь ваш конфиг iptables, я попробую разобраться(но ничего не обещаю)

Нейтральность - высшее достижение сознания!

mayvas написал:
Здравствуйте!
Уважаемые гуру прошу Вашей помощи, так как самому разобраться нет возможности и изучить мануалы по IPtables за 1 день нет времени:).

Что есть:

1) Есть установленный шлюз (192.168.0.1) на котором поднята служба SSH и на которую без проблем можно войти извне.
2) Внутри сети есть подсеть и в ней комп с IP: 192.168.15.10 на котором также поднята служба SSH

.......................

Что надо:

Надо чтобы я извне мог войти на ssh внутренней машины (192.168.15.10) введя например IP машины и указанный порт:
Например ssh

-p 2013

......................
Большое спасибо.

А может "не надо".....? Из (1) и (2) следует, что можно зайти на шлюз, а с него зайти на 192.168.15.10, нет?
Или всё же хотите научиться? ;)

iptables -A PREROUTING --dst внешний_айпи_к_котором_коннектимся_по_ssh -p tcp --dport порт_на_внешнем_айпи_к_которому_коннектимся_по_ssh -j DNAT --to-destination внутренний_айпи_на_который_нужно_пробросить_коннект_по_ssh:порт_на_котором_слушает_sshd -t nat

примерно так