IP tables / Web-serveri

Moro,

kiitokset asianomaisille hyvästä skriptistä tuolla: http://linux.fi/wiki/Iptables

Minulla on seuraava verkkokonfiguraatio: Ulkoverkko <-- eth0 Linux eth1–> Web-serveri
Serveri on osoitteessa 192.168.0.55 , eth1 192.168.0.10
Yhteys Linuxin ja serverin välillä toimii ok.

Toinen verkkoadapteri eth0 on julkisessa verkossa. Pääsen tästä verkosta SSH:lla linuxiin, mutta en weppiserveriin.
Skripti selvästi tekee jotain, koska jos en salli SSH:ta, se odotetusti katkaisee vastaavan yhteyden.
Kuitenkin, ainakaan tuon taulun perusteella Linux-koneelle meneviä pyyntöjä ei ohjata web-serverille ja toisinpäin?

Ainoat muutokset mitä tuohon tein, olivat web-serveri -rivin käyttöönotto & siihen serverin ip:n muokkaus, sekä
SSH-rivin käyttöönotto.

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     any     localhost            anywhere
    3   495 ACCEPT     all  --  eth0   any     192.168.0.0/16       anywhere
   25  1780 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 DROP       tcp  --  eth1   any     anywhere             anywhere            tcp dpts:0:1023
    0     0 DROP       udp  --  eth1   any     anywhere             anywhere            udp dpts:0:1023
    0     0 DROP       tcp  --  eth1   any     anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN
    0     0 DROP       icmp --  eth1   any     anywhere             anywhere
    0     0 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     udp  --  eth1   any     anywhere             anywhere            state RELATED,ESTABLISHED
   10   867 DROP       all  --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       tcp  --  eth1   any     anywhere             anywhere            tcp dpts:0:1023
    0     0 DROP       udp  --  eth1   any     anywhere             anywhere            udp dpts:0:1023
    0     0 DROP       tcp  --  eth1   any     anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN
    0     0 DROP       icmp --  eth1   any     anywhere             anywhere
    0     0 ACCEPT     all  --  eth0   eth1    192.168.0.0/16       anywhere
    0     0 ACCEPT     tcp  --  eth1   eth0    anywhere             192.168.0.0/16      state RELATED,ESTABLISHED
    0     0 ACCEPT     udp  --  eth1   eth0    anywhere             192.168.0.0/16      state RELATED,ESTABLISHED
    0     0 DROP       all  --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 15 packets, 1556 bytes)
 pkts bytes target     prot opt in     out     source               destination

Onhan pakettien välitys otettu käyttöön?

roottina:

[quote=“tekki, post:2, topic:1269”]Onhan pakettien välitys otettu käyttöön?

roottina:

Jep, tämä tehty. Näkyisikö tuota jotenkin helposti Debianissa, onko kaikki tarpeellinen käynnissä?
Ainakin ‘iptables nat --jotain–’ antaa virheilmoituksen, jos kernel-moduulia ei ole ladattu.

[quote=“Provosti, post:1, topic:1269”]Moro,

kiitokset asianomaisille hyvästä skriptistä tuolla: http://linux.fi/wiki/Iptables

Minulla on seuraava verkkokonfiguraatio: Ulkoverkko <-- eth0 Linux eth1–> Web-serveri
Serveri on osoitteessa 192.168.0.55 , eth1 192.168.0.10
Yhteys Linuxin ja serverin välillä toimii ok.

Toinen verkkoadapteri eth0 on julkisessa verkossa. Pääsen tästä verkosta SSH:lla linuxiin, mutta en weppiserveriin.
Skripti selvästi tekee jotain, koska jos en salli SSH:ta, se odotetusti katkaisee vastaavan yhteyden.
Kuitenkin, ainakaan tuon taulun perusteella Linux-koneelle meneviä pyyntöjä ei ohjata web-serverille ja toisinpäin?

Ainoat muutokset mitä tuohon tein, olivat web-serveri -rivin käyttöönotto & siihen serverin ip:n muokkaus, sekä
SSH-rivin käyttöönotto.

[code]
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all – lo any localhost anywhere
3 495 ACCEPT all – eth0 any 192.168.0.0/16 anywhere
25 1780 ACCEPT tcp – any any anywhere anywhere tcp dpt:ssh
0 0 DROP tcp – eth1 any anywhere anywhere tcp dpts:0:1023
0 0 DROP udp – eth1 any anywhere anywhere udp dpts:0:1023
0 0 DROP tcp – eth1 any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
0 0 DROP icmp – eth1 any anywhere anywhere
0 0 ACCEPT tcp – eth1 any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT udp – eth1 any anywhere anywhere state RELATED,ESTABLISHED
10 867 DROP all – any any anywhere anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp – eth1 any anywhere anywhere tcp dpts:0:1023
0 0 DROP udp – eth1 any anywhere anywhere udp dpts:0:1023
0 0 DROP tcp – eth1 any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
0 0 DROP icmp – eth1 any anywhere anywhere
0 0 ACCEPT all – eth0 eth1 192.168.0.0/16 anywhere
0 0 ACCEPT tcp – eth1 eth0 anywhere 192.168.0.0/16 state RELATED,ESTABLISHED
0 0 ACCEPT udp – eth1 eth0 anywhere 192.168.0.0/16 state RELATED,ESTABLISHED
0 0 DROP all – any any anywhere anywhere

Chain OUTPUT (policy ACCEPT 15 packets, 1556 bytes)
pkts bytes target prot opt in out source destination

[/code][/quote]

Verkkokuvauksesi on aika sekava, eikä palomuurissasi näytä olevan porttia web 80/tcp auki.

Onko www-palvelin samassa koneessa, jotka on nettiin kytkettynä?


Eero

Pahoitteluni pienestä sekavuudesta,

Käytännössä web-serveri tarkoittaa tässä web-kameraa, johon pääsee selaimella katsomaan kuvaa.
Kamera on kiinni Linux-koneessa. Linuxissa kameran kuvaa pääsee web-selaimella katsomaan ok.

Nyt tarkoituksena olisi ottaa yhteys linuxiin selaimella ulkoverkosta, ja nähdä web-kamera aivan kuin se tulisi tältä linux-koneelta. Yhteys itse linux-koneeseen ulkopuolelta toimii ok ainakin SSH:lla.

[quote=“Provosti, post:5, topic:1269”]Pahoitteluni pienestä sekavuudesta,

Käytännössä web-serveri tarkoittaa tässä web-kameraa, johon pääsee selaimella katsomaan kuvaa.
Kamera on kiinni Linux-koneessa. Linuxissa kameran kuvaa pääsee web-selaimella katsomaan ok.

Nyt tarkoituksena olisi ottaa yhteys linuxiin selaimella ulkoverkosta, ja nähdä web-kamera aivan kuin se tulisi tältä linux-koneelta. Yhteys itse linux-koneeseen ulkopuolelta toimii ok ainakin SSH:lla.[/quote]

Eli tämä webcam on sisäverkossa? silloin tarvitset DNAT säännön porttiin 80.


Eero

Jees,
seuraava tepsi, jos joku haluaa myöhemmin lukea:


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

iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT

# Allow access to SSH server from the WAN
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# Allow access to server from WAN
iptables -A INPUT -p TCP --dport ${RCP} -i ${WAN} -j ACCEPT

# Add the rules for NAT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

# Tell the kernel that IP forwarding is OK
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

# IP forward port 80 traffic to server
iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to ${SERVERIP}

Itsellä on kanssa outoa ongelmaa.
En ehkä ole huomannut jotakin kun säätänyt liikaa, mutta meikäläisen aivokapasiteetti alkaa nyt loppumaan tämän onkelman suhteen.

Ei mene ei sitten millään liikenne ulkoportista lähiverkkoon.

[code]iptables -I FORWARD -i ${lanif} -d ${LAN}/255.255.255.0 -j DROP
iptables -A FORWARD -i ${lanif} -s ${LAN}/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${wanif} -d ${LAN}/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${wanif} -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp --dport 7000 -i $wanif -j DNAT --to 10.0.0.56
[/code]

-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N droplog
-N fail2ban-dovecot-pop3imap
-N fail2ban-ssh
-A INPUT -s 88.190.18.88/32 -j DROP 
-A INPUT -s 88.191.101.32/32 -j DROP 
-A INPUT -i lo -j ACCEPT 
-A INPUT -i tap1 -j ACCEPT 
-A INPUT -i tap+ -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/min -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 30/sec --limit-burst 30 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 6667:6690 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 113 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 7000 -j ACCEPT 
-A INPUT -i eth2 -p tcp -m multiport --dports 137,138,139 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -i eth2 -p udp -m multiport --dports 137,138,139 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -s 62.2.0.0/16 -p udp -m udp --dport 53 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -s 81.228.0.0/16 -p udp -m udp --dport 53 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT 
-A INPUT -p udp -m udp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 42 -j ACCEPT 
-A INPUT -s 148.235.0.0/16 -p tcp -m tcp --dport 53 -j DROP 
-A INPUT -s 148.235.0.0/16 -p udp -m udp --dport 53 -j DROP 
-A INPUT -s 200.33.146.0/24 -p tcp -m tcp --dport 53 -j DROP 
-A INPUT -s 200.33.146.0/24 -p udp -m udp --dport 53 -j DROP 
-A INPUT -p tcp -m multiport --dports 15000:15050 -j ACCEPT 
-A INPUT -p udp -m multiport --dports 15000:15050 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 89 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 81 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT 
-A INPUT -p udp -m udp --dport 1195 -j ACCEPT 
-A INPUT -j droplog 
-A FORWARD -d 10.0.0.0/24 -i tap1 -j DROP 
-A FORWARD -p tcp -m tcp --dport 67:68 -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -p udp -m udp --dport 67:68 -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -i tap+ -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.0.0.0/24 -i tap1 -j ACCEPT 
-A FORWARD -d 10.0.0.0/24 -i eth2 -j ACCEPT 
-A FORWARD -o eth2 -p tcp -m multiport --dports 137,138,139 -j ACCEPT 
-A FORWARD -o eth2 -p tcp -m multiport --dports 137,138,139 -j ACCEPT 
-A FORWARD -o eth2 -p udp -m multiport --dports 137,138,139 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -s 109.204.175.250/32 -o eth2 -j ACCEPT 
-A OUTPUT -s 10.0.0.0/32 -o tap1 -j ACCEPT 
-A OUTPUT -o tap1 -j ACCEPT 
-A droplog -m limit --limit 3/hour -j LOG --log-level 6 
-A droplog -j REJECT --reject-with icmp-port-unreachable 

10.0.0.56 ja portti 7000 kyllä vastaa kun serveriltä kysyy. Mutta ulkopäin ei toimi.
Eli port forwardauksessa on joku häikkä, mutta mikä?

Edit siistin vähän muuria.

iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o $wanif -j MASQUERADE
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT   
iptables -A FORWARD -s $LAN -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 7000 -i $wanif -j DNAT --to 10.0.0.56

Silti on mykkä kuin mikäkin.

Itsekin yritän ohjata web-kameraa linuxin läpi porttien 10080 ja 554 avulla, mutta ei mene läpi.
Tarkoitus on vain tehdä väliaikainen, ei pysyvä, ohjaus. Osa 554 ohjauksista puuttuu kun en saanut edes 10080 toimimaan.

WAN on eth0 (julkinen vaihtuva IP) ja missä kamera on eth2 (192.168.2.1) sekä kamera 192.168.2.2. Kameran gw on 192.168.2.1

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD --in-interface eth2 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 -m tcp --dport 10080 -j DNAT --to-destination 192.168.2.2:80
iptables -t nat -A PREROUTING -p tcp -i eth0 -m tcp --dport 554 -j DNAT --to-destination 192.168.2.2:554
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -p tcp -d 192.168.2.2 --dport 10080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 123 -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m pkttype --pkt-type multicast -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10080 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
-A FORWARD -d 192.168.2.2/32 -p tcp -m tcp --dport 10080 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp – anywhere anywhere tcp dpt:amanda to:192.168.2.2:80
DNAT tcp – anywhere anywhere tcp dpt:rtsp to:192.168.2.2:554

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all – anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Hyviä tippejä?