Заблокировать все соединения, но разрешить только несколько портов с помощью iptables

Заблокировать все соединения, но разрешить только несколько портов с помощью iptables

Мне нужны правила, которые:

  1. Блокировать весь входящий трафик (Интернет > сервер), но разрешить исходящий (сервер > Интернет) и разрешить работу локальных служб.

  2. Принимать входящий трафик только с нужных мне портов.

Мне также нужно это сделать во время сеанса SSH (раньше меня уже блокировали).

Причина, по которой я спрашиваю, заключается в том, что я не могу использовать UFW с моим провайдером VPS... по-видимому, из-за их ядра / OpenVZ...

Пока я пытался изучить команды самостоятельно, это было похоже на изучение использования инструмента и попытки построить дом. И было бы очень здорово, если бы я мог сегодня немного поработать, вместо того, чтобы тратить часы и часы, пытаясь это исправить. Если бы кто-то мог мне помочь, я был бы очень признателен.

решение1

Сначала разрешите доступ к определенному порту, а затем заблокируйте весь входящий трафик.

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

где 22 ваш демо-порт измените его по вашему требованию

Блокировать весь входящий трафик

# iptables -A INPUT -j REJECT

Разрешить все исходящие пакеты

# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

решение2

@Rakib дал отличный ответ, и я думаю, что он должен быть принят. Ответ, который я даю, просто дополняет его. Я рекомендую создать скрипт оболочки, чтобы вы могли запускать его автоматически при загрузке ОС или по требованию, не набирая все заново:

#!/bin/sh

IPT = iptables

#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

#block all incoming traffic
$IPT -A INPUT -j REJECT

#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

Кроме того, сценарий был сделан дважды, с той лишь разницей, чтоip6tablesбыл включен, так что он также применяется к IPv6, как сказал @Michael Mol в своем комментарии под ответом @Rakib

Связанный контент