ipfw

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

ipfw

Сообщение Azudim »

Кто подскажет, как настроить ipfw так, что бы с сетки на которой туннель лежит в другие сети не ходил трафик, а по туннелю бегал ?

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

fxp0 интерфейс на котором висит VPN (PPTP) сервер

ipfw add 65000 allow tcp from me 1723 to any via fxp0
ipfw add 65001 allow tcp from any to me 1723 via fxp0
ipfw add 65002 reset log tcp from any to any via fxp0
ipfw add 65003 deny log udp from any to any via fxp0

реально можно оставить возможность пользователям пропинговать сервер для проверки работоспособности
Последний раз редактировалось ~AsmodeuS~ Пн фев 21, 2005 8:38 am, всего редактировалось 2 раза.

promind
Сообщения: 6
Зарегистрирован: Вс фев 27, 2005 4:01 pm
Контактная информация:

forbid rulez

Сообщение promind »

#!/usr/local/bin/bash
int = 'rl0'
ETHINET = '10.0.0.0/8'
PPPINET = '192.168.0.0/16'
ipfw add allow ip from $ETHINET to any via $int
ipfw add allow ip from any to $ETHINET via $int
ipfw add deny ip from $PPPINET to any via $int

promind
Сообщения: 6
Зарегистрирован: Вс фев 27, 2005 4:01 pm
Контактная информация:

kernel options

Сообщение promind »

kernel options:
=============================================
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options HZ=1000
options IPFILTER
options IPDIVERT
options NETGRAPH
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_ECHO
options NETGRAPH_ETHER
options NETGRAPH_HOLE
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_LMI
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_PPTPGRE
options NETGRAPH_RFC1490
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_VJC
===============================================

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

Re: forbid rulez

Сообщение Azudim »

А можно для начинающих пояснить, зачем пускать все и вся через ETHINET (ифейс на котором туннель поднимается если не ошибаюсь) ?
promind писал(а):#!/usr/local/bin/bash
int = 'rl0'
ETHINET = '10.0.0.0/8'
PPPINET = '192.168.0.0/16'
ipfw add allow ip from $ETHINET to any via $int
ipfw add allow ip from any to $ETHINET via $int
ipfw add deny ip from $PPPINET to any via $int

promind
Сообщения: 6
Зарегистрирован: Вс фев 27, 2005 4:01 pm
Контактная информация:

testrun

Сообщение promind »

ethinet is the network for connecting via ethernet
your network adapter address
pppinet is the ip assigned by radius server for point-to-point usage
if you deny ppp ips to go through ethernet there will be no problem with stupid users trying to put radius ip on their ethernet card because you deny them from ethernet ;)

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

Сообщение Azudim »

:lol: You aren't from exUSSR ? Can you post complete simple script for IPFW designed to work with 2 Ethernet ifaces (Outside|Inside), protect Inside Network from Outside connections except FTP,SSH, protect from unauthorized connections inside and pass connections to PPTP, for work with abills? :)

promind
Сообщения: 6
Зарегистрирован: Вс фев 27, 2005 4:01 pm
Контактная информация:

testrun

Сообщение promind »

/etc/sysctl.conf file contents

sysctl net.inet.tcp.blackhole=2
sysctl net.inet.udp.blackhole=1
-------------------------------------------------
#!/usr/local/bin/bash
if1=rl0
if2=rl1
pppinet='192.168.100.0/24'
ifnet='10.0.0.0/24'
p1=2
p2=135
p3=139
p4=445
p5=137
fw='/sbin/ipfw'
# FW
$fw add allow all from any to any via lo0
$fw add deny all from any to 127.0.0.0/8
$fw add deny ip from 127.0.0.0/8 to any
$fw add deny tcp from $ifnet to any dst-port $p1,$p2,$p3,$p4,$p5 in via $if2
$fw add deny tcp from any to $ifnet dst-port $p1,$p2,$p3,$p4,$p5 in via $if2
$fw add allow icmp from any to any via $if1 icmptypes 0,3,8,11,12
$fw add deny icmp from any to any via $if2
$fw add deny ip from $pppinet to any via $if2
# this is simple virus and ppp protection firewall
-------------------------------------------------------------------------------------
kernel modules as posted before
+ if you want to setup custom firewall visit
http://ipfwgen.sourceforge.net/

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

Сообщение Azudim »

Скрипт для IPFW.
Два интерфейса, один смотрит в инет 'inet_if', другой в локалку 'lan_if'.
Из локалки разрешены коннекты на сервер по HTTP,MySQL,SSH,FTP, PPTP
Все остальное из локалки запрещено, NATa из локалки нет.
NAT стоит на PPPoE сети (pptp). Из PPPoE сети все разрешено.

Кто еще чем дополнит ?

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

#!/bin/sh - 
ipfw='/sbin/ipfw -q'

# Internet
inet_if="dc0"
inet_ip="213.133.x.x"
inet_net="213.133.x.128"
inet_mask="255.255.255.240"
# Lan1
lan_if="rl0"
lan_ip="192.168.2.254"
lan_net="192.168.2.0"
lan_mask="255.255.255.0"
lan="${lan_net}:${lan_mask}"
lan_bcast="192.168.2.255"
# PPPoE    (PPTP)
ppp_net="10.0.1.0"
ppp_mask="255.255.255.0"
ppp="${ppp_net}:${ppp_mask}"

    ${ipfw} -f flush

    # NAT
    ${ipfw} add 5 divert natd all from not ${lan} to any via ${inet_if}
    ${ipfw} add 100 allow all from any to any via lo0 
    ${ipfw} add 150 allow all from me to any via any keep-state
    ${ipfw} add 160 check-state 
    
    # Allow traffic from PPTP net 
    ${ipfw} add 190 allow all from ${ppp} to any keep-state
    
    # Setup some TCP->PPP connections.
    ${ipfw} add 191 allow tcp from any 20 to ${ppp} in via ${inet_if} setup keep-state

    #
    ${ipfw} add 200 deny all from any to 127.0.0.0/8

    # Stop RFC1918 nets on the outside interface
    # ${ipfw} add 610 deny log all from 10.0.0.0/8 to any in via ${inet_if}
    ${ipfw} add 620 deny log all from 172.16.0.0/12 to any in via ${inet_if}
    ${ipfw} add 630 deny log all from 192.168.0.0/16 to any in via ${inet_if}

    # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
    # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
    # on the outside interface
    ${ipfw} add 640 deny log all from 0.0.0.0/8 to any via ${inet_if}
    ${ipfw} add 650 deny log all from 169.254.0.0/16 to any via ${inet_if}
    ${ipfw} add 660 deny log all from 192.0.2.0/24 to any via ${inet_if}
    ${ipfw} add 670 deny log all from 224.0.0.0/4 to any via ${inet_if}
    ${ipfw} add 680 deny log all from 240.0.0.0/4 to any via ${inet_if}

    # Allow TCP through if setup succeeded
    ${ipfw} add 700 allow tcp from any to any established 
    
    # Allow IP fragments to allow through
    ${ipfw} add 710 allow all from any to any frag 

    # Allow setup of incoming email
    # ${ipfw} add 720 allow tcp from any to ${lan_ip} 25 setup

    # Allow setup of incoming SSH
    ${ipfw} add 730 allow tcp from any to me 22 setup keep-state

    # Allow access to our DNS
    ${ipfw} add 800 allow tcp from ${lan} to ${lan_ip} 53 setup keep-state
    ${ipfw} add 810 allow udp from ${lan} to ${lan_ip} 53 keep-state

    # Allow access to our WWW,SSH,MySQL from LAN
    ${ipfw} add 830 allow tcp from ${lan} to ${lan_ip} 80,22,3306 setup keep-state 
    
    # Allow access to our FTP
    ${ipfw} add 840 allow tcp from ${lan} to ${lan_ip} 21,20,49152-65535 setup keep-state

    # Reject&Log all setup of incoming connections from the outside
    ${ipfw} add 900 deny log tcp from any to any in via ${inet_if} setup
    
    # Allow setup of any other TCP connection
    ${ipfw} add 1000 allow all from any to any setup keep-state
    
    # Allow PPTP from LAN
    # ${ipfw} add 10000 allow ip from any 1723 to me via ${lan_if}
    ${ipfw} add 10001 allow ip from any to me 1723 via ${lan_if} setup keep-state
    ${ipfw} add 10002 allow gre from any to me via ${lan_if} keep-state


    # Deny any else from Lan
    ${ipfw} add 10020 reset log tcp from any to any via ${lan_if}                 
    ${ipfw} add 10030 reset log udp from any to any via ${lan_if}                 
    
    # Everything else is denied by default, unless the
    # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
    # config file.
    ${ipfw} add 65000 reset log all from any to any
Последний раз редактировалось Azudim Вт мар 15, 2005 12:11 pm, всего редактировалось 1 раз.

promind
Сообщения: 6
Зарегистрирован: Вс фев 27, 2005 4:01 pm
Контактная информация:

testrun

Сообщение promind »

I don't use natd :)
I use ipnat it's easier and you don't have to write such a big firewall :)
and please write in english because I hardly know russian...

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

IPFW + PPTP

Сообщение Azudim »

PPTP использует не только 1723 порт TCP, но и протокол 47 (GRE)
Port 47 GRE
http://www.iss.net/security_center/advi ... efault.htm

если вы блокируете весь входящий трафик на интерфейсе, на котором поднимается туннель WinXP<->PPTP (Poptop), помимо 1723 порта TCP нужно разрешить GRE. Если это не сделать симптоматика будет следующая: соединение устанавливается, пакеты в туннеле ходят куда угодно (разрешено), но через некоторое время туннель "подвисает".

добавляется правилом типа:

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

  ${ipfw} add 1000 allow GRE from any to me via ${lan_if} 
 
В /etc/protocols

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

gre      47      GRE         #Generic Routing Encapsulation
 

reaper
Сообщения: 18
Зарегистрирован: Вс янв 30, 2005 7:48 am
Откуда: Ярославль
Контактная информация:

Сообщение reaper »

бррр, лично для меня заморочки с настройками ipfw стали поводом для перехода на pf :)

Michael_S
Сообщения: 1
Зарегистрирован: Ср мар 09, 2005 1:54 pm

IPFW

Сообщение Michael_S »

Каков же итог ?


Как реализовать такую штуку.

На сервере стоит Abills. Работает NAT.
Но только если прописать этот сервер как шлюз то Интернет пойдёт в обход радиуса и естесвенно нигде не учтется.
Как же реализовать возможность использовать NAT только тем кто подключен по VPN ?
Мб можно при коннекте клиента запускать скриптик который добавляет правило навроде divert на IP выданный VPN'ом?
А при обрыве связи естественно другой скриптик который это дело убирает.
Только вот вопрос ... Как это всё отразится на производительности ? Я имею ввиду когда народу много ... Получается на каждого активного пользователя по 2 правила .

Azudim
Сообщения: 72
Зарегистрирован: Вс фев 13, 2005 4:40 pm
Откуда: Moscow
Контактная информация:

Сообщение Azudim »

Скрипт сверху (обновлен). как раз для твоих нужд.. на производительности сильно не сказывается ;)

varas
Сообщения: 1
Зарегистрирован: Пн мар 21, 2005 9:48 pm
Откуда: Litva
Контактная информация:

problemka

Сообщение varas »

# Allow traffic from PPTP net
${ipfw} add 190 allow all from ${ppp} to any keep-state

Jesli s $ppp keep-state delaju pipi vidni, no limitacija trafika nerabotaet,

${ipfw} add 190 allow all from ${ppp} to any #vsio rabotaet prikrasno

Vidno kakda sesija konekciji aktivizirivaetsia, trafik nepopadaet v trubu.

Ответить