Iptables: Як дозволити лише один ip через певний порт?


Відповіді:


48

Один вкладиш:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP  # if it's not 1.2.3.4, drop it

Більш елегантне рішення:

iptables -N xxx # create a new chain
iptables -A xxx --src 1.2.3.4 -j ACCEPT  # allow 1.2.3.4
iptables -A xxx --src 1.2.3.5 -j ACCEPT  # allow 1.2.3.5
iptables -A xxx --src 1.2.3.6 -j ACCEPT  # allow 1.2.3.6
iptables -A xxx -j DROP  # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx  # use chain xxx for packets coming to TCP port 777

Чи знаєте ви, чи я також повинен додати це до вихідного сигналу?
Анонім121245

@Camran: потрібно бути більш конкретним. В даному конкретному випадку, якщо замінити INPUTз OUTPUTвами блокувати б деякі пакети , відправлені декілька адрес самого (і не потрапляють / пересилаються) сервер. Сумніваюсь, це має сенс, якщо, можливо, ви не хочете заблокувати програми, які прив'язуються до певних інтерфейсів.
Крістіан Цюпіту

1
Не забувайте, що ви також можете вказати свої джерела в ланцюжку на зразок:--src 1.2.3.4/30
deed02392

Як я можу пізніше додати новий дозволений IP в ланцюг? Чи потрібно було б спочатку видалити DROP, а потім ввести нового користувача та вставити DROP знову чи є краще рішення?
maddo7

2
@Matthias:iptables -I xxx --src 7.8.9.10 -j ACCEPT
Крістіан Ciupitu

0

Ось приклад однієї з моїх систем CentOS (адреси були приховані):

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT

на centos, де зробити цю конфігурацію постійною? (в ubuntu ми можемо використовувати /etc/network/if-up.d/anyfile)
Kokizzu

на CentOS це: service iptables save.
Мартін Цайтлер

0

Я використовую Shorewall для налаштування таблиці IP. Використовуйте правило, як прийняти від одного хоста до порту 123.

ACCEPT net: 192.0.2.1 $ FW tcp 1234

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.