IPTables дозволяють лише localhost доступ


58

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

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

Які умови (або конфігурацію, якщо хтось почуває себе щедрою), я повинен використовувати Google, щоб дозволити лише хосту localhost мати доступ до певного порту?


2
На якому порті працює ця послуга?
Барт Де Вос

44344, його послуга написана вдома
iptablessuck

1
Я хотів би тимчасово змінити свою ніку на "iptablesrules", але я не можу
Art Shayderov

@Art, вони смокчуть лише тому, що я їх не розумію :)
iptablessuck

@iptablessuck насправді це виглядає так, як я можу. Але я не спричиню, я не впевнений, що зможу це змінити :)
Art Shayderov

Відповіді:


65

Якщо під сервісом ви маєте на увазі конкретний порт, то наступні два рядки повинні працювати. Змініть "25" на той порт, який ви намагаєтесь обмежити.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

1
"Все, що надходить з localhost до порту 25, прийміть", а друге правило говорить "Відкиньте все, що потрапляє в порт 25". Перший рядок обробляється першим, дозволяючи localhost, а все інше потрапляє на другий рядок. Так?
iptablessuck

Це правильно!
Хіпі

4
@Hyppy, як би ти це "скасував"?
тестер

10
@tester знову введіть ці команди, але замініть -Aна-D
pepoluan

1
@Astronaut введіть "зберегти зміни iptables sudo" для збереження змін. потім перезавантажте. ви можете перевірити, чи збереглися зміни, набравши "sudo iptables -L"
Vinayak

30

Я рекомендую:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Тому що пакети з самостійною адресою не обов'язково мають 127.0.0.1 в якості джерела, але всі вони "входять" з loінтерфейсу.

Тепер, якщо ви дійсно хочете зрозуміти, iptablesперше, що вам слід зробити, це завантажити та роздрукувати хороші діаграми, що пояснюють взаємозв'язки netfilterтаблиць. Ось два чудових:

Нарешті, прочитайте багато з iptablesHOWTO. Практичні приклади допоможуть вам швидко реалізувати швидкість :)


ти! loз'являється для мене після використання цих команд з останньою командою за цим посиланням cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers

2
@Gracchus Я вважаю, що набагато простіше використовувати iptables-save, зберегти вихід у файл, відредагувати його за допомогою vimабо emacsта повторно iptables-apply
імпортувати

Я думаю, що залежно від випадку використання, друге правило має явно ВІДМОВИТИ, а не мовчати. Це мовчки випадає як найкраща практика? Чи REJECT безпечний у використанні?
Містер Думсбустер

1
@ tech-pro Так, REJECT безпечний у використанні. Це залежить від того, що ви намагаєтеся зробити і чи хочете ви бути ввічливими до людей, які намагаються використовувати порт. REJECT відправить назад пакет TCP RST, який повідомить клієнту, що машина працює, але порт закритий. Якщо ви закриваєте порт, який люди могли б законно розраховувати використовувати, то REJECT - це добре. Якщо ви очікуєте лише сканерів портів, то DROP краще.
Закон29

1
@ x-yuri Наприклад, я запускаю unboundкеш DNS перед dnscrypt-proxy. unboundприв'язує до 127.0.53.1:53і dnscrypt-proxyприв’язується до 127.0.53.2:53. Коли додаток вимагає відключити або dnscrypt-proxy для вирішення FQDN, відгадайте, з якої адреси джерела буде відключено / dnscrypt-proxy відповість?
пеполуан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.