Коли DesdeLinux Мені було лише кілька місяців, і я написав надзвичайно простий для розуміння підручник про iptables: iptables для новачків, цікавих, зацікавлених (1-а частина) . Використовуючи такі метафори, як порівняння нашого комп’ютера з нашим будинком, нашого брандмауера з дверима будинку, а також інші приклади, я розважально, без такої кількості технічних чи складних концепцій, пояснив, що таке брандмауер, що таке iptables та як почати використовувати його та налаштувати. Це продовження, 2-а частина попереднього підручника iptables 🙂
Трапляється, що кілька днів тому за допомогою точки доступу Linksys AP (точка доступу) я поставив Wi-Fi у будинку своєї подруги, хоча місцевість не є найбільш обізнаною з точки зору технологій, тобто це не означає, що існує багато небезпек розтріскування , це завжди гарна ідея мати відмінний захист як у Wi-Fi, так і в комп’ютерах.
Я не буду коментувати безпеку Wi-Fi тут, оскільки це не є метою поста, я зупинюсь на конфігурації iptables, яку я зараз використовую на своєму ноутбуці.
У попередньому дописі я пояснив, що в брандмауері потрібно спершу заборонити весь вхідний трафік, для цього:
sudo iptables -P INPUT DROP
Тоді ми повинні дозволити нашому власному комп’ютеру мати дозвіл на введення даних:
sudo iptables -A INPUT -i lo -j ACCEPT
Окрім прийому пакетів запитів, що надходять з нашого комп’ютера:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Поки наш комп’ютер може без проблем керувати Інтернетом, але ніхто з будь-якого іншого середовища (локальної мережі, Інтернету, 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 не така вже й складна, коли ви створюєте сценарій, в якому ви пишете свої правила, стає дуже просто, а потім змінюйте його, додайте або видаліть правила у своєму брандмауері.
Я не вважаю себе експертом з даного питання, незважаючи на будь-які сумніви у вас, вони коментують тут, я постараюся допомогти вам чим можу.
привіт
Дуже добре, дуже добре пояснили, чудово.
Я люблю такий тип публікацій.
Щиро дякую за коментар 🙂
Цей пост був боргом, який у мене був довгий час, приємно і приємно врешті-решт мати можливість погасити його ^ _ ^
привіт
питання ти на кубі?
... Трапляється, що кілька днів тому за допомогою точки доступу Linkys (точка доступу) я поставив Wi-Fi у будинку своєї подруги
Так, звичайно, я народився і живу на Кубі. чому питання?
@FIXOCONN: Привіт, друже, вибачте за тему питання, але як визначити Cinnamon, щоб він відображався як робоче середовище в агенті користувача? Я використовую Mint 13 з Корицею, але ні в якому разі не отримую, щоб логотип Кориці з'являвся в моєму користувацькому агенті щоразу, коли я коментую цей сайт
Чи не могли б ви передати мені дані свого агента користувача, якщо це не надто багато проблем? Я хотів би знати ці дані, щоб розмістити їх самостійно =)
Я залишаю вам сторінку, щоб ви могли переглянути її та надати мені інформацію. Дякую та адміністратори, пробачте "троллінг" (якщо ви можете це так назвати) з мого боку з цією інформацією -> http://user-agent-string.info/
Додайте "Корицю" (без лапок) до будь-якої частини UserAgent, тоді логотип повинен з’являтися в майбутніх коментарях 🙂
Дуже добре пост! дуже чітко 😀
Дякуємо за прочитання та дякуємо за ваш коментар 🙂
Дякую! Це мені дійсно допомагає!
Привіт, насамперед багато привітань для блогу, я думаю, це здорово.
Щось, що може бути непогано згадати, це те, що опція входу за допомогою ULOG не працює в операційних системах, які мають ulogd2, для цього випадку правило має бути таким:
sudo iptables -A INPUT -p tcp -m tcp –tcp-прапори FIN, SYN, RST, ACK SYN -j NFLOG
Перш за все, велике спасибі за те, що ви говорите про блог 🙂
У мене в Arch встановлений ulogd v2.0.2-2, і рядок, який я поставив, працює без проблем (мені довелося поставити loglevel = 1 в /etc/ulogd.conf, але він без проблем переносить журнали в інший файл.
Чи використовуєте ви ulogd v2 або новішої версії, чи рядок, який я залишив, працює неправильно для вас?
З повагою та спасибі за коментар.
Я завжди чекав другої частини, пам’ятаю, коли прочитав першу (це була моя ініціація в брандмауерах). Дякую @ KZKG ^ Гаара, вітаю 🙂
Дякую, що прочитали мене 😀
І хе-хе так, те, що я сказав ... цей пост був боргом, який у мене був давно ^ _ ^
З повагою. Дуже добре пост. Я намагаюся налаштувати правила iptables для перенаправлення трафіку з кальмара на dansguardian, і це все ще не досягає мети. Я був би вдячний за допомогу в цьому питанні.
iptables для цього? Хіба це не робиться безпосередньо з ACL в Squid?
"У мене є багато інших правил, таких як .."
Це те, що я називаю параною, хлопче
Ще трохи, і ви поміщаєте пачку ротвайлера в кожен відкритий порт вашого модему / маршрутизатора 🙂
HAHAHAHAHAHAHAHAHA Я вмираю від сміху з ротвейлерами ха-ха-ха-ха
Вітаю, друже, трапляється, що мені потрібна допомога в налаштуванні 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-адреси, на які вони вказують, не відповідають, коли їх вводять в адресному рядку браузера
Заздалегідь дякую за увагу, я б дуже хотів, щоб ви допомогли мені в цьому, мені це дуже потрібно і терміново !!
Хороший день !!
Привіт Іване,
Зв'яжіться зі мною електронною поштою (kzkggaara[at]desdelinux[точка]net) щоб спокійніше про це поговорити і краще пояснити, завтра в обов'язковому порядку я тобі відповім (сьогодні йду повз)
Що ви хочете зробити, це просто, я не знаю, чому рядки, про які ви мені говорите, не працюють для вас, вони повинні, але вам доведеться перевіряти журнали та інші речі, які тут можуть бути занадто довгими.
Привіт і чекаю вашого електронного листа
теоретично за допомогою iptables я міг запобігти запитам на відключення від таких програм, як aircrack. Я правий??? Ну, я буду робити тести, але якщо ви скажете мені, що зробите мене дуже щасливим XDDD
Теоретично я так думаю, зараз, я не знаю, як це можна було зробити, я ніколи цього не робив ... але повторюю, теоретично, я думаю, що міг би.
Після застосування правил iptables мені неможливо отримати доступ до спільних папок Windows у локальній мережі. Яке правило слід застосувати, щоб це виправити?
Спасибо.
Які правила iptables ви застосовували?
Це друга частина "iptables для новачків", чи читали ви першу? Я прошу це знати, чи застосовували ви правила, які були в попередньому дописі
Так, я прочитав обидві частини. Що стосується сценарію, я спираюся на інший допис, який ви розмістили про правила запуску з 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
Проблема вирішена. Змінити робочу групу та дозволити хости параметри у файлі конфігурації samba.
Відмінна стаття, просто чудова !!!!
Я просто прочитав його, і мені подобається як ви це пояснюєте, так і справді корисне використання iptables, я б дуже хотів навчитися використовувати його глибше.
Привітання та чудова стаття, сподіваюся, ви опублікуєте більше про Iptables! ^^
Шановний;
У мене є проксі з iptables, і одна з моїх мереж не може пінгувати http://www.google.cl з цієї причини у мене заблоковані порти і намагаюся тисячу способів відкрити порти, і нічого не відбувається. Якщо я не можу пінгувати, я не можу підключити Outlook
Вітаю з постом! Дуже добре. Але у мене є питання. Іноді IP-адреса, призначена вам у мережі, може змінитися (якщо це правда, що ми могли б призначити IP нашим MAC-адресам), але чи існує можливість Iptables дозволити доступ до нашого сервера через SSH за допомогою MAC-адреси?
Сподіваюся, я добре пояснив себе.
З повагою, велике спасибі!
Привіт, ви знаєте, у мене був налаштований сервер Linux, і після введення цих команд я заблокував все і втратив доступ, я міг відновити майже все, але мені бракує 2 речей. * Я більше не можу отримати доступ з веб-браузера через cname «сервер», якщо за допомогою ip, 10.10.10.5, а з іншого боку, я не бачу спільних ресурсів з провідника Windows в мережі, перш ніж поставити \\ server і Я бачив усі спільні ресурси. Сподіваюся, ви можете мені допомогти, я знаю, що це безглуздо, але я не можу вирішити це, дякую
Цитую дослівно:
"
Протокол ICMP, icmp = ping. Тобто, я не дозволяю SSH або щось подібне, я дозволяю лише пінг (icmp)
"
ICMP і PING - це не одне і те ж. Pinging є частиною протоколу ICMP, але це не все. Протокол ICMP (Internet Control Message Protocol) має набагато більше застосувань, деякі з них мають певні небезпеки. І ви приймаєте весь трафік ICMP. Вам доведеться обмежитися лише пінгом.
Saludos!
Я повинен пройти стажування, але я мало що розумію в iptables, не могли б ви допомогти мені ...
Дякую!!!!!!!