Основите на iptables през очите на бебето в Debian. Минимален набор от правила на Iptables за типични задачи

разработчик на ниво 80 28 септември 2010 г. в 19:47 ч

Основите на iptables през очите на бебето в Debian

  • Дървена стая *

Какво ще се обсъжда

Всичко е много просто, за пореден път обяснявам във форума на новодошлите в света на Linux, че както разбрах в интернет, не можете да намерите статия, събрана заедно, обясняваща не само настройките на iptables, но и някои мрежови основи.
Така че на вашето внимание представям малка екскурзия за настройка на защитна стена в Linux. Ще се задълбочим само в настройката на netfilter / iptables, несъмнено ще засегнем и останалите приложени въпроси, тъй като нямаме достатъчно сложни отговори на нашите въпроси ... И ще се опитам да обясня всичко тук възможно най-ясно .

Как изглежда

Ще разгледаме типично оформление за офиси и апартаменти, да, апартаменти! Малко хора имат свой собствен малък сървър вкъщи под масата, но по-голямата част от интернет у дома се разпространява чрез рутер и повечето от тях също се флашват с Linux.
Това е типична настройка за малък офис. Когато 1 компютър (сървър) е свързан към Интернет, а останалите са свързани към Интернет чрез този сървър.

Да тръгваме малко по малко...

И така, какво имаме:
  • сървър с 2 мрежови карти и инсталиран Debian Lenny на него
  • по подразбиране в защитната стена на Debian Lenny - netfilter / iptables
  • локална мрежа от N компютъра, всички са свързани чрез комутатор, включително сървър
какво е NAT
Първо, трябва да разберем, че ще конфигурираме най-обикновения NAT (Превод на мрежови адреси). За тези, които са жадни, накрая ще спомена и прокси сървъра, използващ squid като пример. Както казах, ще дъвчем почти всичко.
Какво е NAT? Всъщност всичко е просто, всички компютри имат физически (MAC) и мрежови (IP) адреси. В момента се интересуваме от IP адреси. IP адресът в рамките на същата мрежа трябва да е уникален! А при сегашния стандарт IPv4 само 4 294 967 296 (2 32) могат да бъдат уникални, което не е много и на практика са свършили. но не се притеснявайте, IPv6 е на път да навлезе широко и има много адреси!
Но тук можете да забележите, че има много повече компютри от броя, който позволява IPv4, или може да кажете, че къщата на приятел има същия адрес като вашия! И тук говорим за NAT - той ви позволява да свързвате компютърни мрежи помежду си с помощта на един-единствен, ваш собствен IP адрес, действията на защитната стена се наричат ​​SNAT (Source NAT или заместване на адреса на източника). Тези. в 99% от случаите целият ви офис влиза онлайн под 1 IP адрес, докато вътре в офиса всеки има свой собствен. Можете да прочетете за класовете IP адреси в Интернет.

Сега, когато знаем какво е NAT и за какво е, можем да продължим директно към настройката на сървъра.

транзитен трафик
Всички команди се изпълняват като root (суперпотребител). В Debian така нареченият транзитен трафик е деактивиран по подразбиране, т.е. по подразбиране е да работи само като една машина. Както може би се досещате, няма NAT без транзитен трафик. За да го активирате, достатъчно е да промените 1 цифра - $ echo 1> / proc / sys / net / ipv4 / ip_forward, но тази настройка ще изчезне след рестартиране, така че е по-добре да коригирате конфигурацията - $ nano /etc/sysctl.confтогава търсим линия # net.ipv4.ip_forward = 1и премахнете хеша (знака за коментар) в началото на реда и проверете дали стойността е 1! Сега можете да започнете директно да конфигурирате iptables.
конфигурирайте iptables
В интернет има много статии за това как да пиша правила в iptables и какво може да се направи с тях, ми се стори най-пълно и приятно за четене.
И така, нека започваме. Първо, нека изчистим таблиците от ненужни правила, изведнъж имаше нещо излишно ...
$ iptables -F
$ iptables -t nat -F
$ iptables -t mangle -F

Излишъкът беше почистен. Много е важно да разберете и запомните, че правилата в iptables се прилагат йерархично, т.е. правилото по-горе ще бъде изпълнено по-рано. Всички вериги имат политика ACCEPT по подразбиране - разреши всичко. които не попадаха под правилата на тази верига.
Нека се съгласим, че интерфейсът, който гледа в локалната мрежа е eth0, а в Интернет - eth1, локалната мрежа има адреси 192.168.0.0/24, а доставчикът ни даде статичен адрес 10.188.106.33 (макар и не "бял" - около видовете ip адреси, които също можете да разгледате в интернет). И така пишем:
$ iptables -A НАПРЕД -i eth0 -o eth1 -s 192.168.0.0/24 -j ПРИЕМАНЕ
$ iptables -A НАПРЕД -i eth1 -o eth0 -d 192.168.0.0/24 -j ПРИЕМАНЕ
$ iptables -P ИЗПУСКАНЕ НАПРЕД

по този начин позволихме на транзитните пакети да преминават през защитната стена за нашия диапазон от ip адреси и забраняваме всичко останало.
Сега самият NAT:
$ iptables -A ПОСТРАУТУВАНЕ -s 192.168.0.0/24 -o eth1 -j SNAT --to-source 10.188.106.33
Това е достатъчно, за да може NAT да работи за вас.
по дреболии...
При клиентите ние посочваме ip от избрания диапазон и определяме ip адреса на нашия сървър като шлюз (обикновено той се присвоява първият от подмрежата - оставям го на ваше усмотрение). Всички мрежови настройки на сървъра могат да се направят по следния начин:
$ nano / etc / network / интерфейситой определя настройките за вашите мрежови интерфейси.
достъп до недрата на мрежата чрез шлюз или DNAT
И тогава разбрахте, че в мрежата имате Windows Server, до който винаги сте имали лесен достъп чрез RDP, и тогава този досаден шлюз към Debian излезе! Много е просто - просто трябва да добавите DNAT правило към нашите iptables.
Какъв звяр е DNAT? DNAT (Destination NAT или заместване на адреса на получателя) - мрежовите карти работят в такъв режим, че приемат само пакети, адресирани до тях, но ако влезете в нашия сървър, ако IP адресът, под който се свързва с интернет, има дузина повече машини в офиса ви? Как молбата ще стигне до него? Всъщност всички заявки от този вид почиват на нашия портал. И всичко, което трябва да направим, е да зададем правилата за работа с такива пакети.
$ iptables -A ПРЕДУПРЕЖДАНЕ -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --до местоназначение 192.168.0.2
Това просто правило ще пренасочи всички пакети, идващи към шлюза от Интернет към TCP порт 3389 (което използва протоколът RDP) към вашия вътрешен Windows Server. И воала, всичко работи за вас.
така че какво има с любимите ви калмари
И въпреки че сега всичко работи, всеки има интернет и всичко работи, някои все още имат нужда от прокси сървър. Няма да говоря за настройката на калмари, ще покажа правило, което ще ви позволи да го направите "прозрачен". В калмара просто трябва да напишете вълшебната дума прозрачна на правилното място и тя ще започне да обработва правилно заявките, които са паднали върху него.
Ние пишем $ iptables -A ПРЕДУПРЕЖДАНЕ -d! 192.168.0.0/24 -i eth0 -p tcp -m multiport --dports 80,443 -j ПРЕНАСЪРВАНЕ --към портове 3128.
И какво ни дава? Сега всички заявки към уеб страници от вашите работни станции чрез http ((80) и https (443) протоколи ще бъдат пренасочени към порта, който калмарите слушат. Получавате филтриране на съдържанието, информация за това кой къде е бил и какво е правил в Интернет, потребителят не е това, което несъзнателно, той работи както преди ...
малко безопасност
Трябва поне минимално да защитите своя шлюз, така че нека добавим още няколко правила
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ПРИЕМАНЕ
$ iptables -A INPUT -i eth1 -m conntrack --ctstate СВЪРЗАН, УСТАНОВЕН -j ПРИЕМА
$ iptables -P ИЗПУСКАНЕ НА ВХОД

По този начин те забраняват всякаква комуникация директно с шлюза, с изключение на вече установените връзки, т.е. тези, които са инициирани от вас и вие просто получавате отговори на тях. Не се страхувайте, че нашият DNAT просто не стига до тези правила...
защо толкова малко?
Статията не е гумена и така или иначе не можеш да разкажеш за всичко ... донесох минимумнабор от действия и концепции, за да можете да започнете да овладявате такъв колос като шлюз на Linux. Тук можете да говорите много, много дълго време, обсъждайки много аспекти и възможности на netfilter.

Обща сума

Както виждаме всичко е наистина просто! Основното нещо е да разберете принципа на функциониране на мрежата и да не се страхувате да настройвате и четете големи ръководства.
Надявам се, че успях да събера достатъчно информация, за да започна вашето приятелство с Linux базирани софтуерни рутери.

Етикети: iptables, netfilter, NAT

Принцип на настройка

Общият синтаксис за използване на iptables е:

iptables -t<таблица> <команда> <цепочка>[стая]<условие> <действие>

<таблица>

Правилата на Netfilter са разпределени в 4 таблици, всяка от които има собствено предназначение (повече подробности по-долу). Посочва се с ключа -t, но ако този параметър не е посочен, действието ще се извърши за таблицата по подразбиране - филтър.

<команда>

Командите показват какъв вид действие извършваме върху netfilter, например създаване или изтриване на правило.

<цепочка>

Всяка таблица има вериги, за всяка от които се създават самите правила. Например, за горната таблица с филтри има три предварително дефинирани вериги - INPUT (входящи пакети), OUTPUT (изходящи) и FORWARD (транзит).

[стая]

Някои команди изискват посочване на номер на правило, например за изтриване или редактиране.

<условие>

Условие описва критериите за обработка на определено правило.

<действие>

Е, всъщност какво правим с пакета, ако отговаря на критериите на условието.

* За да бъдем честни, заслужава да се отбележи, че клавишът за действие не трябва да отива в края. Просто този формат най-често се среща в инструкциите и улеснява четенето на правилата.

Iptables ключове и примери за тяхното използване

За работа с таблици (iptables -t)

Като напомняне, всички правила в netfilter са разпределени върху таблици. За да работите с конкретна таблица, трябва да използвате превключвателя -t.

Команди

Следните клавиши определят какво прави помощната програма iptables.

Ключ Описание и примери
Добавяне на правило в края на списъка:
iptables -A INPUT -s 192.168.0.15 -j ИЗПУСКАНЕ
откажете входящи от 192.168.0.15.
Премахване на правило:
iptables -D ВХОД 10
изтрийте правилото във веригата INPUT с номер 10.
-аз Вмъкване на правило в конкретна част от списъка:
iptables -I ВХОД 5 -s 192.168.0.15 -j ИЗПУСКАНЕ
вмъкнете правило 5-то в списъка.
Замяна на правилото.
iptables -R ИЗХОД 5 -s 192.168.0.15 -j ПРИЕМАНЕ
заменете нашето 5-то правило от забраняващо с разрешително.
Изчистване на правилата във веригата.
iptables -F ВХОД
-Z Нулиране на статистиката.
iptables -Z ВХОД
Създаване на верига.
iptables -N ВЕРИГА НОВ
Изтриване на верига.
iptables -X CHAINNEW
Дефиниране на правило по подразбиране.
iptables -P ИЗПУСКАНЕ НА ВХОД
Преименувайте веригата.
iptables -E ВЕРИГАНОВА ВЕРИГА

Условия

Тези ключове определят условията на правилото.

Ключ Описание и примери
-стр Мрежов протокол. Валидни опции са TCP, UDP, ICMP или ВСИЧКИ.
iptables -A ВХОД -p tcp -j ПРИЕМАНЕ
разрешава всички входящи tcp връзки.
Адрес на източника - име на хост, IP адрес или подмрежа в CIDR нотация.
iptables -A INPUT -s 192.168.0.50 -j ИЗПУСКАНЕ
забрани входящи от хост 192.168.0.50
Адрес на дестинацията. Принципът на използване е подобен на предишния превключвател -s.
iptables -A ИЗХОД -d 192.168.0.50 -j ИЗПУСКАНЕ
забрани изходяща към хост 192.168.0.50
-i Мрежовият адаптер, през който се получават пакетите (INPUT).
iptables -A INPUT -i eth2 -j DROP
забрани входящи за ethernet интерфейс eth2.
Мрежов адаптер, от който пакетите излизат (ИЗХОД).
iptables -A ИЗХОД -o eth3 -j ПРИЕМАНЕ
позволете изходящо от ethernet интерфейс eth3.
--dport Пристанище на местоназначение.
iptables -A INPUT -p tcp --dport 80 -j ПРИЕМАНЕ
разрешаване на входящи на порт 80.
--спорт Изходен порт.
iptables -A INPUT -p tcp --sport 1023 -j ИЗПУСКАНЕ
забрани входящи от порт 1023.

Изброените ключове също поддържат конструкцията с помощта на знака ! ... Обръща условието, например
iptables -A INPUT -s! 192.168.0.50 -j ИЗПАДАНЕ
ще откаже връзката с всички хостове с изключение на 192.168.0.50.

Действия

Действия, които трябва да бъдат извършени върху пакет, който отговаря на критериите на условието. Всяка таблица има свой собствен набор от валидни действия. Посочено с помощта на ключ -j.

маса Действие Описание
филтър ПРИЕМЕТЕ Решава пакета.
ИЗПУСКАЙТЕ Отказва пакета.
ОТХВЪРЛЯМ Предотвратява изпращането на съобщението до източника.
нац БАЛ С МАСКИ За изходящи пакети, заменя IP адреса на източника с адреса на интерфейса, от който пакетът напуска.
SNAT Подобно на MASQUERADE, но посочва конкретен мрежов интерфейс, чийто адрес ще се използва за спуфинг.
DNAT Подправяне на адрес за входящи пакети.
ПРЕНАСЪРВАНЕ Пренасочва заявката към друг порт на същата система.
объркан TOS Промяна на полето TOS (приоритизиране на трафика).
DSCP Промяна на DSCP (също приоритизиране на трафика).
TTL Промяна на TTL (живот на пакета).
HL Подобно на TTL, но за IPv6.
МАРК Маркиране на опаковката. Използва се за последващо филтриране или оформяне.
CONNMARK Маркиране на връзката.
TCPMSS Промяна на стойността на MTU.

Примери за често използвани команди iptables

Общи команди

Вижте правилата с техните номера:

iptables -L --номера на редове

За всяка таблица трябва да разгледате правилата поотделно:

iptables -t nat -L --номера на редове

Премахнете всички правила:

Задайте правила по подразбиране:

iptables -P ИЗПУСКАНЕ НА ВХОД

iptables -P ИЗХОД ИЗПАДА

* в тези примери, по подразбиране, за всички входящи (INPUT) и изходящи (OUTPUT) пакети, правилото за отказ (DROP) ще работи.

Разрешаване на всички

Метод 1. Чрез добавяне на правило:

iptables -I ВХОД 1 -j ПРИЕМАМ

iptables -I ИЗХОД 1 -j ПРИЕМАМ

iptables -I НАПРЕД 1 -j ПРИЕМАМ

* тези три команди ще създадат правила, които позволяват всички входящи, изходящи и транзитни пакети.

Метод 2. Чрез почистване на правилата:

* тук първо премахваме всички правила (-F), след това задаваме правилата по подразбиране - разрешаване на входящи, изходящи и транзитни (-S).

Метод 3. Деактивиране на услугата (удобно е да деактивирате защитната стена за известно време за диагностициране на проблеми):

услугата iptables спира

Работа с правила

Добавете правило в края на списъка:

iptables -A INPUT -p tcp --dport 25 -j ПРИЕМАНЕ

iptables -A INPUT -p tcp -s! 192.168.0.25 --dport 993 -i eth0 -j ПРИЕМЕ

Добавете диапазон на портове:

iptables -A INPUT -p tcp --dport 3000: 4000 -j ПРИЕМАНЕ

* в този случай от 3000 до 4000.

Вмъкване на правило:

iptables -I НАПРЕД 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ПРИЕМАНЕ

Блокирайте конкретен IP адрес от порт 25:

iptables -I INPUT 1 -s 1.1.1.1 -p tcp --dport 25 -j DROP

Пренасочване на портове

Има два начина за конфигуриране.

1. Правила ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ + ПОСЛЕДВАНЕ:

iptables -t nat -A ПРЕДУПРЕЖДАНЕ -p tcp -m tcp -d 19.8.232.80 --dport 22 -j DNAT --до местоназначение 192.168.1.15:2222

iptables -t nat -A ПОСТРАУТУВАНЕ -p tcp -m tcp -s 192.168.1.15 --sport 2222 -j SNAT --to-source 19.8.232.80:22

* където 19.8.232.80 - адресът, на който слушаме заявки за връзка; 22 - порт за препращане; 192.168.1.15 - вътрешен IP-адрес, на който прехвърляме всички заявки; 2222 - вътрешен порт.

2. Правила за ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ + НАПРАВЛЕНИЕ:

iptables -t nat -A ПРЕДУПРЕЖДАНЕ -p tcp -i eth1 --dport 22 -j DNAT --до местоназначение 192.168.1.15:2222

iptables -A НАПРЕД -p tcp -d 192.168.1.15 --dport 22 -m състояние --state НОВО, УСТАНОВЕНО, СВЪРЗАНО -j ПРИЕМА

Основната задача защитна стена(защитна стена) филтриране и обработка на пакети, преминаващи през мрежата. Когато анализира входен пакет, защитната стена решава съдбата на този пакет: хвърли пакета ( ИЗПУСКАЙТЕ), приемете пакета ( ПРИЕМЕТЕ) или направете нещо друго с него.

V Linuxзащитната стена е модул на ядрото, наречен netfilter и представлява набор от куки за работа с мрежовия стек. Интерфейсът за промяна на правилата, по които защитната стена обработва пакети, е помощната програма iptablesза IPv4 и помощна програма ip6tablesза IPv6.

Цялата работа по филтриране на трафика се извършва от ядрото на системата. Iptablesне е демон и не създава нови процеси в системата. Включете или изключете iptablesтой просто изпраща сигнал към ядрото. Високата скорост на филтриране се постига чрез анализиране само на заглавките на пакета.

Към основните характеристики iptablesсвързани:

  • филтриране на трафика въз основа на адресите на подателя и получателя на пакети, номера на портове;
  • пренасочване на пакети според определени параметри;
  • организация на мрежов достъп (SNAT);
  • пренасочване на портове от глобалната мрежа към локалната мрежа (DNAT);
  • ограничаване на броя на връзките;
  • определяне на квоти за трафик;
  • изпълнение на правилата по график;

Нека разгледаме основния процес на работа iptables(източник на изображението rigacci.org).

Входящият пакет първо достига до мрежовото устройство, след което се прихваща от драйвера и се предава на ядрото. След това пакетът се предава през множество таблици и едва след това се предава към локалното приложение или се пренасочва към друга система, ако е транзитен пакет.

V iptablesИзползват се три вида таблици:

  1. объркан- използва се за извършване на промени в заглавката на пакета;
  2. нац- използва се за преобразуване на мрежови адреси;
  3. филтър- за филтриране на трафика;

Мангъл маса

Основната цел на масата объркан- извършване на промени в заглавката на пакета. В тази таблица могат да се извършват следните действия:

  • задаване на бита за тип услуга;
  • задаване на полето Time To Live;
  • поставяне на етикет върху опаковка, който може да бъде проверен в други правила;

Вериги в масата объркан:

  • ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ- използва се за извършване на промени в пакетите на входа на iptables, преди да се вземе решение за маршрутизиране;
  • ПОСТРАУТУРАНЕ- използва се за извършване на промени в пакетите при изход от iptables, след вземане на решение за маршрутизиране;
  • ВХОД- се използва за извършване на промени в пакетите, преди те да бъдат прехвърлени към локалното приложение;
  • ИЗХОД- използва се за модифициране на пакети, идващи от приложението в iptables;
  • НАПРЕД- използва се за извършване на промени в транзитните пакети;

Нат маса

Таблицата се използва за преобразуване на мрежови адреси и когато се срещне пакет за установяване на нова връзка. В тази таблица могат да се извършват следните действия:

  • DNAT (Превод на мрежов адрес на местоназначение)- преобразуване на адреса на дестинацията в заглавката на пакета;
  • SNAT (Превод на изходния мрежов адрес)- промяна на адреса на източника на пакета;
  • БАЛ С МАСКИ- използвани за същите цели като SNATно ви позволява да работите с динамични IP-адреси;

Вериги в тази таблица:

  • ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ- се използва за извършване на промени в пакети на входа на iptables;
  • ИЗХОД- използва се за транслиране на адреси в пакети преди по-нататъшно маршрутизиране;
  • ПОСТРАУТУРАНЕ- използва се за конвертиране на пакети преди изпращането им в мрежата;

Филтърна маса

Таблицата се използва за филтриране на пакети. В тази таблица има три вериги:

  1. ВХОД- верига за входящи пакети;
  2. НАПРЕД- верига за препращани (транзитни) пакети;
  3. ИЗХОД- верига за изходящи пакети;

Пакет, преминаващ през тези вериги, може да бъде обект на действия: ПРИЕМЕТЕ, ИЗПУСКАЙТЕ, ОТХВЪРЛЯМ, LOG.

За да обобщим, пристигащият пакет минава през веригата от правила. Всяко правило съдържа състояниеи цел(действие). Ако пакетът удовлетворява условието, тогава той се изпраща до целта, в противен случай следващото правило във веригата се прилага към пакета. Ако пакетът не удовлетворява някое от условията във веригата, тогава към него се прилага действието по подразбиране.

Верига маса
филтър нац объркан
ВХОД + +
НАПРЕД + +
ИЗХОД + + +
ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ + +
ПОСТРАУТУРАНЕ + +

Помощна програма Iptables

Инсталиране на iptables

# за Arch Linux yaourt -S iptables # За Ubuntu sudo apt-get install iptables

Пускане на iptables

# под Arch Linux sudo systemctl активирайте iptables sudo systemctl стартирайте iptables # Под Ubuntu sudo услуга стартирайте iptables

Правила за запазване

# за Arch Linux sudo sh -c "iptables-save> /etc/iptables/iptables.rules" # за Ubuntu sudo sh -c "iptables-save> /etc/iptables.rules"

Възстановяване на правила от файл

Iptables-възстановяване< firewall-config

Всяко правило в iptablesе отделен ред, формиран по определени правила и съдържащ критерии и действия. Най-общо правилото има следния формат:

Iptables [-t таблица] команда

  • t таблица - посочва името на таблицата, за която ще бъде създадено правилото;
  • команда - команда, която дефинира действие iptables- добавяне на правило, изтриване на правило и т.н.;
  • съвпадение - задава критериите за тестване, по които се определя дали даден пакет се подчинява на правилото или не;
  • цел / скок - какво действие трябва да се извърши, когато критерият е изпълнен;

Iptables команди:

  • -A - добавете правило към веригата, правилото ще бъде добавено в края на веригата;
  • -D - премахване на правилото от веригата;
  • -R - заменете едно правило с друго;
  • -I - вмъкнете ново правило във веригата;
  • -L - показва списъка с правила в посочената верига;
  • -F - изчиства всички правила в посочената верига;
  • -Z - нулиране на всички броячи в посочената верига;
  • -N - създаване на нова верига с посоченото име;
  • -X - изтриване на веригата;
  • -P - задава политиката по подразбиране за веригата;
  • -E - преименувайте потребителската верига;

Примери за команди на Iptables

Пакетите могат да бъдат филтрирани по следните параметри:

Източник на пакета

Опцията -s се използва за филтриране по източник. Например, ние ще откажем всички входящи пакети от хоста 192.168.1.95:

Iptables -A INPUT -s 192.168.1.95 -j DROP

Можете да използвате име на домейн, за да посочите адреса на хоста:

Iptables -A INPUT -s test.host.net -j DROP

Можете също да посочите цялото за мрежата:

Iptables -A INPUT -s 192.168.1.0/24 -j DROP

Можете също да използвате отрицание (знак!). Например, всички пакети от хостове, различни от 192.168.1.96, ще бъдат изтрити:

Iptables - ВХОД! -s 192.168.1.96 -j ИЗПАДАНЕ

Позволете на трафика да тече на localhost:

Iptables -A INPUT 1 -i lo -j ACCEPT

Регистриране на опити за спуфинг с префикса "IP_SPOOF A:" и прекъсване на връзката

Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A:" iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Адрес на дестинацията

За да направите това, трябва да използвате опцията -d. Например, ние ще откажем всички изходящи пакети към хоста 192.168.1.95:

Iptables -A ИЗХОД -d 192.168.156.156 -j ИЗПУСКАНЕ

Отказване на достъп до ресурса

Iptables -A ИЗХОД -d vk.com -j ОТХВЪРЛЯМ

Както в случая с източника на пакета, можете да използвате адреси за мрежи и имена на домейни. Отричането също работи.

протокол

Опцията -p указва протокола. Може да се използва всички, icmp, tcp, udpили номер на протокол (от / и т.н. / протоколи).

Разрешаване на входящи ехо заявки

Iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Изходен порт

Разрешете всички изходящи пакети от порт 80:

Iptables -A INPUT -p tcp --sport 80 -j ACCEPT

Блокирайте всички входящи заявки на порт 80:

Iptables -A INPUT -p tcp --dport 80 -j DROP

За да посочите порта, трябва да посочите протокола (tcp или udp). Може да се използва отрицание.

Отворете обхвата на портовете

Iptables -A INPUT -m state --state НОВО -m tcp -p tcp --dport 7000: 7010 -j ПРИЕМАНЕ

Пристанище на местоназначение

Разрешаване на HTTP връзки

Iptables -A INPUT -p tcp --dport 80 -j ПРИЕМЕ iptables -A INPUT -p tcp -i eth0 --dport 22 -j ПРИЕМЕ

Позволяване на получаване на данни от DHCP сървъра

Iptables -A INPUT -p UDP --dport 68 --sport 67 -j ПРИЕМАНЕ

  • Дистанционно експлоатация на софтуерни грешкиза да го направи неработоспособен;
  • Наводнение- изпращане на огромен брой безсмислени пакети до адреса на жертвата. Целта на наводнението може да бъде комуникационен канал или машинни ресурси. В първия случай пакетният поток заема цялата честотна лента и не дава на атакуваната машина възможност да обработва легитимни заявки. Във втория ресурсите на машината се улавят чрез множество и много чести повиквания към всяка услуга, която изпълнява сложна, ресурсоемка операция. Това може да бъде например дълго извикване към един от активните компоненти (скрипт) на уеб сървъра. Сървърът изразходва всички ресурси на машината за обработка на заявките на нападателя, а потребителите трябва да чакат. Flood може да бъде различен: ICMP flood, SYN flood, UDP flood и HTTP flood

Събиране на информация за мрежовите връзки

Преглед на отворени връзки

Netstat -ntu | awk "(печат $5)" | изрязване -d: -f1 | сортиране | uniq -c | сортиране -n

Брой връзки към порт 80

Netstat -na | grep ": 80 \" | тоалетна -л

Dump на TCP връзка (към кой домейн отиват най-често заявките)

Tcpdump -npi eth0 порт домейн

SYN наводненията могат да бъдат проверени чрез преброяване на броя на полуотворените TCP връзки

Netstat -na | grep ": 80" | grep SYN_RCVD

Защита срещу различни видове наводнения.

ICMP наводнение.Много примитивен метод за запушване на честотната лента и създаване на натоварване на мрежовия стек чрез монотонно изпращане на ICMP ECHO заявки (ping). Лесно се открива чрез анализиране на трафика в двете посоки: по време на ICMP flood атака те са почти идентични. Почти безболезнен начин за абсолютна защита се основава на деактивиране на отговорите на ICMP ECHO заявки:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

Или използвайки iptabels:

Iptables -A INPUT -p icmp -j DROP --icmp-type 8

SYN наводнение.Един от често срещаните начини не само за запушване на комуникационния канал, но и за поставяне на мрежовия стек на операционната система в състояние, при което вече не може да приема нови заявки за връзка. Въз основа на опит за инициализиране на голям брой едновременни TCP връзки чрез изпращане на SYN пакет с несъществуващ адрес за връщане. След няколко опита за изпращане на пакет с ACK отговор до недостижим адрес, повечето операционни системи ще поставят на опашка неуредената връзка. И едва след n-тия опит връзката се затваря. Тъй като потокът от ACK пакети е много голям, скоро опашката е пълна и ядрото отказва да се опита да отвори нова връзка. Най-умните DoS ботове също анализират системата, преди да започнат атака, за да изпращат заявки само за отваряне на жизненоважни портове. Лесно е да се идентифицира такава атака: просто опитайте да се свържете с една от услугите.

Малък първоначален скрипт (правила, iptables faq) за настолен или обикновен сървър. В този случай примери за работа с портовете на един или друг софтуер, работещ на вашия компютър. Мерките за сигурност трябва да се спазват на всеки компютър. Митът, че Linux е по-сигурен не е верен, всичко зависи от непохватните ръце на администратора. Има добре защитени Windows системи, както и Linux системи, които са отворени за почти всеки. Затова все пак трябва да помислите малко за мрежовата защита на вашия компютър. По-долу са добавени някои правила за iptables, които могат да ви бъдат полезни в началото.

Специално заменен $ IPT с / sbin / iptables, ако някой има нужда само от едно правило, за да не променя нищо - просто копирайте и изпълнете. Естествено тук все още има малко правила, няма различни VPN и т.н., ако искате, добавете.

Тези редове могат да бъдат копирани изцяло във всеки скрипт и просто да се изпълнят. За обикновени случаи това е напълно достатъчно. Ако някое приложение не може да работи онлайн, регистрирането е специално добавено. Просто отворете tail -f / var / log / syslog (или вашия, ако е различен от Ubuntu) и гледайте! Ако имате въпроси, добавете ги към дискусията, ние ще ги решим заедно.

PS Освен тези правила, помислете какво да вземете от статията за оптимизация на TCP.

Как да премахнете правило в iptables

Публикувано от Алексей Убоженко

Няколко пъти съм се сблъсквал с факта, че дори хора, които не са глупави по принцип, правят абсолютно непростими грешки. Например, те отварят порта, на който се изпълнява базата данни, към целия Интернет.

Блог за системна администрация. Статии за Linux, Windows, съхранение на NetApp и виртуализация.

Това често се случва за начинаещи в DevOps, които са кодирали цял живот и сега техните отговорности включват и настройка на сървъри. В мрежата има добри уроци за основна настройка на защитната стена в Linux и други * nix, но често това са листове за много екрани. Така че, да се надяваме, че някой ще намери този по-сбит урок за полезен.

Важно!Много е лесно погрешно да запалиш кола по такъв начин, че да не влезеш отново в нея. Това важи особено за облачния хостинг. Например, ако в AWS затворите всички портове от 1024 до 65536, по някаква причина машината се затваря след рестартиране. общо взето всичкипристанища. Ако хоствате в облака, най-добре е да конфигурирате защитната си стена чрез хоствания уеб интерфейс.

Кратка бележка за терминологията. Защитната стена, вградена в ядрото на Linux, се нарича Netfilter, а iptables е помощната програма за управление на тази защитна стена. Много хора погрешно смятат, че защитната стена се нарича iptables. Това не е истина. Казвайки нещо като "филтрирам пакети с iptables" показва на другите, че сте неграмотни.

Като цяло, какви задачи могат да бъдат решени с Netfilter:

  • Разрешаване/отказване на входящ трафик към определени портове, използвайки специфични протоколи (IPv4 / IPv6, TCP / UDP) от определени адреси (IP, MAC) или подмрежи;
  • Всичко е същото за изходящия трафик;
  • Можете, например, напълно да игнорирате всички ICMP пакети;
  • Конфигуриране на NAT, вижте публикацията за инсталиране и конфигуриране на OpenVPN;
  • Чух, че истинските гурута могат да настроят защита срещу DDoS и груба сила, да ограничат мрежовия достъп до конкретни приложения, потребители или групи и да правят други безумни неща;

Имайте предвид, че в началото помощната програма iptables ми се стори изключително неудобна в сравнение с ipfw във FreeBSD. За щастие, след като работите с него известно време, всички тези много знамена като -A, -D, -j и други стават познати, така че бъдете търпеливи. Нека да разгледаме основните команди.

Покажи всички правила:

Може да забележите, че Netfilter има някакъв вид "вериги" - поне INPUT, OUTPUT и FORWARD.

Аз лично също имам верига Docker на моята кола. За първи път можете да мислите за първите две съответно за целия входящ и изходящ трафик и временно да забравите за останалото. Шансовете са добри никога да нямате нужда от тях.

Премахнете всички правила:

Верига за промяна на правилата (поведение по подразбиране):

iptables -P ИЗПУСКАНЕ НА ВХОД
iptables -P INPUT ACCEPT

Отказване на достъп от хост/подмрежа:

iptables -A INPUT -s 123.45.67.89 -j ИЗПУСКАНЕ
iptables -A INPUT -s 123.45.0.0/16-j ИЗПУСКАНЕ

Можете също да използвате имена на домейни:

iptables -A INPUT -s example.com -j ИЗПУСКАНЕ

Забрана на изходящи връзки:

iptables -A ИЗХОД -d 123.45.67.89 -j ИЗПУСКАНЕ

Негативите могат да се използват в правилата:

iptables -A ВХОД! -s 123.45.67.89 -j ИЗПУСКАНЕ

Изтриване на правило по неговия номер във веригата:

iptables -D ВХОД 1

Премахване на правило въз основа на това, което прави:

iptables -D ВХОД -s 123.45.67.89 -j ИЗПУСКАНЕ

Опцията -p указва протокола. Можете да използвате всички, icmp, tcp, udp или номера на протокола от / etc / протоколи. Флагът -sport показва порта, от който е изпратен пакетът, а -dport указва порта дестинация:

iptables -A INPUT -p tcp -sport80-j ПРИЕМАНЕ
iptables -A INPUT -p tcp -dport80-j ПРИЕМАНЕ

Вмъкнете правило в началото на веригата:

iptables -I INPUT ...

Или можете да посочите конкретна позиция:

iptables-save> /etc/iptables.rules

Правила за възстановяване:

iptables-възстановяване

Сега нека разгледаме някои практически примери. Това е, например, емулацията на разделяне на мрежата в тест, който проверява поведението на приложение, което използва Akka Cluster:

стартирайте (node1, s "iptables -A INPUT -s $ node2 -j DROP")
стартирайте (node1, s "iptables -A INPUT -s $ node3 -j DROP")
стартирайте (node1, s "iptables -A OUTPUT -d $ node2 -j DROP")
стартирайте (node1, s "iptables -A OUTPUT -d $ node3 -j DROP")

Възстановяването е абсолютно същото, с изключение на това, че флагът -A се заменя с флага -D.

Друг пример. Необходимо е да разберете кои портове слушат на машината и да затворите допълнителните. Отиваме до колата и казваме:

Пример за изход:

Активни интернет връзки (само сървъри)
Proto Recv-Q Send-Q Локален адрес Чужд адрес на състояние PID / име на програма
tcp 0 0 0.0.0.0:80 0.0.0.0:* СЛУШАЙТЕ 3210 / nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1789 / epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* СЛУШАЙТЕ 990 / postgres

Nginx и SSHd сърфират в интернет, това е добре. PostgreSQL слуша само локалния интерфейс, така че и с него няма проблем. Но epmd стърчи (можете да го проверите с telnet от друга машина) и това не е добре. Можете да затворите само порт 4369. Как да направите това беше показано по-горе. Или можете да отидете още по-далеч и да откажете всички връзки отвън към порт 81 и по-стар:

iptables -A INPUT -m мултипорт \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j ИЗПУСКАНЕ

Това използва разширението за много портове, за да посочи диапазони на портове.

Проверяваме дали всичко работи. Ако е добре, запазете правилата:

iptables-save> /etc/iptables.rules

За да вземете правилата при стартиране на системата, създайте нов файл /etc/network/if-pre-up.d/iptables:

iptables-възстановяванеизход0

... и ние казваме:

chmod + x /etc/network/if-pre-up.d/iptables

Този метод е проверен за работа на Ubuntu 14.04 LTS.

Debian също трябва да работи. Можете да намерите описание на алтернативен начин за възстановяване на правилата на защитната стена при стартиране на системата в вече споменатата статия за OpenVPN.

Допълнителни ресурси за тези, които искат да научат повече за Netfilter:

Как конфигурирате защитни стени на вашите сървъри?

Етикети: Linux, Сигурност, Мрежи.

Помощната програма на командния ред iptables се използва за конфигуриране на защитната стена на netfilter, вградена в система, базирана на ядрото на Linux.

Това ръководство е подходящо както за манекени, които искат да разберат аспектите на мрежовата сигурност, така и за опитни специалисти като измамник.

Принцип на настройка

Общият синтаксис за използване на iptables е:

iptables -t<таблица> <команда> <цепочка>[стая]<условие> <действие>

<таблица>

Правилата на Netfilter са разпределени в 4 таблици, всяка от които има собствено предназначение (повече подробности по-долу). Посочва се с ключа -t, но ако този параметър не е посочен, действието ще се извърши за таблицата по подразбиране - филтър.

<команда>

Командите показват какъв вид действие извършваме върху netfilter, например създаване или изтриване на правило.

<цепочка>

Всяка таблица има вериги, за всяка от които се създават самите правила. Например, за горната таблица с филтри има три предварително дефинирани вериги - INPUT (входящи пакети), OUTPUT (изходящи) и FORWARD (транзит).

[стая]

Някои команди изискват посочване на номер на правило, например за изтриване или редактиране.

<условие>

Условие описва критериите за обработка на определено правило.

<действие>

Е, всъщност какво правим с пакета, ако отговаря на критериите на условието.

* За да бъдем честни, заслужава да се отбележи, че клавишът за действие не трябва да отива в края. Просто този формат най-често се среща в инструкциите и улеснява четенето на правилата.

Iptables ключове и примери за тяхното използване

За работа с таблици (iptables -t)

Като напомняне, всички правила в netfilter са разпределени върху таблици. За да работите с конкретна таблица, трябва да използвате превключвателя -t.

Команди

Следните клавиши определят какво прави помощната програма iptables.

Ключ Описание и примери
Добавяне на правило в края на списъка:
iptables -A INPUT -s 192.168.0.15 -j ИЗПУСКАНЕ
откажете входящи от 192.168.0.15.
Премахване на правило:
iptables -D ВХОД 10
изтрийте правилото във веригата INPUT с номер 10.
-аз Вмъкване на правило в конкретна част от списъка:
iptables -I ВХОД 5 -s 192.168.0.15 -j ИЗПУСКАНЕ
вмъкнете правило 5-то в списъка.
Замяна на правилото.
iptables -R ИЗХОД 5 -s 192.168.0.15 -j ПРИЕМАНЕ
заменете нашето 5-то правило от забраняващо с разрешително.
Изчистване на правилата във веригата.
iptables -F ВХОД
-Z Нулиране на статистиката.
iptables -Z ВХОД
Създаване на верига.
iptables -N ВЕРИГА НОВ
Изтриване на верига.
iptables -X CHAINNEW
Дефиниране на правило по подразбиране.
iptables -P ИЗПУСКАНЕ НА ВХОД
Преименувайте веригата.
iptables -E ВЕРИГАНОВА ВЕРИГА

Условия

Тези ключове определят условията на правилото.

Ключ Описание и примери
-стр Мрежов протокол. Валидни опции са TCP, UDP, ICMP или ВСИЧКИ.
iptables -A ВХОД -p tcp -j ПРИЕМАНЕ
разрешава всички входящи tcp връзки.
Адрес на източника - име на хост, IP адрес или подмрежа в CIDR нотация.
iptables -A INPUT -s 192.168.0.50 -j ИЗПУСКАНЕ
забрани входящи от хост 192.168.0.50
Адрес на дестинацията. Принципът на използване е подобен на предишния превключвател -s.
iptables -A ИЗХОД -d 192.168.0.50 -j ИЗПУСКАНЕ
забрани изходяща към хост 192.168.0.50
-i Мрежовият адаптер, през който се получават пакетите (INPUT).
iptables -A INPUT -i eth2 -j DROP
забрани входящи за ethernet интерфейс eth2.
Мрежов адаптер, от който пакетите излизат (ИЗХОД).
iptables -A ИЗХОД -o eth3 -j ПРИЕМАНЕ
позволете изходящо от ethernet интерфейс eth3.
—Дпорт Пристанище на местоназначение.
iptables -A INPUT -p tcp -dport 80 -j ACCEPT
разрешаване на входящи на порт 80.
— Спорт Изходен порт.
iptables -A INPUT -p tcp -sport 1023 -j DROP
забрани входящи от порт 1023.

Изброените ключове също поддържат конструкцията с помощта на знака ! .

Настройване на netfilter с iptables

Обръща условието, например
iptables -A INPUT -s! 192.168.0.50 -j ИЗПАДАНЕ
ще откаже връзката с всички хостове с изключение на 192.168.0.50.

Действия

Действия, които трябва да бъдат извършени върху пакет, който отговаря на критериите на условието. Всяка таблица има свой собствен набор от валидни действия. Посочено с помощта на ключ -j.

маса Действие Описание
филтър ПРИЕМЕТЕ Решава пакета.
ИЗПУСКАЙТЕ Отказва пакета.
ОТХВЪРЛЯМ Предотвратява изпращането на съобщението до източника.
нац БАЛ С МАСКИ За изходящи пакети, заменя IP адреса на източника с адреса на интерфейса, от който пакетът напуска.
SNAT Подобно на MASQUERADE, но посочва конкретен мрежов интерфейс, чийто адрес ще се използва за спуфинг.
DNAT Подправяне на адрес за входящи пакети.
ПРЕНАСЪРВАНЕ Пренасочва заявката към друг порт на същата система.
объркан TOS Промяна на полето TOS (приоритизиране на трафика).
DSCP Промяна на DSCP (също приоритизиране на трафика).
TTL Промяна на TTL (живот на пакета).
HL Подобно на TTL, но за IPv6.
МАРК Маркиране на опаковката. Използва се за последващо филтриране или оформяне.
CONNMARK Маркиране на връзката.
TCPMSS Промяна на стойността на MTU.

Примери за често използвани команди iptables

Общи команди

Вижте правилата с техните номера:

iptables -L —номера на редове

За всяка таблица трябва да разгледате правилата поотделно:

iptables -t nat -L --номера на редове

Премахнете всички правила:

Задайте правила по подразбиране:

iptables -P ИЗПУСКАНЕ НА ВХОД

iptables -P ИЗХОД ИЗПАДА

* в тези примери, по подразбиране, за всички входящи (INPUT) и изходящи (OUTPUT) пакети, правилото за отказ (DROP) ще работи.

Разрешаване на всички

Метод 1. Чрез добавяне на правило:

iptables -I ВХОД 1 -j ПРИЕМАМ

iptables -I ИЗХОД 1 -j ПРИЕМАМ

iptables -I НАПРЕД 1 -j ПРИЕМАМ

* тези три команди ще създадат правила, които позволяват всички входящи, изходящи и транзитни пакети.

Метод 2. Чрез почистване на правилата:

* тук първо премахваме всички правила (-F), след това задаваме правилата по подразбиране - разрешаване на входящи, изходящи и транзитни (-S).

Метод 3. Деактивиране на услугата (удобно е да деактивирате защитната стена за известно време за диагностициране на проблеми):

Работа с правила

Добавете правило в края на списъка:

iptables -A INPUT -p tcp -dport 25 -j ПРИЕМАНЕ

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j ПРИЕМЕ

Добавете диапазон на портове:

iptables -A INPUT -p tcp -dport 3000: 4000 -j ПРИЕМАНЕ

* в този случай от 3000 до 4000.

Вмъкване на правило:

iptables -I НАПРЕД 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j ПРИЕМАНЕ

Пренасочване на портове

Има два начина за конфигуриране.

1. Правила ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ + ПОСЛЕДВАНЕ:

iptables -t nat -A ПРЕДУПРЕЖДАНЕ -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —до местоназначение 192.168.1.15:2222

iptables -t nat -A ПОСТРАУТУВАНЕ -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —до източник 19.8.232.80:22

* където 19.8.232.80 - адресът, на който слушаме заявки за връзка; 22 - порт за препращане; 192.168.1.15 2222 - вътрешен порт.

2. Правила за ПРЕДВАРИТЕЛНО НАПРАВЛЕНИЕ + НАПРАВЛЕНИЕ:

iptables -t nat -A ПРЕДУПРЕЖДАНЕ -p tcp -i eth1 —dport 22 -j DNAT —до местоназначение 192.168.1.15:2222

iptables -A НАПРЕД -p tcp -d 192.168.1.15 —dport 22 -m състояние —състояние НОВО, УСТАНОВЕНО, СВЪРЗАНО -j ПРИЕМА

* където eth1- мрежовият интерфейс, на който слушаме заявки; 22 - порт за препращане; 192.168.1.15 - вътрешен IP-адрес, на който прехвърляме всички заявки; 2222 - вътрешен порт.

Стартиране на настройката

Разрешаване на SSH:

iptables -A INPUT -p tcp -dport 22 -j ПРИЕМАНЕ

Ние задаваме политиката за забрана на входящи и разрешаване на всички изходящи:

iptables -P ИЗХОД ПРИЕМА

Създайте правило, за да работи apt-get правилно:

iptables -A INPUT -p tcp —sport 80 -m state —state ESTABLISHED -j ACCEPT

Разрешаване на ICMP (за ping команда):

iptables -A ВХОД -p icmp -j ПРИЕМАНЕ

Правила за запазване (постоянни)

По подразбиране всички правила спират да работят след рестартиране на мрежата или компютъра. Има няколко начина да конфигурирате правилата за запазване на правилата след рестартиране.

Метод 1.iptables-save

Записваме правилата във файл:

iptables-save> /etc/iptables.rules

Отворете мрежовите настройки:

vi / etc / network / интерфейси

и добавете реда:

предварителна настройка на iptables-restore< /etc/iptables.rules

Метод 2.iptables-persistent

Инсталирайте пакета iptables-persistent:

apt инсталирайте iptables-persistent

За да запазите правилата, въведете командата:

услуга iptables-постоянно запазване

Метод 3.service iptables

Работи на по-стари версии на Linux:

Метод 4.iptables.init

Работи на CentOS:

/usr/libexec/iptables/iptables.init запазване

Ubuntu и CentOS

Няма iptables по подразбиране в съвременните операционни системи Ubuntu и CentOS.

Трябва да го инсталирате или да използвате по-нови помощни програми.

На CentOS

Firewall-cmd се използва като стандартна програма за управление на защитната стена. За повече подробности прочетете инструкцията Как да конфигурирате firewalld в CentOS.

Ако трябва да използвате iptables, инсталирайте помощния пакет:

yum инсталирайте iptables-services

Деактивирайте защитната стена:

systemctl спиране на защитната стена

systemctl деактивира защитната стена

Ние активираме и стартираме iptables:

systemctl активира iptables

В Ubuntu

Ufw вече се използва за управление на защитната стена.

За да работите с iptables, инсталирайте следния пакет:

apt-get инсталирате iptables-persistent

Деактивирайте ufw:

# Работа в мрежа # Сигурност # UNIX # Ubuntu # Linux

Беше ли ви полезен този урок?

ОТВЪН ПРОТИВОПОЖАРНАТА СТЕНА:
FIREWALL (FIREWALL) И ИНТЕРНЕТ ШЛЮЗ
DEBIAN GNU / LINUX 4.0 ETCH

Практично ръководство за организиране на защитен достъп до Интернет
от отделен компютър и от локална мрежа в Debian GNU / Linux 4.0 Etch
Малко теория

Всяка връзка с интернет не само прави възможно свързването към различни сървъри и сайтове, но и създава потенциална опасност от проникване в нашия компютър отвън. Тази опасност не бива да се пренебрегва, тъй като повечето опити за неоторизиран достъп до компютрите на потребителите от Интернет днес са част от добре организиран престъпен бизнес. След успешна компрометация на вашата система, те ще се опитат да използват компютъра ви или за изпращане на спам, или за организиране на DoS атаки на други компютри, или за всякакви други злобни цели. Пренебрегването на тази опасност в най-добрия случай ще увеличи разходите ви за трафик и ще забави производителността на вашия компютър; в най-лошия, това може неволно да ви въвлече в престъпни дейности на кибергрупи.

Ситуацията се влошава от факта, че в някои (все още) широко разпространени операционни системи много портове са оставени отворени по подразбиране, което позволява на нападателя да се свърже от Интернет към потребителя, без последният да знае.

За предотвратяване на неоторизирани връзки отвън и за филтриране на входящия / изходящия трафик в операционната система, трябва да се използва специална програма - защитна стена(английска защитна стена), известна още като защитна стенаи защитна стена... По-долу е даден прост пример за настройка на защитна стена в безплатна операционна система. Debian GNU / Linux 4.0.

Използването на защитна стена става особено актуално, ако имате повече от един компютър, но домашна или офисна мрежачиито компютри влизат онлайн.

Дори малка локална мрежа трябва да бъде правилно организирана. Да приемем, че имате високоскоростна точка за достъп до Интернет (например ADSL модем) с Ethernet (т.е. мрежов) интерфейс.

Има изкушение (нагорещено от неграмотни препоръки, както например в инструкциите за моя ADSL модем) да свържете модема директно към превключвателя и след това да се свържете към превключвателя всичкокомпютри от локалната мрежа. В този случай модемът динамично издава локални IP адреси през комутатора, но се оказва, че всеки компютър остава сам с интернет! Нито модемът, нито комутаторът могат да се превърнат в пречка за недоброжелател. Нападателят може да сканира всичкокомпютри от локална мрежа, организирани по този начин.

Логичното и безопасно решение е да създавате бариерамежду модема и локалната мрежа - под формата на отделен компютър с конфигурирана на него "защитна стена" (защитна стена). Този компютър има два интерфейса - единият "гледа" към Интернет (тоест физически е свързан към модема), другият е насочен към локалната мрежа (и е физически свързан към комутатора, към който са и другите компютри свързан). Тъй като нашият компютър със защитна стена вече е възлова точка за други компютри за достъп до Интернет, той също се нарича шлюз(Английски портал).

При такава организация на локалната мрежа вероятността от хакване е значително намалена - нападателят "вижда" само шлюза от Интернет, а на шлюза е инсталирана защитна стена и не е лесно да го хакне.

Настройка на iptables на Linux за манекени

Компютрите в локалната мрежа могат да сърфират в интернет и да останат относително безопасни.

Конфигуриране на защитна стена с помощта на конфигуратора arno-iptables-firewall

За да организирате защитна стена в GNU / Linuxпрограмата се използва iptables, който по правило се инсталира веднага при инсталиране на повечето дистрибуции. V Debian GNU / Linuxможете да проверите това, като стартирате с права на администратор способност... Ако е необходимо, инсталирайте iptables.

Въпреки това, ръчна конфигурация iptablesе нетривиална задача и може да бъде извършена само от специалисти в областта на системната администрация. Следователно, за да конфигурирате правилата, по които ще работи защитната стена, е по-добре да използвате специален конфигуратор... V Debian GNU / LinuxТази програма arno-iptables-firewall... При стартиране той задава поредица от въпроси, на базата на които генерира правила за функционирането на защитната стена. iptables.

Пишем в конзолата с права на суперпотребител:

#aptitude инсталирайте arno-iptables-firewall

В началото на инсталацията програмата ще попита дали наистина искаме да конфигурираме защитната стена с нея. iptables:

Първо, трябва да посочите външния интерфейс - "търсене" към Интернет, т.е. свързан към модема. Настройките на интерфейса са дефинирани в конфигурационния файл / etc / мрежа / интерфейси... Например, може да изглежда така:

# Това е интерфейсът lo - сочи към самата ни машина. auto lo iface lo inet loopback адрес 127.0.0.1 netmask 255.0.0.0 # Това е интерфейсът eth0, който е свързан към Интернет (ADSL модем) # Неговата особеност е, че IP адресът му се присвоява динамично от ISP, # така че опцията dhcp auto eth0 е зададена iface eth0 inet dhcp # Това е интерфейсът, който е обърнат към локалната мрежа # Адресът на локалната мрежа ще бъде 192.168.2.0/24 # За целите на сигурността в локалната мрежа шлюзът има статичен IP адрес - 192.168.2.1, # така че е зададена статичната опция # Мрежова маска - 255.255.255.0 # Мрежовият адрес за излъчване в този случай ще бъде 192.168.2.255 auto eth1 iface eth1 inet статичен адрес 192.168.2.1 net.252.252.525.525.

И така, гледайки настройките / etc / мрежа / интерфейси, ние показваме на конфигуратора на защитната стена, че нашият външен интерфейс е eth0:

На въпроса дали доставчикът ни дава IP адрес динамично(с помощта на DHCP), ние отговаряме утвърдително:

Следващият въпрос е какви услуги ще се предоставят от нашия компютър на външни потребители на Интернет. Ние нямаме! Ние не се занимаваме с професионален уеб хостинг и не възнамеряваме да разпространяваме информация навън. Оставяме реда празен.

След това идва въпросът дали ще предоставяме някакви услуги през UDP. Също така не - и също така оставете реда празен!

Трябва ли да бъдем пинговани от външния свят (т.е. да проверим дали има връзка с компютъра, на който е инсталирана защитната стена)? В нашия случай това е напълно приемливо:

Това завършва конфигурацията за отделен компютър, който не е LAN шлюз. Ако възнамеряваме да използваме компютъра като шлюз, трябва да отговорим на още няколко въпроса. Посочваме интерфейса, с който шлюзът е обърнат към локалната мрежа - в нашия случай е така eth1както е видно от / etc / мрежа / интерфейси(в противен случай, за "самотен" компютър, оставете това поле празно):

При запитване дали да се разреши NAT превод, т.е. пренасочвайки трафика от Интернет през шлюза към локалната мрежа и обратно, ние отговаряме "да" - това е една от основните ни задачи в този случай:

Тогава възниква въпросът: какъв сегмент от локалната мрежа може да бъде допуснат чрез пренасочване към външни мрежи? Всички компютри от локалната мрежа имат право на достъп до Интернет; задайте отново стойността 192.168.2.0/24

Накрая потвърждаваме желанието си да стартираме iptablesбез допълнителна проверка от наша страна на автоматично генерираните правила на защитната стена от конфигуратора:

След това, ако всичко е минало добре, се показва съобщение, подобно на това по-долу. Вече ще се появява при всяко зареждане на компютъра на шлюза и ще информира за успешното стартиране на защитната стена:

Iptables Firewall Script на Arno v1.8.8c ————————————————————————— Проверките за здравина преминаха... OK Открит IPTABLES модул...

Зареждане на допълнителни IPTABLES модули: Всички IPTABLES модули са заредени! Конфигуриране /proc /…. настройки: Разрешаване на защита от измама с rp_filter Активиране на SYN-flood защита чрез SYN-бисквитки Деактивиране на регистрирането на марсианци Деактивиране на приемането на ICMP-пренасочващи съобщения Задаване на макс. количество едновременни връзки до 16384 Разрешаване на защита срещу пренасочени към източник пакети. Задаване на изчакване на conntrack по подразбиране Разрешаване на намаляване на възможността за DoS. Настройка по подразбиране TTL = 64 Деактивиране на ECN (Изрично известие за претоварване) Разрешаване на поддръжка за динамична IP таблица. .. Правила за изтриване в таблицата с филтри Задаване на правила по подразбиране (защитени) Използване на loglevel "info" за syslogd Настройка на правила за защитна стена: ——————————————————————— ——— - Приемане на пакети от локалното устройство за обратна връзка Разрешаване задаване на максимален размер на пакета чрез MSS Разрешаване на манипулиране на TOS Регистриране на скрито сканиране (nmap сонди и др.) Разрешено Регистриране на пакети с лоши TCP флагове. пакети активирани Регистриране на достъп от запазени адреси активирано Настройка на правила за защита от измама Четене на персонализирани IPTABLES правила от / etc / arno-iptables-firewall / custom-rules Зареждане (потребителски) плъгини Настройка на INPUT политика за външната мрежа (INET): Ena поддръжка на bling за DHCP назначен IP на външен интерфейс(и): eth0 Регистриране на изрично блокирани хостове активирано Регистриране на отказани локални изходни връзки е активирано Пакетите НЯМА да се проверяват за частни адреси на източника Позволяване на целия свят да изпраща ICMP-заявки (ping) Регистриране на пропуснати ICMP-заявки (ping) пакети е активирано Регистриране на пропуснати други ICMP пакети е активирано Регистриране на възможни скрито сканиране е активирано Регистриране на (други) опити за свързване към ПРИВИЛЕГИРАНИ TCP портове е активирано Регистриране на (други) опити за свързване към ПРИВИЛЕГИРАНИ UDP портове е активирано Регистриране на ( други) опити за свързване към НЕПРИВИЛЕГИРАНИ TCP портове активирани Регистриране на (други) опити за свързване към НЕПРИВИЛЕГИРАНИ UDP портове активирани Регистриране на други IP протоколи (не TCP / UDP / ICMP) разрешени опити за връзка Регистриране на ICMP наводняване активирано Прилагане на INET политика към външни (INET) интерфейс: eth0 (без посочена външна подмрежа) Настройка на INPUT политика за вътрешен (LAN) интерфейс(и): eth1 Разрешаване на ICMP-заявки (ping) A разрешаване на всички (други) протоколи Настройка на политика FORWARD за вътрешен (LAN) интерфейс(и): eth1 Регистриране на отказани LAN-> INET FORWARD връзки активирани Настройка LAN-> INET политика: Разрешаване на ICMP-заявки (ping) Разрешаване на всички (други ) протоколи Разрешаване на маскиране (NAT) чрез външен(и) интерфейс(и): eth0 Добавяне (вътрешен) хост(ове): 192. 168.2.0 / 24 Защитата е ПРИЛОЖЕНА за външен интерфейс(и) във веригата FORWARD 16 януари 23:53:12 Приложени са всички правила за защитната стена.

Забележка 1.В повечето случаи успешното стартиране на защитната стена се случва след първата комуникация с конфигуратора. Ако нещо не работи, силно се препоръчва да повторите конфигурацията, като стартирате отново конфигуратора с права на суперпотребител:

# dpkg-reconfigure arno-iptables-firewall

Това ще елиминира случайна грешка, която може да възникне при отговаряне на въпросите на конфигуратора по време на първия опит с него. Ако и това не помогне, можете да опитате да коригирате ръчно конфигурационния файл на програмата. arno-iptables-firewall, а именно: /etc/arno-iptables-firewall/firewall.conf... Може да е полезно да посетите домашния сайт на създателя на тази програма на адрес http://rocky.eld.leidenuniv.nl/. Той съдържа много информативно ръководство за работа с програмата, интересни често задавани въпроси и освен това има информация за нови версии на програмата.

Бележка 2.Не забравяй това никойзащитната стена не може да даде 100% гаранция за сигурността на компютъра в интернет. Въпреки това, не можете да пренебрегнете защитата на защитната стена. Трябва да направим всичко по силите си, за да разчитаме на Божията милост. „Ако Господ не пази града, стражът е напразен“(Пс. 126:1).

Източник на статията

Отдавна написах публикация в блога за основните правила на Iptables за работещия потребител и вероятно трябва да я прочетете и свързаната статия за защитната стена на Stateful.

Но предварително ядро ​​2.6.39 (което включва и можете да го използвате за бели списъци на IP, ако имате повече от 10 за бели списъци (където 10 е произволно)).

Настройка на iptables за манекени

Първото състояние на манипулатора, което знаем, че искаме да приемем или премахнем, и интерфейсите.

Ако просто искате да разрешите само IP, без състояние

е по-вероятно да срещнете проблеми с това и предлагам да използвате състоянието, за да улесните живота си. Например, не се разрешава и със сигурност ще доведе до проблеми за определени приложения.

Linux има вградена защитна стена, наречена Netfilter. Според официалния сайт на проекта:

netfilter е колекция от системни съобщения в ядрото на Linux, която позволява на модулите на ядрото да регистрират функции за обратно извикване от мрежовия стек. Регистрираната функция за обратно извикване обработва всеки пакет, преминаващ през мрежовия стек.

Защитната стена в Linux се контролира от iptables, който има функция за филтриране на IPv4, ip6tables филтрира IPv6. Този урок обяснява как да научите как да използвате Netfilter (iptables) на CentOS / RHEL / Fedora / Redhat Enterprise Linux. Тази статия предоставя основни примери за конфигуриране на iptables в Linux за защита срещу прониквания.

Примери за използване на iptables

  • Повечето от действията, изброени в тази статия, са написани с допускането, че ще бъдат изпълнени като root от bash или всяка друга съвременна обвивка. Не въвеждайте команди на отдалечената система, тъй като можете сами да деактивирате достъпа.
  • За демонстрационни цели използвах ubuntu 10.04, но командите трябва да работят с всяка модерна дистрибуция.
Показване на състоянието на вашата защитна стена
Въведете следната команда като root:
# iptables -L -n -v
Примерен отговор:
Верига INPUT (политика ACCEPT 0 пакети, 0 байта) pkts байтове целеви prot избиране на изходна дестинация Верига НАПРЕД (политика ACCEPT 0 пакета, 0 байта) pkts байтове целева защита избиране на изходна дестинация Верига OUTPUT (политика ACCEPT 0 пакети, 0 байта ) pkts байтове целеви prot отказване в изходна дестинация
Този отговор означава, че защитната стена не е активна.
И, например, това ще покаже, че защитната стена в Linux е активна:

Верига INPUT (политика ACCEPT 1810K пакети, 126M байта) pkts байтове целева защита изключване на изходна дестинация 7418K 1070M ACCEPT udp - * * 0.0.0.0/0 0.0.0.0/0 udp dpt: 819 th 0p 0.0.0.0/0 0.0.0.0/0 tcp dpt: 2222 флагове: 0x17 / 0x02 състояние НОВА верига НАПРЕД (политика ACCEPT 5628K пакети, 482M байта) pkts байтове целева защита избиране 0 t c ACCE дестинация 0 tup ACCE дестинация 0.0 .0.0 / 0 0.0.0.0/0 tcp dpt: 1111 състояние НОВО, СВЪРЗАНО, УСТАНОВЕНО 599K 539M ПРИЕМЕ udp - eth0 * 0.0.0.0/0 10.1.0.0/0 10.1.1.6 udp1.1.6 udp1.1.6 udp1.1.1.6 udp1.1.6 състояние НОВО, СВЪРЗАНО, УСТАНОВЕНО 4959K пакета, 880M байта) pkts байтове целеви prot отказване в изходна дестинация
Ключовете в примера означават:

  • Л: Избройте правилата.
  • v: Показва подробна информация. Този клавиш ще покаже името на интерфейса, параметрите на правилото и TOS маските. Броячите на пакети и байтове също ще бъдат показани в списъка с суфикс "K", "M" или "G" в зависимост от необходимия множител.
  • н: Не разрешавайте IP адреси, показвайте в цифров вид. Ускорява тегленето.
Добавете превключвателя --line-numbers, за да видите правилата с номера на редове, например:
# iptables -n -L -v --номера на редове
За да видите правилата за INPUT или OUTPUT, въведете:
# iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --номера-редове
Спрете, рестартирайте, стартирайте защитната стена
Ако имате CentOS / RHEL / Fedora Linux, въведете:
# service iptables stop # service iptables start # service iptables restart
За да почистите правилата на iptables със собствени средства, въведете:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P ПРИЕМАНЕ НАПРЕД
Ключовете в примера означават:
  • Ф: Изчиства всички правила (промиване).
  • х: Изтриване на верига
  • T <таблица>: Изберете таблица и изтрийте правила.
  • П: Задайте правилата по подразбиране (като ОТПУСКАНЕ, ОТХВЪРЛЯНЕ или ПРИЕМАНЕ).
Премахване на правилата за защитната стена
За да покажете номера на реда заедно с друга информация за съществуващите правила, въведете:
# iptables -L ИЗХОД -n --номера-редове # iptables -L ИЗХОД -n --номера-редове | по-малко # iptables -L ИЗХОД -n --номера-редове | grep 8.8.8.8
Ще получите списък с IP адреси. Погледнете номера вляво и въведете номера, за да го изтриете. Например, за да изтриете ред номер 4, въведете:
# iptables -D ВХОД 4
Или намерете източника на IP 202.54.1.1 и го премахнете от правилото:
# iptables -D INPUT -s 202.54.1.1 -j ИЗПУСКАНЕ
Ключът в примера означава:
  • д: премахване на едно или повече правила от посочената верига
Добавяне на правила за защитна стена
За да вмъкнете едно или повече правила в определена верига, обикновено се използва следният синтаксис. Първо разберете номера на реда:
# iptables -L INPUT -n --номера на редове
Изход например:
Chain INPUT (policy DROP) num target prot opt ​​източник дестинация 1 DROP all - 202.54.1.1 0.0.0.0/0 2 ACCEPT all - 0.0.0.0/0 0.0.0.0/0 състояние НОВО, УСТАНОВЕНО
За да вмъкнете правило между 1 и 2, въведете:
# iptables -I INPUT 2 -s 8.8.8.8 -j DROP
За да видите актуализираните правила, въведете:
# iptables -L INPUT -n --номера на редове
Изход например:
Верига INPUT (policy DROP) num target prot opt ​​източник дестинация 1 DROP all - 202.54.1.1 0.0.0.0/0 2 DROP all - 8.8.8.8 0.0.0.0/0 3 ACCEPT all - 0.0.0.0/0 0.0. / 0 състояние НОВО, УСТАНОВЕНО
Запазване на правилата за защитната стена
За да запазите правилата на защитната стена на CentOS / RHEL / Fedora Linux, въведете:
Запазване на # услуга iptables
При други дистрибуции
iptables-save> /root/my.active.firewall.rules
или
iptables-запазване
Възстановяване на правилата на защитната стена
За да възстановите правилата на защитната стена от файла /root/my.active.firewall.rules, въведете:
# iptables-възстановяване< /root/my.active.firewall.rules
За да възстановите правилата на защитната стена на CentOS / RHEL / Fedora Linux, въведете:
# услуга iptables се рестартира
Задаване на правила за защитна стена по подразбиране
Блокиране на целия трафик:
# iptables -P ИЗПУСКАНЕ НА ВХОД # iptables -P ИЗПУСКАНЕ НА ИЗХОД # iptables -P ИЗПУСКАНЕ НАПРЕД # iptables -L -v -n
Блокирайте само входящия трафик:
# iptables -P INPUT DROP # iptables -P НАПРЕД DROP # iptables -P ИЗХОД ПРИЕМА
Блокиране на мрежови адреси на локална мрежа на външен интерфейс
IP спуфингът е атака, която използва IP адреса на хоста, на когото има доверие, в IP пакетите, изпратени до жертвата, като адрес за връщане. Пакетите с немаршрутируеми адреси на източника трябва да се изхвърлят, като се използва следния синтаксис:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Обхват на IPv4 адреси за частни мрежи (уверете се, че са блокирани на външния интерфейс)
  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 ©
  • 224.0.0.0/4 (МУЛТИКАСТ D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (ОБРАЩАНЕ)
IP блокиране
За да блокирате IP адрес 1.2.3.4, въведете:
# iptables -A INPUT -s 1.2.3.4 -j ИЗПУСКАНЕ
Блокиране на входящи заявки за порт
За да блокирате всички заявки на порт 80, въведете:
# iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
За да блокирате порт 80 само за IP 1.2.3.4, въведете:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
Блокиране на изходящ IP
За да блокирате изходящ трафик от конкретен хост или домейн, като например уебсайт, въведете:
хост -t сайт
Отговорът би бил:
сайтът е с адрес 95.211.41.31
Запишете своя IP адрес и въведете следната команда, за да блокирате целия изходящ трафик от 95.211.41.31:
# iptables -A ИЗХОД -d 95.211.41.31 -j ИЗПУСКАНЕ
Можете да използвате маски:
# iptables -A ИЗХОД -d 192.168.1.0/24 -j ИЗПУСКАНЕ # iptables -A ИЗХОД -o eth1 -d 192.168.1.0/24 -j ИЗПУСКАНЕ
Можете също да използвате име на домейн, въведете:
# iptables -A ИЗХОД -p tcp -d www..ru -j ИЗПУСКАНЕ
Въпреки че документацията казва, че използването на име на домейн вместо IP не се препоръчва.
Регистриране и блокиране на пакети
Въведете следната команда, за да регистрирате и блокирате спуфинг на IP на публичния интерфейс с име eth1:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
По подразбиране всичко се записва във файл. / var / log / съобщения.

Коментар от:

По-добре е да не правите това, особено при явно ляво движение. LOG може да се вмъкне само с ограничение -m, в противен случай всяка DoS атака ще бъде многократно по-ефективна: всъщност, индиректно, нападателят получава директен път на интензивно въздействие директно върху файловата система на сървъра.
Как да го направите правилно е написано по-долу
Регистриране и блокиране на пакети с ограничен брой записи в дневника
Опцията -m може да ограничи броя на регистрационните записи, създадени за единица време. Това се използва за предотвратяване на наводняване на регистрационни файлове. За да запишете не повече от 7 записа за 5 минути, въведете:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5 / m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j ИЗПУСКАНЕ
Блокиране или разрешаване на трафик от Mac адрес
Използвайте следния синтаксис:
# iptables -A INPUT -m mac --mac-source 00: 19: 99: 3C: AB: 23 -j DROP ## * приема само трафик за TCP порт #8080 от mac 00: 19: 99: 3C: AB: 22 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00: 19: 99: 3C: AB: 22 -j ACCEPT
Отказване или разрешаване на ICMP заявки за пинг
Въведете следната команда, за да блокирате ICMP заявки:
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Отговорите на ping също могат да бъдат ограничени до конкретни мрежи или хостове:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ПРИЕМАНЕ
Следният пример приема само ограничен тип ICMP заявка:
### ** предполага, че политиката за INPUT по подразбиране е зададена на DROP ** ############## iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type дестинация-недостижима -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT ## ** целият ни сървър да отговори на пингове ** ## iptables - A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Отваряне на диапазон от IP адреси
Използвайте следния синтаксис, за да отворите диапазон от IP адреси:
## приема връзка само към tcp порт 80 (Apache), ако ip е между 192.168.1.100 и 192.168.1.200 ## iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.1008. 192.168.1.200 -j ПРИЕМАТЕ
## nat пример ## iptables -t nat -A ПОСТРАУТИНГ -j SNAT --to-source 192.168.1.20-192.168.1.25
Затваряне или отваряне на обществени пристанища
Следва синтаксисът за отваряне и затваряне на общи TCP и UDP портове:
Заменете ACCEPT с DROP за блокиране на порт: ## отворен порт ssh tcp порт 22 ## iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168. 1.0 / 24 -m state --state НОВО -p tcp --dport 22 -j ACCEPT ## отворени чаши (услуга за печат) udp / tcp порт 631 за LAN потребители ## iptables -A INPUT -s 192.168.1.0/24 - p udp -m udp --dport 631 -j ПРИЕМЕ iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## позволява синхронизиране на времето чрез NTP за потребители на LAN (отворете udp порт 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state НОВО -p udp --dport 123 -j ACCEPT ## отворен tcp порт 25 (smtp) за всички ## iptables -A INPUT - m state --state НОВО -p tcp --dport 25 -j ACCEPT # отворени портове на dns сървър за всички ## iptables -A INPUT -m state --state НОВО -p udp --dport 53 -j ПРИЕМЕ iptables -A INPUT -m състояние --state НОВО -p tcp --dport 53 -j ПРИЕМА ## отваряне на http / https (Apache) порт на сървъра към всички ## iptables -A INPUT -m state --state НОВО -p tcp --dport 80 -j ПРИЕМЕ iptables -A ВХОД -m състояние --state НОВО -p tcp --dport 443 -j ПРИЕМЕ ## отваряне на tcp порт 110 (pop3) за всички ## iptables -A INPUT -m state --state НОВО -p tcp --dport 110 -j ПРИЕМЕ ## отворен tcp порт 143 (imap) за всички ## iptables -A INPUT -m state --state НОВО -p tcp --dport 143 -j ПРИЕМЕ ## отворен достъп до файлов сървър Samba само за потребители на lan ## iptables -A INPUT -s 192.168.1.0/24 -m състояние --state НОВО -p tcp --dport 137 -j ПРИЕМЕ iptables -A INPUT -s 192.168.1.0/24 -m състояние --state НОВО -p tcp - dport 138 -j ПРИЕМЕ iptables -A INPUT -s 192.168.1.0/24 -m състояние --state НОВО -p tcp --dport 139 -j ПРИЕМЕ iptables -A INPUT -s 192.168.1.0/24 -m състояние --state НОВО -p tcp --dport 445 -j ПРИЕМЕ ## отворен достъп до прокси сървър само за LAN потребители ## iptables -A INPUT -s 192.168.1.0/24 -m state --state НОВО -p tcp --dport 3128 - j ПРИЕМЕ ## отворен достъп до mysql сървър само за потребители на lan ## iptables -I INPUT -p tcp --dport 3306 -j ПРИЕМАНЕ
Ограничете броя на едновременните връзки към сървъра за всеки клиент по IP
Можете да използвате модула connlimit, за да поставите такива ограничения. За да ограничите не повече от 3 SSH връзки на хост, въведете:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j ОТХВЪРЛЯ
Задайте HTTP заявки на 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-над 20 --connlimit-mask 24 -j DROP
Параметри в примера,
  • --connlimit-above 3: Дали броят на съществуващите връзки е над 3.
  • --connlimit-mask 24: Групирайте хостове по