Проблема с настройкой iptables - не поднимается pptp-соедине

Аватар пользователя dacha

Помогите, пожалуйста, разобраться!

Ситуация №1
Настройки iptables (при помощи графической утилиты настройки) выглядят так:

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

При этом интернет (через VPN) работает, все в порядке. Подключал инет при помощи "system-config-pptp".

И вот решил я это дело немного изменить так, как написано в статье "Защищаем Линукс - файрвол за 10 минут".

В результате возникает
Ситуация №2
Настройки iptables (при помощи статьи) выглядят так:

# Generated by iptables-save v1.3.3 on Mon Apr 24 23:35:37 2006
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -i eth0 -p tcp -m tcp --dport 137:139 -j ACCEPT 
-A INPUT -i eth0 -p udp -m udp --dport 137:139 -j ACCEPT 
-A INPUT -i eth0 -p udp -m udp --sport 137 --dport 32768:65535 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -p icmp -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 32768:65535 -j ACCEPT 
-A OUTPUT -p udp -m udp --sport 32768:65535 -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --sport 137:139 -j ACCEPT 
-A OUTPUT -o eth0 -p udp -m udp --sport 137:139 -j ACCEPT 
COMMIT
# Completed on Mon Apr 24 23:35:37 2006

При этом интернет не работает. Судя по всему, не поднимается pptp-соединение.

В /var/log/messages это:

