Jump to content
BlackExplotioN

Ubuntu Server ile Transparent Proxy + Firewall Kurulumu

Recommended Posts

Ubuntu Server ile Transparent Proxy + Firewall Kurulumu Kurulacak olan sistem tek ya da çift ethernet kartlı Ubuntu Server a Squid + iptables ile firewall yapılandırması içindir. Ben ip adreslerimi kendime göre ayarladım. Siz de kendinize göre düzenleyin. Ubuntu Server olacak PC nin ip adresi : 172.16.10.210 Adsl Modemimim ip adresi : 172.16.10.1 Adsl Modemde DHCP yi kapattım. İç Network deki makinelere manual ip verdim ve iç network deki makinelerime Varsayılan Ağ Geçidi olarak (gateway) Ubuntu Server imin ip sini yazdım. Siz isterseniz Ubuntu Server imiza DHCP kurup ADSL modemin DHCP sini kapatıp o şekilde kullanın. Ben biraz manual ayarları seven kısımdayım. Çok gerekmedikçe herşeyi manual yaparım Standart Ubuntu Server kurulumu yapıp sadece SSH Server kuruyoruz, ilk olarak root kullanıcımıza şifre atayalım. Kod: [seç] sudo passwd root yeni parolayı girdikten sonra Kod: [seç] su ile login olalim. Şahsen ben sudo yazmayı sevmiyorum. Siz isterseniz her komut satırının başına sudo ekleyin ilk olarak kontrol etmemiz gereken Ethernet kartlarımızın durumu; Kod: [seç] ifconfig Kod: [seç] eth1 Link encap:Ethernet HWaddr 08:00:27:62:23:09 inet addr:172.16.10.210 Bcast:172.16.10.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe62:2309/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:216 errors:0 dropped:0 overruns:0 frame:0 TX packets:136 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:19082 (19.0 KB) TX bytes:15675 (15.6 KB) Interrupt:10 Base address:0xd240 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Buna Benzer bir şeyler çıktı ise sorun yok. Sizde 2 ethernet kartı da olabilir. Ethernet kartımız kurulum sırasında büyük ihtimal ile otomatik ip almıştır. Biz öncelikle ip adresimizi ve dns çözümlemesi için gerekli ayarlarımızı yapalım; Kod: [seç] nano /etc/network/interfaces Kod: [seç] # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth1 iface eth1 inet static address 172.16.10.210 netmask 255.255.255.0 network 172.16.10.0 broadcast 172.16.10.255 gateway 172.16.10.1 Ben ip adreslerimi kendime göre ayarladım. Siz kendi network ünüze göre düzenleyin. Bu işelmden sonra kaydedip çıkıyoruz ve DNS içiin ayarımızı yapıyoruz; Kod: [seç] nano /etc/resolv.conf Kod: [seç] nameserver 208.67.222.222 nameserver 195.175.39.40 kaydedip çıkalım. Ben burada 1. DNS server olarak Open DNS kullandım. Malümünüz youtube ye felan girmek isterseniz uğraşmayın. Ama ben ttnet yasakladı ise ben de uyarım diyenlerdenseniz 1. DNS e TTNET in DNS ip lerini giriniz. Server imizi restart edelim ve ssh client ile bağlanalıp bundan sonraki ayarlarımıza ordan devam edelim. Kod: [seç] ssh root@172.16.10.210 Kod: [seç] root@172.16.10.210's password: hiçbir sorun olmadan bağlanmamız gerekiyor. Olacağını da sanmıyorum ve anlatmaya devam ediyorum Öncelikle internete çıkabiliyormuyuz bir test edelim; Kod: [seç] ping www.yahoo.com Kod: [seç] PING www-real.wa1.b.yahoo.com (69.147.76.15) 56(84) bytes of data. 64 bytes from f1.www.vip.re1.yahoo.com (69.147.76.15): icmp_seq=1 ttl=54 time=158 ms 64 bytes from f1.www.vip.re1.yahoo.com (69.147.76.15): icmp_seq=2 ttl=54 time=157 ms . . Bu şekilde çıktı aldıysak sorun yok. Kod: [seç] apt-get update paket listemizi güncelliyoruz. IP forward i etkinleştirelim; Kod: [seç] nano /etc/sysctl.conf Kod: [seç] # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 ipv4 satırındaki # i kaldırıyoruz. Ubuntu Server imizi restart edip bir test edelim bakalim ne olacak? Server imiz açıldıktan sonra terminallerden birisine gateway olarak Server imizin ip sini girelim; Örn; ip address 172.16.10.211 netmask 255.255.255.0 gateway 172.16.10.210 dns 172.16.10.210 yapalım ve test edelim. Internete sorunsuz çıkması lazım... AAAaaa ne oldu şimdi? Ubuntu Server imiz Router oluverdi bir anda Şimdi biraz iptables ile haşır neşir olalım ve Port kısıtmalası yapalım ki millet içerde at koşturmasın. Trojanlar virüsler sistemimizi halt etmesin ... IPTABLES AYARLARI Default kurulumda iptables da herhangi bir ayar olmaz. Kod: [seç] iptables -L Kod: [seç] 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 Şeklindedir. Biz bunu değiştirelim ve standart internet çıkışı için gerekli olan tanımlamaları yapalım; İlk olarak SSH ile bu server a bağlanacağımız için şu satırı girelim; Kod: [seç] iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT ve bunu daha sonra açılışta çalıştıracağım bir dosyaya kayıt ediverelim; Kod: [seç] iptables-save > /etc/iptables.up.rules Port kısıtlamalarımızı yapmaya başlayalım; Kod: [seç] iptables -P INPUT DROP Kod: [seç] iptables -P FORWARD DROP Kod: [seç] iptables-save > /etc/iptables.up.rules Kod: [seç] iptables -L Kod: [seç] Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Gördüğünüz gibi INPUT ve FORWARD paketlerini dropladık. Sadece ssh bağlantımız için gerekli olan tanımımız duruyor. Ek olarak ip bilgilerini loglayalim; Kod: [seç] iptables -A INPUT -j LOG Kod: [seç] iptables -A FORWARD -j LO G Kod: [seç] iptables -A OUTPUT -j LOG ( NOT : Bu loglara bakmak için ; Kod: [seç] tail -f /var/log/messages Bu yaptıklarımızı tekrar kayıt edelim; Kod: [seç] iptables-save > /etc/iptables.up.rules Bu firewall betiğimizi açılışta çalıştıralım; Kod: [seç] nano /etc/network/interfaces Kod: [seç] The primary network interface auto eth1 iface eth1 inet static address 172.16.10.210 netmask 255.255.255.0 network 172.16.10.0 broadcast 172.16.10.255 gateway 172.16.10.1 IPTABLES AYARLARIMIZ AÇILIŞTA ÇALIŞSIN Kod: [seç] post-up iptables-restore < /etc/iptables.up.rules ####################### ############################# kaydedip çıkalım ve server imizi restart edelim. Restart dan sonra daha önce internete çıkan terminalizin internete artık çıkamadığını göreceksiniz. EEEee olsun o kadar firewall ayarı yapıyoruz Server imiz açıldıktan sonra iptables imiz ne halde bir bakalım; Kod: [seç] iptables -L Kod: [seç] Chain INPUT (policy DROP) target prot opt source destination LOG all -- anywhere anywhere LOG level warning ACCEPT tcp -- anywhere anywhere tcp dpt:ssh Chain FORWARD (policy DROP) target prot opt source destination LOG all -- anywhere anywhere LOG level warning Chain OUTPUT (policy ACCEPT) target prot opt source destination LOG all -- anywhere anywhere LOG level warning Bir de localhost umuza full hak verelim; Kod: [seç] iptables -A INPUT -i lo -j ACCEPT * her şey yolunda. Şimdi terminallere internete çıkıiş hakkı verelim. Kod: [seç] iptables -A FORWARD -s 172.16.10.0/24 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 172.16.10.0/24 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 172.16.10.0/24 -p tcp --dport 53 -j ACCEP T Kod: [seç] iptables -A FORWARD -s 172.16.10.0/24 -p udp --dport 53 -j ACCEPT iptables-save > /etc/iptables.up.rules Bu şekilde Sadece terminallere 80,443 ve DNS çözümlemeleri için hak verdik. İçerdeki makinenin herhangi birisinden test edin. Sadece internette sörf yapabilirsiniz. Diğer tüm portlar kapandı İçerdeki makinelerimiz mail gönderip alıyor ne yapacam diyenlere; Kod: [seç] iptables -A FORWARD -s 172.16.10.0/24 -p tcp --dport 587 -j ACCEPT iptables -A FORWARD -s 172.16.10.0/24 -p tcp --dport 110 -j ACCEPT Tabii her ekleme den sonra unutmayalım ki; Kod: [seç] iptables-save > /etc/iptables.up.rules isterseniz bir kez daha reboot edin. Test edin. * her şey yolunda ise kendinize göre istediğiniz portları açın. Belirli ip lere FULL PORT izin vermeniz gerekiyorsa; Kod: [seç] iptables -A FORWARD -s 172.16.10.51/32 -p tcp -j ACCEPT iptables -A FORWARD -s 172.16.10.52/32 -p tcp -j ACCEPT iptables -A FORWARD -s 172.16.10.53/32 -p tcp -j ACCEPT iptables -A FORWARD -s 172.16.10.51/32 -p udp -j ACCEPT iptables -A FORWARD -s 172.16.10.52/32 -p udp -j ACCEPT iptables -A FORWARD -s 172.16.10.53/32 -p udp -j ACCEPT şeklinde yapabilirsiniz... Ek olarak; Kod: [seç] iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -A INPUT -i eth1 -m state –- state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state –- state RELATED,ESTABLISHED -j ACCEPT yapalım. Kod: [seç] iptables -L Kod: [seç] Chain INPUT (policy DROP) target prot opt source destination LOG all -- anywhere anywhere LOG level warning ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED Chain FORWARD (policy DROP) target prot opt source destination LOG all -- anywhere anywhere LOG level warning ACCEPT tcp -- 172.16.10.0/24 anywhere tcp dpt:submission ACCEPT tcp -- 172.16.10.0/24 anywhere tcp dpt:www ACCEPT tcp -- 172.16.10.0/24 anywhere tcp dpt:https ACCEPT tcp -- 172.16.10.0/24 anywhere tcp dpt:domain ACCEPT udp -- 172.16.10.0/24 anywhere udp dpt:domain ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT) target prot opt source destination LOG all -- anywhere anywhere LOG level warning Böyle bir iptables çıktımız olması gerekiyor. Buraya kadar sanırım iptables konusunda ve Ubuntu Server imizi bir firewall haline getirmekte sizlere yardımcı olmuşumdur. Aynı sistem 2 Ethernet kartı olsa ne olurdu? Buyrun onu da yapıverelim 2 ETHERNET KARTI ile FIREWALL UYGULAMASI Bu senaryo da 2 ethernet kartı olduğunu ve 1 kartımızın Network e diğer kartımızın ADSL modeme bağlı olduğunu varsayalım. İlk önce Ethernet Kartlarımızı ayarlayalıyoruz ; Kod: [seç] nano /etc/network/interfaces Kod: [seç] # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # İç Network e Bakan Ethernet Kartımız auto eth0 iface eth0 inet static address 192.168.2.2 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 gateway 192.168.2.1 # ADSL MODEME bağlı olan Ethernet Kartımız auto eth1 iface eth1 inet static address 172.16.10.210 netmask 255.255.255.0 network 172.16.10.0 broadcast 172.16.10.255 Kod: [seç] nano /etc/resolv.conf Kod: [seç] nameserver 208.67.222.222 nameserver 195.175.39.40 kaydedip çıkalım. Ben burada 1. DNS server olarak Open DNS kullandım. Malümünüz youtube ye felan girmek isterseniz uğraşmayın. Ama ben ttnet yasakladı ise ben de uyarım diyenlerdenseniz 1. DNS e TTNET in DNS ip lerini giriniz. Server imizi restart edelim ve ssh client ile bağlanalıp bundan sonraki ayarlarımıza ordan devam edelim. Kod: [seç] ssh root@172.16.10.210 Kod: [seç] root@172.16.10.210's password: hiçbir sorun olmadan bağlanmamız gerekiyor. Olacağını da sanmıyorum ve anlatmaya devam ediyorum Öncelikle internete çıkabiliyormuyuz bir test edelim; Kod: [seç] ping www.yahoo.com Kod: [seç] PING www-real.wa1.b.yahoo.com (69.147.76.15) 56(84) bytes of data. 64 bytes from f1.www.vip.re1.yahoo.com (69.147.76.15): icmp_seq=1 ttl=54 time=158 ms 64 bytes from f1.www.vip.re1.yahoo.com (69.147.76.15): icmp_seq=2 ttl=54 time=157 ms Bu şekilde çıktı aldıysak sorun yok. Kod: [seç] apt-get updat e paket listemizi güncelliyoruz. IP forward i etkinleştirelim; Kod: [seç] nano /etc/sysctl.conf Kod: [seç] # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 ipv4 satırındaki (#) i kaldırıyoruz. Restart ediyoruz. Buradan sonra işler biraz farklılaşıyor... Iptables imizi yine yukarıda açıkladığım gibi düzenliyoruz. Ek olarak; Kod: [seç] iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A INPUT -i eth0 -m state –- state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state –- state RELATED,ESTABLISHED -j ACCEPT eklememiz gerekiyor. TRANSPARENT SQUID KURULUMU İlk olarak Squid paketini kuralım; Kod: [seç] apt-get install squid Squid başarılı bir biçimde kurulduktan sonra ayarlamızı yapalım; Kod: [seç] nano /etc/squid/squid.conf Kod: [seç] # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed 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 Buradaki satirlari kendi network umuze göre ayarlamamız gerekiyor. #Recommended minimum configuration: # # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager Kod: [seç] http_access allow localnet ( Bu satırı siz EKLEYECEKSİNİZ) Kaydedip çıktıktan sonra Squid imizi restart edelim; Kod: [seç] /etc/init.d/squid restart Peki Squid i de kurduk. Acaba çalışıyormu ? Öncelikli olarak iptables da ayarlarımızı yapalım; Kod: [seç] iptables -A INPUT -p tcp --dport 3128 -j ACCEPT Kod: [seç] iptables-save > /etc/iptables.up.rules Terminallerden Internet Explorer ya da Mozilla ne kullanıyorsanız Proxy sunucu olarak Ubuntu Server imizin ip sini ve squid imizin port unu girelim ve bakalım ne olacak ? Ben 172.16.10.210 port 3128 yaptim. Siz istediğiniz gibi değiştirebilirsiniz. Bundan sonra; bakalım terminalimiz squid den mi çıkmış diye test edelim; Kod: [seç] tail -f /var/log/squid/access.log Kod: [seç] 1258127178.143 646 172.16.10.212 TCP_MISS/200 654 GET http://csm50.url.trendmicro.com/P/224/7EDF84EFB3177DB2D7409E21071BEE634629391CEB0BDA74755E8DE4F726D38DFAE825A41C8A903F3D051953B8716899E1CEF0D203E95D134A210252CD86572D334EB89DF82ED8482E8C3DE0BD2A7AAEA54C68E043F06A68AA0514AA016CA8D7A7997EE855B7408D9CE0482B25555C13 - DIRECT/213.155.157.48 text/html 1258127178.570 424 172.16.10.212 TCP_MISS/200 7627 GET http://www.google.com.tr/search?hl=tr&source=hp&q=deneme&btnG=Google%27da+Ara&meta=&aq=null&oq= - DIRECT/66.102.9.99 text/html Oh ne güzel Squid de çalışıyor. Şimdi de öyle bi ayar yapalım ki terminale proxy girmeden Squid den internete çıkılsın (şu meşhur transparent Proxy olayı) ben de log layayım, içerik filtresi koyayım derseniz; Kod: [seç] iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.16.10.210:3128 Kod: [seç] iptables-save > /etc/iptables.up.rules Kod: [seç] nano /etc/squid/squid.conf Kod: [seç] # Squid normally listens to port 3128 http_port 3128 Satırını bulup; # Squid normally listens to port 3128 http_port 3128 transparent bu hale getiriyoruz. Test edelim bakalım ne olmuş? Kod: [seç] tail -f /var/log/squid/access.log Kod: [seç] 1258127744.945 106 172.16.10.212 TCP_MISS/200 5461 GET http://l.yimg.com/a/i/us/crsl/sma/09q2/71471689_47.jpg - DIRECT/77.238.187.43 image/jpeg 1258127745.035 394 172.16.10.212 TCP_MISS/200 33379 GET http://l.yimg.com/a/i/crsl/gam/09q4/cut_350x200_gam_v2.jpg - DIRECT/77.238.187.43 image/jpeg 1258127745.159 176 172.16.10.212 TCP_MISS/200 651 GET http://csm50.url.trendmicro.com/P/2688 1258127745.733 496 172.16.10.212 TCP_MISS/200 6348 GET http://d.yimg.com/a/i/ww/met/sprite_pg_081209.png - DIRECT/77.238.187.39 image/png Eee ne güzel di mi? Ve Squid imiz transparent oluveriyor

Share this post


Link to post
Share on other sites

Konularınızda php tag veya quote kullanarak daha okunaklı hale getirebilirsiniz. Ek olarak her Linux dağıtımı için bölümlerimiz mevcut. Bu konuyu da ait olduğu yere yani Ubuntu bölümüne alıyorum.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...