снова iptables (что ж такое)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

pelmen
Сообщения: 1268
ОС: debian

снова iptables

Сообщение pelmen »

Значит так, есть debian. выступает в роли шлюза (внешний ip на одном интерфейсе и внутренний на другом). Читал Руководство по Iptables 1.1.19, согласно которому настраивал файервол. Написан скрипт, который запускается автоматом при включении компа. Смысл скрипта такой:

Код: Выделить всё

start_wall()
{
    echo -n " Closing ports"
    $IPT -P INPUT        DROP
    $IPT -P FORWARD    ACCEPT
    $IPT -P OUTPUT        DROP
    success
}
start_input_open()
{
    # Open all ports for lo (127.0.0.0/8)
    $IPT -A INPUT  -s $LO -d $LOIP -i $LOIF -j ACCEPT

    # Open all ports for localnet (192.168.2.0/24)
    $IPT -A INPUT  -s $LAN -d $LANIP -j ACCEPT

    # Open all ports for vpn (192.168.3.0/24)
    $IPT -A INPUT  -s $VPN -d $VPNIP -j ACCEPT

    # ssh
    $IPT -A INPUT -p tcp -m tcp --sport $SSH -j ACCEPT


    # sshd
    $IPT -A INPUT  -p tcp -m tcp --dport $SSH -j ACCEPT

    # pptpd
    $IPT -A INPUT  -p tcp -m tcp --dport $PPTPD -j ACCEPT

    # DNS
    $IPT -A INPUT  -p udp -m udp --sport $DNS -j ACCEPT
    $IPT -A INPUT  -p tcp -m tcp --sport $DNS -j ACCEPT

    # DNS (NAMED, BIND9)
    $IPT -A INPUT -p udp -m udp --dport $DNS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp --dport $DNS -j ACCEPT

    # http
    $IPT -A INPUT  -p tcp -m tcp --sport $HTTP -j ACCEPT

    # apache
    $IPT -A INPUT  -p tcp -m tcp --dport $HTTP -j ACCEPT

    # vsftpd
    $IPT -A INPUT  -p tcp -m tcp --dport $FTP -j ACCEPT

    # ftp
    $IPT -A INPUT  -p tcp -m tcp --sport $FTP -j ACCEPT

    # jabber
    $IPT -A INPUT  -p tcp -m tcp --dport $JABBER -j ACCEPT
    $IPT -A INPUT  -p tcp -m tcp --dport $JABBERD -j ACCEPT

    # ping to all
    $IPT -A INPUT  -p icmp -m icmp --icmp-type echo-reply    -j ACCEPT

    # ping from all
    $IPT -A INPUT  -p icmp -m icmp --icmp-type echo-request    -j ACCEPT
}
start_output_open()
{
    # lo
    $IPT -A OUTPUT -s $LOIP -d $LO -o $LOIF -j ACCEPT

    # lan
    $IPT -A OUTPUT -s $LANIP -d $LAN -j ACCEPT

    # vpn
    $IPT -A OUTPUT -s $VPNIP -d $VPN -j ACCEPT


    # ssh
    $IPT -A OUTPUT -p tcp -m tcp --dport $SSH -j ACCEPT

    # sshd
    $IPT -A OUTPUT -p tcp -m tcp --sport $SSH -j ACCEPT

    # pptpd
    $IPT -A OUTPUT -p tcp -m tcp --sport $PPTPD -j ACCEPT

    # dns
    $IPT -A OUTPUT -p udp -m udp --dport $DNS -j ACCEPT
    $IPT -A OUTPUT -p tcp -m tcp --dport $DNS -j ACCEPT

    # BIND9
    $IPT -A OUTPUT -p udp -m udp --sport $DNS -j ACCEPT
    $IPT -A OUTPUT -p tcp -m tcp --sport $DNS -j ACCEPT

    # http
    $IPT -A OUTPUT -p tcp -m tcp --dport $HTTP -j ACCEPT

    # apache
    $IPT -A OUTPUT -p tcp -m tcp --sport $HTTP -j ACCEPT

    # vsftpd
    $IPT -A OUTPUT -p tcp -m tcp --sport $FTP -j ACCEPT

    # ftp
    $IPT -A OUTPUT -p tcp -m tcp --dport $FTP -j ACCEPT

}
start_nat()
{
    echo -en "\n Starting NAT"
    $IPT -t nat -A POSTROUTING -o $INTIF -j SNAT --to-source $INTIP
    $IPT -t nat -A POSTROUTING -o $LANIF -j SNAT --to-source $LANIP
    $IPT -t nat -A POSTROUTING -o $VPNIF -j SNAT --to-source $VPNIP
    success
}
Т.е. политики по умолчанию ставим DROP на input и output, forward accept. Далее начинаем открывать по-тихоньку. Открываем инпут и аутпут для lo, для локалки, для впн-клиентов. Потом открываем по определенным портам (ссш, днс, фтп...). Вот незадача, все работает кроме фтп и впн. Делаю iptables -P INPUT ACCEPT, iptables -P OUTPUT ACCEPT, работает. Почему тогда ссш работает сразу? что я делаю не так?
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: снова iptables

