iptables: más kimentei IP-re terelni a HTTPS forgalmat néhány cél-IP esetén

Fórumok

A tűzfalnak van
eth0-ja, IP: 1.2.3.4 és
eth1-e, IP: 4.5.6.7 interfésze.
A feladat, hogy a tűzfal mögül (a "cégből") induló, pár adott IP felé irányuló HTTPS forgalmat a tűzfal az eth1-en át forwardolja, miközben minden más eth0-n megy ki a cégből.

Tudtok segíteni? Kérem, hogy aki segítene, legyen részletes, nem elég az RTFM-jellegű, illetve az "én a helyedben a POSTROUTING-nál keresgélnék", sőt, a "man ip" is kevés. Köszönöm szépen.

Hozzászólások

Szia

Röviden:

/etc/sysctl.conf
-------------------------------------------------------

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0

net.ipv4.ip_local_port_range = 32768 65535
net.ipv4.tcp_max_orphans = 65535

net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1

#
# eth1 - LAN #
#
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 1
net.ipv4.conf.eth1.rp_filter = 2
net.ipv4.conf.eth1.arp_filter = 1
net.ipv4.conf.eth1.proxy_arp = 0
net.ipv4.conf.eth1.proxy_arp_pvlan = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.eth1.secure_redirects = 1
net.ipv4.conf.eth1.accept_source_route = 0
#
#
# eth2 - WAN #
#
#
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 1
net.ipv4.conf.eth2.rp_filter = 2
net.ipv4.conf.eth2.arp_filter = 1
net.ipv4.conf.eth2.proxy_arp = 0
net.ipv4.conf.eth2.proxy_arp_pvlan = 0
net.ipv4.conf.eth2.send_redirects = 0
net.ipv4.conf.eth2.accept_redirects = 0
net.ipv4.conf.eth2.secure_redirects = 1
net.ipv4.conf.eth2.accept_source_route = 0
#
#
#

-------------------------------------------------------

/etc/iptables/rules.v4
-------------------------------------------------------
*nat
:INPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#
#
#
-P INPUT ACCEPT
-P PREROUTING ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
#
#
#
-A POSTROUTING -o eth2 -s 10.0.0.30 -d $webserverip -m tcp -p tcp --dport 80 -j SNAT --to $publicip
-A POSTROUTING -o eth2 -s 10.0.0.34 -d $webserverip -m tcp -p tcp --dport 80 -j SNAT --to $publicip2
#
-A POSTROUTING -o eth2 -s 10.0.0.0/24 -j MASQUERADE
#
#
#
COMMIT

