Skip to contentSkip to conversation

block 8080, but redirect from 80 to 8080

DISCUSSION Dean Hiller 4 participants 5 messages Aug 1, 2006

lore
Share & tools
lore
#0 lore raw

I would like block all traffic to port 8080 except that which was redirected in the nat table from port 80 to 8080.

I have a default policy of DROP on incoming. The following is what my iptables file currently has and this works, EXCEPT that 8080 is left open to anyone....

*nat table.....
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

*filter table.....
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

but anyone can go to http://<machine>:8080 which I want to disallow. How can I fix that? thanks,
dean

#1 lore raw

Hello,

Quoted 10 lines · Dean Hiller

I would like block all traffic to port 8080 except that which was redirected in the nat table from port 80 to 8080.
I have a default policy of DROP on incoming. The following is what my iptables file currently has and this works, EXCEPT that 8080 is left open to anyone....

*nat table.....
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

*filter table.....

(quoted diff) +0 -2
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j 

ACCEPT

This rule seems useless : port 80 has been redirected to port 8080 in the PREROUTING chain, so no valid packet will ever enter the INPUT chain with destination port 80.

Quoted 4 lines
(quoted diff) +0 -2
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 
-j ACCEPT

but anyone can go to http://<machine>:8080 which I want to disallow. How can I fix that?

Quick and dirty :
Drop the undesired packets in the PREROUTING chain of the 'mangle' table, before REDIRECT occurs.

iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP (or REJECT)

Better :
Mark the desired packets in the PREROUTING chain of the 'mangle' table before REDIRECT occurs and accept only the marked packets in the INPUT chain of the 'filter' table.

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1 iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp \
--dport 8080 -m mark --mark 1 -j ACCEPT

#2 lore raw
Quoted 6 lines

Quick and dirty :
Drop the undesired packets in the PREROUTING chain of the 'mangle' table, before REDIRECT occurs.

iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP (or REJECT)

I would recomment NOT TO DO any ACCEPT or DROP/REJECT in other than the filter table...

#3 lore raw
Quoted 8 lines · Gáspár Lajos
Quoted 6 lines

Quick and dirty :
Drop the undesired packets in the PREROUTING chain of the 'mangle' table, before REDIRECT occurs.

iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP (or REJECT)

I would recomment NOT TO DO any ACCEPT or DROP/REJECT in other than the filter table...

I agree, that's why I mentionned "quick and _dirty_" and suggested a better solution based on marks. However I think ACCEPT is an acceptable target in any table, not only in 'filter'.

By the way, I made a mistake : REJECT is a valid target only in the 'filter' table, showing if necessary that the other tables are not intended for filtering.

#4 lore raw
In reply to Pascal Hambourg
Quoted 6 lines

Quick and dirty :
Drop the undesired packets in the PREROUTING chain of the 'mangle' table, before REDIRECT occurs.

iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j DROP (or REJECT)

I would recomment NOT TO DO any ACCEPT or DROP/REJECT in other than the filter table...