Сообщение sarutobi »

попробуйте добавить в input и output первым правило

Код: Выделить всё

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

и почитатйте внимательно, как работает и сколько портов открывает ftp и vpn
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: снова iptables

Сообщение pelmen »

у меня вверху скрипта есть такая часть:

Код: Выделить всё

# Ports
SSH="22"
HTTP="80"
DNS="53"
SMTP="25"
POP3="110"
FTP="20:21"
ICQ="5190"
HTTPS="443"
NETBIOS="139"
JABBER="5222"
JABBERD="5269"
PPTPD="1723"
ВОТ iptables -nvL

Код: Выделить всё

Chain INPUT (policy DROP 4218 packets, 536K bytes)
 pkts bytes target     prot opt in     out     source               destination
22340 2200K ACCEPT     0    --  lo     *       127.0.0.0/8          127.0.0.1
   58  8221 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:22
    1    40 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:2222
 7675  659K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:33
   62  5788 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:1723
  275 64846 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp spt:53
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:53
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53
   18  5954 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:80
 163K   12M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
 2418  141K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:20:21
   56  4878 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:20:21
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:5222
   92  4064 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:5269
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 0
   40  2488 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8

Chain FORWARD (policy ACCEPT 44475 packets, 6763K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 4164 packets, 362K bytes)
 pkts bytes target     prot opt in     out     source               destination
22340 2200K ACCEPT     0    --  *      lo      127.0.0.1            127.0.0.0/8
   62  8477 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
   50  2980 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:2222
 7250  781K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:33
   88  5328 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:1723
  283 19868 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp spt:53
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:53
   18  1381 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
 186K  196M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:80
 3171  512K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:20:21
   50  2816 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:20:21
    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           tcp spt:5222
   92  3680 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:5269
    5   420 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8
   40  2488 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 0

Когда я не смог подключиться, я подсоединился через ssh, сделал инпут и аутпут accept, соединился по vpn, посмотрел netstat -pnat, увдиел established-соединение на 1723 порту и понял, что ничего не понял.
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: снова iptables

Сообщение sarutobi »

повторю еще раз - прочтите в интернет как работает ftp, что такое активный и пассивный режимы, а так же что значат магические слова --state RELATED,ESTABLISHED в правилах файервола.
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: снова iptables

Сообщение skor »

http://ru.wikipedia.org/wiki/PPTP
...
PPTP работает, устанавливая обычную PPP сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation. Второе соединение на TCP-порту 1723 используется для инициации и управления GRE-соединением. PPTP сложно перенаправлять за сетевой экран, так как он требует одновременного установления двух сетевых сессий.
...

