iptables для блокировки http и ssh в одном направлении

iptables для блокировки http и ssh в одном направлении

У меня есть топология, где Linux является маршрутизатором, который соединяет два Linux, и я хочу использовать iptables для фильтрации ssh и HTTP в одном направлении. Я использовал код ниже, но он не работает! Я действительно ценю любую помощь, которую вы можете оказать.

iptables -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --dport 80 -j DROP

топология

решение1

Ваш скрипт должен работать для http, но он не очень хорош. Я бы использовал что-то вроде этого:

IPTABLE=/sbin/iptables

$IPTABLE -P INPUT ACCEPT
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT

$IPTABLE -F
$IPTABLE -X

$IPTABLE -F -t nat
$IPTABLE -X -t nat

$IPTABLE -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#http
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
#https
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 443 -j ACCEPT
# ssh
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 22 -j ACCEPT
# icmp
$IPTABLE -A FORWARD  -p icmp -j ACCEPT

После того, как правила заработали, я рекомендую сделать iptables-save > /etc/iptables/rules.v4. С iptables-persistentпакетом правила загружаются при загрузке.
В дополнение к правилам iptables вам нужно

  1. На вашем шлюзе включена IP-переадресация.
  2. маршрут для внешней сети на вашем внутреннем хосте
  3. маршрут для внутренней сети на вашем внешнем хосте

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