Apr 25 03:15:24 dacha ifup-pptp: vpn: pppd started for pptp0 to xxx.xxx.xxx.xxx
Apr 25 03:15:24 dacha pptp[8051]: anon log[main:pptp.c:267]: The synchronous pptp option is NOT activated 
Apr 25 03:15:24 dacha pptp[7331]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request' 
Apr 25 03:15:24 dacha pptp[7331]: anon log[ctrlp_disp:pptp_ctrl.c:857]: Received Outgoing Call Reply.
Apr 25 03:15:24 dacha pptp[7331]: anon log[ctrlp_disp:pptp_ctrl.c:896]: Outgoing call established (call ID 1, peer's call ID 52481). 
Apr 25 03:15:24 dacha pppd[8051]: pppd 2.4.2 started by root, uid 0
Apr 25 03:15:24 dacha pppd[8051]: Using interface ppp1
Apr 25 03:15:24 dacha pppd[8051]: Connect: ppp1 <--> /dev/pts/3
Apr 25 03:15:26 dacha pppd[8051]: Terminating on signal 15.
Apr 25 03:15:26 dacha pptp[7331]: anon log[callmgr_main:pptp_callmgr.c:231]: Closing connection (unhandled)
Apr 25 03:15:26 dacha pptp[7331]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 12 'Call-Clear-Request' 
Apr 25 03:15:26 dacha pppd[8051]: Terminating on signal 15.
Apr 25 03:15:26 dacha pppd[8051]: Modem hangup
Apr 25 03:15:26 dacha pppd[8051]: Connection terminated.
Apr 25 03:15:26 dacha pptp[7331]: anon log[ctrlp_disp:pptp_ctrl.c:928]: Call disconnect notification received (call id 52481)
Apr 25 03:15:27 dacha pppd[8051]: Exit.
Apr 25 03:15:27 dacha ifup-pptp: pptp: pppd failed to start
Apr 25 03:15:42 dacha pppd[7337]: Modem hangup
Apr 25 03:15:42 dacha pptp[7331]: anon log[callmgr_main:pptp_callmgr.c:231]: Closing connection (unhandled)
Apr 25 03:15:42 dacha pptp[7331]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 12 'Call-Clear-Request' 
Apr 25 03:15:42 dacha pptp[7331]: anon log[call_callback:pptp_callmgr.c:78]: Closing connection (call state)
Apr 25 03:15:42 dacha pppd[7337]: MPPE disabled
Apr 25 03:15:42 dacha pppd[7337]: Connection terminated.
Apr 25 03:15:42 dacha pppd[7337]: Connect time 20.6 minutes.
Apr 25 03:15:42 dacha pppd[7337]: Sent 9120 bytes, received 15406 bytes.
Apr 25 03:15:42 dacha pppd[7337]: Exit.

Как быть?

Аватар пользователя sergeil

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Цитата:
dacha пишет:
Помогите, пожалуйста, разобраться!

Для PPTP требуется дополнительные разрешения...

function pptpLink()
{
    locIP=${1}
    vpnSRV=${2}

    $IPTABLES -A INPUT  -p tcp -s $vpnSRV -d $locIP   \
                    --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A OUTPUT -p tcp -s $locIP  -d $vpnSRV \
                    --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT

    $IPTABLES -A INPUT  -p gre -s $vpnSRV -d $locIP               -j ACCEPT
    $IPTABLES -A OUTPUT -p gre -d $vpnSRV -s $locIP               -j ACCEPT
}

Попробуйте....
Если настроен tcpwrapper, то также необходимо разрешить vpnServer
/etc/hosts.allow
...
pptp: IP_VPN_SERVER

Аватар пользователя dacha

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Извините, но я не понял, что делать с этим кодом.
Это скрипт?
Набрал в консоли этот код, а дальше не знаю как.
Там, вроде, переменные вводятся и нужно подставить свои значения IP?

Аватар пользователя sergeil

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Цитата:
dacha пишет:
Извините, но я не понял, что делать с этим кодом.
Это скрипт?
Набрал в консоли этот код, а дальше не знаю как.
Там, вроде, переменные вводятся и нужно подставить свои значения IP?

Интерфейс, через который идет соединение с провайдером...
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0F:3D:F0:89:95
inet addr:10.13.32.216 Bcast:10.13.32.255 Mask:255.255.255.0
...
Адрес VPN-server 193.xxx.xxx.xxx
То есть, Вам это можно оформить как SHELL-скрипт. Назовем его firewall-vpn.sh

=== CUT HERE ======
#! /bin/bash

function pptpLink()
{
locIP=${1}
vpnSRV=${2}

$IPTABLES -I INPUT 1 -p tcp -s $vpnSRV -d $locIP \
--dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -I OUTPUT 1 -p tcp -s $locIP -d $vpnSRV \
--dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT

$IPTABLES -I INPUT 1 -p gre -s $vpnSRV -d $locIP -j ACCEPT
$IPTABLES -I OUTPUT 1 -p gre -d $vpnSRV -s $locIP -j ACCEPT
}

pptpLink 10.13.32.216 193.xxx.xxx.xxx
=== CUT HERE ======

Вы долны взять свои значения. Я модифицирую скрипт так, что-бы он работал независимо от последовательности запусуа. Заменю -A на -I
Смысл всего этого...
VPN-сервер может устанавливать и поддерживать соединение с Вашим рутером по 1723/tcp (управляющее соединение PPTP).
Ваш рутер также может устанавливать и поддерживать соединение с VPN-сервером по 1723/tcp (управляющее соединение PPTP).
Между Вашим рутером и VPN-сервером разрешен обмен GRE пакетами. Если интересно что такое GRE, почитайте GRE tunneling.

Аватар пользователя dacha

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Не получается у меня что-то...

Удалил устройство pptp0, через которое подключался ранее, - правильно?

Создал файл firewall-vpn.sh с таким содержанием:
-----------------------------------------------------
#! /bin/bash

function pptpLink()
{
locIP=${1}
vpnSRV=${2}

$IPTABLES -I INPUT 1 -p tcp -s $vpnSRV -d $locIP --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -I OUTPUT 1 -p tcp -s $locIP -d $vpnSRV --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT

$IPTABLES -I INPUT 1 -p gre -s $vpnSRV -d $locIP -j ACCEPT
$IPTABLES -I OUTPUT 1 -p gre -d $vpnSRV -s $locIP -j ACCEPT
}

pptpLink ip.adres ip.adres
-----------------------------------------------------
В последней строке указал свой адрес и адрес vpn-сервера провайдера. Или здесь нужно другое вписать?
Например, адрес, который присваивается мне и машине провайдера при активизации vpn?

Запускаю в mc firewall-vpn.sh, выдает вот что:
-------------------------------------------------------------------
# ./firewall-vpn.sh
./firewall-vpn.sh: line 8: -I: command not found
./firewall-vpn.sh: line 9: -I: command not found
./firewall-vpn.sh: line 11: -I: command not found
./firewall-vpn.sh: line 12: -I: command not found
-------------------------------------------------------------------

В чем/ком кривизна?

Аватар пользователя sergeil

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Цитата:
dacha пишет:
Не получается у меня что-то...

Удалил устройство pptp0, через которое подключался ранее, - правильно?

Нет. Это не нужно было удалять. Это файл конфигурации PPTP соединения. Восстановите.

Цитата:
Создал файл firewall-vpn.sh с таким содержанием:
-----------------------------------------------------
#! /bin/bash

function pptpLink()
{
locIP=${1}
vpnSRV=${2}

$IPTABLES -I INPUT 1 -p tcp -s $vpnSRV -d $locIP --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -I OUTPUT 1 -p tcp -s $locIP -d $vpnSRV --dport 1723 -m state --state NEW,ESTABLISHED -j ACCEPT

$IPTABLES -I INPUT 1 -p gre -s $vpnSRV -d $locIP -j ACCEPT
$IPTABLES -I OUTPUT 1 -p gre -d $vpnSRV -s $locIP -j ACCEPT
}

pptpLink ip.adres ip.adres
-----------------------------------------------------
В последней строке указал свой адрес и адрес vpn-сервера провайдера. Или здесь нужно другое вписать?

Да..., вроде так...

Цитата:
Например, адрес, который присваивается мне и машине провайдера при активизации vpn?

Нет, адрес сетевое host-устройство... Через какое устройство Подключает Вас провайдер? Через сетевую карту?

Цитата:
Запускаю в mc firewall-vpn.sh, выдает вот что:
-------------------------------------------------------------------
# ./firewall-vpn.sh
./firewall-vpn.sh: line 8: -I: command not found
./firewall-vpn.sh: line 9: -I: command not found
./firewall-vpn.sh: line 11: -I: command not found
./firewall-vpn.sh: line 12: -I: command not found
-------------------------------------------------------------------
В чем/ком кривизна?

Вместо $IPTABLES напишите /sbin/iptables
Или
export IPTABLES="/sbin/iptables"
после #/bin/bash

То есть

#! /bin/bash
export IPTABLES="/sbin/iptables"
function pptpLink()
...
Аватар пользователя dacha

Re: Проблема с настройкой iptables - не поднимается pptp-сое

У-Р-Р-Р-А-А-А-А-А!!!!! ЗАРАБОТАЛО!!!!

Вы - гений!

Большое, большое спасибо!

Теперь мою систему можно считать более защищенной, чем с настройками, которые устанавливаются при помощи графической утилиты system-config-securitylevel?

Аватар пользователя dacha

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Да, еще вопрос.

Вы говорили:

Цитата:
Если настроен tcpwrapper, то также необходимо разрешить vpnServer
/etc/hosts.allow
...
pptp: IP_VPN_SERVER

Как узнать, настроен он или нет?
Как лучше настроить его?

Аватар пользователя sergeil

Re: Проблема с настройкой iptables - не поднимается pptp-сое

Цитата:
dacha пишет:
Да, еще вопрос.

Вы говорили:

Цитата:
Если настроен tcpwrapper, то также необходимо разрешить vpnServer
/etc/hosts.allow
...
pptp: IP_VPN_SERVER

Как узнать, настроен он или нет?
Как лучше настроить его?

Посмотрите что у Вас прописано в /etc/hosts.allow и /etc/hosts.deny
Внимание, если Вы неправильно настроите, часть сервисов работать не будет.
Если настроите правильно, то получите дополнительный механизм защиты для своего рутера (только для рутера, но не для сетей за или перед ним)

Например, вот мое... (ну, почти...)
Катается от смеха

[root@mail root]# cat /etc/hosts.allow

#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#

ALL:    127.0.0.1
ALL:    192.168.100.0/255.255.255.0
sendmail: ALL

[root@mail root]# cat /etc/hosts.deny

#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

ALL: ALL

Смысл....
К этому хосту, если не запрещено через другие механизмы, могут получить доступ хосты из подсети 192.168.100.0/24, localhost и ... кто угодно, но только к серверу sendmail (/etc/hosts.allow). Сервисы, понимающие что такое tcpwrapper, должны отвергнуть всех остальных (ALL: ALL в /etc/hosts.deny).

RSS-материал