Lengva IPTables konfigūracija ir pavyzdžiai Ubuntu 16.04

Įvadas

iptablesyra galingas įrankis, naudojamas Linux branduolio integruotai ugniasienei konfigūruoti. Jis yra iš anksto įdiegtas daugumoje Ubuntu platinimų, tačiau jei naudojate tinkintą Ubuntu versiją arba naudojate konteineryje, greičiausiai turėsite jį įdiegti rankiniu būdu.

sudo apt-get install iptables iptables-persistent

Jei po įdiegimo jūsų paklaus, ar išsaugoti esamas taisykles, šiuo metu tai nesvarbu, nes vėliau ketinate pašalinti arba sukurti naujas taisykles.

Patarimai

Galite naudoti netcatkomandą ( kitame kompiuteryje nei jūsų serveris), kad patikrintumėte, kurie prievadai yra atidaryti arba uždaryti.

nc -z -w5 -v SERVER_IP PORT
  • nc yra netcat komanda.
  • -z tiesiog išsiųskite paketą be naudingos apkrovos.
  • -w5 palaukite iki 5 sekundžių atsakymo.
  • -v žodinis režimas.
  • Pakeiskite SERVER_IPsavo serverio adresu.
  • Pakeiskite PORTprievadu, kurį norite patikrinti, ar jis atidarytas (pvz., 22).

Savo serveryje galite naudoti netstatkomandą, kad pamatytumėte, kurie prievadai šiuo metu klauso ryšių.

sudo netstat -tulpn

Pastaba: nors netstatir patogu rasti prievadus, su kuriais norite dirbti, turėtumėte žinoti, kokias programas šiuo metu įdiegėte savo serveryje ir kurie prievadai klauso, jums nereikia leisti kiekvieno netstatišvestyje rasto prievado .

Sintaksė

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTpridėti taisyklę prie INPUTgrandinės, grandinė yra taisyklių grupė, dažniausiai šiame vadove naudojamos taisyklės bus INPUT, OUTPUTir PREROUTING.
  • -p tcpnustatyti tcpkaip protokolą, kuriam bus taikoma ši taisyklė, taip pat galite naudoti kitus protokolus, pvz., udp, icmparba all.
  • -m tcpnaudoti tcpmodulį. iptablespalaiko papildomas funkcijas per modulius, kai kurie iš jų jau yra iš anksto įdiegti, iptableso kiti, pavyzdžiui, geoipmodulis.
  • --dport 22komandos, prasidedančios raide, --nurodo papildomas anksčiau naudoto modulio parinktis, tokiu atveju tcpmoduliui liepsime taikyti tik prievadui 22.
  • -m geoipnaudoti geoipmodulį. Tai apribos paketus pagal šalį (daugiau informacijos 5 veiksme).
  • --src-cc PEliepkite geoipmoduliui apriboti gaunamus paketus iki paketų, kurie ateina iš Peru. Daugiau šalių kodų ieškokite ISO 3166 country codesinternete.
  • -j ACCEPT-jargumentas sako iptables, ką daryti, jei paketas atitinka nurodytus ankstesniuose argumentų apribojimus. Šiuo atveju tai bus ACCEPTtie paketai, kiti variantai yra REJECT, DROPir daugiau. Daugiau parinkčių galite rasti ieškodami iptables jump targetsinternete.

1. Pagrindai

Išvardykite visas taisykles.

sudo iptables -L

Išvardykite visas komandas, kurios buvo naudojamos kuriant šiuo metu naudojamas taisykles, naudingas taisyklėms redaguoti arba ištrinti.

sudo iptables -S

Norėdami ištrinti speciali taisyklė pasirinkti taisyklę sudo iptables -Sir pakeisti -Asu -D.

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

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

Išvardykite visas sunumeruotas taisykles INPUTgrandinėje.

sudo iptables -L INPUT --line-numbers

Ištrinkite sunumeruotą taisyklę.

sudo iptables -D INPUT 2

Norėdami išvalyti visas taisykles.

sudo iptables -F

Įspėjimas: galite prarasti ryšį, jei prisijungsite per SSH .

Aiškios tik OUTPUTgrandinės taisyklės .

sudo iptables -F OUTPUT

2. Sukurkite pradines taisykles

Leiskite SSHant eth0sąsaja

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 taikyti taisyklę konkrečiai sąsajai, kad iš bet kurios sąsajos būtų galima pašalinti šią komandą.

Apriboti gaunamus paketus iki konkretaus IP (ty 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 nurodo IP / potinklį, iš kurio galima prisijungti.

Nustatykite numatytąsias grandinės taisykles.

Įspėjimas: prieš tęsdami įsitikinkite, kad taikėte teisingas SSH taisykles, jei dirbate nuotoliniame serveryje .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP atmeta visus gaunamus paketus (ty niekas negalės prisijungti prie jūsų veikiančių serverių, tokių kaip Apache, SQL ir kt.).
  • -P FORWARD DROP atmeta visus persiųstus paketus (ty kai naudojate sistemą kaip maršrutizatorių).
  • -P OUTPUT ACCEPTleidžia visus siunčiamus paketus (ty kai atliekate HTTPužklausą).

Leisti visą srautą atgalinio ryšio sąsajoje ( rekomenduojama ).

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

3. Padarykite taisykles pastovias

Išsaugokite galiojančias iptablestaisykles.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Jei naudojate konteinerį, netfilter-persistentkomanda greičiausiai neveiks, todėl turite iš naujo sukonfigūruoti iptables-persistentpaketą.

sudo dpkg-reconfigure iptables-persistent

4. Leisti išeinančius ryšius

Leisti DNS užklausas.

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

Naudokite statemodulį, norėdami leisti RELATEDir ESTABLISHEDsiunčiamus paketus.

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

Leisti norimus prievadus; šiuo atveju HTTPuostai.

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

Daugiau prievadų, kuriuos galbūt norėsite naudoti.

  • FTP: tcp prie 21 prievado
  • HTTPS: tcp prie 443 prievado
  • DHCP: udp prie 67 prievado
  • NTP: udp 123 prievade

Pastaba: jei norite leisti apt-get, gali reikėti leisti FTPirHTTPS .

Leisti grįžtamą srautą tik RELATEDir jau esantiems ESTABLISHEDryšiams ( rekomenduojama, nes kartais reikalingas dvikryptis ryšys).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Kitos naudingos taisyklės

Leisti ping užklausas iš išorės.

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

Peradresuoti srautą per eth0prievadą 2200į 10.0.3.21:22(naudinga, jei norite atskleisti SSH serverį, kuris veikia konteineryje).

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

Jei sėkmingai prisijungsite prie savo serverio naudodami SSH, bus sukurtas nuolatinis ryšys (ty nebus naujų ryšių, net jei esate prisijungę ilgiau nei 1 valandą). Jei nepavyks ir bandysite prisijungti dar kartą, bus sukurtas naujas ryšys. Tai užblokuos nuolatinius SSH prisijungimo bandymus, ribojant naujus ryšius per valandą.

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

Peradresuokite visas prievado užklausas 443į prievadą 4430(naudinga, jei norite susieti su prievadu 443be 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 tinklo sąsaja.
  • -m geoip šalies bloko modulis (žr. 5 veiksmą).

Įspėjimas: nenaudokite lo, OS atmes visus paketus, nukreiptus į atgalinio ryšio sąsają .

5. Leisti arba blokuoti visas šalis

5.1 Įdiegti xtables-addons

xtables-addonsModulį galite įdiegti įvairiais būdais, drąsiai naudokite jums tinkamiausią diegimo būdą.

  • Įdiekite naudodami apt-get.

    sudo apt-get install xtables-addons-common
    
  • Įdiekite naudodami module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Įdiegti iš šaltinio.

    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
    

Sukurkite „šalių“ duomenų bazę.

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

Iš naujo paleiskite sistemą.

sudo reboot

Po xtables-addonssėkmingai įdiegta, po pirmo perkrovimo, paleisti depmodkitaip Šalis blokavimas neveiks tinkamai (tai reikia tik pirmą kartą).

sudo depmod 

Sukurkite scenarijų, /etc/cron.monthly/geoip-updaterkad geoipkas mėnesį atnaujintumėte duomenų bazę.

#!/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

Padaryti /etc/cron.monthly/geoip-updatervykdomąjį.

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

5.2 Taisyklių pavyzdžiai

_Pastaba: jei gaunate iptables: No chain/target/match by that nameklaidą, kai bandote taikyti geoiptaisyklę, gali būti, kad xtables-addonsji įdiegta neteisingai. Išbandykite kitą diegimo būdą.

Blokuoti visus gaunamus paketus iš Kinijos, Honkongo, Rusijos ir Korėjos.

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

Leisti įeinančius paketus uoste 80iš visur, išskyrus aukščiau nurodytas šalis.

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

Leisti įeinančius paketus ens3sąsajoje 22tik iš Peru (nesivaržykite pasirinkti šalies kodą, iš kurio norite priimti paketus, pavyzdžiui, USJAV).

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

Leisti įeinančius paketus 443tik iš Peru.

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

Leave a Comment

Kaip nustatyti neprižiūrimus atnaujinimus Debian 9 (Stretch)

Kaip nustatyti neprižiūrimus atnaujinimus Debian 9 (Stretch)

Naudojate kitą sistemą? Jei perkate Debian serverį, visada turėtumėte turėti naujausius saugos pataisymus ir naujinimus, nesvarbu, ar miegate, ar ne

Kaip įdiegti ir konfigūruoti PHP 7.0 arba PHP 7.1 Ubuntu 16.04

Kaip įdiegti ir konfigūruoti PHP 7.0 arba PHP 7.1 Ubuntu 16.04

PHP ir susiję paketai yra dažniausiai naudojami komponentai diegiant žiniatinklio serverį. Šiame straipsnyje sužinosime, kaip nustatyti PHP 7.0 arba PHP 7.1 o

Nustatykite savo DNS serverį Debian / Ubuntu

Nustatykite savo DNS serverį Debian / Ubuntu

Šiame vadove paaiškinama, kaip nustatyti DNS serverį naudojant Bind9 sistemoje Debian arba Ubuntu. Visame straipsnyje atitinkamai pakeiskite savo-domeno-vardas.com. Prie th

Nustatykite „Red5 Media Server“ Ubuntu 16.04

Nustatykite „Red5 Media Server“ Ubuntu 16.04

Naudojate kitą sistemą? „Red5“ yra atvirojo kodo medijos serveris, įdiegtas „Java“, leidžiantis paleisti „Flash“ kelių vartotojų programas, tokias kaip tiesioginis srautas.

Sukompiliuokite ir įdiekite „Nginx“ naudodami „PageSpeed“ modulį „Debian 8“.

Sukompiliuokite ir įdiekite „Nginx“ naudodami „PageSpeed“ modulį „Debian 8“.

Šiame straipsnyje pamatysime, kaip sukompiliuoti ir įdiegti pagrindinę Nginx liniją iš oficialių Nginx šaltinių naudojant PageSpeed ​​modulį, kuris leidžia

Kaip įdiegti „Vanilla Forum“ Ubuntu 16.04

Kaip įdiegti „Vanilla Forum“ Ubuntu 16.04

Naudojate kitą sistemą? Vanilla forumas yra atvirojo kodo forumo programa, parašyta PHP. Tai visiškai pritaikoma, paprasta naudoti ir palaiko išorinę

Kaip įdiegti „Kanboard“ Ubuntu 18.04 LTS

Kaip įdiegti „Kanboard“ Ubuntu 18.04 LTS

Naudojate kitą sistemą? Įvadas Kanboard yra nemokama atvirojo kodo projektų valdymo programinė įranga, skirta palengvinti ir vizualizuoti

Kaip įdiegti „Kanboard“ „Debian 9“.

Kaip įdiegti „Kanboard“ „Debian 9“.

Naudojate kitą sistemą? Įvadas Kanboard yra nemokama atvirojo kodo projektų valdymo programinė įranga, skirta palengvinti ir vizualizuoti

Kaip įdiegti Gitea Debian 9

Kaip įdiegti Gitea Debian 9

Naudojate kitą sistemą? Gitea yra alternatyvi atvirojo kodo, savarankiškai priglobta versijų valdymo sistema, kurią maitina Git. Gitea parašyta golangu ir yra

Kaip įdiegti „Gitea“ Ubuntu 18.04

Kaip įdiegti „Gitea“ Ubuntu 18.04

Naudojate kitą sistemą? Gitea yra alternatyvi atvirojo kodo, savarankiškai priglobta versijų valdymo sistema, kurią maitina git. Gitea parašyta golangu ir yra

Įdiekite „Lynis“ „Debian 8“.

Įdiekite „Lynis“ „Debian 8“.

Įvadas Lynis yra nemokama atvirojo kodo sistemos audito priemonė, kurią naudoja daugelis sistemų administratorių, kad patikrintų vientisumą ir sustiprintų savo sistemas. aš

Kaip įdiegti Thelia 2.3 Debian 9

Kaip įdiegti Thelia 2.3 Debian 9

Naudojate kitą sistemą? Thelia yra atvirojo kodo įrankis, skirtas kurti el. verslo svetaines ir valdyti PHP parašytą internetinį turinį. Thelia šaltinio kodas i

Kaip įdiegti „Microweber“ „CentOS 7“.

Kaip įdiegti „Microweber“ „CentOS 7“.

Naudojate kitą sistemą? „Microweber“ yra atvirojo kodo „drag and drop“ TVS ir internetinė parduotuvė. „Microweber“ šaltinio kodas yra „GitHub“. Šis vadovas jums parodys

„Microweber“ diegimas „Ubuntu 16.04“.

„Microweber“ diegimas „Ubuntu 16.04“.

Naudojate kitą sistemą? „Microweber“ yra atvirojo kodo „drag and drop“ TVS ir internetinė parduotuvė. „Microweber“ šaltinio kodas yra „GitHub“. Šis vadovas jums parodys

Kaip įdiegti dotCMS Ubuntu 16.04

Kaip įdiegti dotCMS Ubuntu 16.04

Naudojate kitą sistemą? DotCMS yra atvirojo kodo, įmonės lygio turinio valdymo sistema, parašyta Java. Jame yra beveik visos reikalingos funkcijos t

Kaip įdiegti „BigTree CMS“ Fedora 26 LAMP VPS

Kaip įdiegti „BigTree CMS“ Fedora 26 LAMP VPS

Naudojate kitą sistemą? BigTree CMS 4.2 yra greita ir lengva, nemokama ir atviro kodo, įmonės lygio turinio valdymo sistema (TVS), turinti platų

„Minecraft“ serverių tinklo sukūrimas naudojant „BungeeCord“ „Debian 8“, „Debian 9“ arba „CentOS 7“

„Minecraft“ serverių tinklo sukūrimas naudojant „BungeeCord“ „Debian 8“, „Debian 9“ arba „CentOS 7“

Ko jums reikia Vultr VPS su mažiausiai 1 GB RAM. SSH prieiga (su root / administratoriaus teisėmis). 1 veiksmas: „BungeeCord“ diegimas Pirmiausia

„Docker CE“ diegimas „Ubuntu 16.04“.

„Docker CE“ diegimas „Ubuntu 16.04“.

Naudojate kitą sistemą? Docker yra programa, leidžianti diegti programas, kurios vykdomos kaip konteineriai. Tai buvo parašyta populiarioje Go programoje

Kaip įdiegti Golang 1.8.3 CentOS 7, Ubuntu 16.04 ir Debian 9

Kaip įdiegti Golang 1.8.3 CentOS 7, Ubuntu 16.04 ir Debian 9

Golang yra programavimo kalba, kurią sukūrė Google. Dėl savo universalumo, paprastumo ir patikimumo Golangas tapo vienu populiariausių

„Dirty Cow Exploit“ pataisymas „CentOS“.

„Dirty Cow Exploit“ pataisymas „CentOS“.

Kas yra purvina karvė (CVE-2016-5195)? „Dirty Cow“ pažeidžiamumas išnaudojamas „Linux“ apdorojant kodą. Tai leidžia neprivilegijuotam vartotojui gai

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį