iptables блокують доступ до порту 8000, за винятком IP-адреси


80

Я ніколи не використовував iptables, і документація в Інтернеті здається трохи непрозорою.

Я хотів би заблокувати всі запити на порт 8000 на моєму сервері, крім тих, що надходять з певної IP-адреси. Як це зробити за допомогою iptables?


2
//, Ви могли б надати посилання на непрозору документацію?
Натан Басанес

Відповіді:


149

Це запитання має бути про помилку сервера . Тим не менше, наведене нижче має зробити трюк, припускаючи, що ви говорите про TCP і IP, який ви хочете дозволити, це 1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP

3
Як би ви скасували це обмеження ip / port, яке ви встановили тут? (на випадок, якщо я хочу скасувати це в майбутньому)
тестер

4
тестер, щоб видалити речі, зверніться до цього - stackoverflow.com/questions/10197405/…
Quest Monger

2
Я знаю, що це відносно давно, і це повністю прибило те, що мені потрібно. І оскільки відповідь прийнята в будь-якому випадку, як зробити те саме з певним діапазоном IP? Дякую! :)
jagc

1
@JiegoCordoviz Ви можете додати маску до вихідної адреси: "-s 1.2.3.0/24" приймає будь-що, починаючи з "1.2.3.". Шукайте "калькулятор мережевої маски", якщо у вас є діапазон і ви хочете розробити мережеву маску.
Джон Брайт

17

Іншою альтернативою є;

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

У мене була подібна проблема, що 3 мостові віртуальні машини просто потребують доступу один до одного з різною комбінацією, тому я протестував цю команду, і вона працює добре.

Редагувати **

Відповідно до коментаря Фернандо і цей знак оклику посилання ( !) буде розміщено перед -sпараметром:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP

1
Знак ( !) тепер повинні бути поміщені перед -sпараметром: sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP.
Фернандо Сільвейра

Я не впевнений, що тут робить знак оклику. Чи це краще, ніж прийнята відповідь?
aexl

@aexl майже те саме, за винятком одного рядка
HRgiger

5

Ви завжди можете використовувати iptables для видалення правил. Якщо у вас багато правил, просто виведіть їх за допомогою наступної команди.

iptables-save > myfile

viредагувати їх з похвального рядка. Просто використовуйте "dd", щоб видалити рядки, які вам більше не потрібні.

iptables-restore < myfile and you're good to go.  

ПАМ’ЯТАЙТЕ, ЩО ВИ НЕ НАЛАШТУЄТЕ ВАШУ ОС, ЩОБ ЗБЕРЕГТИ ПРАВИЛА В ФАЙЛІ, А ПОТІМ ЗАВАНТАЖУТЬ ФАЙЛ ПІД ЧАС ЗАГАДКИ, ЩО ВАШІ ПРАВИЛА БУДУТЬ Втрачені.


3
На Debian немає iptables-load, але iptables-restore iptables-restore < myfile// wiki.debian.org/iptables
Федір РИХТІК
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.