Konfigurimi i lehtë i IPTables dhe shembuj në Ubuntu 16.04

Prezantimi

iptablesështë një mjet i fuqishëm që përdoret për të konfiguruar murin e zjarrit të integruar të kernelit Linux. Ai vjen i parainstaluar në shumicën e shpërndarjeve të Ubuntu, megjithatë nëse jeni duke përdorur një version të personalizuar të Ubuntu ose po punoni brenda një kontejneri, me shumë mundësi do t'ju duhet ta instaloni manualisht.

sudo apt-get install iptables iptables-persistent

Pas instalimit, nëse pyeteni nëse duhet të ruani rregullat tuaja aktuale, për momentin nuk ka rëndësi sepse do të hiqni ose krijoni rregulla të reja më vonë.

Këshilla

Ju mund të përdorni netcatkomandën (në një kompjuter të ndryshëm nga serveri juaj) për të provuar se cilat nga portet tuaja janë të hapura ose të mbyllura.

nc -z -w5 -v SERVER_IP PORT
  • nc është komanda netcat.
  • -z thjesht dërgoni një pako pa ngarkesë.
  • -w5 prisni deri në 5 sekonda për një përgjigje.
  • -v mënyra e folur.
  • Zëvendësojeni SERVER_IPme adresën e serverit tuaj.
  • Zëvendësojeni PORTme portën që dëshironi të provoni nëse është e hapur (p.sh. 22).

Në serverin tuaj mund të përdorni netstatkomandën për të parë se cilat porte po dëgjojnë aktualisht për lidhje.

sudo netstat -tulpn

Shënim: Megjithëse netstatështë i dobishëm për të gjetur portat me të cilat dëshironi të punoni, duhet të jeni të vetëdijshëm për aplikacionet që keni instaluar aktualisht në serverin tuaj dhe cilat porte po dëgjojnë, nuk keni pse të lejoni çdo port që gjeni në netstatdalje .

Sintaksë

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTshtoni një rregull në INPUTzinxhir, një zinxhir është një grup rregullash, ato që përdorim më shumë në këtë udhëzues do të jenë INPUT, OUTPUTdhe PREROUTING.
  • -p tcpcaktuar tcpsi protokoll ku do të zbatohet ky rregull, mund të përdorni gjithashtu protokolle të tjera si udp, icmpose all.
  • -m tcppërdorni tcpmodulin. iptablesmbështet veçori shtesë nëpërmjet moduleve, disa prej të cilave vijnë tashmë të parainstaluara iptablesdhe të tjera, si p.sh. geoipmoduli.
  • --dport 22komandat që fillojnë me --tregojnë opsione shtesë për modulin e përdorur më parë, në këtë rast do t'i themi tcpmodulit që të zbatohet vetëm në port 22.
  • -m geoippërdorni geoipmodulin. Ai do të kufizojë paketat në bazë të vendit (më shumë informacion në hapin 5).
  • --src-cc PEthuaj geoipmodulit të kufizojë paketat hyrëse në ato që vijnë nga Peruja. Për më shumë kode shtetesh kërkoni ISO 3166 country codesnë internet.
  • -j ACCEPT-jargumenti tregon se iptablesçfarë duhet të bëni nëse një pako përputhet me kufizimet e përcaktuara në argumentet e mëparshme. Në këtë rast do të jenë ACCEPTato paketa, opsionet e tjera janë REJECT, DROPdhe më shumë. Mund të gjeni më shumë opsione duke kërkuar iptables jump targetsnë internet.

1. Bazat

Rendisni të gjitha rregullat.

sudo iptables -L

Listoni të gjitha komandat që janë përdorur për të krijuar rregullat e përdorura aktualisht, të dobishme për të modifikuar ose fshirë rregullat.

sudo iptables -S

Për të fshirë një rregull specifik, zgjidhni një rregull nga sudo iptables -Sdhe zëvendësojeni -Ame -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Listoni të gjitha rregullat e numëruara në INPUTzinxhir.

sudo iptables -L INPUT --line-numbers

Fshi një rregull të numëruar.

sudo iptables -D INPUT 2

Për të pastruar të gjitha rregullat.

sudo iptables -F

Paralajmërim: mund të humbni lidhjen nëse lidheni me SSH .

Qartë vetëm rregullat në OUTPUTzinxhir.

sudo iptables -F OUTPUT

2. Krijoni rregulla fillestare

Lejo SSHeth0ndërfaqen

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 zbatoni rregullin në një ndërfaqe specifike, për të lejuar që nga çdo ndërfaqe të hiqni këtë komandë.

Për të kufizuar paketat hyrëse në një IP specifike (dmth 10.0.3.1/32.).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 specifikon një IP/nënrrjet për të lejuar lidhjet nga.

Vendos rregullat e zinxhirit të paracaktuar.

Paralajmërim: përpara se të vazhdoni, sigurohuni që të keni zbatuar rregullat e sakta SSH nëse punoni në një server të largët .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP mohon të gjitha paketat hyrëse (dmth. askush nuk do të jetë në gjendje të lidhet me serverët tuaj që funksionojnë si Apache, SQL, etj).
  • -P FORWARD DROP mohon të gjitha paketat e dërguara (dmth. kur jeni duke përdorur sistemin tuaj si ruter).
  • -P OUTPUT ACCEPTlejon të gjitha paketat dalëse (dmth. kur kryeni një HTTPkërkesë).

Lejo të gjithë trafikun në ndërfaqen loopback ( rekomandohet ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Bëjini rregullat të qëndrueshme

Ruani iptablesrregullat aktuale .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Nëse jeni duke ekzekutuar brenda një kontejneri, netfilter-persistentkomanda ka shumë të ngjarë të mos funksionojë, kështu që ju duhet të rikonfiguroni iptables-persistentpaketën.

sudo dpkg-reconfigure iptables-persistent

4. Lejo lidhjet dalëse

Lejo pyetjet DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Përdorni statemodulin për të lejuar RELATEDdhe për të ESTABLISHEDdalë paketat.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Lejo portat e dëshiruara; në këtë rast, HTTPportet.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Më shumë porte që mund të dëshironi të përdorni.

  • FTP: tcp në portin 21
  • HTTPS: tcp në portin 443
  • DHCP: udp në portin 67
  • NTP: udp në portin 123

Shënim: Nëse dëshironi të lejoni apt-get, mund të jetë e nevojshme të lejoni FTPdheHTTPS .

Lejo trafikun e kthyer vetëm për lidhjet RELATEDdhe tashmë ESTABLISHED( rekomandohet sepse ndonjëherë kërkohet komunikim dydrejtimësh).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Rregulla të tjera të dobishme

Lejo kërkesat ping nga jashtë.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Transferoni trafikun në eth0port 220010.0.3.21:22(e dobishme nëse dëshironi të ekspozoni një server SSH që funksionon brenda një kontejneri).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Nëse identifikoheni me sukses në serverin tuaj duke përdorur SSH, do të krijohet një lidhje e vazhdueshme (dmth. nuk ka lidhje të reja edhe nëse jeni lidhur për më shumë se 1 orë). Nëse dështoni dhe provoni të identifikoheni përsëri, do të krijohet një lidhje e re. Kjo do të bllokojë përpjekjet e vazhdueshme të hyrjes në SSH duke kufizuar lidhjet e reja në orë.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Ridrejtoni të gjitha kërkesat nga porti 443në port 4430(e dobishme nëse doni të lidheni me portin 443pa root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 ndërfaqja e rrjetit.
  • -m geoip moduli i bllokut të vendit (shih hapin 5).

Paralajmërim: Mos e përdorni lo, OS do t'i heqë të gjitha paketat e ridrejtuara në ndërfaqen loopback .

5. Lejo ose blloko shtete të tëra

5.1 Instaloni xtables-addons

Mund ta instaloni xtables-addonsmodulin duke përdorur metoda të ndryshme, mos ngurroni të përdorni metodën e instalimit që funksionon më mirë për ju.

  • Instaloni duke përdorur apt-get.

    sudo apt-get install xtables-addons-common
    
  • Instaloni duke përdorur module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Instaloni nga burimi.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Ndërtoni një bazë të dhënash "vendet".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Rinisni sistemin tuaj.

sudo reboot

Pasi të xtables-addonsjetë instaluar me sukses, pas rindezjes së parë, ekzekutoni depmodpërndryshe bllokimi i vendit nuk do të funksionojë siç duhet (kjo kërkohet vetëm për herë të parë).

sudo depmod 

Krijo një skript në /etc/cron.monthly/geoip-updaterpër të përditësuar geoipbazën e të dhënave çdo muaj.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Bëje të /etc/cron.monthly/geoip-updaterekzekutueshme.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Shembuj të rregullave

_Shënim: Nëse po merrni një iptables: No chain/target/match by that namegabim kur përpiqeni të aplikoni një geoiprregull, është e mundur që xtables-addonsai të mos jetë instaluar saktë. Provoni një metodë tjetër instalimi.

Blloko të gjitha paketat hyrëse nga Kina, Hong Kongu, Rusia dhe Koreja.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Lejoni paketat hyrëse në port 80nga kudo, përveç vendeve të mësipërme.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Lejo paketat hyrëse në ens3ndërfaqen e portit 22vetëm nga Peruja (ngurroni të zgjidhni kodin e shtetit nga i cili dëshironi të pranoni paketat, për shembull, USpër Shtetet e Bashkuara).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Lejo paketat hyrëse në port 443vetëm nga Peruja.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT

Leave a Comment

Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Hyrje Lets Encrypt është një shërbim i autoritetit certifikues që ofron certifikata falas TLS/SSL. Procesi i instalimit është thjeshtuar nga Certbot,

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

PHP dhe paketat e lidhura me to janë komponentët më të përdorur gjatë vendosjes së një serveri në internet. Në këtë artikull, ne do të mësojmë se si të konfigurojmë PHP 7.0 ose PHP 7.1 o

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

1. Virtualmin/Webmin Virtualmin është një panel kontrolli i fuqishëm dhe fleksibël i hostimit në internet për sistemet Linux dhe UNIX i bazuar në bazën e mirënjohur të internetit me burim të hapur.

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Yii është një kornizë PHP që ju lejon të zhvilloni aplikacione më shpejt dhe më lehtë. Instalimi i Yii në Ubuntu është i thjeshtë, siç do të mësoni saktësisht

Përdorimi i ekranit në Ubuntu 14.04

Përdorimi i ekranit në Ubuntu 14.04

Screen është një aplikacion që lejon përdorimin e shumëfishtë të sesioneve të terminalit brenda një dritareje. Kjo ju lejon të simuloni dritare të shumta terminale ku është ma

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Ky tutorial shpjegon se si të konfiguroni një server DNS duke përdorur Bind9 në Debian ose Ubuntu. Gjatë gjithë artikullit, zëvendësoni emrin e domain-it tuaj në përputhje me rrethanat. Në

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Hyrje Logrotate është një mjet Linux që thjeshton administrimin e skedarëve të regjistrit. Zakonisht funksionon një herë në ditë përmes një pune cron dhe menaxhon bazën e regjistrave

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Në këtë artikull, ne do të shohim se si të përpiloni dhe instaloni Nginx mainline nga burimet zyrtare të Nginx me modulin PageSpeed, i cili ju lejon t

Si të instaloni Gitea në Debian 9

Si të instaloni Gitea në Debian 9

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga Git. Gitea është shkruar në Golang dhe është

Si të instaloni Gitea në Ubuntu 18.04

Si të instaloni Gitea në Ubuntu 18.04

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga git. Gitea është shkruar në Golang dhe është

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, me burim të hapur, i shkallës së ndërmarrjes, i shkruar në PHP. Ajo i

Instalimi i Docker CE në Ubuntu 16.04

Instalimi i Docker CE në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e programeve që ekzekutohen si kontejnerë. Ishte shkruar në programin popullor Go

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Golang është një gjuhë programimi e zhvilluar nga Google. Falë shkathtësisë, thjeshtësisë dhe besueshmërisë së tij, Golang është bërë një nga më të populluarit

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Çfarë është Lopa e Pistë (CVE-2016-5195)? Dobësia e Dirty Cow shfrytëzohet përmes mënyrës se si Linux përpunon kodin. Ai lejon që një përdorues i paprivilegjuar të gai

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Të kesh vetëm një përdorues, i cili është root, mund të jetë i rrezikshëm. Pra, le ta rregullojmë atë. Vultr na ofron lirinë për të bërë si të duam me përdoruesit dhe serverët tanë

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Nëse e keni harruar fjalëkalimin tuaj rrënjësor MySQL, mund ta rivendosni atë duke ndjekur hapat në këtë artikull. Procesi është mjaft i thjeshtë dhe funksionon në to

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë