Helppo IPTables-määritys ja esimerkkejä Ubuntu 16.04:ssä

Johdanto

iptableson tehokas työkalu Linux-ytimen integroidun palomuurin konfigurointiin. Se on esiasennettu useimpiin Ubuntu-jakeluihin, mutta jos käytät mukautettua Ubuntu-versiota tai käytät konttia, joudut todennäköisesti asentamaan sen manuaalisesti.

sudo apt-get install iptables iptables-persistent

Jos sinulta kysytään asennuksen jälkeen, tallennetaanko nykyiset säännöt, sillä ei ole tällä hetkellä väliä, koska aiot poistaa tai luoda uusia sääntöjä myöhemmin.

Vinkkejä

Voit käyttää netcatkomentoa ( eri tietokoneessa kuin palvelin) testataksesi, mitkä porteistasi ovat auki tai kiinni.

nc -z -w5 -v SERVER_IP PORT
  • nc on netcat-komento.
  • -z lähetä vain paketti ilman hyötykuormaa.
  • -w5 odota vastausta enintään 5 sekuntia.
  • -v monisanainen tila.
  • Korvaa SERVER_IPpalvelimesi osoitteella.
  • Korvaa PORTportilla, jonka haluat testata, onko se auki (esim. 22).

Palvelimellasi voit käyttää netstatkomentoa nähdäksesi mitkä portit tällä hetkellä kuuntelevat yhteyksiä.

sudo netstat -tulpn

Huomautus: Vaikka netstaton kätevä löytää portit, joiden kanssa haluat työskennellä, sinun tulee olla tietoinen palvelimellesi tällä hetkellä asentamistasi sovelluksista ja siitä, mitkä portit kuuntelevat. Sinun ei tarvitse sallia jokaista porttia, jonka löydät netstatulostulosta .

Syntaksi

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTlisää sääntö INPUTketjuun, ketju on joukko sääntöjä, joita käytämme eniten tässä oppaassa ovat INPUT, OUTPUTja PREROUTING.
  • -p tcpasetettu tcpprotokollaksi, jota tämä sääntö koskee, voit käyttää myös muita protokollia, kuten udp, icmptai all.
  • -m tcpkäytä tcpmoduulia. iptablestukee lisäominaisuuksia moduulien kautta, joista osa on valmiiksi asennettuna iptablesja toiset, kuten geoipmoduuli.
  • --dport 22komennot alkavat --osoittavat lisäasetuksia aiemmin käytetylle moduulille, tässä tapauksessa käskemme tcpmoduulia koskemaan vain porttia 22.
  • -m geoipkäytä geoipmoduulia. Se rajoittaa paketteja maakohtaisesti (lisätietoja vaiheessa 5).
  • --src-cc PEkäske geoipmoduulia rajoittaa saapuvat paketit niihin, jotka tulevat Perusta. Lisää maakoodeja etsi ISO 3166 country codesInternetistä.
  • -j ACCEPT-jargumentti kertoo iptables, mitä tehdä, jos paketti täsmää rajoitteet eritelty edellisessä argumentteja. Tässä tapauksessa se ACCEPTne paketit, muut vaihtoehdot ovat REJECT, DROPja enemmän. Löydät lisää vaihtoehtoja etsimällä iptables jump targetsInternetistä.

1. Perusasiat

Listaa kaikki säännöt.

sudo iptables -L

Luettele kaikki komennot, joita käytettiin tällä hetkellä käytettyjen sääntöjen luomiseen, hyödyllisiä sääntöjen muokkaamiseen tai poistamiseen.

sudo iptables -S

Jos haluat poistaa tietyn säännön, valitse sääntö sudo iptables -Sja korvaa se -Amerkillä -D.

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

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

Listaa kaikki numeroidut säännöt INPUTketjussa.

sudo iptables -L INPUT --line-numbers

Poista numeroitu sääntö.

sudo iptables -D INPUT 2

Tyhjentääksesi kaikki säännöt.

sudo iptables -F

Varoitus: saatat menettää yhteyden, jos yhdistät SSH:n .

Selkeät vain säännöt OUTPUTketjussa.

sudo iptables -F OUTPUT

2. Luo alustavat säännöt

