Мне нужны правила, которые:
Блокировать весь входящий трафик (Интернет > сервер), но разрешить исходящий (сервер > Интернет) и разрешить работу локальных служб.
Принимать входящий трафик только с нужных мне портов.
Мне также нужно это сделать во время сеанса 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