Все привет, тем таких уже было полно но сильно не пинайте, ни как не могу разобраться хоть убейте, прочитав руководство http://www.opennet.ru/docs/RUS/iptables/ еще сильнее запутался, прощу разъяснить некоторые моменты,
Ушел админ и все свое добро оставил мне, я с iptables вообще ноль, что меня интересует счас,,
Что имеем сервак с iptables. 2 интерфейся(инет и локалка)
Мне нужно открыть 20,21 порт на вход и выход для банк клиента, что нашел в сети:
$ipt -A INPUT -i $EXTIF -p tcp --dport 21 -j ACCEPT
$ipt -A INPUT -i $EXTIF -p tcp --dport 20 -j ACCEPT
где $EXTIF смотрит в мир
Я так понимаю это мы открыли порты на вход, а вот на выход я так и не понял что прописать,,,
Я так подозреваю что нужно еще и с сервака как то перенаправить их на тачку на которой установлен Банк Клиент,,,
Прощу помощи как это все реализовать.
Заранее всем спасибо.
Iptables Открытие портов.
Модераторы: SLEDopit, Модераторы разделов
-
arkhnchul
- Сообщения: 2284
- Статус: Толчковый инженер
- ОС: Debian, Fedora
Re: Iptables Открытие портов.
телепатия: вам надо, чтобы 20 и 21 порты были проброшены до машины буха из внешки (21 и 20 - ftp для банк клиента? wtf?!)
тогда примерно так:
iptables -t filter -A FORWARD -d ip_буха -p tcp -m multiport -dports 20,21 -j ACCEPT
iptables -t filter -A FORWARD -s ip_буха -p tcp -m multiport -dports 20,21 -j ACCEPT
iptables -t nat -A PREROUTING -s ip_сервака_банка -p tcp -m multiport -dports 20,21 -j DNAT --to-destination ip_буха
как-то в оном направлении... а вообще напишите подробнее.
тогда примерно так:
iptables -t filter -A FORWARD -d ip_буха -p tcp -m multiport -dports 20,21 -j ACCEPT
iptables -t filter -A FORWARD -s ip_буха -p tcp -m multiport -dports 20,21 -j ACCEPT
iptables -t nat -A PREROUTING -s ip_сервака_банка -p tcp -m multiport -dports 20,21 -j DNAT --to-destination ip_буха
как-то в оном направлении... а вообще напишите подробнее.
Losing is fun!
-
alexcandr
- Сообщения: 157
- ОС: CentOS 5.3
Re: Iptables Открытие портов.
Подробнее
Значит что имеется
Сервер CentOS Iptables. на нем 2 интерфейса(eth0-смотрит в мир, eth1-локалка) инет раздается через squid.
Есть прога у буха, она работае через модем и по инету, надо сделать что б она работала через инет, в проги поддержки прокси нет,
поэтому нужно открыть порты по которым она работает, а это 20 и 21 порт,,,
На серваке проверил 21 порт открыт из вне к серваку, а вот из локалки во внешний мир закрыт,,,,Вот вроде бы и все
Значит что имеется
Сервер CentOS Iptables. на нем 2 интерфейса(eth0-смотрит в мир, eth1-локалка) инет раздается через squid.
Есть прога у буха, она работае через модем и по инету, надо сделать что б она работала через инет, в проги поддержки прокси нет,
поэтому нужно открыть порты по которым она работает, а это 20 и 21 порт,,,
На серваке проверил 21 порт открыт из вне к серваку, а вот из локалки во внешний мир закрыт,,,,Вот вроде бы и все
-
arkhnchul
- Сообщения: 2284
- Статус: Толчковый инженер
- ОС: Debian, Fedora
Re: Iptables Открытие портов.
закрыт - в смысле запрещен в filter или не натится в nat-е?
Losing is fun!
-
yamah
- Сообщения: 1116
- ОС: Rosa Fresh, Debian, RELS
Re: Iptables Открытие портов.
Решил не плодить темы.
Митуация. Есть компьютер с ASPLinux 11, работающий в качестве прокси. Пока сидели за шлюзом. Больших проблем не было.
Сейчас этот комп нужно настроить до уровня шлюза.
В принципе, он уже работает. Но нужно ввести ограничения:
0. Доступ из инета запретить нафик, кроме 22-го порта.
1. WEB-трафик только через прокси.
2. Доступ к электронной почте на сервере провайдера и Яндек.Ру (и, возможно, на сервере хостера сайта).
3. Разрешить из локалки и шлюза эхо-запросы, трассеровки маршерута, выяснения информации о домене (whois).
4. Свободный доступ админам из внутренней сети.
5. Доступ ко всем ресурсам шлюза из локалки.
6. Остальное закрыть наф.
Реализация IPTABLES. Все бы хорошо, но вовремя дальнейшей настройки какое-то правило отрубает доступ к шлюзу со всех хостов, включая локалку.
Собственно вопросы:
Где я накосячил, что у меня отваливается доступ к машине?
Как заставить работать из локалки traceroute, ping, whois?
На конструкцию
Шлюз ругается.
Что здесь нужно сделать?
Митуация. Есть компьютер с ASPLinux 11, работающий в качестве прокси. Пока сидели за шлюзом. Больших проблем не было.
Сейчас этот комп нужно настроить до уровня шлюза.
В принципе, он уже работает. Но нужно ввести ограничения:
0. Доступ из инета запретить нафик, кроме 22-го порта.
1. WEB-трафик только через прокси.
2. Доступ к электронной почте на сервере провайдера и Яндек.Ру (и, возможно, на сервере хостера сайта).
3. Разрешить из локалки и шлюза эхо-запросы, трассеровки маршерута, выяснения информации о домене (whois).
4. Свободный доступ админам из внутренней сети.
5. Доступ ко всем ресурсам шлюза из локалки.
6. Остальное закрыть наф.
Реализация IPTABLES. Все бы хорошо, но вовремя дальнейшей настройки какое-то правило отрубает доступ к шлюзу со всех хостов, включая локалку.
Код: Выделить всё
#!/bin/sh
IPT="iptables"
INET="eth1"
NET="eth0"
NET_NET="192.168.0.0/24"
INETIP="X.X.X.X"
LANIP="192.168.0.100"
ELCOM_SMTP="80.247.96.232"
ELCOM_POP="80.247.96.232"
YELCOM_SMTP="77.88.21.25"
YELCOM_POP="77.88.21.25"
UNPRIVPORTS="1024:65535"
DNS_SERVER1="80.247.96.65"
DNS_SERVER2="80.247.96.65"
SYSADMIN="192.168.0.1"
SYSADMIN2="192.168.0.2"
SERVER="192.168.0.100"
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t mangle -F
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
iptables -A INPUT -d $INETIP -p TCP --dport 22 -j ACCEPT
iptables -A OUTPUT -d $INETIP -p udp --sport 22 -j ACCEPT
iptables -A INPUT -s $NET_NET -p TCP -d $LANIP -m multiport --dport 20:10000 -j ACCEPT
iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED --sport 53 -j ACCEPT
iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED --sport 53 -j ACCEPT
iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT
iptables -A FORWARD -p UDP -s $DNS_SERVER1 -d $NET_NET --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT
iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT
iptables -A FORWARD -p UDP -s $DNS_SERVER2 -d $NET_NET --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT
iptables -A FORWARD -s $NET_NET -d $ELCOM_POP -p TCP --dport 110 -j ACCEPT
iptables -A FORWARD -s $NET_NET -d $ELCOM_SMTP -p TCP --dport 25 -j ACCEPT
iptables -A FORWARD -s $NET_NET -d $YELCOM_POP -p TCP --dport 110 -j ACCEPT
iptables -A FORWARD -s $NET_NET -d $YELCOM_SMTP -p TCP --dport 25 -j ACCEPT
iptables -A FORWARD -p TCP -m state --state ESTABLISHED,RELATED -m multiport --sport 20:10000 -j ACCEPT
iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s $LANIP -i lo -j ACCEPT
iptables -A INPUT -p ALL -s $INETIP -i lo -j ACCEPT
iptables -A OUTPUT -p ALL -d 127.0.0.1 -o lo -j ACCEPT
iptables -A OUTPUT -p ALL -s $INETIP -j ACCEPT
iptables -A OUTPUT -p ALL -s $LANIP -j ACCEPT
iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
iptables -A FORWARD -p TCP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p TCP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -d $SYSADMIN --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -s $SYSADMIN --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p TCP -d $SYSADMIN2 --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p TCP -s $SYSADMIN2 --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -d $SYSADMIN2 --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -s $SYSADMIN2 --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -d $SYSADMIN2 --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -s $SYSADMIN2 --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p TCP -d $SERVER --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p TCP -s $SERVER --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -d $SERVER --dport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p UDP -s $SERVER --sport $UNPRIVPORTS -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -d $SERVER --icmp-type echo-reply -j ACCEPT
iptables -A FORWARD -p icmp -m icmp -s $SERVER --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -m icmp -i $INET --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp -o $INET --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -m icmp -i $NET --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp -o $NET --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p udp -m udp -o $INET --dport 33434:33523 --sport 32769:65535 -j ACCEPT
iptables -A OUTPUT -p udp -m udp -o $NET --dport 33434:33523 --sport 32769:65535 -j ACCEPT
iptables -A INPUT -p udp -m udp -i $NET --dport 33434:33523 --sport 32769:65535 -j ACCEPT
iptables -t mangle -A PREROUTING -i $INET -j TTL --ttl-set 64
iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP
echo "1" > /proc/sys/net/ipv4/ip_forwardСобственно вопросы:
Где я накосячил, что у меня отваливается доступ к машине?
Как заставить работать из локалки traceroute, ping, whois?
На конструкцию
Код: Выделить всё
#iptables -A OUTPUT -p tcp -m tcp -o $INET --dport 23 --sport $UNPRIPORTS -j ACCEPT
#iptables -A INPUT -p tcp -m tcp -i $INET --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --synШлюз ругается.
Код: Выделить всё
iptables v1.3.5: invalid TCP port/service `--sport' specified
Try `iptables -h' or 'iptables --help' for more information.Что здесь нужно сделать?
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
-
Alex2ndr
- Сообщения: 443
- ОС: Debian Lenny
Re: Iptables Открытие портов.
yamah писал(а): ↑27.08.2009 14:11Решил не плодить темы.
Митуация. Есть компьютер с ASPLinux 11, работающий в качестве прокси. Пока сидели за шлюзом. Больших проблем не было.
Сейчас этот комп нужно настроить до уровня шлюза.
В принципе, он уже работает. Но нужно ввести ограничения:
0. Доступ из инета запретить нафик, кроме 22-го порта.
1. WEB-трафик только через прокси.
2. Доступ к электронной почте на сервере провайдера и Яндек.Ру (и, возможно, на сервере хостера сайта).
3. Разрешить из локалки и шлюза эхо-запросы, трассеровки маршерута, выяснения информации о домене (whois).
4. Свободный доступ админам из внутренней сети.
5. Доступ ко всем ресурсам шлюза из локалки.
6. Остальное закрыть наф.
Реализация IPTABLES. Все бы хорошо, но вовремя дальнейшей настройки какое-то правило отрубает доступ к шлюзу со всех хостов, включая локалку.
Код: Выделить всё
#!/bin/sh IPT="iptables" INET="eth1" NET="eth0" NET_NET="192.168.0.0/24" INETIP="81.201.248.234" LANIP="192.168.0.100" ELCOM_SMTP="80.247.96.232" ELCOM_POP="80.247.96.232" YELCOM_SMTP="77.88.21.25" YELCOM_POP="77.88.21.25" UNPRIVPORTS="1024:65535" DNS_SERVER1="80.247.96.65" DNS_SERVER2="80.247.96.65" SYSADMIN="192.168.0.1" SYSADMIN2="192.168.0.2" SERVER="192.168.0.100" iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -t nat -F PREROUTING iptables -t nat -F POSTROUTING iptables -t mangle -F iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP iptables -A INPUT -d $INETIP -p TCP --dport 22 -j ACCEPT iptables -A OUTPUT -d $INETIP -p udp --sport 22 -j ACCEPT iptables -A INPUT -s $NET_NET -p TCP -d $LANIP -m multiport --dport 20:10000 -j ACCEPT iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER1 -d $NET_NET --sport 53 -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER2 -d $NET_NET --sport 53 -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $ELCOM_POP -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $ELCOM_SMTP -p TCP --dport 25 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $YELCOM_POP -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $YELCOM_SMTP -p TCP --dport 25 -j ACCEPT iptables -A FORWARD -p TCP -m state --state ESTABLISHED,RELATED -m multiport --sport 20:10000 -j ACCEPT iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT iptables -A INPUT -p ALL -s $LANIP -i lo -j ACCEPT iptables -A INPUT -p ALL -s $INETIP -i lo -j ACCEPT iptables -A OUTPUT -p ALL -d 127.0.0.1 -o lo -j ACCEPT iptables -A OUTPUT -p ALL -s $INETIP -j ACCEPT iptables -A OUTPUT -p ALL -s $LANIP -j ACCEPT iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT iptables -A FORWARD -p TCP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p TCP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p icmp -m icmp -d $SYSADMIN --icmp-type echo-reply -j ACCEPT iptables -A FORWARD -p icmp -m icmp -s $SYSADMIN --icmp-type echo-request -j ACCEPT iptables -A FORWARD -p TCP -d $SYSADMIN2 --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p TCP -s $SYSADMIN2 --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -d $SYSADMIN2 --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -s $SYSADMIN2 --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p icmp -m icmp -d $SYSADMIN2 --icmp-type echo-reply -j ACCEPT iptables -A FORWARD -p icmp -m icmp -s $SYSADMIN2 --icmp-type echo-request -j ACCEPT iptables -A FORWARD -p TCP -d $SERVER --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p TCP -s $SERVER --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -d $SERVER --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -s $SERVER --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p icmp -m icmp -d $SERVER --icmp-type echo-reply -j ACCEPT iptables -A FORWARD -p icmp -m icmp -s $SERVER --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp -m icmp -i $INET --icmp-type echo-reply -j ACCEPT iptables -A OUTPUT -p icmp -m icmp -o $INET --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp -m icmp -i $NET --icmp-type echo-reply -j ACCEPT iptables -A OUTPUT -p icmp -m icmp -o $NET --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p udp -m udp -o $INET --dport 33434:33523 --sport 32769:65535 -j ACCEPT iptables -A OUTPUT -p udp -m udp -o $NET --dport 33434:33523 --sport 32769:65535 -j ACCEPT iptables -A INPUT -p udp -m udp -i $NET --dport 33434:33523 --sport 32769:65535 -j ACCEPT iptables -t mangle -A PREROUTING -i $INET -j TTL --ttl-set 64 iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward
Собственно вопросы:
Где я накосячил, что у меня отваливается доступ к машине?
Как заставить работать из локалки traceroute, ping, whois?
На конструкцию
Код: Выделить всё
#iptables -A OUTPUT -p tcp -m tcp -o $INET --dport 23 --sport $UNPRIPORTS -j ACCEPT #iptables -A INPUT -p tcp -m tcp -i $INET --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn
Шлюз ругается.
Код: Выделить всё
iptables v1.3.5: invalid TCP port/service `--sport' specified Try `iptables -h' or 'iptables --help' for more information.
Что здесь нужно сделать?
Дюже у вас сложная конфига - с первого раза и не осилишь
Рекомендую написать новую и отлаживать по очереди при политике вида "все что на разрешено запрещено"(потому что лично мне например проще написать новую для вас чем разобраться в том что вы наворотили)
1. Добиться работы ssh
2. Добиться работы прокси
3. Добиться работы почты.
4. Обеспечить доступ из локалки
Вас такой вариант устраивает?
PS Даже если править ваш конфиг то для того чтобы это все нормально работало придеться переписать почти каждую строку