C ФТП тоже все сложно...
Если клиент хочет работать в активном режиме то он открывает на своей стороне порт со случайным номером и отсылает этот номер серверу. Сервер инициирует соединение между этим удаленным портом и локальным 20-м портом. В этом случае ваши правила будут работать.
Если клиент захочет работать в пассивном режиме (что сейчас модно, ибо позволяет проходить через NAT на клиентской стороне) то сервер открывает порт со случайным номером и отсылает этот номер клиенту. И клиент подключатеся к этому порту и по этому соединению уже передаются данные.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: снова iptables

Сообщение pelmen »

sarutobi писал(а):
07.01.2009 18:04
повторю еще раз - прочтите в интернет как работает ftp, что такое активный и пассивный режимы, а так же что значат магические слова --state RELATED,ESTABLISHED в правилах файервола.

про то, как работает RELATED,ESTABLISHED в правилах файервола я знаю. Вот только был уверен, что фтп работает только на 20 и 21 портах, спасибо за наводку, действительно это помогло. А вот что теперь делать с pptpd ? 1723 открыт, а что еще надо? Википедию читал, не понял: PPTP работает, устанавливая обычную PPP сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation. Ну и что нужно открыть в iptables ?
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: снова iptables

Сообщение ford1813 »

pelmen писал(а):
07.01.2009 20:48
sarutobi писал(а):
07.01.2009 18:04
повторю еще раз - прочтите в интернет как работает ftp, что такое активный и пассивный режимы, а так же что значат магические слова --state RELATED,ESTABLISHED в правилах файервола.

про то, как работает RELATED,ESTABLISHED в правилах файервола я знаю. Вот только был уверен, что фтп работает только на 20 и 21 портах, спасибо за наводку, действительно это помогло. А вот что теперь делать с pptpd ? 1723 открыт, а что еще надо? Википедию читал, не понял: PPTP работает, устанавливая обычную PPP сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation. Ну и что нужно открыть в iptables ?

-p gre
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: снова iptables

Сообщение Nikky »

Довольно частая ошибка: путают НОМЕР протокола gre (43) с открытием 43-го TCP ПОРТА.

Попробуйте:

$iptables -A INPUT -i $EXTIFACE (переменные естественно свои) -p gre -j ACCEPT
Арфы нет - возьмите бубен...
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: снова iptables

Сообщение pelmen »

я не открывал 43 порт, это я сразу заметил :) (тем более 47)
bad argument `gre`
man iptables там нет такого протокола
Тут
http://poptop.sourceforge.net/dox/gre-prot...available.phtml
увидел, что можно сделать iptables -A INPUT -p 47 -j ACCEPT, но . . . все равно не подключается.
заработало, сделал iptables -A INPUT -p 47 -j ACCEPT и iptables -A OUTPUT -p 47 -j ACCEPT
Можно закрывать
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: снова iptables

Сообщение Nikky »

Да, прости, конечно 47-й. Запись о нем присутствует в /etc/protocols?
Арфы нет - возьмите бубен...
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: снова iptables

Сообщение ford1813 »

pelmen писал(а):
07.01.2009 22:50
я не открывал 43 порт, это я сразу заметил :) (тем более 47)
bad argument `gre`
man iptables там нет такого протокола

Потому что у вас в файле
cat /etc/protocols |grep gre
gre 47 GRE # Generic Routing Encapsulation
root@home:/opt#

Либо gre закоментирован , либо его там не вообще.
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: снова iptables

Сообщение pelmen »

странно, но он там есть
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: снова iptables

Сообщение ford1813 »

pelmen писал(а):
08.01.2009 00:49
странно, но он там есть

Хм.
Точно тебе говорю.
Если там запись вида.
#gre 47 GRE # Generic Routing Encapsulation
То правило -p gre не добавится.
А если такого вида
gre 47 GRE # Generic Routing Encapsulation
То все должно быть нормально.
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: снова iptables

Сообщение pelmen »

Там так написано
gre 47 GRE # Generic Routing Encapsulation
без решетки. Но все равно, какая разница, -р 47 сработало.
Спасибо сказали: