iptables для новачків, допитливих, зацікавлених (2-а частина)

Коли DesdeLinux Мені було лише кілька місяців, і я написав надзвичайно простий для розуміння підручник про iptables: iptables для новачків, цікавих, зацікавлених (1-а частина) . Використовуючи такі метафори, як порівняння нашого комп’ютера з нашим будинком, нашого брандмауера з дверима будинку, а також інші приклади, я розважально, без такої кількості технічних чи складних концепцій, пояснив, що таке брандмауер, що таке iptables та як почати використовувати його та налаштувати. Це продовження, 2-а частина попереднього підручника iptables 🙂

Трапляється, що кілька днів тому за допомогою точки доступу Linksys AP (точка доступу) я поставив Wi-Fi у будинку своєї подруги, хоча місцевість не є найбільш обізнаною з точки зору технологій, тобто це не означає, що існує багато небезпек розтріскування , це завжди гарна ідея мати відмінний захист як у Wi-Fi, так і в комп’ютерах.

Я не буду коментувати безпеку Wi-Fi тут, оскільки це не є метою поста, я зупинюсь на конфігурації iptables, яку я зараз використовую на своєму ноутбуці.

Наступні команди виконуються в терміналі, їх потрібно виконувати з привілеями адміністратора. Я буду додавати sudo до кожної команди, ви можете зробити те саме або уникати використання sudo, виконуючи команди безпосередньо як root

У попередньому дописі я пояснив, що в брандмауері потрібно спершу заборонити весь вхідний трафік, для цього:

sudo iptables -P INPUT DROP

Тоді ми повинні дозволити нашому власному комп’ютеру мати дозвіл на введення даних:

sudo iptables -A INPUT -i lo -j ACCEPT

Окрім прийому пакетів запитів, що надходять з нашого комп’ютера:

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

Для кращого розуміння цих рядків я рекомендую прочитати першу половину попередньої статті: iptables для новачків, цікавих, зацікавлених (1-а частина)

Поки наш комп’ютер може без проблем керувати Інтернетом, але ніхто з будь-якого іншого середовища (локальної мережі, Інтернету, Wi-Fi тощо) не зможе отримати доступ до нашого комп’ютера будь-яким способом. Ми почнемо налаштовувати iptables відповідно до наших потреб.

Використання ulogd для виведення журналів iptables в інший файл:

За замовчуванням журнали iptables потрапляють у журнал ядра, системний журнал або щось подібне ... в Arch за замовчуванням, зараз я навіть не пам’ятаю, куди вони йдуть, тому я використовую ulogd так що журнали iptables знаходяться в іншому файлі.

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

Надання доступу до мого приватного сервера:

Я не використовую VirtualBox або щось подібне для віртуалізації, у мене є свій віртуальний приватний сервер Qemu + KVM який повинен мати можливість підключитися до мого ноутбука як такого, з правилами iptables, які я щойно вказав, він не зможе, тому я повинен дати дозвіл на IP мого віртуального сервера, щоб він міг отримати доступ до мого ноутбука :

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

Ми збираємося детально описати цей рядок, важливо, щоб ви розуміли, що означає кожен параметр, тому що відтепер вони будуть багато повторюватися:

-ВХІД : Я кажу, що збираюся оголосити правило щодо вхідного трафіку

-і вірбр0 : Я заявляю, що інтерфейс, через який я прийму трафік, не є eto (LAN) або wlan0 (Wifi), я конкретно кажу, що це мій інтерфейс virbr0, тобто віртуальний мережевий інтерфейс (внутрішній), через який мій ноутбук спілкується з моїм віртуальним сервером (і навпаки)

-p tcp : Я вказую протокол, найбільш використовуваними є UDP і TCP, тут насправді було достатньо цього не ставити, але ... прийнято вказувати тип протоколу, який потрібно прийняти

-с 192.168.122.88 : Джерело, джерело пакетів. Іншими словами, правило посилається на пакети, що надходять конкретно з IP 192.168.122.88

-j ПРИЙМІТЬ : Вже тут я кажу, що хочу зробити з пакунками, які відповідають вищезазначеному, в даному випадку приймаю.

Іншими словами, як підсумок, я збираюся приймати пакети, що надходять з IP 192.168.122.88, але у випадку, якщо ви хочете ввести пакети, що надходять з цього IP, АЛЕ! Вони входять з інтерфейсу, який не є virbr0, тобто, скажімо, вони намагаються ввести пакети з IP 192.168.122.88, але вони з комп’ютера в нашій мережі Wi-Fi, якщо це так, пакети будуть відхилені. чому? Оскільки ми чітко вказуємо, що так, ми приймаємо пакети з 192.168.122.88 так, але і тільки, але вони також повинні входити з інтерфейсу virbr0 (внутрішній, віртуальний мережевий інтерфейс), якщо пакети надходять з іншого інтерфейсу (LAN, RAS, Wi-Fi тощо), тоді вони не будуть прийняті. Визначивши інтерфейс, як бачите, ми можемо обмежити його ще більше, ми можемо мати кращий контроль над тим, що входить (або не входить) у наш комп’ютер.

Прийом пінгу з будь-якого IP домашнього Wi-Fi:

З іншого комп’ютера, який під’єднується до Wi-Fi, якщо ви намагаєтеся пінгувати мій ноутбук, я хочу це дозволити. причина? Ідея також полягає в тому, що в найближчі кілька тижнів підключити ПК сусіднього будинку до мережі, тому обмін інформацією буде менш складним і більш плавним, коли я почну проводити тести для прив’язки робочого столу до Wi-Fi, я буду потрібно перевірити свій ноутбук, щоб перевірити підключення, якщо ноутбук не пінгує мене назад, я можу думати, що точка доступу не працює, або що сталася помилка під час доступу до Wi-Fi, тому я хочу дозволити пінг.

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-ВХІД : Так само, як і раніше, я маю на увазі вхідний трафік

-я wlo1 : Подібно до раніше. У попередньому випадку я вказав віртуальний інтерфейс, у цьому випадку я вказую інший інтерфейс, це мій wifi: wlo1

-p icmp : Протокол Icmp, icmp = ping. Тобто, я не дозволяю SSH або щось подібне, я дозволяю лише пінг (icmp)

-s 192.168.1.0/24 : Джерело пакетів, тобто до тих пір, поки пакети надходять з IP 192.168.1.? буде прийнято

-д 192.168.1.51 : IP-адреса призначення, тобто моя IP-адреса.

-j ПРИЙМІТЬ : Я вказую, що робити з пакунками, які відповідають вищевказаному, прийміть.

Тобто, і щоб пояснити це в запущеному вигляді, я приймаю, що вони пінгують мене (протокол icmp), місцем призначення якого є саме моя IP-адреса, якщо вони походять з такої IP-адреси, як 192.168.1 .__, але також вони не можуть прийти з будь-якого мережевого інтерфейсу, вони повинні входити спеціально з мого мережевого інтерфейсу Wifi (wlo1)

Приймати SSH лише для одного IP:

Іноді мені потрібно підключитися SSH з мого смартфона для управління ноутбуком, ось чому я повинен дозволити SSH доступ до свого ноутбука з IP-адрес мого Wi-Fi, для цього:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

З цього рядка єдине, що відрізняється або що заслуговує на виділення, це: –Доклад 22 (SSH-порт, який я використовую)

Іншими словами, я приймаю спроби підключитися до свого ноутбука через порт 22, доки вони надходять з IP-адреси мого wi-fi, вони також повинні мати мій IP-адресу як конкретне призначення і також надходити через інтерфейс wlo1, тобто, що мого Wi-Fi (не мережа, і т.д.)

Дозволяючи їм переглядати ваш веб-сайт:

Це не мій випадок, але якщо хтось із вас має розміщений веб-сайт і не хоче нікому відмовляти у доступі, тобто те, що кожен з будь-якого місця може отримати доступ до цього веб-сайту, це набагато простіше, ніж ви думаєте:

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

Іншими словами, тут вони дозволяють весь вхідний трафік (tcp) через порт 80. Як бачите, я не вказую, з яких IP-адрес або мережі я дозволяю доступ, не вказуючи діапазон IP для дозволу, iptables передбачає, що я хочу дозволити доступ до всіх існуючих діапазонів IP, тобто до цілого світу 🙂

Інші комбінації:

У мене є багато інших правил, таких як, наприклад, приймати пінг для IP-адрес з моєї домашньої локальної мережі (для цього це в основному той самий рядок, що і вище, змінюючи діапазони IP-адрес), який є тим самим, що я тільки що пояснив вище. . у своєму ноутбуці як такому я не використовую справді складних речей, таких як обмеження з'єднань, анти DDoS, я залишаю це для серверів, на ноутбуці це мені не потрібно 🙂

У всякому разі, поки що стаття.

Як бачите, робота з iptables не така вже й складна, коли ви створюєте сценарій, в якому ви пишете свої правила, стає дуже просто, а потім змінюйте його, додайте або видаліть правила у своєму брандмауері.

Я не вважаю себе експертом з даного питання, незважаючи на будь-які сумніви у вас, вони коментують тут, я постараюся допомогти вам чим можу.

привіт


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   ризикето - сказав він

    Дуже добре, дуже добре пояснили, чудово.
    Я люблю такий тип публікацій.

    1.    KZKG ^ Гаара - сказав він

      Щиро дякую за коментар 🙂

      Цей пост був боргом, який у мене був довгий час, приємно і приємно врешті-решт мати можливість погасити його ^ _ ^

      привіт

      1.    FIXOCONN - сказав він

        питання ти на кубі?
        ... Трапляється, що кілька днів тому за допомогою точки доступу Linkys (точка доступу) я поставив Wi-Fi у будинку своєї подруги

        1.    KZKG ^ Гаара - сказав він

          Так, звичайно, я народився і живу на Кубі. чому питання?

        2.    Сем Бургос - сказав він

          @FIXOCONN: Привіт, друже, вибачте за тему питання, але як визначити Cinnamon, щоб він відображався як робоче середовище в агенті користувача? Я використовую Mint 13 з Корицею, але ні в якому разі не отримую, щоб логотип Кориці з'являвся в моєму користувацькому агенті щоразу, коли я коментую цей сайт

          Чи не могли б ви передати мені дані свого агента користувача, якщо це не надто багато проблем? Я хотів би знати ці дані, щоб розмістити їх самостійно =)

          Я залишаю вам сторінку, щоб ви могли переглянути її та надати мені інформацію. Дякую та адміністратори, пробачте "троллінг" (якщо ви можете це так назвати) з мого боку з цією інформацією -> http://user-agent-string.info/

          1.    KZKG ^ Гаара - сказав він

            Додайте "Корицю" (без лапок) до будь-якої частини UserAgent, тоді логотип повинен з’являтися в майбутніх коментарях 🙂

  2.   Бруно Касьо - сказав він

    Дуже добре пост! дуже чітко 😀

    1.    KZKG ^ Гаара - сказав він

      Дякуємо за прочитання та дякуємо за ваш коментар 🙂

  3.   vale - сказав він

    Дякую! Це мені дійсно допомагає!

  4.   Оскар Гранада - сказав він

    Привіт, насамперед багато привітань для блогу, я думаю, це здорово.
    Щось, що може бути непогано згадати, це те, що опція входу за допомогою ULOG не працює в операційних системах, які мають ulogd2, для цього випадку правило має бути таким:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-прапори FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Гаара - сказав він

      Перш за все, велике спасибі за те, що ви говорите про блог 🙂

      У мене в Arch встановлений ulogd v2.0.2-2, і рядок, який я поставив, працює без проблем (мені довелося поставити loglevel = 1 в /etc/ulogd.conf, але він без проблем переносить журнали в інший файл.

      Чи використовуєте ви ulogd v2 або новішої версії, чи рядок, який я залишив, працює неправильно для вас?

      З повагою та спасибі за коментар.

  5.   місто - сказав він

    Я завжди чекав другої частини, пам’ятаю, коли прочитав першу (це була моя ініціація в брандмауерах). Дякую @ KZKG ^ Гаара, вітаю 🙂

    1.    KZKG ^ Гаара - сказав він

      Дякую, що прочитали мене 😀
      І хе-хе так, те, що я сказав ... цей пост був боргом, який у мене був давно ^ _ ^

  6.   Хосе Луїс Гонсалес зображення заповнювача - сказав він

    З повагою. Дуже добре пост. Я намагаюся налаштувати правила iptables для перенаправлення трафіку з кальмара на dansguardian, і це все ще не досягає мети. Я був би вдячний за допомогу в цьому питанні.

    1.    KZKG ^ Гаара - сказав він

      iptables для цього? Хіба це не робиться безпосередньо з ACL в Squid?

  7.   безіменний - сказав він

    "У мене є багато інших правил, таких як .."
    Це те, що я називаю параною, хлопче
    Ще трохи, і ви поміщаєте пачку ротвайлера в кожен відкритий порт вашого модему / маршрутизатора 🙂

    1.    KZKG ^ Гаара - сказав він

      HAHAHAHAHAHAHAHAHA Я вмираю від сміху з ротвейлерами ха-ха-ха-ха

  8.   Іван - сказав він

    Вітаю, друже, трапляється, що мені потрібна допомога в налаштуванні IPTables таким чином, що він забороняє доступ лише для порту 80, коли я ввожу адресу в браузері своїх користувацьких серверів імен, тобто коли, наприклад, я ввожу ns1.mydomain.com і ns2.mydomain. com (які є моїми серверами імен) IPtables забороняють доступ до порту 80, так що браузер намагається завантажити сторінку, але через деякий час термін її дії закінчується і ніколи не завантажується, трапляється, що я вже пробував з такими командами:

    iptables -A INPUT -d ns1.midomini.com -p tcp –dport 80 -j DROP
    iptables -A INPUT -d ns2.midomini.com -p tcp –dport 80 -j DROP

    Але єдине, що він робить, це заборона входу на порт 80 у всіх моїх доменах (оскільки вони мають той самий IP, що і віртуальний хост), я хочу, щоб це було лише в URL-адресі моїх серверів імен та IP-адресі, на який вказують мої сервери імен тобто IP-таблиці забороняють доступ до порту 80 в:

    ns1.midomini.com (вказівник А) -> 102.887.23.33
    ns2.midomini.com (вказівник А) -> 102.887.23.34

    та IP-адреси, на які вказують сервери імен

    102.887.23.33
    102.887.23.34

    Прикладом компанії, яка має цю систему, є: Dreamhost
    Їх сервери імен: ns1.dreamhost.com та ns2.dreamhost.com та IP-адреси, на які вони вказують, не відповідають, коли їх вводять в адресному рядку браузера

    Заздалегідь дякую за увагу, я б дуже хотів, щоб ви допомогли мені в цьому, мені це дуже потрібно і терміново !!

    Хороший день !!

    1.    KZKG ^ Гаара - сказав він

      Привіт Іване,

      Зв'яжіться зі мною електронною поштою (kzkggaara[at]desdelinux[точка]net) щоб спокійніше про це поговорити і краще пояснити, завтра в обов'язковому порядку я тобі відповім (сьогодні йду повз)

      Що ви хочете зробити, це просто, я не знаю, чому рядки, про які ви мені говорите, не працюють для вас, вони повинні, але вам доведеться перевіряти журнали та інші речі, які тут можуть бути занадто довгими.

      Привіт і чекаю вашого електронного листа

  9.   нейсонв - сказав він

    теоретично за допомогою iptables я міг запобігти запитам на відключення від таких програм, як aircrack. Я правий??? Ну, я буду робити тести, але якщо ви скажете мені, що зробите мене дуже щасливим XDDD

    1.    KZKG ^ Гаара - сказав він

      Теоретично я так думаю, зараз, я не знаю, як це можна було зробити, я ніколи цього не робив ... але повторюю, теоретично, я думаю, що міг би.

  10.   Alex - сказав він

    Після застосування правил iptables мені неможливо отримати доступ до спільних папок Windows у локальній мережі. Яке правило слід застосувати, щоб це виправити?
    Спасибо.

    1.    KZKG ^ Гаара - сказав він

      Які правила iptables ви застосовували?
      Це друга частина "iptables для новачків", чи читали ви першу? Я прошу це знати, чи застосовували ви правила, які були в попередньому дописі

      1.    Alex - сказав він

        Так, я прочитав обидві частини. Що стосується сценарію, я спираюся на інший допис, який ви розмістили про правила запуску з systemd.

        #! / бін / баш
        # - UTF 8 -

        # Iptables двійковий
        iptables = »/ usr / bin / iptables»

        викидати ""

        ## Чисті таблиці ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- Зроблено FLUS для iptables» && echo »»

        ## Створення журналів за допомогою ULOGD ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-прапори FIN, SYN, RST, ACK SYN -j ULOG

        ## Визначте політику DROP за замовчуванням ##
        $ iptables -P ВХІД ПАДАННЯ
        $ iptables -P ВПЕРЕД ВПАДАННЯ
        #echo »- політика DROP визначена за замовчуванням» && echo »»

        ## Дозволити все локальному хосту ##
        $ iptables -A INPUT -i lo -j ACCEPT
        $ iptables -ВИХІД -o ло -j ПРИЙМІТЬ
        #echo »- Все дозволено для localhost» && echo »»

        ## Дозволити вводити пакети з'єднань, які я ініціюю ##
        $ iptables -A INPUT -m state –state ВСТАНОВЛЕНО, ПОВ'ЯЗАНО -j ПРИЙНЯТО
        #echo »- Дозволити пакети з'єднань, ініційованих мною» && echo »»

        викидати " ##############################"
        echo »## IPTABLES CONFIGURED OK! ## »
        викидати " ##############################"

        Я прочитав в Інтернеті, що для самби у сценарії повинні бути такі правила:

        $ iptables -A INPUT -p tcp –dport 139 -j ACCEPT
        $ iptables -A INPUT -p tcp –dport 445 -j ACCEPT
        $ iptables -A INPUT -p udp –sport 137 -j ACCEPT
        $ iptables -A INPUT -p udp –dport 137 -j ACCEPT
        $ iptables -A INPUT -p udp –dport 138 -j ACCEPT

        Однак навіть за їх допомогою я не бачу робочих груп Windows. : S

      2.    Alex - сказав він

        Проблема вирішена. Змінити робочу групу та дозволити хости параметри у файлі конфігурації samba.

  11.   откманз - сказав він

    Відмінна стаття, просто чудова !!!!
    Я просто прочитав його, і мені подобається як ви це пояснюєте, так і справді корисне використання iptables, я б дуже хотів навчитися використовувати його глибше.
    Привітання та чудова стаття, сподіваюся, ви опублікуєте більше про Iptables! ^^

  12.   LEO - сказав він

    Шановний;

    У мене є проксі з iptables, і одна з моїх мереж не може пінгувати http://www.google.cl з цієї причини у мене заблоковані порти і намагаюся тисячу способів відкрити порти, і нічого не відбувається. Якщо я не можу пінгувати, я не можу підключити Outlook

  13.   Борха - сказав він

    Вітаю з постом! Дуже добре. Але у мене є питання. Іноді IP-адреса, призначена вам у мережі, може змінитися (якщо це правда, що ми могли б призначити IP нашим MAC-адресам), але чи існує можливість Iptables дозволити доступ до нашого сервера через SSH за допомогою MAC-адреси?

    Сподіваюся, я добре пояснив себе.

    З повагою, велике спасибі!

  14.   Фернандо Мартін Ган - сказав він

    Привіт, ви знаєте, у мене був налаштований сервер Linux, і після введення цих команд я заблокував все і втратив доступ, я міг відновити майже все, але мені бракує 2 речей. * Я більше не можу отримати доступ з веб-браузера через cname «сервер», якщо за допомогою ip, 10.10.10.5, а з іншого боку, я не бачу спільних ресурсів з провідника Windows в мережі, перш ніж поставити \\ server і Я бачив усі спільні ресурси. Сподіваюся, ви можете мені допомогти, я знаю, що це безглуздо, але я не можу вирішити це, дякую

  15.   тау - сказав він

    Цитую дослівно:
    "
    Протокол ICMP, icmp = ping. Тобто, я не дозволяю SSH або щось подібне, я дозволяю лише пінг (icmp)
    "

    ICMP і PING - це не одне і те ж. Pinging є частиною протоколу ICMP, але це не все. Протокол ICMP (Internet Control Message Protocol) має набагато більше застосувань, деякі з них мають певні небезпеки. І ви приймаєте весь трафік ICMP. Вам доведеться обмежитися лише пінгом.

    Saludos!

  16.   озкр - сказав він

    Я повинен пройти стажування, але я мало що розумію в iptables, не могли б ви допомогти мені ...
    Дякую!!!!!!!