Results 1 to 15 of 55

Thread: Экспериментег.

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Экспериментег.

    Берём новый ASUS WL-500g Premium и настраиваем. Всё делаем по инструкции.

    Меняем прошивку(шьем последнее от Олега).
    Настраиваем DHCP+PPTP. Всё работает, всё замечательно.
    Разрешаем icmp from WAN (галочка в Internet Firewall -> Basic Settings)
    Разрешаем Web-интерфейс по порту 8080 из WAN(галочка в Internet Firewall -> Basic Settings)
    Разрешаем ssh from WAN(по инструкции с этого сайта, пару правил в iptables)
    Настраиваем Wireless...

    Итог:
    1) Интернет из домашней сети - есть !
    2) SSH, Web-interface из WAN - есть !
    И, кажется, всё замечательно.
    Но тут выплывает одна очень интересная фича(да-да, именно фича NAT)...

    Адреса транслируются в обе стороны. Входящие соединения, не имеющие сопоставлений в NAT-таблицах, успешно транслируются во внутреннюю подсеть.
    Мы можем добраться до внутренней подсети из внешней !
    И на этом ничего не заканчивается. Запуская роутер в такой конфигурации, мы предоставляем бесплатный Интернет всему сегменту городской сети, за что нас немедленно отключает наш провайдер. И он трижды прав.

    Эксперимент
    Настраиваем ASUS как я описал выше.
    Ему выдается IP 10.7.14.88(MAN). Роутер коннектится по PPTP и получает IP 212.1.xxx.xx (у меня внешний).

    Идём к соседу. У него на компе ип 10.7.14.89.
    У соседа интернета нет, баланс отрицательный, на VPN не пускает.
    Делаем у соседа:
    route add -host ya.ru gw 10.7.14.88
    route add -net 192.168.0.0/24(моя внутренняя сеть) gw 10.7.14.88


    И проверяем:
    ping 192.168.0.254 (внутренний ип роутера)
    ping 192.168.0.8 (домашняя тачка)
    ping ya.ru


    ВСЁ пингуется !

    ....высказываемся.
    Code:
    [root@gw /tmp]$ iptables --list
    Chain INPUT (policy DROP)
    target     prot opt source               destination
    DROP       all  --  anywhere             anywhere           state INVALID
    ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED
    ACCEPT     all  --  anywhere             anywhere           state NEW
    ACCEPT     all  --  anywhere             anywhere           state NEW
    SECURITY   all  --  anywhere             anywhere           state NEW
    ACCEPT     udp  --  anywhere             anywhere           udp spt:bootps dpt:bootpc
    ACCEPT     tcp  --  anywhere             gw                 tcp dpt:www
    ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:7776
    ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:webcam
    ACCEPT     icmp --  anywhere             anywhere
    ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ssh flags:SYN,RST,ACK/SYN
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    ACCEPT     all  --  anywhere             anywhere
    DROP       all  --  anywhere             anywhere           state INVALID
    TCPMSS     tcp  --  anywhere             anywhere           tcp flags:SYN,RST,ACK/SYN TCPMSS clamp to PMTU
    ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED
    SECURITY   all  --  anywhere             anywhere           state NEW
    ACCEPT     all  --  anywhere             anywhere           ctstate DNAT
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain MACS (0 references)
    target     prot opt source               destination
    
    Chain SECURITY (2 references)
    target     prot opt source               destination
    RETURN     tcp  --  anywhere             anywhere           tcp flags:SYN,RST,ACK/SYN limit: avg 1/sec burst 5
    RETURN     tcp  --  anywhere             anywhere           tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
    RETURN     udp  --  anywhere             anywhere           limit: avg 5/sec burst 5
    RETURN     icmp --  anywhere             anywhere           limit: avg 5/sec burst 5
    DROP       all  --  anywhere             anywhere
    
    Chain logaccept (0 references)
    target     prot opt source               destination
    LOG        all  --  anywhere             anywhere           state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `ACCEPT '
    ACCEPT     all  --  anywhere             anywhere
    
    Chain logdrop (0 references)
    target     prot opt source               destination
    LOG        all  --  anywhere             anywhere           state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `DROP '
    DROP       all  --  anywhere             anywhere
    
    [root@gw /tmp]$ cat nat_rules
    *nat
    :PREROUTING ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :VSERVER - [0:0]
    -A PREROUTING -d 212.1.xxx.xx -j VSERVER
    -A PREROUTING -d 10.7.14.88 -j VSERVER
    -A VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.254:80
    -A POSTROUTING -o ppp0 ! -s 212.1.xx.xx -j MASQUERADE
    -A POSTROUTING -o vlan1 ! -s 10.7.14.88 -j MASQUERADE
    -A POSTROUTING -o br0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j MASQUERADE
    COMMIT
    Last edited by Lesnix; 04-10-2006 at 08:48.

  2. #2
    Да. Именно. NAT это трансляция. и не более. для защиты нужно использовать firewall

    поэтому у меня в файрволле в момент поднятия соединения добавляется правило

    в цепочку INPUT после state INVALID что то вроде

    0 0 DROP all -- ppp0 * 0.0.0.0/0 !83.237.4.187

    _примерно_ вот так

    iptables -I INPUT 2 -i $interface ! -d $ip -j DROP

    (все соединения я поднимаю не средствами прошивки, а своими скриптами)

    то есть дропаем все входящие если они адресованы не нашему ip

    а так же модифицирую FORWARD в post-firewall

    iptables -P FORWARD DROP
    iptables -A FORWARD -i br0 -s 192.168.0.0/24 -j ACCEPT

    то есть разрешаю форвардить пакеты только с адресами моей внутренней сети и с внутреннего интерфеса, а все остальное - по умолчанию дропается
    Last edited by gaaronk; 04-10-2006 at 09:15.

  3. #3
    Join Date
    Sep 2006
    Location
    Москва
    Posts
    38
    в фак этот момент непременно!!! желательно со стандартным решением.
    Ветеран броуновского движения

  4. #4
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Исправлять надо. Только что-то у меня пока в голове не рисуется, что сделать. Цепочку FORWARD надо изменять. Что-то типа

    iptables -A FORWARD ! -i br0 -j DROP

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

  5. #5
    Решение gaaronk, в принципе, подходит...
    Только при этом становится невозможно добраться до роутера из WAN по порту HTTP(8080)...
    Вообще странно, что dropbear ssh слушает на всех IP, а доступ по http организован только пробрасыванием порта 8080 на внутренний ип... это судя по VSERVER...
    я прав ?
    Last edited by Lesnix; 04-10-2006 at 16:04.

  6. #6
    Quote Originally Posted by Lesnix View Post
    Решение gaaronk, в принципе, подходит...
    Только при этом становится невозможно добраться до роутера из WAN по порту HTTP(8080)...
    Вообще странно, что dropbear ssh слушает на всех IP, а доступ по http организован только пробрасыванием порта 8080 на внутренний ип... это судя по VSERVER...
    я прав ?
    а почему??

    запрос приходит на внешний ip пропускается файрволлом, а потом обрабатывается портфорвардингом

    imho так

  7. #7
    Quote Originally Posted by Oleg View Post
    Исправлять надо. Только что-то у меня пока в голове не рисуется, что сделать. Цепочку FORWARD надо изменять. Что-то типа

    iptables -A FORWARD ! -i br0 -j DROP

    Надо проверять, нет ли каких последствий от такой команды.
    быть не должно. ответы на запросы обработаются ранее правилом с RELATED,ESTABLISHED или DNAT (для портфорвардинга)

    у меня еще более жесткое условие

    iptables -A FORWARD -i br0 -s 192.168.0.0/24 -j ACCEPT

    а остальное дропается. и год почти полет нормальный

    вот кусок post-firewall

    lanaddr=`nvram get lan_ipaddr`
    lanmask=`nvram get lan_netmask`
    lan_net=`ipcalc -s -n $lanaddr $lanmask | awk '{print(substr($1,9))}'`/$lanmask

    iptables -P FORWARD DROP
    iptables -A FORWARD -i br0 -s $lan_net -j ACCEPT
    Last edited by gaaronk; 04-10-2006 at 16:27.

  8. #8
    Разрешаем icmp from WAN (галочка в Internet Firewall -> Basic Settings)
    OFF: а где такая галочка там?

  9. #9
    Diablo-AD, смотри приложенный скриншот с галочкой

    gaaronk, я себе post-firewall практически аналогичный сделал.
    Code:
    #!/bin/sh
    
    inet_ip=`nvram get wan_ipaddr_t`
    man_ip=`nvram get wanx_ipaddr`
    
    lan_ip=`nvram get lan_ipaddr`
    lan_mask=`nvram get lan_netmask`
    lan_net=`ipcalc -s -n $lan_ip $lan_mask | awk '{print(substr($1,9))}'`/$lan_mask
    
    # set default policy
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    
    # Remove last default rule
    iptables -D INPUT -j DROP
    
    # allow internal routing
    iptables -A FORWARD -i br0 -j ACCEPT
    
    # Allow access to ssh server from WAN
    iptables -A INPUT -p tcp -i vlan1 --syn --dport 22 -j ACCEPT
    
    # deny all packets with dst-ip !our_ip
    iptables -I INPUT 2 -i ppp0 ! -d $inet_ip -j DROP
    iptables -I INPUT 2 -i vlan1 ! -d $man_ip -j DROP
    ...и вот с этими правилами мне НЕ виден порт роутер:8080 ни из MAN, ни из инета.
    web-access from wan включен. порт 8080.
    Attached Images Attached Images  
    Last edited by Lesnix; 05-10-2006 at 19:24.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •