iptables ve Geoip ile Ülke Bloklama - nciftci - 21-02-2016
Bazi ulkelerden Proxmox sisteminize erisimi engellemek icin iptables ve geoip kullanarak yapabilirsiniz.
iptables ile geoip yi kullanabilmek için xtables-addons ile birlikte bazı paketleri kurmanız gerekmektedir.
Kod:
#apt-get update
#apt-get install iptables iptables-dev module-assistant xtables-addons-common libtext-csv-xs-perl unzip
Paketlerin kurulumundan sonra,
Geoip database ini asağıdaki komutlarla oluşturun:
Kod:
cd /usr/lib/xtables-addons/
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip/
cp -r {BE,LE} /usr/share/xt_geoip/
Proxmox 'un kernel header ini kurun.
Kod:
apt-get install pve-headers-`uname -r`
Şimdi, xtables-addons un config dosyası olan "mconfig" dosyasını nano editorü ile açın.
Kod:
#nano /usr/src/modules/xtables-addons/mconfig
"build_geoip=m",
"build_pknock=m"
"build_psd=m"
seçenekleri dışındaki diğer opsiyonlardaki "m" leri kaldırın.
dosyayı kaydedip çıkın. Derlerken bu dosyanın tekrar sistem tarafından tekrar değiştirilmemesi için;
Kod:
#chattr +i /usr/src/modules/xtables-addons/mconfig
yapın.
Son olarak module-assistant komutunu girin.
Kod:
#module-assistant --verbose --text-mode auto-install xtables-addons
Updating info about xtables-addons-source
Updated infos about 1 packages
Getting source for kernel version: 2.6.32-34-pve
Kernel headers available in /usr/src/linux
Creating symlink...
Couldn't create the /usr/src/linux symlink!
apt-get install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 65 not upgraded.
Done!
unpack
Extracting the package tarball, /usr/src/xtables-addons.tar.bz2, please wait...
action tar --bzip2 -x -f /usr/src/xtables-addons.tar.bz2
.............................
make[2]: Leaving directory `/usr/src/modules/xtables-addons'
dh_install -a
dh_installdocs -a
dh_installchangelogs -a
dh_installexamples -a
dh_installman -a
dh_installcatalogs -a
dh_installcron -a
dh_installdebconf -a
dh_installemacsen -a
dh_installifupdown -a
dh_installinfo -a
dh_installinit -a
dh_installmenu -a
dh_installmime -a
dh_installmodules -a
dh_installlogcheck -a
dh_installlogrotate -a
dh_installpam -a
dh_installppp -a
dh_installudev -a
dh_installwm -a
dh_installxfonts -a
dh_installgsettings -a
dh_bugfiles -a
dh_ucf -a
dh_lintian -a
dh_gconf -a
dh_icons -a
dh_perl -a
dh_usrlocal -a
dh_link -a
dh_compress -a
dh_fixperms -a
dh_strip -a
dh_makeshlibs -a
dh_shlibdeps -a
dh_installdeb -a
dh_gencontrol -a
dh_md5sums -a
debian/rules override_dh_builddeb
..........................
make[2]: Entering directory `/usr/src/modules/xtables-addons'
dh_builddeb --destdir=/usr/src
dpkg-deb: building package `xtables-addons-modules-2.6.32-34-pve' in `/usr/src/xtables-addons-modules-2.6.32-34-pve_1.42-2_amd64.deb'.
make[2]: Leaving directory `/usr/src/modules/xtables-addons'
make[1]: Leaving directory `/usr/src/modules/xtables-addons'
/usr/bin/make -f debian/rules kdist_clean
make[1]: Entering directory `/usr/src/modules/xtables-addons'
/usr/bin/make -C /usr/src/linux-headers-2.6.32-34-pve M=/usr/src/modules/xtables-addons XA_ABSTOPSRCDIR=/usr/src/modules/xtables-addons XA_TOPSRCDIR=/usr/src/modules/xtables-addons DEPMOD=/bin/true clean
expr: syntax error
make[2]: Entering directory `/usr/src/linux-headers-2.6.32-34-pve'
CLEAN /usr/src/modules/xtables-addons/.tmp_versions
CLEAN /usr/src/modules/xtables-addons/Module.symvers /usr/src/modules/xtables-addons/modules.order
make[2]: Leaving directory `/usr/src/linux-headers-2.6.32-34-pve'
dh_auto_clean
dh_prep
dh_clean
make[1]: Leaving directory `/usr/src/modules/xtables-addons'
dpkg -Ei /usr/src/xtables-addons-modules-2.6.32-34-pve_1.42-2_amd64.deb
Selecting previously unselected package xtables-addons-modules-2.6.32-34-pve.
(Reading database ... 80901 files and directories currently installed.)
Unpacking xtables-addons-modules-2.6.32-34-pve (from .../xtables-addons-modules-2.6.32-34-pve_1.42-2_amd64.deb) ...
Setting up xtables-addons-modules-2.6.32-34-pve (1.42-2) ...
#
Başarılı bir şekilde kurduysanız, artık iptables i kullanmaya hazırsınız demektir.
Çin 'den gelen bütün paketleri engellemek için:
Kod:
#iptables -D INPUT -m geoip --src-cc CN -j DROP
Çin ve rusya dan gelen ssh isteklerini engellemek isterseniz:
Kod:
#iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc CN,RU -j DROP
Sisteminize sadece Türkiye 'den ssh erişimi olsun ve diger butun ulkelerden engellemek icin:
Kod:
#iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc TR -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j DROP
"--src-cc" veya "--dst-cc" den önce "!" ünlem işareti koyarak kuralınızı "değilse" anlamına çevirebilirsiniz.
Örneğin:
Kod:
#iptables -I INPUT -m geoip ! --src-cc TR -j DROP
Türkiye'den gelmeyen bütün paketleri blokla - drop et.
Kod:
#iptables -I INPUT -p tcp --dport 22 -m geoip ! --src-cc TR -j DROP
SSH (22) portuna gelen ve Türkiye'den gelmeyen bütün paketleri blokla - drop et.
Hostunuz uzerindeki "tüm" sanal makinelerinize Çin den hiçbirşekilde ulaşılmasını istemiyorsanız.
Kod:
#iptables -I FORWARD -m geoip --src-cc CN -j DROP
Bu kuralı silmek için de; "-D" opsiyonunu kullanarak yapabilirsiniz.
Kod:
#iptables -D FORWARD -m geoip --src-cc CN -j DROP
port belirtmek için yukarıdaki örneklerdeki gibi "--dport" u da ekleyebilirsiniz.
sadece bir sanal makinenize Çinden hicbir portuna ulaşılmasını istemiyorsanız "-d" ile hedef sanal makinenizin ip adresini (x.x.x.x) belirterek yapabilirsiniz.
Kod:
#iptables -I FORWARD -m geoip --src-cc CN -d x.x.x.x -j DROP
Turkiye ve Almanya haricinde, hicbir ulkeden ssh ile sanal sunucularinizin hicbirine erisim yapilmasini istemiyorsaniz:
Kod:
#iptables -I FORWARD -p tcp --dport 22 -m geoip ! --src-cc TR,DE -j DROP
|