Iptables Essentials: Заеднички правила и команди за заштитен ѕид


Вовед

Iptables е софтверски заштитен ѕид за дистрибуции на Линукс. Овој водич во стилот на мамечки лист обезбедува брзо упатување на командите на iptables кои ќе создадат правила за заштитен ѕид кои се корисни во вообичаените, секојдневни сценарија. Ова вклучува примери на iptables за дозволување и блокирање на различни услуги по порта, мрежен интерфејс и изворна IP адреса.

Како да го користите овој водич

  • Повеќето од правилата што се опишани овде претпоставуваат дека вашите iptables се поставени на DOP дојдовниот сообраќај, преку стандардната политика за внесување, и сакате селективно да дозволите влезен сообраќај
  • Користете ги следните делови кои се применливи за она што се обидувате да го постигнете. Повеќето делови не се засновани на ниеден друг, така што можете самостојно да ги користите примерите подолу
  • Користете го менито Содржини на десната страна на оваа страница (на широки широчини на страници) или функцијата за наоѓање на вашиот прелистувач за да ги лоцирате деловите што ви се потребни
  • Копирајте ги и залепете ги дадените примери на командната линија, заменувајќи ги означените вредности со ваши

Имајте на ум дека редоследот на вашите правила е важен. Сите овие команди iptables ја користат опцијата -A за да го додадат новото правило на крајот на синџирот. Ако сакате да го ставите на друго место во синџирот, можете да ја користите опцијата -I која ви овозможува да ја одредите позицијата на новото правило (или да го поставите на почетокот на ланецот со тоа што нема да наведете број на правило).

Забелешка: Кога работите со заштитни ѕидови, внимавајте да не се заклучите од вашиот сопствен сервер со блокирање на сообраќајот SSH (пристаниште 22, стандардно). Ако го изгубите пристапот поради поставките за заштитниот ѕид, можеби ќе треба да се поврзете со него преку веб-базирана конзола за да го поправите вашиот пристап. Ако користите DigitalOcean, можете да ја прочитате нашата документација за производот на Конзолата за наплата за повеќе информации. Откако ќе се поврзете преку конзолата, можете да ги промените правилата на вашиот заштитен ѕид за да дозволите SSH пристап (или да го дозволите целиот сообраќај). Ако вашите зачувани правила за заштитен ѕид дозволуваат пристап до SSH, друг метод е да го рестартирате вашиот сервер.

Запомнете дека можете да го проверите вашиот тековен сет на правила iptables со sudo iptables -S и sudo iptables -L.

Ајде да ги погледнеме командите iptables!

Правила за зачувување

Правилата на Iptables се ефемерни, што значи дека треба рачно да се зачуваат за да продолжат по рестартирањето.

На Ubuntu, еден начин да се зачуваат правилата iptables е да се користи пакетот iptables-persistent. Инсталирајте го со apt вака:

  1. sudo apt install iptables-persistent

За време на инсталацијата, ќе бидете прашани дали сакате да ги зачувате вашите тековни правила за заштитен ѕид.

Ако ги ажурирате правилата на вашиот заштитен ѕид и сакате да ги зачувате промените, извршете ја оваа команда:

  1. sudo netfilter-persistent save

Други дистрибуции на Линукс може да имаат алтернативни начини да ги направат вашите промени во iptables трајни. Ве молиме погледнете ја релевантната документација за повеќе информации.

Правила за наведување и бришење

Ако сакате да научите како да набројувате и бришете правила на iptables, проверете го ова упатство: Како да ги наведете и избришете правилата за заштитен ѕид на Iptables.

Општо корисни правила

Овој дел вклучува различни команди iptables кои ќе создадат правила кои се генерално корисни на повеќето сервери.

Дозволување на Loopback врски

Интерфејсот loopback, познат и како lo, е она што компјутерот го користи за да ги препраќа мрежните конекции кон себе. На пример, ако извршите ping localhost или ping 127.0.0.1, вашиот сервер ќе се пингува со помош на loopback. Loopback интерфејсот исто така се користи ако го конфигурирате вашиот сервер за апликации да се поврзе со сервер за база на податоци со адреса localhost. Како таков, ќе сакате да бидете сигурни дека вашиот заштитен ѕид ги дозволува овие врски.

За да го прифатите целиот сообраќај на вашиот Loopback интерфејс, извршете ги овие команди:

  1. sudo iptables -A INPUT -i lo -j ACCEPT
  2. sudo iptables -A OUTPUT -o lo -j ACCEPT

Дозволување воспоставени и поврзани дојдовни врски

Бидејќи мрежниот сообраќај генерално треба да биде двонасочен - дојдовен и појдовен - за да работи правилно, типично е да се создаде правило за заштитен ѕид што овозможува воспоставен и поврзан дојдовен сообраќај, така што дека серверот ќе дозволи повратен сообраќај за појдовни врски иницирани од самиот сервер. Оваа команда ќе дозволи:

  1. sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Дозволување воспоставени појдовни врски

Можеби ќе сакате да дозволите појдовен сообраќај на сите воспоставени врски, кои обично се одговор на легитимните дојдовни врски. Оваа команда ќе дозволи:

  1. sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

Дозволување на внатрешната мрежа да пристапи кон надворешно

Претпоставувајќи дека eth0 е вашата надворешна мрежа, а eth1 е вашата внатрешна мрежа, ова ќе му овозможи на вашата внатрешна да пристапи до надворешната мрежа:

  1. sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Отфрлање на неважечки пакети

Некои пакети за мрежен сообраќај се означени како неважечки. Понекогаш може да биде корисно да се најавите од овој тип на пакети, но често е во ред да ги фрлите. Направете го тоа со оваа команда:

  1. sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Блокирање на IP адреса

За да ги блокирате мрежните врски што потекнуваат од одредена IP адреса, на пример, 203.0.113.51, извршете ја оваа команда:

  1. sudo iptables -A INPUT -s 203.0.113.51 -j DROP

Во овој пример, -s 203.0.113.51 одредува извор IP адреса на \203.0.113.51. Изворната IP адреса може да се наведе во кое било правило за заштитен ѕид, вклучувајќи Правило дозволи.

Ако сакате наместо тоа да ја отфрлите врската, што на барањето за поврзување ќе одговори со грешка „врската е одбиена“, заменете ја „ПОПАЃА“ со „ОТФРЛИ“ вака:

  1. sudo iptables -A INPUT -s 203.0.113.51 -j REJECT

Блокирање на врски со мрежен интерфејс

За да блокирате врски од одредена IP адреса, на пр. 203.0.113.51, до специфичен мрежен интерфејс, на пр. eth0, користете ја оваа команда:

  1. iptables -A INPUT -i eth0 -s 203.0.113.51 -j DROP

Ова е исто како и претходниот пример, со додавање на -i eth0. Мрежниот интерфејс може да се специфицира во кое било правило за заштитен ѕид и е одличен начин да се ограничи правилото на одредена мрежа.

Услуга: SSH

Ако користите сервер без локална конзола, веројатно ќе сакате да дозволите дојдовни SSH конекции (порт 22) за да можете да се поврзете и да управувате со вашиот сервер. Овој дел опфаќа како да го конфигурирате вашиот заштитен ѕид со различни правила поврзани со SSH.

Дозволување на сите дојдовни SSH

За да ги дозволите сите дојдовни SSH конекции, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени SSH врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на дојдовен SSH од специфична IP адреса или подмрежа

За да дозволите дојдовни SSH конекции од одредена IP адреса или подмрежа, наведете го изворот. На пример, ако сакате да ја дозволите целата подмрежа 203.0.113.0/24, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени SSH врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на појдовен SSH

Ако политиката на вашиот заштитен ѕид OUTPUT не е поставена на ACCEPT и сакате да дозволите појдовни SSH конекции - вашиот сервер иницира SSH врска со друг сервер - можете да ги извршите овие команди:

  1. sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Дозволување на дојдовен Rsync од специфична IP адреса или подмрежа

Rsync, кој работи на портата 873, може да се користи за пренос на датотеки од еден компјутер на друг.

За да дозволите дојдовни rsync врски од одредена IP адреса или подмрежа, наведете ја изворната IP адреса и одредишната порта. На пример, ако сакате да дозволите целата подмрежа 203.0.113.0/24 да може да се синхронизира со вашиот сервер, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени rsync врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Услуга: Веб сервер

Веб-серверите, како што се Apache и Nginx, обично слушаат барања на портата 80 и 443 за HTTP и HTTPS конекции, соодветно. Ако вашата стандардна политика за дојдовен сообраќај е поставена да се откаже или одбие, ќе сакате да креирате правила што ќе му овозможат на вашиот сервер да одговори на тие барања.

Дозволување на сите дојдовни HTTP

За да ги дозволите сите дојдовни HTTP (порта 80) конекции, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени HTTP врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни HTTPS

За да ги дозволите сите дојдовни HTTPS (порта 443) врски, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени HTTP врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни HTTP и HTTPS

Ако сакате да дозволите сообраќај и HTTP и HTTPS, можете да го користите модулот multiport за да креирате правило што ги дозволува двете порти. За да ги дозволите сите дојдовни HTTP и HTTPS (порта 443) врски, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени HTTP и HTTPS врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Услуга: MySQL

MySQL слуша конекции со клиент на портата 3306. Ако вашиот сервер за база на податоци MySQL го користи клиент на оддалечен сервер, треба да бидете сигурни дека ќе го дозволите тој сообраќај.

Дозволување MySQL од специфична IP адреса или подмрежа

За да дозволите дојдовни MySQL конекции од одредена IP адреса или подмрежа, наведете го изворот. На пример, ако сакате да ја дозволите целата подмрежа 203.0.113.0/24, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени MySQL врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување MySQL на специфичен мрежен интерфејс

За да дозволите MySQL врски со специфичен мрежен интерфејс - да речеме дека имате приватен мрежен интерфејс eth1, на пример - користете ги овие команди:

  1. sudo iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени MySQL врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Услуга: PostgreSQL

PostgreSQL слуша конекции со клиентот на портата 5432. Ако вашиот сервер за база на податоци PostgreSQL го користи клиент на оддалечен сервер, треба да бидете сигурни дека ќе го дозволите тој сообраќај.

PostgreSQL од Специфична IP адреса или подмрежа

За да дозволите дојдовни PostgreSQL конекции од одредена IP адреса или подмрежа, наведете го изворот. На пример, ако сакате да ја дозволите целата подмрежа 203.0.113.0/24, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени PostgreSQL врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на PostgreSQL на специфичен мрежен интерфејс

За да дозволите PostgreSQL конекции со специфичен мрежен интерфејс - да речеме дека имате приватен мрежен интерфејс eth1, на пример - користете ги овие команди:

  1. sudo iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени PostgreSQL врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Услуга: пошта

Серверите за пошта, како што се Sendmail и Postfix, слушаат на различни порти во зависност од протоколите што се користат за испорака на пошта. Ако користите сервер за пошта, одредете кои протоколи ги користите и дозволете ги соодветните видови сообраќај. Исто така, ќе ви покажеме како да креирате правило за блокирање на појдовната SMTP пошта.

Блокирање на појдовна SMTP пошта

Ако вашиот сервер не треба да испраќа појдовна пошта, можеби ќе сакате да го блокирате тој вид сообраќај. За да ја блокирате појдовната SMTP пошта, која користи порта 25, извршете ја оваа команда:

  1. sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECT

Ова ги конфигурира iptables да го отфрлаат целиот појдовен сообраќај на портата 25. Ако треба да одбиете друга услуга според бројот на порта, наместо порта 25, заменете го тој број на порта за 25 погоре.

Дозволување на сите дојдовни SMTP

За да дозволите вашиот сервер да одговори на SMTP конекции на портата 25, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која дозволува појдовен сообраќај на воспоставени SMTP врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни IMAP

За да дозволите вашиот сервер да одговори на IMAP конекциите, портата 143, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени IMAP врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни IMAPS

За да му дозволите на вашиот сервер да одговори на IMAPS конекциите, портата 993, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени IMAPS врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни POP3

За да дозволите вашиот сервер да одговори на POP3 конекциите, портата 110, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени POP3 врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Дозволување на сите дојдовни POP3S

За да му дозволите на вашиот сервер да одговори на POP3S конекциите, портата 995, извршете ги овие команди:

  1. sudo iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
  2. sudo iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Втората команда, која овозможува појдовен сообраќај на воспоставени POP3S врски, е неопходна само ако политиката OUTPUT не е поставена на ACCEPT.

Заклучок

Тоа треба да опфати многу од командите што вообичаено се користат при конфигурирање на заштитен ѕид iptables. Се разбира, iptables е многу флексибилна алатка, затоа слободно измешајте ги и спојте ги командите со различни опции за да одговараат на вашите специфични потреби ако тие не се опфатени овде.

Ако барате помош за одредување како треба да се постави вашиот заштитен ѕид, проверете го ова упатство: Како да изберете ефективна политика за заштитен ѕид за да ги обезбедите вашите сервери.