Sie

Masz problemy z siecią bądź internetem? Zapytaj tu
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Sieć firmowa i blokowanie adresu IP oraz strony facebook.com

Post autor: redelek »

Hej.

Nie jestem geniuszem i jako początkujący mam pytanko.
Mam w firmie 30 komputerów i udostępniam im internet na Debianie 5.0. Główny master sieci robi wszystko na Windows 2008 DHCP DNS, AD i inne takie. Problem wystąpił dziś i nie umiem sobie z nim poradzić a raczej 2.
  1. Jak zablokować dostęp do facebook.com wybranym komputerom, jeśli ich IP zmienia się co 7 dni? Czy jest to w ogóle możliwe (nie wiem jak po mac adresie karty sieciowej)?
  2. Kilka osób w firmie posiada prywatne komputery i nie logują się do domeny. Dziś jedna z tych osób obciążyła internet na 80% i nie mogliśmy znaleźć gościa i była ręczna robota latanie po stacjach. Jak mogę zablokować jeden IP żeby nie miał dostępu do internetu?
Próbowałem:

Kod: Zaznacz cały

iptables -A OUTPUT -p tcp -d 10.0.1.95  -j DROP
iptables -A INPUT -s 10.0.95 -j DROP
Ale to nie działało nadal zatykał nam łącze.

Wydaje mi się, że problem może być w moim prostym firewallu z nat i przekierowaniem kilku portów do sieci lan.

Kod: Zaznacz cały

#!/bin/sh

#################
# CONFIGURATION #
#################

F="/sbin/iptables"
LOG="ipt#"

#global iface for external network
G_NET_NAME="eth0"
G_NET_IP="93.159.AA.AAA"
#local iface for local network
L_NET_NAME="eth1"
L_NET_IP="10.0.1.1"
L_NET="255.255.255.0/24"
L_BRDC="10.0.1.255"

#setup of modules and kernel konfig
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

#dynamic address allocation
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#ignor ICMP echo request sended to broadcast
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don't send ICMP redirect messages
#echo 1 > /proc/sys/net/ipv4/conf/all/send_redirects

#SYN flood protection
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

#refuse source routed packets
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects

#source validation by reversed path (RFC1812).
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#log packets from incorrect sources
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

##################
# INITIALIZATION #
##################

echo "Inicjalizacja Firewall ..."
$F -P INPUT ACCEPT
$F -P FORWARD ACCEPT
$F -P OUTPUT ACCEPT
$F -t nat -P PREROUTING ACCEPT
$F -t nat -P OUTPUT ACCEPT
$F -t nat -P POSTROUTING ACCEPT
$F -t mangle -P PREROUTING ACCEPT
$F -t mangle -P OUTPUT ACCEPT
$F -t mangle -P INPUT ACCEPT
$F -t mangle -P FORWARD ACCEPT
$F -t mangle -P POSTROUTING ACCEPT

echo "czyszczenie standardowych regol"
$F -F
$F -t nat -F
$F -t mangle -F

echo "kasowanie niestandardowych lancuchow"
$F -X
$F -t nat -X
$F -t mangle -X

if [ "$1" = "stop" ]
then
    echo "Firewall zatrzymany ...."
    exit 0
fi

echo "Wprowadzanie standardowych polis ...."
$F -P INPUT DROP
$F -P OUTPUT DROP
$F -P FORWARD DROP


#########
# INPUT #
#########
echo "Ustawianie lancucha INPUT ... "
#Ustanowione polaczenia
$F -A INPUT -p ALL -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT
$F -A INPUT -p ALL -i lo -j ACCEPT
#$F -A INPUT -p ALL -j bledne_pakiety
#DOCSIS compliant cable modems
#Drop without logging.
$F -A INPUT -p ALL -d 224.0.0.1 -j DROP
#zezwolenie dla sieci lokalnej - dla gate
$F -A INPUT -p ALL -i $L_NET_NAME -s $L_NET -j ACCEPT
$F -A INPUT -p ALL -i $L_NET_NAME -d $L_BRDC -j ACCEPT


$F -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j DROP
$F -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$F -A INPUT -p ICMP -j RETURN
#FTP client (data port non-PASV)
#$F -A INPUT -p TCP -s 0/0 --source-port 20 -j ACCEPT
#FTP control
#$F -A INPUT -p TCP -s 0/0 --destination-port 21 -j ACCEPT
# Passive FTP
#$F -A INPUT -p TCP -s 0/0 --destination-port 62000:64000 -j ACCEPT
#ssh
$F -A INPUT -p TCP -s 0/0 --destination-port 7878 -j ACCEPT
#HTTP
$F -A INPUT -p TCP -s 10.0.1.0/24 --destination-port 80 -j ACCEPT
#HTTPS
$F -A INPUT -p TCP -s 10.0.1.0/24 --destination-port 443 -j ACCEPT
# NTOP
$F -A INPUT -p TCP -s 10.0.1.0/24 --destination-port 3000 -j ACCEPT
#
$F -A INPUT -p TCP -s 10.0.1.0/24 --destination-port 161 -j ACCEPT
$F -A INPUT -p TCP -s 10.0.1.0/24 --destination-port 162 -j ACCEPT
$F -A INPUT -p UDP -s 10.0.1.0/24 --destination-port 161 -j ACCEPT
$F -A INPUT -p UDP -s 10.0.1.0/24 --destination-port 162 -j ACCEPT
#User specified allowed TCP protocol
$F -A INPUT -p TCP -s 0/0 --destination-port 5060:5070 -j ACCEPT
#zatrzymanie rozgloszen
$F -A INPUT -p ALL -d 255.255.255.255 -j DROP

#nie pasujace - logowanie
$F -A INPUT -j LOG --log-prefix "$LOG INPUT:99 "

###########
# FORWARD #
###########
#dla gate caly
echo "Ustawianie lancucha FORWARD ... "
$F -A FORWARD -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT
# SERWER DO VPN
$F -t filter -A FORWARD -s 10.0.1.210/255.255.255.0 -d 0/0 -j ACCEPT
$F -t filter -A FORWARD -s 0/0 -d 10.0.1.210/255.255.255.0 -j ACCEPT
## SERWER DO TESTOW POCZTY
$F -t filter -A FORWARD -s 10.0.1.206/255.255.255.0 -d 0/0 -j ACCEPT
$F -t filter -A FORWARD -s 0/0 -d 10.0.1.206/255.255.255.0 -j ACCEPT
#$F -A FORWARD -p ALL -j bledne_pakiety
#echo "ZMIAN"
$F -A FORWARD -p tcp -i $L_NET_NAME -j ACCEPT
$F -A FORWARD -p udp -i $L_NET_NAME -j ACCEPT
$F -A FORWARD -p ALL -i $L_NET_NAME -j ACCEPT

#nie pasujace - loguj
#$F -A FORWARD -j LOG --log-prefix "$LOG FORWARD:99 "

##########
# OUTPUT #
##########

echo "Ustawianie lancucha OUTPUT ... "

$F -A OUTPUT -m state -p icmp --state INVALID -j DROP
$F -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
$F -A OUTPUT -p ALL -o lo -j ACCEPT

#dla gate
$F -A OUTPUT -p ALL -s $L_NET_IP -j ACCEPT
$F -A OUTPUT -p ALL -o $L_NET_NAME -j ACCEPT

$F -A OUTPUT -p ALL -o $G_NET_NAME -j ACCEPT

#nie pasujace - loguj
$F -A OUTPUT -j LOG --log-prefix "$LOG OUTPUT:99 "

#############
# nat table #
#############
echo "Ustawianie NAT ... "
#w nat wszystkie reguly dla gate
##############
# PREROUTING #
##############
echo "Inicjalizuje PRERUTING"
#przekierowanie hosta a.a.a.a wchodzacego na x.x.x.x na adres y.y.y.y
#$F -t nat -A PREROUTING -s 0/0 -d 93.159.BB.BBB -j DNAT --to-destination 10.0.1.210
# SERWER VPN
$F -t nat -A PREROUTING -d 93.159.BB.BBB -j DNAT --to 10.0.1.210
# SERWER POCZTOWY TEST
$F -t nat -A PREROUTING -d 93.159.CC.CC -j DNAT --to 10.0.1.206
###############
# POSTROUTING #
###############
echo "Inicjalizuje POSTROUTING"

$F -t nat -A POSTROUTING -o $G_NET_NAME -j SNAT --to-source $G_NET_IP
$F -t nat -A POSTROUTING -o $L_NET_NAME -j SNAT --to-source $G_NET_IP
# SERWER VPN
$F -t nat -A POSTROUTING -s 10.0.1.210 -j SNAT --to-source 93.159.BB.BBB
# Serwer Pocztowy
$F -t nat -A POSTROUTING -s 10.0.1.206 -j SNAT --to-source 93.159.CC.CC
Będę bardzo zobowiązany za sugestie lub jeśli ktoś łaskawy za pomoc.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

redelek pisze:

Kod: Zaznacz cały

iptables -A OUTPUT -p tcp -d 10.0.1.95  -j DROP
iptables -A INPUT -s 10.0.95 -j DROP
Jest to maszyna która robi NAT. Należy zatem użyć łańcucha FORWARD dla ruchu do/z "internetu".
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Z ,,FORWARD'' też próbowałem i nic.

Znalazłem

Kod: Zaznacz cały

iptables -I FORWARD -p ALL -d 10.0.1.95 -j DROP
Pytanie teraz jak z tym facebook.com, jak to zablokować?
Cyphermen
Beginner
Posty: 426
Rejestracja: 24 maja 2009, 10:56
Lokalizacja: cze-wa

Post autor: Cyphermen »

Możesz zablokować mac adres karty i tyle. Pytanie, czy wiesz, które to komputery? Albo zablokuj po prostu całemu segmentowi sieci adres facebook.com, w końcu to jest firma a nie zabawa, więc nie muszą na taką stronę wchodzić.
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Mac adresy komputerów znam, niestety specyfikacja firmy nie pozwala na całkowite zablokowanie facebook.com.
Cyphermen
Beginner
Posty: 426
Rejestracja: 24 maja 2009, 10:56
Lokalizacja: cze-wa

Post autor: Cyphermen »

No to blokuj po MAC adresie. Iptables ma odpowiedni moduł do tego.
Możesz też ustawić tym komputerom jakiś stały adres w dhcp na MAC. Gdy karta o tym MAC poprosi o adres zostanie przydzielony jej ten konkretny, który ustalisz i wtedy na ten adres nałożysz ograniczenie dostępu do facebook.com.
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

No dobrze, może komuś się przyda.

Blokowanie facebook.com po adresie IP.

Kod: Zaznacz cały

FACEBOOK_DENY="192.168.1.12 192.168.1.14 192.168.1.111"
iptables -N FACEBOOK
 
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 80 -j FACEBOOK
 
## BLOKUJEMY FB
for face in $FACEBOOK_DENY; do
    iptables -A FACEBOOK -s $face -j REJECT
done

lub jak ktoś ma taki problem jak ja, czyli po IP nie za bardzo to po mac adresie.

Blokowanie po MAC adresie

Kod: Zaznacz cały

FACEBOOK_DENY="00:15:60:C2:EC:6F 00:1E:90:7C :D E:3A"
iptables -N FACEBOOK
 
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 80 -j FACEBOOK
 
## BLOKUJEMY FB
for face in $FACEBOOK_DENY; do
    iptables -A FACEBOOK -m mac --mac-source $face -j REJECT
done

Dziękuję wszystkim za naprowadzenie mnie na rozwiązanie problemu.

Dodane:
Niestety problem wrócił. Szef jednak ma serce i poprosił mnie o rozeznanie się czy jest możliwość puszczenia ruchu ze stronami facebook.com w wyznaczonych godzinach.
Czy iptables potrafi puścić ruch np. od 8:00 do 9:00 i potem od 17:00 do 8:00 następnego dnia? Czy raczej już muszę szukać innego rozwiązania?
Na specyfikę firmy nie mogę wprowadzić proxy.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Oczywiście, że potrafi. Zajrzyj do artykułów na tym portalu.
Awatar użytkownika
redelek
Posty: 89
Rejestracja: 19 marca 2007, 13:45

Post autor: redelek »

Dziękuję, o to chodziło.
Cyphermen
Beginner
Posty: 426
Rejestracja: 24 maja 2009, 10:56
Lokalizacja: cze-wa

Post autor: Cyphermen »

Szkoda że nie możesz właśnie squidguard wprowadzić do firmy. Zablokował byś wszystko co ma w sobie facebook, fb itd. i po sprawie.

Problem zapewne wrócił dlatego, że facebook ma więcej serwerów niż ty zablokowałeś.
ODPOWIEDZ