Назад | Перейти на главную страницу

Настройка межсетевого экрана для маршрутизации между интерфейсами на шлюзе

Я пытался настроить брандмауэр на своем шлюзе debian с помощью iptables. Шлюз подключен к сети 12.120.0.0/24 на eth0 за NAT, а подсеть за ним - 12.120.4.0/24 eth1. Я провел много исследований, и большинство статей, которые я прочитал, посвящены настройке шлюза как NAT, а все остальное просто не работает для меня. Шлюз не должен действовать как NAT для подсети, потому что он может найти любой другой компьютер в сети с помощью ping и ssh, если брандмауэр сброшен, поэтому пересылка между интерфейсами работает.

Во-первых, я хотел бы, чтобы изнутри подсети на eth1 ssh принимался от всех для всех, но никто снаружи не должен быть доступен для ssh внутри сети и интерфейса eth0 на шлюзе.

Это мой файл sh, чтобы сначала очистить брандмауэр и применить новые наборы правил.


#Flush prevous rules
iptables -F
iptables -X
iptables -Z

#Default policies
iptables -P INPUT       DROP
iptables -P OUTPUT      DROP
iptables -P FORWARD     DROP

#Enable loopback
#iptables -A INPUT      -i lo -j ACCEPT
#iptables -A OUTPUT     -o lo -j ACCEPT

#Enable statefull rules
iptables -A INPUT       -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT      -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD     -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT


#SSH

iptables -I INPUT -p tcp -j ACCEPT
iptables -I INPUT -p tcp -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -I FORWARD -p tcp --dport 22 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT



iptables -I OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -o eth0 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

###LOGGING

iptables -N LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 60/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

Команда iptables -L -v дает следующий вывод



root@gateway:~# iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  801 99796 ACCEPT     tcp  --  any    any     anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere
 5331  853K ACCEPT     all  --  any    any     anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED

Chain FORWARD (policy DROP 5 packets, 200 bytes)
 pkts bytes target     prot opt in     out     source               destination
  688  122K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh ctstate NEW,RELATED,ESTABLISHED
 7219 1989K ACCEPT     all  --  any    any     anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1175  125K ACCEPT     tcp  --  any    any     anywhere             anywhere
 1378  105K ACCEPT     all  --  any    any     anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  any    eth0    anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED
    0     0 LOGGING    all  --  any    any     anywhere             anywhere

Chain LOGGING (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  any    any     anywhere             anywhere             limit: avg 1/sec burst 5 LOG level warning prefix "IPTables-Dropped: "
    0     0 DROP       all  --  any    any     anywhere             anywhere

Даже попробуйте этот файл, чтобы проверить, могу ли я вместо этого включить ssh извне в подсеть за шлюзом, чтобы увидеть, работает ли это.


#Flush firewall rules and chains
iptables -F
iptables -X
iptables -Z

#Set policy table
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#Rules
iptables -I INPUT -p tcp -j ACCEPT

Это должно работать, но не пропускает трафик ssh.

Надеюсь, вы мне поможете, спасибо.