Salli SSHon eth0liitäntä

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 soveltaa sääntöä tiettyyn käyttöliittymään, jotta tämä komento voidaan poistaa mistä tahansa käyttöliittymästä.

Saapuvien pakettien rajoittaminen tiettyyn IP-osoitteeseen (eli 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 määrittää IP/aliverkon, josta yhteydet sallitaan.

Aseta oletusketjun säännöt.

Varoitus: ennen kuin jatkat, varmista, että olet käyttänyt oikeat SSH-säännöt, jos työskentelet etäpalvelimella .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP kieltää kaikki saapuvat paketit (eli kukaan ei voi muodostaa yhteyttä käynnissä oleviin palvelimiisi, kuten Apache, SQL jne.).
  • -P FORWARD DROP kieltää kaikki edelleenlähetetyt paketit (eli kun käytät järjestelmääsi reitittimenä).
  • -P OUTPUT ACCEPTsallii kaikki lähtevät paketit (eli kun suoritat HTTPpyynnön).

Salli kaikki liikenne loopback-liittymässä ( suositus ).

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

3. Tee säännöistä pysyviä

Tallenna nykyiset iptablessäännöt.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Jos käytät säilön sisällä, netfilter-persistentkomento ei todennäköisesti toimi, joten sinun on määritettävä iptables-persistentpaketti uudelleen .

sudo dpkg-reconfigure iptables-persistent

4. Salli lähtevät yhteydet

Salli DNS-kyselyt.

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

Käytä statemoduulia salliaksesi RELATEDja ESTABLISHEDlähtevät paketit.

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

Salli haluamasi portit; tässä tapauksessa HTTPportit.

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

Lisää portteja, joita saatat haluta käyttää.

  • FTP: tcp portissa 21
  • HTTPS: tcp portissa 443
  • DHCP: udp portissa 67
  • NTP: udp portissa 123

Huomautus: Jos haluat sallia, apt-getvoi olla tarpeen sallia FTPjaHTTPS .

Salli palautettu liikenne vain RELATEDja jo ESTABLISHEDyhteyksille ( suositus, koska joskus tarvitaan kaksisuuntaista viestintää).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Muita hyödyllisiä sääntöjä

Salli ulkopuoliset ping-pyynnöt.

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

Siirrä liikenne eth0portissa 2200osoitteeseen 10.0.3.21:22(hyödyllinen, jos haluat paljastaa SSH-palvelimen, joka toimii säilössä).

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

Jos kirjaudut onnistuneesti palvelimellesi SSH:lla, muodostuu jatkuva yhteys (eli ei uusia yhteyksiä, vaikka olisit yhteydessä yli tunnin). Jos epäonnistut ja yrität kirjautua uudelleen, uusi yhteys luodaan. Tämä estää jatkuvat SSH-kirjautumisyritykset rajoittamalla uusia yhteyksiä tunnissa.

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

Ohjaa kaikki pyynnöt portista 443porttiin 4430(hyödyllinen, jos haluat sitoutua porttiin 443ilman 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 verkkoliitäntä.
  • -m geoip maalohkomoduuli (katso vaihe 5).

Varoitus: Älä käytä lo, käyttöjärjestelmä hylkää kaikki paketit, jotka on ohjattu takaisinsilmukkaliittymään .

5. Salli tai estä kokonaisia ​​maita

5.1 Asenna xtables-addons

Voit asentaa xtables-addonsmoduulin useilla eri tavoilla, käytä itsellesi parhaiten sopivaa asennustapaa.

  • Asenna käyttämällä apt-get.

    sudo apt-get install xtables-addons-common
    
  • Asenna käyttämällä module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Asenna lähteestä.

    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
    

Rakenna "maiden" tietokanta.

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

Käynnistä järjestelmä uudelleen.

sudo reboot

Sen jälkeen kun xtables-addonson onnistuneesti asennettu, ensimmäisen uudelleenkäynnistyksen jälkeen, suorita depmodmuuten maa esto ei toimi kunnolla (tämä vaaditaan vain ensimmäisellä kerralla).

sudo depmod 

Luo komentosarja osoitteessa /etc/cron.monthly/geoip-updaterpäivittääksesi geoiptietokannan kuukausittain.

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

Tee /etc/cron.monthly/geoip-updatersuoritettavasta.

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

5.2 Esimerkkisäännöt

_Huomaa: Jos saat iptables: No chain/target/match by that namevirheilmoituksen yrittäessäsi soveltaa geoipsääntöä, on mahdollista, että xtables-addonssitä ei ole asennettu oikein. Kokeile toista asennustapaa.

Estä kaikki saapuvat paketit Kiinasta, Hongkongista, Venäjältä ja Koreasta.

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

Salli saapuvat paketit portissa 80kaikkialta paitsi yllä olevista maista.

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

Salli saapuvat paketit ens3rajapinnassa portissa 22vain Perusta (valitse vapaasti maakoodi, josta haluat vastaanottaa paketteja esimerkiksi USYhdysvalloista).

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

Salli saapuvat paketit portissa 443vain Perusta.

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

Docker CE:n asentaminen Ubuntuun 16.04

Docker CE:n asentaminen Ubuntuun 16.04

Käytätkö erilaista järjestelmää? Docker on sovellus, jonka avulla voidaan ottaa käyttöön säilöinä ajettavia ohjelmia. Se kirjoitettiin suositulla Go-ohjelmalla

Dirty Cow Exploitin korjaus CentOS:ssä

Dirty Cow Exploitin korjaus CentOS:ssä

Mikä on Dirty Cow (CVE-2016-5195)? Dirty Cow -haavoittuvuutta hyödynnetään siinä, miten Linux käsittelee koodia. Se mahdollistaa etuoikeutettujen käyttäjien gai:n

Aseta aikavyöhyke ja NTP Ubuntuun 14.04

Aseta aikavyöhyke ja NTP Ubuntuun 14.04

Vultr-palvelimia ei välttämättä oteta käyttöön palvelimellasi tarvitsemallasi aikavyöhykkeellä/päivämäärällä/-ajalla. Onneksi voimme asettaa aikavyöhykkeen manuaalisesti ongelmien estämiseksi

Ota Meteor-sovellus käyttöön Ubuntussa

Ota Meteor-sovellus käyttöön Ubuntussa

Tämä artikkeli opastaa sinua Meteor-sovelluksen käyttöönotossa Vultr VPS:ssä, jossa on Ubuntu 14.04. Se voi toimia myös muissa Linux-jakeluissa (yritä a

Kuinka asentaa osTicket FreeBSD 12:een

Kuinka asentaa osTicket FreeBSD 12:een

Käytätkö erilaista järjestelmää? osTicket on avoimen lähdekoodin asiakastuen lippujärjestelmä. osTicket-lähdekoodia isännöidään julkisesti Githubissa. Tässä opetusohjelmassa

Korkea käytettävyys käyttämällä yksityistä verkkoa Ubuntu 16.04:ssä Keepalivedin kanssa

Korkea käytettävyys käyttämällä yksityistä verkkoa Ubuntu 16.04:ssä Keepalivedin kanssa

Jotkut korkean käytettävyyden arkkitehtuurit vaativat kelluvan IP-osoitteen. Tämä toiminto on käytettävissä Vultr-alustalla, kun yksityinen verkko on toiminut

Määritä vain SFTP-käyttäjätilit Ubuntu 14:ssä

Määritä vain SFTP-käyttäjätilit Ubuntu 14:ssä

Johdanto Tietyt skenaariot edellyttävät, että luot käyttäjiä, joilla on luku- ja kirjoitusoikeudet yhteen hakemistoon vain FTP:n kautta. Tämä kirjoitus näyttää sinulle, kuinka t

Pysyvien Node.js-sovellusten määrittäminen Ubuntu 16.04:ssä

Pysyvien Node.js-sovellusten määrittäminen Ubuntu 16.04:ssä

Node.js-sovellukset ovat suosittuja skaalautumiskykynsä vuoksi. Useiden samanaikaisten prosessien suorittaminen useilla palvelimilla tuottaa pienemmän viiveen ja pidemmän käytettävyyden

Kuinka estää samanaikaiset yhteydet Linuxissa IPTablesin avulla

Kuinka estää samanaikaiset yhteydet Linuxissa IPTablesin avulla

iptables on palomuuriohjelmisto, joka löytyy monista jakeluista, mukaan lukien CentOS ja Ubuntu. Tässä asiakirjassa näet, kuinka voit estää samanaikaisuuden

How to Install BookStack on Ubuntu 16.04

How to Install BookStack on Ubuntu 16.04

Using a Different System? BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. BookStack is fully free and open

Tietojen palauttaminen SFTP:n kautta

Tietojen palauttaminen SFTP:n kautta

Tietojen palauttaminen SFTP:n kautta Tapauksissa, joissa asennettu käyttöjärjestelmä kohtaa virheen, joka ei salli käyttöjärjestelmän käynnistymistä normaalisti, data voi olla tarpeen noutaa

OpenVPN-palvelimen luominen Ubuntu 16.04:ssä

OpenVPN-palvelimen luominen Ubuntu 16.04:ssä

Johdanto OpenVPN on suojattu VPN, joka käyttää SSL:ää (Secure Socket Layer) ja tarjoaa laajan valikoiman ominaisuuksia. Tässä oppaassa on hyvä kattaa prosessi

Node.js:n asentaminen lähteestä Ubuntu 14.04:ään

Node.js:n asentaminen lähteestä Ubuntu 14.04:ään

Asenna rakennustyökalut Tarvitaan useita työkaluja. Suorita seuraava komento: apt-get install make g++ libssl-dev git Lataa Node.js lähde Se i

Bro IDS:n asentaminen Ubuntu 16.04:ään

Bro IDS:n asentaminen Ubuntu 16.04:ään

Käytätkö erilaista järjestelmää? Johdanto Bro on tehokas avoimen lähdekoodin verkkoanalyysikehys. Bros keskittyy ensisijaisesti verkkoturvallisuuden valvontaan. Br

Devtoolsin käyttäminen Arch Linuxissa

Devtoolsin käyttäminen Arch Linuxissa

Devtools-paketti tehtiin alun perin luotettaville käyttäjille, jotta he voivat luoda paketteja oikein virallisiin tietovarastoihin. Tavallinen käyttäjä voi kuitenkin käyttää sitä

Makepkg:n käyttäminen Arch Linuxissa

Makepkg:n käyttäminen Arch Linuxissa

Jos käytät makepkg:a suoraan, se saastuttaa järjestelmääsi jonkin verran. Peruskehityksen pakettiryhmä on asennettava. Tällä tavalla oletusarvoisesti riippuvuuksia tarvitaan vain

Päivitä Linux-ydin ilman uudelleenkäynnistystä LivePatchilla Ubuntu 16.04:ssä

Päivitä Linux-ydin ilman uudelleenkäynnistystä LivePatchilla Ubuntu 16.04:ssä

Vultr VPS:n pitäminen ajan tasalla on tärkeää turvallisuuden ja suorituskyvyn kannalta. Tämän prosessin ydin on varmistaa, että järjestelmäsi toimii uusimpien versioiden kanssa

Prosessin mukavuuden (ensisijainen) säätäminen useimmissa Linux-jakeluissa

Prosessin mukavuuden (ensisijainen) säätäminen useimmissa Linux-jakeluissa

GNU/Linux-järjestelmissä hienoutta käytetään määrittämään prosessin suorittimen prioriteetti. Pohjimmiltaan se on prioriteetin vastakohta. Joten mitä mukavampi prosessi on, th

Kuinka asentaa PM2 Ubuntu 16.04:ään

Kuinka asentaa PM2 Ubuntu 16.04:ään

PM2 on erittäin suosittu Node-prosessinhallinta, joka tekee NodeJS-sovellusten suorittamisesta helppoa. PM2 helpottaa sovellusten uudelleenkäynnistämistä, käynnistää kaatumisen automaattisesti uudelleen

How to Install OpenMeetings on Ubuntu 16.04

How to Install OpenMeetings on Ubuntu 16.04

Using a Different System? Apache OpenMeetings is an open source web conferencing application. It is written in Java and supports multiple database servers. I

Koneiden nousu: tekoälyn todelliset sovellukset

Koneiden nousu: tekoälyn todelliset sovellukset

Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.

DDOS-hyökkäykset: lyhyt katsaus

DDOS-hyökkäykset: lyhyt katsaus

Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, ​​että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja