Skip to contentSkip to conversation

Trying to setup two ethernet cards with two websites

DISCUSSION JUSTIN GERRY 3 participants 4 messages Jan 2, 2003 – Jan 3, 2003

lore
Share & tools
lore
#0 lore raw

I tried your suggestions below and yes, I finally have two websites working on the same box. Simplifying things does indeed work.

Is there a way to, by default drop everything on the output chain, but insert a rule to allow only http requests that were initialed by a client to either website?

Or if my input rules are sufficient, do I really need to do anything on the output chain other than let everthing out?

Thanks,
Justin

Quoted 1 line
Quoted 1 line
Quoted 1 line

Roy Sigurd Karlsbakk <[email protected]> 12/31 1:49 PM >>>

Quoted 1 line · JUSTIN GERRY

I am attempting to setup two websites with two ip address, each one

on

Quoted 4 lines

a
different ethernet card/interface.

It only seems to work for the first rule (first listed ip address)

that

Quoted 5 lines

gets matched up, so I can get one website to work but not the other.

How
do I write this so it covers both address and allows httpd to go to either interface or either address? Can I write a single rule to

match

Quoted 12 lines

a
range of ip addresses (.93 and .94) instead of writing one for each individual address?

This is what I have so far for testing.....

IF1="eth0"
IF2="eth1"
IP2="172.30.12.93"
IP1="172.30.12.94"
UNPRIVPORTS="1024:65535"

Quoted 6 lines

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

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

the two below...

Quoted 1 line

iptables -A INPUT -i $IF1 -p tcp --sport $UNPRIVPORTS -d $IP1

--dport

Quoted 2 lines

80 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $IF2 -p tcp --sport $UNPRIVPORTS -d $IP2

--dport

Quoted 1 line

80 -m state --state NEW -j ACCEPT

...are included in these two, so you won't need both. You probably don't want those below, as they accept anything regardless to state.

Quoted 1 line

iptables -A INPUT -i $IF1 -p tcp --sport $UNPRIVPORTS -d $IP1

--dport

Quoted 2 lines

80 -j ACCEPT
iptables -A INPUT -i $IF2 -p tcp --sport $UNPRIVPORTS -d $IP2

--dport

Quoted 1 line

80 -j ACCEPT

are these really nessecary? with -P DROP, this'll deny any outgoing connections at all, regardless of protocol. It'll even drop ICMP packets, something you probably don't want.

Quoted 4 lines

iptables -A OUTPUT -o $IF2 -p tcp ! --syn -s $IP2 --sport 80 --dport $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -o $IF1 -p tcp ! --syn -s $IP1 --sport 80 --dport $UNPRIVPORTS -j ACCEPT

To allow for multiple hosts in a rule, you can specify a mask (or number of bits). For instance:

# iptables -s 10.0.0.0/31
will match 10.0.0.0 and 10.0.0.1. .93 and .94, however, overlaps this 
and needs to be allowed for specifically.

so - try first with -P OUTPUT -j ACCEPT, and no rules in the OUTPUT chain. It shouldn't be any problem then.

roy

#1 lore raw
Quoted 7 lines · JUSTIN GERRY

I tried your suggestions below and yes, I finally have two websites working on the same box. Simplifying things does indeed work.

Is there a way to, by default drop everything on the output chain, but insert a rule to allow only http requests that were initialed by a client to either website?

Quoted 5 lines

Or if my input rules are sufficient, do I really need to do anything on the output chain other than let everthing out?

Thanks,
Justin

If you trust that nothing on the box is or ever will connect that you don't want to, then output chain can just have an ACCEPT policy. If you want to lock down to make it harder for a trojan or such to communicate back from the box, you can set a DROP policy, then:

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

will let traffic back out in response to client requests, but not let the box initiate any connections. If this tighter firewall still allows the needed connections, why open up any further? I'd suggest you might want to log dropped output traffic, though, to see what DOES try to get out. Depending on your usage and plans, you might want to open a few outbounds, like traceroute, ping, CVS, http, or ftp access FROM the box if you want to use these services when logged into the box, for updating software etc. Of course you can just allow those connections when needed, and the rest of the time go with DROP policy and the EST/REL rule above.

j

#2 lore raw
Quoted 6 lines

If you trust that nothing on the box is or ever will connect that you don't want to, then output chain can just have an ACCEPT policy. If you want to lock down to make it harder for a trojan or such to communicate back from the box, you can set a DROP policy, then:

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

just remember to allow incoming ICMP. Please? ICMP _is_ an integral part of IP, and shouldn't be blocked out! You can do

iptables -I INPUT -p icmp -j REJECT --reject-with echo-reply

to answer all pings to hosts behind with echo reply (just fake it) in case you're afraid of anyone scanning you.

you might add a -limit as well to prevent them DoSing you (man iptables)

roy

Quoted 14 lines

will let traffic back out in response to client requests, but not let the box initiate any connections. If this tighter firewall still allows the needed connections, why open up any further? I'd suggest you might want to log dropped output traffic, though, to see what DOES try to get out. Depending on your usage and plans, you might want to open a few outbounds, like traceroute, ping, CVS, http, or ftp access FROM the box if you want to use these services when logged into the box, for updating software etc. Of course you can just allow those connections when needed, and the rest of the time go with DROP policy and the EST/REL rule above.

j

#3 lore raw
Quoted 10 lines · Roy Sigurd Karlsbakk
Quoted 7 lines

If you trust that nothing on the box is or ever will connect that you don't want to, then output chain can just have an ACCEPT policy.
If you
want to lock down to make it harder for a trojan or such to communicate back from the box, you can set a DROP policy, then:

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

just remember to allow incoming ICMP. Please? ICMP _is_ an integral part of IP, and shouldn't be blocked out!

The RELATED state does just this. If you allow absolutely nothing in but tcp 80 and established, and absolutely nothing out but established, only the port 80 request and reply will get through. If you also allow related out then so long as an 'established' connection exists then supplementary connections are accepted as well, like ICMP fragmentation control stuff. The only /initial/ connection allowed in this mini-scenario is to destination port 80 with TCP, but once that connection is flowing then the server would be allowed to send related packets to the same client, even other ports or protocols, and they will get through regardless of whether they are explicitly accepted or explicitly dropped by the firewall. That is the basic purpose of the RELATED state. It's extended with helpers too consider things like FTP data to be related to FTP control, and the NAT functions are extended as well, but the whole idea of RELATED is to let through stuff that is, well, related.

j