Увімкніть iptables на одному інтерфейсі


16

Я хочу, щоб iptables фільтрувала лише один інтерфейс, eth0, який стоїть перед WAN. Як це можна зробити? І я хочу тримати порти ftp та ssh відкритими на eth0.


Читайте, будь ласка, сторінки iptables man - або, якщо я неправильно зрозумів вашу проблему, будь ласка, зробіть це питання більш конкретним.
Ярі Йокінен

Відповіді:


25

Отже, для всіх інтерфейсів, окрім одного, ви хочете прийняти весь трафік, а на eth0 ви хочете скинути весь вхідний трафік, крім ftp та ssh.

По-перше, ми могли встановити політику прийому всього трафіку за замовчуванням.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Тоді ми можемо скинути правила брандмауера.

iptables -F

Тепер ми могли б сказати, що ми хочемо дозволити вхідний трафік на eth0, який є частиною з'єднання, яке ми вже дозволили.

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Крім того, що ми хочемо дозволити вхідні ssh-з'єднання на eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

Але що все інше, що надходить на eth0, слід відмовитися.

iptables -A INPUT -i eth0 -j DROP

Для трохи більшої глибини див. Цей запис у вікі CentOS .

FTP складніше, ніж ssh, оскільки він може використовувати випадковий порт, тому дивіться це попереднє питання .


5
УВАГА!!! Зробіть "iptables -P ..." перед "iptables -F". Якщо в поточних правилах за замовчуванням встановлено скидання трафіку, запуск -F заблокує вас із вашого поля. Ось чому зберігати політику за замовчуванням, щоб дозволити, і спеціально додати правило для скидання всього іншого трафіку - найкраща практика.
Чашки

8

Щось подібне повинно зробити цю роботу:

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT

1
Досить багато місця (хоча, можливо, трохи приємніше, ніж "Відкинути ВСЕ" на інтерфейс WAN, так?) - Напишіть правила фільтрації інтерфейсу, який ви хочете фільтрувати, та всього лише ACCEPTна інших інтерфейсах.
voretaq7


4

Коли ви робите iptablesправило, це дуже просто, тоді вам потрібно вказати інтерфейс. Можливість вказати локальну карту, на якій iptablesповинна працювати-i

Наступні правила можуть дати вам хороший приклад

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset 

Останнє правило - відхилити будь-який інший пакет, який не відповідає першим 2 правилам. Усі правила в iptablesвиконуються в заданому порядку, тому правило про відхилення пакетів завжди є останнім.

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