ďťż
 
 
   Iptables - brak internetu na komputerach w sieci
 
 

Tematy

 
    
 

 

 

 

Iptables - brak internetu na komputerach w sieci





nox - 15-09-2009 17:53
Próbuję pisać samemu firewall, na zasadzie - blokuje wszystko, wpuszczam tylko konkretne usługi. Problem jest taki, że przy tej konfiguracji (Domyślna polityka łańcuchów na DROP):
#######        NET FORWARD    #######
echo "1" > /proc/sys/net/ipv4/ip_forward                        # KERNEL NET FORWARD

#######        SECURITY        #######
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts      # ICMP ECHO REQUEST @ BROADCAST ignore
echo "1" > /proc/sys/net/ipv4/tcp_syncookies                    # SYN FLOOD refuse
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route      # SOURCE ROUTED PACKETS refuse
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter                # SOURCE VALIDATION by REVERSED PATH

#######  RULES CHAINS FLUSHING  #######
iptables -F                                                    # STANDARD CHAINS
iptables -t nat -F
iptables -t mangle -F

#######  RULES CHAINS GENERATE  #######
iptables -P INPUT DROP                                                # STANDARD CHAINS POLICY
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

######## ESTABLISHED CONNECTIONS KEEP #######
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

#######  ALLOWING PROTCOLS      #######
#---------- WWW ----------#
iptables -A INPUT -p tcp --sport 80 -j ACCEPT                  # HTTP:80
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -j ACCEPT                  # HTTPS:443
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#---------- SSH ----------#
iptables -A INPUT -p tcp -i eth0 --dport 22 -j DROP            # WAN SSH
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT          # LAN SSH
#---------- DNS ----------#
iptables -A INPUT -p udp --sport 53 -j ACCEPT                  # DNS ALLOW
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#------ LO Interface -----#
iptables -A INPUT -i lo -j ACCEPT                              # LO ALLOW
iptables -A OUTPUT -o lo -j ACCEPT

#######    NETWORK ROUTING    #######
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE                  # LAN MASQUARADE
iptables -A FORWARD -s 192.168.3.0/24 -j ACCEPT nie działają strony WWW na komputerach w sieci wewnętrznej.
nox-debian:~# iptables -L -v
Chain INPUT (policy DROP 33 packets, 2931 bytes)
 pkts bytes target    prot opt in    out    source              destination
  119 25566 ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp spt:www
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp spt:https
    0    0 DROP      tcp  --  eth0  any    anywhere            anywhere            tcp dpt:ssh
    0    0 ACCEPT    tcp  --  eth1  any    anywhere            anywhere            tcp dpt:ssh
    1    61 ACCEPT    udp  --  any    any    anywhere            anywhere            udp spt:domain
    0    0 ACCEPT    all  --  lo    any    anywhere            anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target    prot opt in    out    source              destination
  15  3138 ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    1    52 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:www
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp spt:www
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp spt:domain
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:domain
    0    0 ACCEPT    all  --  any    any    localnet/24          anywhere

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target    prot opt in    out    source              destination
  126 25733 ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    2  120 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:www
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:https
    3  194 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:domain
    0    0 ACCEPT    all  --  any    lo      anywhere            anywhere Nie bardzo mogę jakoś dojść przyczyny błędu. Prosiłbym o pomoc.
#---------- WWW ----------#
iptables -A INPUT -p tcp --sport 80 -j ACCEPT                  # HTTP:80
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -j ACCEPT                  # HTTPS:443
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT Czy FORWARD jest tutaj potrzebne? Czy nie?



bbmti - 17-09-2009 10:21
No jak chcesz udostępniać internet innym komputerom w sieci to musisz mieć łańcuch FORWARD. Dodaj jeszcze coś takiego dla protokołu UDP
iptables -A FORWARD -p udp --dport 80 -j ACCEPT Możesz jeszcze bardziej sprecyzować podając
-i ethX gdzie X to interfejs LAN

Dodałbym jeszcze moduły jeżeli nie są załadowane:
modprobe ip_conntrack
modprobe ip_nat



michnik - 17-09-2009 13:01
Aby skrypt miał funkcje start | stop opakuj swoje definicje w coś takiego:

#! /bin/sh

IPTABLES=/usr/local/sbin/iptables
test -x $IPTABLES || exit 1

case $1 in
start | restart | force-reload)

      $IPTABLES -F -t nat
      $IPTABLES -X -t nat
      $IPTABLES -P INPUT DROP
      $IPTABLES -F INPUT
      $IPTABLES -P FORWARD DROP
      $IPTABLES -F FORWARD

####
#### tu dajesz wpisy iptables
####

        echo " koniec."
        echo 1 >/proc/sys/net/ipv4/ip_forward
        ;;
stop)
        echo 1 >/proc/sys/net/ipv4/ip_forward
        echo -en "Usuwam zasady firewall'a ..."
        $IPTABLES -F -t nat
        $IPTABLES -X -t nat
        $IPTABLES -P INPUT ACCEPT

        echo " koniec."
        ;;
esac Nasŧepnie mozesz to uruchamiać z poziomu /etc/init.d jako szeregowy deamon.



Cyphermen - 18-09-2009 20:27
Ja to najpierw zacząłbym od włączenia polityki ,,output'' na ,,accept''.



