Permalänk
Medlem

Iptables hjälp

Well, har hållt på med denna uppgift rätt länge; scenariot ser ut som följande:

internet -> hårdvarubrandvägg -> Gentoo "Firewall" med iptables <-> Gentoo med Apache.

"firewall"
eth0 10.0.0.100 /24
eth1 192.168.1.1 /24 "Internal LAN" i sammanhanget och är kopplat mot Apacheserverns eth1.

Har försökt konfigurera Gentoo "Firewall" med NAT men det går inget vidare, grunderna i iptables har jag nog hyfsad insikt i men SNAT/DNAT etc gör mig inte klokare .. speciellt inte när varannan tutorial man rotar fram har annorlunda syntax och ibland även helt olika.

hårdvarubrandväggen tillhandlahåller DNS info men datorn med apache får ingen DNS info och kan därför inte kommunicera utåt.

konfig hitills:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT

# tillåt alla tidigare established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT

# allow ping
iptables -A INPUT -p icmp -j ACCEPT

# allow DNS traffic
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A FORWARD -p tcp --dport 53 -o eth1 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -o eth1 -j ACCEPT

iptables -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

echo "1" > /proc/sys/net/ipv4/ip_forward

Jag tippar själv starkt på att det behövs mer än 1 POSTROUTING rad eller SNAT/DNAT kommandon av nått slag.
Och behövs det fler OUTPUT regler?

Edit: Det är Port NAT jag vill få till.

MYCKET tacksam för snabbt svar.

Permalänk
Hedersmedlem

Tänk på att du inte godkänner något, förutom established, ut. DNS-requests eller ICMP-paket kommer t ex inte komma ut.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

Okej, så om jag ska godkänna trafik så måste det ske i alla 3 kedjorna; input, forward och output ?

Permalänk
Hedersmedlem

Nja. TCP-trafik borde klara sig som du har det, men UDP (DNS) och ICMP är inte "connection-oriented" så du måste antingen tillåta uttrafik helt, eller tillåta utgående. Om du lägger till:

iptables -A OUTPUT -p icmp -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

Så borde åtminstone den delen fungera.

Ska sova nu, så förhoppningsvis kan någon annan hjälpa till om det behövs mera.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

Tackar.

Nån som kan ge ett bra exempel på SNAT/DNAT som fungerar?

Permalänk
Medlem

För apache behöver du en regel, som forwardar till servern:

iptables -t nat -A PREROUTING - p TCP -i eth? --dport 80 -j DNAT --to-destination Serverns-IP
iptables -t nat -A POSTROUTING - o eth? -j SNAT --to-source Internet-IP

Ersätt frågetecknen med rätt nummer på nätverkskortet ,som är anslutet till Internet.

En bra iptablesmanual: http://iptables-tutorial.frozentux.net/

Visa signatur

Fagerja