కొన్ని దేశాల నుండి ట్రాఫిక్ను నిరోధించే పని చాలా సులభం అనిపిస్తుంది, అయితే మొదటి అభిప్రాయాలు మోసపూరితంగా ఉంటాయి. దీన్ని ఎలా అమలు చేయాలో ఈ రోజు మేము మీకు చెప్తాము.
పూర్వచరిత్ర
ఈ అంశంపై Google శోధన ఫలితాలు నిరాశపరిచాయి: చాలా పరిష్కారాలు చాలా కాలంగా "కుళ్ళినవి" మరియు కొన్నిసార్లు ఈ అంశం నిలిపివేయబడి, ఎప్పటికీ మరచిపోయినట్లు అనిపిస్తుంది. మేము చాలా పాత రికార్డులను పరిశీలించాము మరియు సూచనల యొక్క ఆధునిక సంస్కరణను భాగస్వామ్యం చేయడానికి సిద్ధంగా ఉన్నాము.
ఈ ఆదేశాలను అమలు చేయడానికి ముందు మీరు మొత్తం కథనాన్ని చదవాలని మేము సిఫార్సు చేస్తున్నాము.
ఆపరేటింగ్ సిస్టమ్ను సిద్ధం చేస్తోంది
యుటిలిటీని ఉపయోగించి ఫిల్టరింగ్ కాన్ఫిగర్ చేయబడుతుంది iptables, GeoIP డేటాతో పని చేయడానికి పొడిగింపు అవసరం. ఈ పొడిగింపులో చూడవచ్చు
వ్రాసే సమయంలో, xtables-addons యొక్క ప్రస్తుత వెర్షన్ 3.9. అయినప్పటికీ, ప్రామాణిక ఉబుంటు 20.04 LTS రిపోజిటరీలలో 3.8 మరియు ఉబుంటు 18.04 రిపోజిటరీలలో 3.0 మాత్రమే కనుగొనవచ్చు. కింది ఆదేశంతో మీరు ప్యాకేజీ మేనేజర్ నుండి పొడిగింపును ఇన్స్టాల్ చేయవచ్చు:
apt install xtables-addons-common libtext-csv-xs-perl
వెర్షన్ 3.9 మరియు ప్రాజెక్ట్ యొక్క ప్రస్తుత స్థితి మధ్య చిన్న కానీ ముఖ్యమైన తేడాలు ఉన్నాయని గమనించండి, వాటిని మేము తరువాత చర్చిస్తాము. సోర్స్ కోడ్ నుండి నిర్మించడానికి, అవసరమైన అన్ని ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
రిపోజిటరీని క్లోన్ చేయండి:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons అనేక పొడిగింపులను కలిగి ఉంది, కానీ మేము మాత్రమే ఆసక్తి కలిగి ఉన్నాము xt_geoip. మీరు సిస్టమ్లోకి అనవసరమైన పొడిగింపులను లాగకూడదనుకుంటే, మీరు వాటిని బిల్డ్ నుండి మినహాయించవచ్చు. దీన్ని చేయడానికి, మీరు ఫైల్ను సవరించాలి mconfig. కావలసిన అన్ని మాడ్యూల్స్ కోసం, ఇన్స్టాల్ చేయండి y, మరియు అన్ని అనవసరమైన వాటిని గుర్తించండి n. మేము సేకరిస్తాము:
./autogen.sh
./configure
make
మరియు సూపర్యూజర్ హక్కులతో ఇన్స్టాల్ చేయండి:
make install
కెర్నల్ మాడ్యూల్స్ యొక్క ఇన్స్టాలేషన్ సమయంలో, కింది వాటికి సమానమైన లోపం సంభవించవచ్చు:
INSTALL /root/xtables-addons-xtables-addons/extensions/xt_geoip.ko
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:72
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:79
sign-file: certs/signing_key.pem: No such file or directory
కెర్నల్ మాడ్యూల్స్పై సంతకం చేయడం అసంభవం కారణంగా ఈ పరిస్థితి తలెత్తుతుంది, ఎందుకంటే సంతకం చేయడానికి ఏమీ లేదు. మీరు ఈ సమస్యను రెండు ఆదేశాలతో పరిష్కరించవచ్చు:
cd /lib/modules/(uname -r)/build/certs
cat <<EOF > x509.genkey
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
CN = Modules
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem
కంపైల్ చేయబడిన కెర్నల్ మాడ్యూల్ వ్యవస్థాపించబడింది, కానీ సిస్టమ్ దానిని గుర్తించలేదు. కొత్త మాడ్యూల్ను పరిగణనలోకి తీసుకుని డిపెండెన్సీ మ్యాప్ని సృష్టించమని సిస్టమ్ని అడుగుదాం, ఆపై దాన్ని లోడ్ చేయండి:
depmod -a
modprobe xt_geoip
xt_geoip సిస్టమ్లోకి లోడ్ చేయబడిందని నిర్ధారించుకుందాం:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
అదనంగా, పొడిగింపు iptablesలో లోడ్ చేయబడిందని నిర్ధారించుకోండి:
# cat /proc/net/ip_tables_matches
geoip
icmp
మేము ప్రతిదానితో సంతోషంగా ఉన్నాము మరియు మాడ్యూల్ పేరును జోడించడం మాత్రమే మిగిలి ఉంది / etc / గుణకాలుOSని రీబూట్ చేసిన తర్వాత మాడ్యూల్ పని చేస్తుంది. ఇప్పటి నుండి, iptables geoip ఆదేశాలను అర్థం చేసుకుంటుంది, కానీ దానితో పని చేయడానికి తగినంత డేటా లేదు. జియోప్ డేటాబేస్ లోడ్ చేయడం ప్రారంభిద్దాం.
GeoIP డేటాబేస్ పొందడం
మేము iptables పొడిగింపుకు అర్థమయ్యే సమాచారం నిల్వ చేయబడే డైరెక్టరీని సృష్టిస్తాము:
mkdir /usr/share/xt_geoip
వ్యాసం ప్రారంభంలో, మేము సోర్స్ కోడ్ నుండి వెర్షన్ మరియు ప్యాకేజీ మేనేజర్ నుండి వెర్షన్ మధ్య తేడాలు ఉన్నాయని పేర్కొన్నాము. అత్యంత గుర్తించదగిన వ్యత్యాసం డేటాబేస్ విక్రేత మరియు స్క్రిప్ట్లో మార్పు xt_geoip_dl, ఇది తాజా డేటాను డౌన్లోడ్ చేస్తుంది.
ప్యాకేజీ మేనేజర్ వెర్షన్
స్క్రిప్ట్ /usr/lib/xtables-addons మార్గంలో ఉంది, కానీ మీరు దీన్ని అమలు చేయడానికి ప్రయత్నించినప్పుడు, మీరు చాలా ఇన్ఫర్మేటివ్ లోపం చూస్తారు:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
గతంలో, జియోలైట్ ఉత్పత్తి, ఇప్పుడు జియోలైట్ లెగసీగా పిలువబడుతుంది, లైసెన్స్ కింద పంపిణీ చేయబడింది, ఇది డేటాబేస్గా ఉపయోగించబడింది
మొదట, జనవరి 2018 లో
రెండవది, డిసెంబర్ 2019 నుండి MaxMind
మేము వారి ఉత్పత్తిని ఉపయోగించాలనుకుంటున్నాము కాబట్టి, మేము ఈ పేజీలో నమోదు చేస్తాము.
అప్పుడు మీరు పాస్వర్డ్ను సెట్ చేయమని అడిగే ఇమెయిల్ను అందుకుంటారు. ఇప్పుడు మేము ఖాతాను సృష్టించాము, మేము లైసెన్స్ కీని సృష్టించాలి. మీ వ్యక్తిగత ఖాతాలో మేము అంశాన్ని కనుగొంటాము నా లైసెన్స్ కీలు, ఆపై బటన్పై క్లిక్ చేయండి కొత్త లైసెన్స్ కీని రూపొందించండి.
కీని క్రియేట్ చేస్తున్నప్పుడు, మమ్మల్ని ఒకే ఒక ప్రశ్న అడుగుతారు: మేము ఈ కీని జియోఐపి అప్డేట్ ప్రోగ్రామ్లో ఉపయోగిస్తామా? మేము ప్రతికూలంగా సమాధానం మరియు బటన్ నొక్కండి నిర్ధారించండి. కీ పాప్-అప్ విండోలో ప్రదర్శించబడుతుంది. ఈ కీని సురక్షితమైన స్థలంలో సేవ్ చేయండి, మీరు పాప్-అప్ విండోను మూసివేసిన తర్వాత, మీరు ఇకపై మొత్తం కీని వీక్షించలేరు.
మేము GeoLite2 డేటాబేస్లను మాన్యువల్గా డౌన్లోడ్ చేయగల సామర్థ్యాన్ని కలిగి ఉన్నాము, కానీ వాటి ఫార్మాట్ xt_geoip_build స్క్రిప్ట్ ద్వారా ఆశించిన ఆకృతికి అనుకూలంగా లేదు. ఇక్కడే GeoLite2xtables స్క్రిప్ట్లు రక్షించబడతాయి. స్క్రిప్ట్లను అమలు చేయడానికి, NetAddr::IP perl మాడ్యూల్ను ఇన్స్టాల్ చేయండి:
wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gz
tar xvf NetAddr-IP-4.079.tar.gz
cd NetAddr-IP-4.079
perl Makefile.PL
make
make install
తరువాత, మేము స్క్రిప్ట్లతో రిపోజిటరీని క్లోన్ చేస్తాము మరియు గతంలో పొందిన లైసెన్స్ కీని ఫైల్కి వ్రాస్తాము:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license
స్క్రిప్ట్లను అమలు చేద్దాం:
# Скачиваем данные GeoLite2
./00_download_geolite2
# Скачиваем информацию о странах (для соответствия коду)
./10_download_countryinfo
# Конвертируем GeoLite2 базу в формат GeoLite Legacy
cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv |
./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/dbip-country-lite.csv
MaxMind రోజుకు 2000 డౌన్లోడ్ల పరిమితిని విధించింది మరియు పెద్ద సంఖ్యలో సర్వర్లతో, ప్రాక్సీ సర్వర్లో అప్డేట్ను కాష్ చేయడానికి ఆఫర్ చేస్తుంది.
దయచేసి అవుట్పుట్ ఫైల్ తప్పనిసరిగా కాల్ చేయబడుతుందని గమనించండి dbip-country-lite.csv... దురదృష్టవశాత్తు, 20_కన్వర్ట్_జియోలైట్2 ఖచ్చితమైన ఫైల్ను ఉత్పత్తి చేయదు. స్క్రిప్ట్ xt_geoip_build మూడు నిలువు వరుసలను ఆశిస్తుంది:
- చిరునామా పరిధి ప్రారంభం;
- చిరునామా పరిధి ముగింపు;
- iso-3166-alpha2లో దేశం కోడ్.
మరియు అవుట్పుట్ ఫైల్ ఆరు నిలువు వరుసలను కలిగి ఉంటుంది:
- చిరునామా పరిధి ప్రారంభం (స్ట్రింగ్ ప్రాతినిధ్యం);
- చిరునామా పరిధి ముగింపు (స్ట్రింగ్ ప్రాతినిధ్యం);
- చిరునామా పరిధి ప్రారంభం (సంఖ్యా ప్రాతినిధ్యం);
- చిరునామా పరిధి ముగింపు (సంఖ్యా ప్రాతినిధ్యం);
- దేశం యొక్క కోడ్;
- దేశం యొక్క పేరు.
ఈ వైరుధ్యం చాలా ముఖ్యమైనది మరియు రెండు మార్గాలలో ఒకదానిలో సరిదిద్దవచ్చు:
- సవరించు 20_కన్వర్ట్_జియోలైట్2;
- సవరించు xt_geoip_build.
మొదటి సందర్భంలో మేము తగ్గిస్తాము
/usr/lib/xtables-addons/xt_geoip_build -S /usr/share/xt_geoip/ -D /usr/share/xt_geoip
. . .
2239 IPv4 ranges for ZA
348 IPv6 ranges for ZA
56 IPv4 ranges for ZM
12 IPv6 ranges for ZM
56 IPv4 ranges for ZW
15 IPv6 ranges for ZW
రచయిత అని గమనించండి
మూల వెర్షన్
సోర్స్ కోడ్ స్క్రిప్ట్ల నుండి ఇన్స్టాల్ చేస్తున్నప్పుడు xt_geoip_* కేటలాగ్లో ఉన్నాయి /usr/local/libexec/xtables-addons. స్క్రిప్ట్ యొక్క ఈ సంస్కరణ డేటాబేస్ను ఉపయోగిస్తుంది
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
ఈ దశల తర్వాత, iptables పని చేయడానికి సిద్ధంగా ఉంది.
iptablesలో జియోప్ని ఉపయోగించడం
మాడ్యూల్ xt_geoip రెండు కీలను మాత్రమే జోడిస్తుంది:
geoip match options:
[!] --src-cc, --source-country country[,country...]
Match packet coming from (one of) the specified country(ies)
[!] --dst-cc, --destination-country country[,country...]
Match packet going to (one of) the specified country(ies)
NOTE: The country is inputed by its ISO3166 code.
iptables కోసం నియమాలను రూపొందించే పద్ధతులు, సాధారణంగా, మారవు. అదనపు మాడ్యూల్స్ నుండి కీలను ఉపయోగించడానికి, మీరు తప్పనిసరిగా -m స్విచ్తో మాడ్యూల్ పేరును స్పష్టంగా పేర్కొనాలి. ఉదాహరణకు, అన్ని ఇంటర్ఫేస్లలో USA నుండి కాకుండా పోర్ట్ 443లో ఇన్కమింగ్ TCP కనెక్షన్లను నిరోధించే నియమం:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
xt_geoip_build ద్వారా సృష్టించబడిన ఫైల్లు నియమాలను సృష్టించేటప్పుడు మాత్రమే ఉపయోగించబడతాయి, కానీ ఫిల్టర్ చేసేటప్పుడు పరిగణనలోకి తీసుకోబడవు. కాబట్టి, జియోప్ డేటాబేస్ను సరిగ్గా అప్డేట్ చేయడానికి, మీరు ముందుగా iv* ఫైల్లను అప్డేట్ చేయాలి, ఆపై iptablesలో జియోప్ని ఉపయోగించే అన్ని నియమాలను మళ్లీ సృష్టించాలి.
తీర్మానం
దేశాల ఆధారంగా ప్యాకెట్లను ఫిల్టర్ చేయడం అనేది కాలక్రమేణా మరిచిపోయిన వ్యూహం. అయినప్పటికీ, అటువంటి వడపోత కోసం సాఫ్ట్వేర్ సాధనాలు అభివృద్ధి చేయబడుతున్నాయి మరియు, బహుశా, కొత్త జియోప్ డేటా ప్రొవైడర్తో xt_geoip యొక్క కొత్త వెర్షన్ త్వరలో ప్యాకేజీ మేనేజర్లలో కనిపిస్తుంది, ఇది సిస్టమ్ నిర్వాహకుల జీవితాన్ని చాలా సులభతరం చేస్తుంది.
నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు.
మీరు ఎప్పుడైనా దేశం వారీగా ఫిల్టరింగ్ని ఉపయోగించారా?
-
59,1%అవును 13
-
40,9%No9
22 వినియోగదారులు ఓటు వేశారు. 3 వినియోగదారులు దూరంగా ఉన్నారు.
మూలం: www.habr.com