nox - 20-09-2009 08:40
wedle sugestii nie zmieniło to nic:
nox-debian:~# iptables -L -v
Chain INPUT (policy DROP 60 packets, 4206 bytes)
 pkts bytes target    prot opt in    out    source              destination
  308 22356 ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:www
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:https
    0    0 DROP      tcp  --  eth0  any    anywhere            anywhere            tcp dpt:ssh
    0    0 ACCEPT    tcp  --  eth1  any    anywhere            anywhere            tcp dpt:ssh
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp spt:domain
    0    0 ACCEPT    all  --  lo    any    anywhere            anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target    prot opt in    out    source              destination
  14  732 ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:www
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp spt:domain
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:domain
    0    0 ACCEPT    all  --  any    any    localnet/24          anywhere

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target    prot opt in    out    source              destination
  466  198K ACCEPT    all  --  any    any    anywhere            anywhere            state RELATED,ESTABLISHED
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:www
    0    0 ACCEPT    tcp  --  any    any    anywhere            anywhere            tcp dpt:www
    0    0 ACCEPT    udp  --  any    any    anywhere            anywhere            udp dpt:domain
    0    0 ACCEPT    all  --  any    lo      anywhere            anywhere a włączenie OUTPUT na ACCEPT nie jest tym, co chce, bo wedle poradników, wszystko trzeba DROP i wpuszczać po kolei.



bbmti - 20-09-2009 16:49
ÂŁańcuch OUTPUT służy do przepuszczania/dropowania ruch wychodzącego z serwera. Patrząc na Twoją konfigurację firewalla nie masz logowania więc nawet nie wiesz czy jakaś usługa działająca lokalnie może działać prawidłowo a jeżeli tylko Ty korzystasz z tego serwera to polityka OUTPUT na ACCEPT jest dobrym pomysłem.

Jeżeli chodzi i łańcuch FORWARD to do przepuszczenia ruchu w obie strony dla danego hosta dodałbym
iptables -A FORWARD -s 192.168.3.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -s 0/0 -d 192.168.3.0/24 -j ACCEPT W ten sposób przepuszczasz cała podsieć, jak to nie skótkuje to można określić doładnie dla każedego adresu:
iptables -A FORWARD -s 192.168.3.X -d 0/0 -j ACCEPT
iptables -A FORWARD -s 0/0 -d 192.168.3.X -j ACCEPT Wprowadź wszystkie sugerowane zmiany, przeładuj skrypt, przeprowadź testy i wklej wyniki.



nox - 21-09-2009 07:24
Zrobiłem to o czym mówiłeś, jednak żadna wersja nie pomogła. Próbowałem z ustawieniem:
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT -m state --state NEW wtedy działa, ale działa każdy protokół a nie tylko WWW, co chcę osiągnąć.



grzesiek - 21-09-2009 19:24
nox - Panie, może najpierw przydałoby się dowiedzieć jak działa protokół http? Przepuszczasz połączenia na port docelowy 80 i 8080 do WAN. Z LAN (źródłowy) na portach 1024-65535.



nox - 25-09-2009 16:45
Witam. Przebudowałem firewall i teraz może będzie łatwiej dojść do tego,, jak blokować konkretne usługi w sieci.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#-------------------------------#
#      CZYSZCZENIE RELUL      #
#-------------------------------#
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat

#-------------------------------#
#      LO ACCEPT              #
#-------------------------------#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

#-------------------------------#
#      POLACZENIA NAWIAZANE    #
#-------------------------------#
iptables -A INPUT -p all -j ACCEPT -m state --state ESTABLISHED,RELATED

#-------------------------------#
#      ICPM                    #
#-------------------------------#
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp --dport 1080 -j REJECT --reject-with icmp-port-unreachable

#-------------------------------#
#      LAN TRUST              #
#-------------------------------#
iptables -A INPUT -i eth1 -p all -j ACCEPT -m state --state NEW

#-------------------------------#
#      LOGOWANIE              #
#-------------------------------#
iptables -A INPUT -i eth0 -j LOG
iptables -A FORWARD -j LOG      # RUCH PRZEKAZYWANY

#-------------------------------#
#      ETH 0 - WAN            #
#-------------------------------#
iptables -A OUTPUT -p udp -o eth0 --dport 53 --sport 1024:65535 -j ACCEPT      # DNS
iptables -A INPUT -p udp -i eth0 --sport 53 --dport 1024:65535  -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 --sport 1024:65535 -j REJECT --reject-with icmp-port-unreachable    # WAN SSH

#-------------------------------#
#      ETH 1 - LAN            #
#-------------------------------#
iptables -A FORWARD -i eth0 -o eth1 -p all -m state --state ESTABLISHED,RELATED -j ACCEPT      # TYLKO POLACZENIA NAWIAZANE
iptables -A FORWARD -i eth1 -o eth0 -p all -j ACCEPT

iptables -A FORWARD -j DROP    # RUCH PRZEKAZYWANY

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j SNAT --to 87.204.232.82            # SNAT Wystarczy mi prosty jedne przykład na zasadzie blokowania jednej usługi - na przykład zablokowanie w sieci LAN dostępu do HTTPS(443)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis