Ubuntu squid+dansguardian köprü çalıştırma

Başlatan rumeliruzgari, 18 Nisan 2012 - 11:16:53

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

rumeliruzgari

Merhaba arkadaşlar,
İşyerimize filtre kurmak istiyorum UBUNTU 11.04 yükledim iki adet NIC ile eth0 ve eth1.
Dansguardian ve Squid 2.7 stable9 yükledim.Filtre PC'nin kendisine düzgün çalışıyor sonra bridge oluşturdum
lokal ağı filtrelemek için.Bridge ayarları şöyle

sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 eth1
sudo ifconfig br0 192.168.0.71 netmask 255.255.255.0 up
sudo route add default gw 182.168.0.2 dev br0
sudo ifconfig eth0 0.0.0.0 promisc up
sudo ifconfig eth1 0.0.0.0 promisc up
sudo brctl stp br0 on


köprü normal çalışıyor - problem yok.

sonra köprüyü filtreye yönlendiriyorum şu scriptle

sudo ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80 -j redirect --redirect-target ACCEPT
sudo iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128
sudo iptables-save > iptables
sudo mv iptables /etc/dansguardian/iptables
sudo squid start
sudo dansguardian start


Sonra aşağıdaki hata geliyor:
ACCESS DENIED
Access control configuration prevents your request from being allowed at this time.


squid.conf dosyasında şu ayarları yaptım ilk kurulumda.
...
# WELCOME TO SQUID 2.7.STABLE9
....

http_access allow localhost
......
http_access deny all
.....
icp_access allow localnet
icp_access deny all
.....
http_port 3128 transparent
....
dns_nameservers 195.175.39.39 195.175.39.40

...
Yerel ağımın kullandığı IP adresler 192.168.0.1-192.168.0.254 aralığında.

Teşekkür ederim.

Düzenleme Notu: Komut ve çıktılarını kod etiketi içerisinde veriniz.

cagriemer


rumeliruzgari

Merhaba,
peki benim verdiğim IPTABLES ve bridge ayarlarına göre nasıl bir konfigürasyon yapılır squid.conf dosyasına?
Benim kurduğum Ubunru server versiyonu değil.Lokal ağı çalıştırır mı?

mustafayilmaz

Merhaba,

Muhtemeldir ki; squid üzerinde acl(access-list) tanımlaman gerekir.
Mesela;


acl allcomputers src 192.168.0.0/255.255.255.0
http_access allow allcomputers


satırlarını squid.conf'a eklediğinde 192.168.0.0 ağındaki bütün bilgisayarların http erişimine izin vermiş olmalısın.



arpia

#4
Bridge ne için anlamadım, nasıl bir topoloji var bilmiyorum ama...

Bir ethernetine interneti ötekine networkü bağladıktan sonra,
net.ipv4.ip_forward değişkeninin 1 yapılması gerekiyor.
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
ile bağlantıyı paylaştırmış olacaksın.

nat için,
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

gelen istekleri dansguardian için 8080 e yönlendirmeyi unutmayalım,
sudo iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

Anlık çıkışlara bakmak istersen,
tail -f /var/log/dansguardian/access.log

Tabi ip leri, interface i kendine göre düzenlersin

rumeliruzgari

Merhaba,
squid.conf dosyasına

acl allcomputers src 192.168.0.0/255.255.255.0
http_access allow allcomputers


ayarları yaptım

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

yazdığımda  "UNAPROPRIATE ARGUMENT" diyor ve bir dahaki açılışta sıfırlanıyor.

Sonra,

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080


komutlarıda uyguladım fakat yönlendirme yapmıyor.

Arkadaşlar kendi PC'mde Dansguardian ve Squid sorunsuz çalışıyor.Çalıştırmak için şu bash dosyasından şu komutları çalıştırıyorum ve sorunsuz çalışıyor filtre:

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT
sudo iptables -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner proxy -j ACCEPT
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
sudo iptables -t nat -A OUTPUT -p tcp --dport 3128 -j REDIRECT --to-ports 8080
sudo iptables-save > iptables
sudo mv iptables /etc/dansguardian/iptables
sudo squid start
sudo dansguardian start

Fakat lokal ağı bağlayamıyorum filtreye.Lütfen bana sıfırdan bu işi nasıl yaparım anlatabilirmisiniz.Çok makbule geçer.İş yerine lazım.

Teşekkürler

Düzenleme Notu: Komut ve çıktılarını kod etiketi içerisinde veriniz.


arpia

#6
ip bloğunu ve interface leri kendinize göre değiştirdiniz mi? Siz 192.168.0.0/24 blokun da mısınız ?

Ayrıca,

sudo iptables -L
ve
sudo iptables -t nat -L
çıktılarını da alabilir miyiz?

Bridge yapmaktaki amaç nedir ? Local e bakan bacağın bloğu nedir ? Biraz daha ayrıntı alsak.
ipv4 forward önemli değil, script e yazarız bütün kuralları, rc.local den okuturuz. Değişiklik için scriptten düzeltirsiniz, okuması da daha kolay gelebilir.

rumeliruzgari

Dedğiniz komutları yazdığımda şunlar çıkıyor:

filter@filter-desktop:~$ sudo iptables -L
[sudo] password for filter:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
filter@filter-desktop:~$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
filter@filter-desktop:~$


Bridge ile lokal ağı Ubuntu makinesine bağlıyorum.Ubuntu makineside 192.168.0.2 IP adrtesli modeme bağlanıyor.
Tüm lokal ağ 192.168.0.0/255.255.255.0 static IP adreslere sahip.

Teşekkürler

arpia

#8
Tamam kura yok. onları biz sh dosyasından okuturuz.
Şimdi cevap yazacağım fakat size uyacakmı bilmiyorum.
O yüzden şöyle bir anlatım yapsanız, bende ona göre örnek bir sh dosyası göndersem size. Yada burada yazarım siz örnek olarak firewall.sh olarak kayıt edersiniz, açılışta onu okuturuz.
Şimdi Bridge gereksiz gözüküyor bu durumda.
Şu soruların cevapları yeterli olacaktır.

Sadece iki intarface olduğunu varsayıyorum, modemden gelen eth0 192.168.0.0/24, local network eth1 de 192.168.1.0/24 gibi .
Üst satırda yazdığımı kendinize göre doldurursanız, hemen hallederiz.

Yani ben araya gw,fw koyuyor olsam şöyle anlatırım;
Arkadaşlar modem le local aramıza bir cihaz koyuyorum, ubuntu kurdum. Çift ethernet kartı var. eth0'a modem bağlı 192.168.0.0/24 bloğunda. eth1'e de local ağımı bağladım oda 192.168.1.0/24 aralığında gibi.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 20 Nisan 2012 - 12:29:28

Bu arada yukarıda verdiğiniz çıktılarla, birşey yapmıyor olması normal. Telaşlanacak bir durumda yok. Sizden de cevap gelirse kısa zamanda aktif ederiz cihazı.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 20 Nisan 2012 - 13:22:04

Düzeltme tekrar :) yukarıda yazdıklarını, aradan zaman geçtiği için sanırım kaçırmışım.
Verdiğin default gw den bir bacağını yakalamış olduk. modem 182 de. local'in 192 de.
O zaman şöyle yapalım.
Modemden gelen yani 182.168.0.0/24 eth1 e takılı, local eth0

Ne olur ne olmaz chkconfig dansguardian on
dansguardian.conf için

language='turkish'
loglocation='/var/log/dansguardian/access.log'

değişiklikleri yeterli olacaktır.

resolve.conf düzenli sanırım default gw de belli, sunucu üzerinde internette var.

firewall.sh için örnek;


sudo iptables -F
sudo iptables -t nat -F
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

Burada interface arası geçiş sağlayıp eth0 yani local den, sadece 192.168.0.0/24 ip bloğundan gelen http isteklerini dansguardian üzerinde yönlendirdik. Başka kaynak tan gelen, yani aynı interface üzerinden başka ip bloğundan istek gelirse öyle bir yönlendirme söz konusu değil.
Yukarıdakileri /sbin/firewall.sh olarak olarak kayıt edebilirsin. /etc/rc.local içine de /sbin/firewall.sh ı eklersin, açılışta dosyayı okur.

Şu durumda interneti dansguardian filitrelemesi ile dağıtıyor olması lazım.
Ekstra istekler olabilir. Çünkü sadece içerik filitreleme var, iptables ile birşeyler yapabilirsin, yada dansguardian üzerinden de bir çok şey yapılabilir.
Çeşit olması açısından örnek.


sudo iptables -F
sudo iptables -t nat -F
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

#Belirli bir ip den gelen istegi, local de ki bir pc ye yonlendirmek isteyebilirsin. Butun portları ile yonlendirir.
sudo iptables -t nat -A PREROUTING -s 88.247.xxx.xx -p ALL -j DNAT --to-destination 192.168.0.x

#iceri vpn ile girmek isteyebilirsin. Mesela pptp vpn kurduktan sonra, iceri vpn yapanlarin sadece belirli pclere ulasmasini isteyebilirsin.
sudo iptables -t nat -A PREROUTING -i ppp0 -d 192.168.0.x -j ACCEPT
sudo iptables -t nat -A PREROUTING -i ppp0 -j DROP

#baska ne olabilir... Disari cikislari kontrol altina almak istersen, bloklarsin ama izin vermek gereken seylerde vardir, mesela iceride mail server var diyelim
#mail sunucunda 192.168.0.5 olsun mesela
#internet uzerinden mail sunucuya erisim
sudo iptables -A FORWARD -i eth1 -p tcp -m multiport --dports 110,587 -d 192.168.0.5 -j ACCEPT
#mail sunucunun internete erisimi
sudo iptables -A FORWARD -i eth0 -s 192.168.0.5 -p tcp --dport 587 -o eth1 -j ACCEPT
#tabi http de calissin
sudo iptables -A FORWARD -i eth0 -p tcp  --dport 80 -j ACCEPT
#geri kalani dusurelim mesela
sudo iptables -A FORWARD DROP

#Tabi gelen baglanti istekleri icinde benzer durumlar gecerli. birseyler yazilabilir


Baktım uzayacak, burada kesmeye karar verdim. Önce çalışsın... Sonra üzerinde çeşitli şeyler yapılabilir.
Umarım işine yarar ve kafa karıştırıcı olmamıştır. Kolay gelsin



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 20 Nisan 2012 - 13:26:09

ikinci örnek firewall.sh direk kullanılmaya uygun deil. çünkü iplere xx koymuştum...  Önce ilki çalıştırsın, sonra içinden kullanmak istediğin olursa düzenlersin kendine göre.

rumeliruzgari

Benim iki  ayak eth0 ve eth1 aynı - 192.168.0.0/24.
squid.conf'ta değişiklik yapmam gerekiyor mu?

arpia

Alıntı yapılan: rumeliruzgari - 20 Nisan 2012 - 16:03:17
Benim iki  ayak eth0 ve eth1 aynı - 192.168.0.0/24.
squid.conf'ta değişiklik yapmam gerekiyor mu?

Modem bacağını değiştirin isterseniz.
Bu arada squid falan kurduktan sonra conf da herhangi bir değişikliğe gerek yok, dansguardian da aynı. Yani farklı port kullanmak istiyorsanız değiştirmeniz lazım tabi.
Görüntü açısından belirttiğim gibi "language" kısmını değiştirmediyseniz değiştirebilirsiniz.


rumeliruzgari

Bacaklar aynı kalsa sorun olur mu.Düşüncem şu - filtrenin PCsi çökerse ağyı doğrudan modeme bağlamak sadece kablo yeri değiştirerek switch üzerinde?

arpia

Sorun olmaz. Kurallarınıza dikkat edersiniz ileride. İşin içine  "-i" interface kattıktan sonra birşey olmaz.

rumeliruzgari

#13
Bu iptable'de

sudo iptables -t nat -A PREROUTING -s 88.247.xxx.xx -p ALL -j DNAT --to-destination 192.168.0.x
IP adreslerde xx'lerin yerini dolduracakmıyız öyle mi kalacak.
88.247.xxx.xx   neyin IP'si?
Kusura bakmayın sorularım biraz cahilce ama yeni sayılırım linux'ta.
Teşekkürler.

arpia

Alıntı yapılan: rumeliruzgari - 21 Nisan 2012 - 18:06:39
Bu iptable'de

sudo iptables -t nat -A PREROUTING -s 88.247.xxx.xx -p ALL -j DNAT --to-destination 192.168.0.x
IP adreslerde xx'lerin yerini dolduracakmıyız öyle mi kalacak.
88.247.xxx.xx   neyin IP'si?
Kusura bakmayın sorularım biraz cahilce ama yeni sayılırım linux'ta.
Teşekkürler.

Estağfurullah, 88.247 ile başlayan ip yi örnek olarak verdim. Eğer DNAT yapacaksınız xxx leri doldurmanız lazım. xxx diye bir şey kalmaması lazım dersem daha doğru olur sanırım. Başka xxx ler de vardı çünkü.
Siz uygun ipleri yazarsınız.
Yazmak zorunda da değilsiniz, dışarıdan belirli bir ip den gelen isteği, içeride belirli bir ip ye yönlendirmek için kullanıyorum ben.
Önemli olan İnterneti paylaştırıp filtreleyin, gerisini istediğiniz gibi yapılandırabiliriz.

rumeliruzgari

#15
sudo iptables -t nat -A PREROUTING -s 88.247.xxx.xx -p ALL -j DNAT --to-destination 192.168.0.x

Kusura bakmayın kafamda tam netleşemedi bu kuralda 88.247.xxx.xx tam nedir.
Ve tüm lokal ağdaki birlgisayarlar için 192.168.0.x IPsini teker teker tekrarlamam mı lazım.
Benim modem IP adresim 192.168.0.2.

eth0 IP adresi 192.168.0.72
eth1 IP adresi 192.168.0.73


eth0 modem tarafında kalan NIC'in IP'si.

İç ağda 95 tane PC var IP'leri 192.168.0.3 ten başlıyor.Hepsi static adress.


Teşekkür ederim.

if

@rumeliruzgari, iletilerinizdeki komutları [code][/code] etiketi içerisinde veriniz. Daha önceki iletilerinizde de uyarılmıştınız dikkat ederseniz.

rumeliruzgari

#17
Pardon,
sudo iptables -t nat -A PREROUTING -s 88.247.xxx.xx -p ALL -j DNAT --to-destination 192.168.0.x
Kusura bakmayın kafamda tam netleşemedi bu kuralda 88.247.xxx.xx tam nedir.
Ve tüm lokal ağdaki birlgisayarlar için 192.168.0.x IPsini teker teker tekrarlamam mı lazım.
Benim modem IP adresim 192.168.0.2.

eth0 IP adresi 192.168.0.72
eth1 IP adresi 192.168.0.73

eth0 modem tarafında kalan NIC'in IP'si.

İç ağda 95 tane PC var IP'leri 192.168.0.3 ten başlıyor.Hepsi static adress.


Teşekkür ederim.

arpia

#18
Pardon dedikten sonra tekrar aynı yazıyı geçmeniz biraz ilginç oldu :)

sudo iptables -F
sudo iptables -t nat -F
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i eth1 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080


Sadece bunu yazınız. Diğer komutları şimdilik uygulamanıza gerek yok.

Sorunuza istinaden,
sudo iptables -t nat -A PREROUTING -s 88.247.208.143 -p ALL -j DNAT --to-destination 192.168.0.5

Yukarı derki; prerouting yapacaksın yoksa bozuşuruz, -s (kaynak) 88.247.208.142 kaynağından gelen istekleri yönlendir diyor, hedef olarak 192.168.0.5 gösterilmiş.
Bu sadece örnektir aynısını uygulamayın. Bu sadece lazım olursa diye örnek olarak vermiştim.
Dışarıdan gelen istekler firewall a geleceği için, tabi bu durumda modemin DMZ inde firewall olduğunu varsayıyorum, belirli bir yerden gelen isteği yönlendirmek için kullanabilirsiniz.
-p ALL da bütün portları yönlendiriyor.
Belirli bir ipden gelen isteği sadece belirli porta yönlendirmek isterseniz,
sudo iptables -t nat -A PREROUTING -s 88.247.208.143 -p tcp --dport 3389 -j DNAT --to 192.168.0.5

Burada da -s (kaynak) 88.247.208.143 kaynağından, -p (protocol) tcp protocol, --dport  hedef port olarak, 3389 dan gelen istekleri 192.168.0.5 e atıyor.

Siz önce çalıştırın sorunsuz olarak... Kodlara takılmayın. Sonra yapmak istediklerinizden yapamadıklarınız için yardımcı oluruz elbet.

rumeliruzgari

#19
Çalıştırdım ama olmadı.
sudo echo 1 > /proc/sys/net/ipv4/ip_forward

komutundadad access denied diyor.Anyamadım bu işi ethernet kartlarımda çalışıyor ayrı ayrı.?

heartsmagic

echo tee olmadan yemeyebilir sudo için.
sudo -i komutundan sonra bir dene.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

arpia

cevaba gerek kalmamış :)
sudo -i
root aldıktan sonra olacaktır.

Esas cevap yazmamız sebebi, Access Denied gibi hatalar aldığınız da, erişim hakkınız olmadığından bahsediyor. Bu gibi durumlarda sudo komutu ile yetki almaya çalışabilir yada,
passwd root
komutu ile yetkili kullanıcı olan root a şifre atayabilirsiniz. Devamında,
su
komutunu girip root şifresini girdikten sonra direk root olabilirsiniz.
Sistemdeki en yetkili kullanıcı olursunuz fakat hiç bir durumda yetkim yok demez, dikkatli olmak gerekir

rumeliruzgari

#22
Ben yinede bridge yoluyla çalıştırayım dedim sistemi.

>sh br.sh
içinden şu komutları çalıştırdım.

sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 eth1
sudo ifconfig br0 192.168.0.71 netmask 255.255.255.0 up
sudo route add default gw 182.168.0.2 dev br0
sudo ifconfig eth0 0.0.0.0 promisc up
sudo ifconfig eth1 0.0.0.0 promisc up
sudo brctl stp br0 on


köprü oluşturdum bu vaziyette ağdaki PC'ler Ubuntu üzerinden internete giriyor.
Sonra
>sh start2.sh
dosyasını çalıştırdım

sudo ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80 -j redirect --redirect-target ACCEPT
sudo iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128
sudo iptables-save > iptables
sudo mv iptables /etc/dansguardian/iptables
sudo squid start
sudo dansguardian start

Sanırım köprüyü squide yönlendirmeye başardım.Fakat bu defa şu hata çıkıyor - mesela www.google.com.tr ye girmeye çalıştırdığımda

Unable to determine IP address from host name <<www.google.com.tr>>

The DNS server returned:
Timeout


Squid ayarlarınıda şöyle yapmıştım önünde # olmayan satırları yazıyorum

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl benimki src 192.168.0.0/255.255.255.0

acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
......
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow localnet
http_access allow localhost
http_access allow benimki

.............
http_port 3128 transparent
cache_dir ufs /var/spool/squid 100 16 256
......................
dns_nameservers 195.175.39.39 195.175.39.40



Yardımınız için çok teşekkür ederim arkadaşlar.


rumeliruzgari

Çözülmedi daha malesef.
Bir yalnışım varsa kusura bakmayın.