*filter
:OUTPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#
-P OUTPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
#
#
#
-A INPUT -i lo -j ACCEPT
#
#
#
# eth1 - LAN #
#
-A INPUT -i eth1 -s 0.0.0.0/8 -j DROP
##-A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
-A INPUT -i eth1 -s 100.64.0.0/10 -j DROP
-A INPUT -i eth1 -s 127.0.0.0/8 -j DROP
-A INPUT -i eth1 -s 169.254.0.0/16 -j DROP
-A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
-A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
#
-A INPUT -i eth1 -d 0.0.0.0/8 -j DROP
##-A INPUT -i eth1 -d 10.0.0.0/8 -j DROP
-A INPUT -i eth1 -d 100.64.0.0/10 -j DROP
-A INPUT -i eth1 -d 127.0.0.0/8 -j DROP
-A INPUT -i eth1 -d 169.254.0.0/16 -j DROP
-A INPUT -i eth1 -d 172.16.0.0/12 -j DROP
-A INPUT -i eth1 -d 192.168.0.0/16 -j DROP
#
##-A INPUT -i eth1 -j DROP
#
#
#
# eth2 - WAN #
#
-A INPUT -o eth1 -s 0.0.0.0/8 -j DROP
-A INPUT -o eth1 -s 10.0.0.0/8 -j DROP
-A INPUT -o eth1 -s 100.64.0.0/10 -j DROP
-A INPUT -o eth1 -s 127.0.0.0/8 -j DROP
-A INPUT -o eth1 -s 169.254.0.0/16 -j DROP
-A INPUT -o eth1 -s 172.16.0.0/12 -j DROP
-A INPUT -o eth1 -s 192.168.0.0/16 -j DROP
#
-A INPUT -o eth1 -d 0.0.0.0/8 -j DROP
-A INPUT -o eth1 -d 10.0.0.0/8 -j DROP
-A INPUT -o eth1 -d 100.64.0.0/10 -j DROP
-A INPUT -o eth1 -d 127.0.0.0/8 -j DROP
-A INPUT -o eth1 -d 169.254.0.0/16 -j DROP
-A INPUT -o eth1 -d 172.16.0.0/12 -j DROP
-A INPUT -o eth1 -d 192.168.0.0/16 -j DROP
#
##-A INPUT -i eth1 -j DROP
#
#
#
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#
# SERVICES #
#
-A INPUT -i eth2 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#
#
#
# LAN IP-k #
-A FORWARD -s 10.0.0.0/24 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -j ACCEPT
-A FORWARD -j DROP
#
#
#
-A OUTPUT -o lo -j ACCEPT
#
#
#
# eth1 - LAN #
#
-A OUTPUT -o eth1 -s 0.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -s 10.0.0.0/24 -j ACCEPT
-A OUTPUT -o eth1 -s 10.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -s 100.64.0.0/10 -j DROP
-A OUTPUT -o eth1 -s 127.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -s 169.254.0.0/16 -j DROP
-A OUTPUT -o eth1 -s 172.16.0.0/12 -j DROP
-A OUTPUT -o eth1 -s 192.168.0.0/16 -j DROP
#
-A OUTPUT -o eth1 -d 0.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -d 10.0.0.0/24 -j ACCEPT
-A OUTPUT -o eth1 -d 10.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -d 100.64.0.0/10 -j DROP
-A OUTPUT -o eth1 -d 127.0.0.0/8 -j DROP
-A OUTPUT -o eth1 -d 169.254.0.0/16 -j DROP
-A OUTPUT -o eth1 -d 172.16.0.0/12 -j DROP
-A OUTPUT -o eth1 -d 192.168.0.0/16 -j DROP
#
-A OUTPUT -o eth1 -j DROP
#
#
#
# eth2 - WAN #
#
-A OUTPUT -o eth2 -s 0.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -s 10.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -s 100.64.0.0/10 -j DROP
-A OUTPUT -o eth2 -s 127.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -s 169.254.0.0/16 -j DROP
-A OUTPUT -o eth2 -s 172.16.0.0/12 -j DROP
-A OUTPUT -o eth2 -s 192.168.0.0/16 -j DROP
-A OUTPUT -o eth2 -s $publicip -j ACCEPT
-A OUTPUT -o eth2 -s $publicip2 -j ACCEPT
#
-A OUTPUT -o eth2 -d 0.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -d 10.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -d 100.64.0.0/10 -j DROP
-A OUTPUT -o eth2 -d 127.0.0.0/8 -j DROP
-A OUTPUT -o eth2 -d 169.254.0.0/16 -j DROP
-A OUTPUT -o eth2 -d 172.16.0.0/12 -j DROP
-A OUTPUT -o eth2 -d 192.168.0.0/16 -j DROP
-A OUTPUT -o eth2 -d $publicip -j ACCEPT
-A OUTPUT -o eth2 -d $publicip2 -j ACCEPT
#
-A OUTPUT -o eth2 -j DROP
#
#
#
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j DROP
#
#
#
COMMIT

-------------------------------------------------------

Igen, szerintem többen vannak, akik meg tudják helyetted csinálni a feladatodat. Abból viszont te nem tanulsz, aki meg megcsinálja, nem kap érte kenyeret a boltban.

Tényleg. Ha neked adták ki munkaköri feladatként, akkor vagy csináld meg, mert meg tudod csinálni, vagy kérj iránymutatást, hogy merre kell elindulni, és ha mégsem megy, akkor kérdezz okosan.
Az, hogy "de az rtfm meg arrafelé keresgélj nem elég" az nagyon rossz üzenet: azt mondod vele, hogy valaki csinálja meg helyetted - ami egy freelancerpontcom-on feldobott feladatként rendben is lenne, csak ez nem az a hely.

amúgy nem tiszta... kell ott még legyen egy lokál interfész is, ha a "tűzfal mögül"-ről beszélsz...

ez routing dolog, szerintem ezt nem tudod csak IPTables-szel megcsinálni...

én pl. azt csinálnám, hogy:

- kell egy routing tábla : echo "200 whatever" >> /etc/iproute2/rt_tables
- abba beállítod default gw-nek az eth1 default gw-jét: ip route add default via 4.5.6.254 dev eth1 table whatever
- hozzáadod a rule-t, ami ezt a táblát használja: ip rule add fwmark 1234 lookup whatever

- itt jön az iptables: meg kell mark-olni az érdekes packeteket:
iptables -A PREROUTING -t mangle -i lokal_if -d whatever_ip -p tcp --dport 443 -j MARK --set-mark 1234

- lehet, hogy kell matatni a save-mark meg restore-mark-kal is, de nem biztos...