Behöver hjälp med firewall?!

Diskussion kring säkerhet och nätverk.
Post Reply
Dr-One
Posts: 337
Joined: 4 December 2002, 22:15

Behöver hjälp med firewall?!

Post by Dr-One » 7 March 2003, 10:27

Jag har två maskiner, en RedHat 8.0 och en Windows-2000.
Redhat-maskinen har tänkt att fungera som en firewall till Windows 2000
Jag har två nätverks-kort i RedHat-maskinen.

När jag aktiverar båda nätverk-kortet, så når man inte RedHat-maskinen med ping-kommandot.
När jag inaktiverar det nätverkkortet som har förbindelse med Windows 2000, så fungerar det!

Vad är för inställningar som måste göras för nätverkskorten?

ZenIT
Posts: 28
Joined: 6 March 2003, 16:08
Location: Linköping
Contact:

Hjälp med firewall

Post by ZenIT » 7 March 2003, 13:16

Hej!

Jag är absolut ingen kung på linux och brandväggar, men jag har dock installerat och kört en brandvägg med RedHat i botten. Jag upplevde det dock inte som något större krångel. Först konfigurerade jag nätverkskorten för de olika nätverken (ext och int) med ifconfig. Efter detta tog jag hem ett iptables-script från http://www.mplug.org/phpwiki/index.php/ ... wallRouter

Man behöver skriva in ett par saker i scriptet men vad och hur står noga beskrivet på sidan.

Sedan la jag scriptet i /etc/init.d/ och chmodade det med 755. Sedan la jag en länk till scriptet i de runlevels där jag ville ha det (3 och 5). Och sedan fungerade det bara.

Nu kör jag dock gratisversionen av Smoothwall som jag tycker fungerar riktigt fint, så den kan jag rekomendera (www.smoothwall.org)
Ny dag nya tag!

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Post by kjell-e » 7 March 2003, 13:18

Varifrån kan du pinga och till vilket interface?
Vad menar du med att det fungerar, vad är det som fungerar?

Vad har du för inställningar på dina två nätverksinterface?
Har du aktiverat brandväggsskydd?

Dr-One
Posts: 337
Joined: 4 December 2002, 22:15

Post by Dr-One » 7 March 2003, 13:31

Det jag menar är, hur skall jag konfa dom, så att dom inte "krockar" med varanadra.
Skall dom ha två olika ip-adresser eller något annat? Ni får nog ursäkta mig, för jag är helt newbie på detta!

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Post by kjell-e » 7 March 2003, 13:50

Dina två nätverkskort/nätverksinterface ska ha olika IP-adresser på två olika nät.

Du kan t.ex. använda nätet 172.22.1.0 med nätmask 255.255.255.0 på
insidan/ditt interna nätverk. Nätverksinterfacet på utsidan ska sedan ha
en IP-adress på det nätverk du får av din nätverksleverantör.

Interfacet på brandväggen som vetter mot det interna nätet kan sedan
ha t.ex. adressen 172.22.1.1 och windowsmaskinen någon annan adress
i intervallet 172.22.1.2 till 172.22.1.254.

Dr-One
Posts: 337
Joined: 4 December 2002, 22:15

Post by Dr-One » 7 March 2003, 16:45

Måste inte man gör en lokal routerinställning med route add?
Eller har jag tel?

Dr-One
Posts: 337
Joined: 4 December 2002, 22:15

Post by Dr-One » 7 March 2003, 17:24

Lite tilläggsinfo.

I RedHat-maskinen:
eth0 ip-adress: 194.213.232.46
nätmask: 255.255.255.0
eth1 ip-adress: 10.2.129.22
nätmask: 255.255.254.0

Till datorn bakom firewall:
eth0 ip-adress 10.2.129.20
nätmask: 255.255.254.0

Kanske nån kan hjälpa mig hur man sätter upp "lokal router"
eller vad nu heter med route add?

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Post by kjell-e » 7 March 2003, 18:12

På linuxdatorn behöver du bara ange defaultgateway för att nå Internet.
Den ska du stoppa in i filen /etc/sysconfig/network

I den filen finns GATEWAY. Sätt den till vad du har för defaultgateway/router för att nå Internet. Exempel:
GATEWAY=194.213.232.1


Sedan ska du se till att slå på routingen mellan de två näten och det kan du göra på två sätt.

Alternativ 1, kör följande kommandorad
echo 1 > /proc/sys/net/ipv4/ip_forward

Denna kommandorad kan du stoppa in sist i filen /etc/rc.d/rc.local
så kommer den att utföras varje gång du bootar om datorn.

Alternativ 2:
Ändra i filen /etc/sysctl.conf
Om du inte har den filen kan du skapa den med:
/sbin/sysctl -a > /etc/sysctl.conf

Ändra på raden
net.ipv4.ip_forward = 0
till
net.ipv4.ip_forward = 1
Du byter alltså ut nollan mot en etta för att slå på routingen.


Nu agerar din linuxdator router mellan de två näten.
Vill du från det interna nätverket kunna komma ut på Internet måste du sedan komplettera med en maskerande brandvägg (NAT, Network Address Translation).

För att få denna maskerande brandvägg kan du t.ex. ta följande script.

Code: Select all

#!/bin/sh
# Firewall rules

# Sätt upp standardregler
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT ACCEPT

# Rensa bort gamla brandväggsregler
/usr/sbin/iptables -F
/usr/sbin/iptables -t nat -F

# Rensa bort gamla kedjor
/usr/sbin/iptables -X

# eth1 utsida
# eth0 insida

# Om maskeringen är kompilerad som modul
# aktivera raden nedan (genom att ta bort # i början på raden)
#modprobe iptable_nat

# Slå på routing
echo "1" > /proc/sys/net/ipv4/ip_forward

# Firewall rules
# Min egna IP-adress på eth1 (yttre interface)
MEeth1=`/sbin/ifconfig eth1 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`
# Min broadcastadress på eth1
MYBROADCASTeth1=`/sbin/ifconfig eth1 |sed -n '/inet/s/^.*Bcast:\([0-9.]*\).*/\1/p'`

# Min egna IP-adress på eth0 (inre interface)
MEeth0=`/sbin/ifconfig eth0 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`
# Min broadcastadress på eth0
MYBROADCASTeth0=`/sbin/ifconfig eth0 |sed -n '/inet/s/^.*Bcast:\([0-9.]*\).*/\1/p'`

# Skapa kedjan logdrop som loggar och kastar trafiken
/usr/sbin/iptables -N logdrop
/usr/sbin/iptables -A logdrop -j LOG
/usr/sbin/iptables -A logdrop -j DROP

# Logga och kasta nya TCP-paket som inte är SYN-paket
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW NOT SYN "
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW NOT SYN "
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP




######################## Trafik till själva brandväggsdatorn ####################

# Logga och spärra ut netbus
/usr/sbin/iptables -A INPUT -p tcp --destination-port 12345 -j logdrop
/usr/sbin/iptables -A INPUT -p udp --destination-port 12345 -j logdrop

# Tillåt att prata med sig själv
/usr/sbin/iptables -A INPUT --in-interface lo --source 127.0.0.0/8 -j ACCEPT
/usr/sbin/iptables -A INPUT --in-interface lo --source $MEeth1 -d $MEeth1 -j ACCEPT
/usr/sbin/iptables -A INPUT --in-interface lo --source $MEeth0 -d $MEeth0 -j ACCEPT

# Spärra ut avsändaradress 127.0.0.0/8 från omvärlden (som inte kommer
# från loopback)
/usr/sbin/iptables -A INPUT --in-interface ! lo --source 127.0.0.0/8 -j DROP

# Spärra trafik som kommer till broadcastadressen på yttre nätet
/usr/sbin/iptables -A INPUT -d $MYBROADCASTeth1/32 -j DROP

# Släpp in ICMP-trafik
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT

# Släpp in trafik till egna servertjänster
# Släpp in trafik till servertjänster på låga portar
# Tjänst protokoll klientportar serverport
# ssh tcp 1-65535 22
/usr/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 22 -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 22 -j ACCEPT

# smtp (mailserver)  tcp 1-65535 25
/usr/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 25 -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 25 -j ACCEPT

# www tcp 1-65535 80
/usr/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 80 -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 80 -j ACCEPT

# Släpp in trafik från ntp-servern 1.2.3.4 port 123 (ändra till din
# nätleverantörs ntp-server) till port 123
/usr/sbin/iptables -A INPUT -p udp --source 1.2.3.4 --sport 123 --destination-port 123 -j ACCEPT


# Släpp fram svarstrafik
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT




###################### Trafik ut/in mellan Internet och interna nätet ###########################


# FORWARDREGLER
# Spärra trafik som kommer till broadcastadressen
/usr/sbin/iptables -A FORWARD --in-interface eth1 -d $MYBROADCASTeth0/32 -j logdrop
/usr/sbin/iptables -A FORWARD --in-interface eth0 -d $MYBROADCASTeth1/32 -j logdrop

# Släpp ut trafik från interna nätet, och släpp in svarstrafik
/usr/sbin/iptables -A FORWARD --in-interface eth0 -j ACCEPT
/usr/sbin/iptables -A FORWARD --in-interface eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Lägg på maskering på utgående trafik som ska ut till Internet så att
# det ser ut som att det är brandväggens utsida som surfar
/usr/sbin/iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to $MEeth1
#
# Om du får din adress på yttre interfacet, eth1, dynamiskt via
# t.ex. dhcp ska följande rad användas istället för SNAT-regeln ovan:
# /usr/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Notera att MASQUERADE gör av med lite mer CPU-kraft än SNAT.
#
# Om du får din adress dynamiskt på eth1 lägg även till följande rad:
# echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# Logga och spärra resten
/usr/sbin/iptables -A INPUT -j logdrop
/usr/sbin/iptables -A FORWARD -j logdrop

# För RedHat, spara brandväggsskyddet i /etc/sysconfig/iptables så att det körs vid boot.
iptables-save > /etc/sysconfig/iptables
I ditt fall ska du byta plats på eth0 och eth1 överallt i scriptet.
Här släpper vi in trafik in till brandväggsdatorn till ssh (port 22), mailservern (port 25) och webbservern (port 80).
Om du inte kör någon av dessa på din brandväggsdator SKA DU ta bort raderna eller kommentera bort dem.

Exempel: du vill inte köra en mailserver och behöver därmed inte någon trafik in till port 25 (mailserver). Ändra då från:
# smtp (mailserver) tcp 1-65535 25
/usr/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 25 -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 25 -j ACCEPT

Till:
# smtp (mailserver) tcp 1-65535 25
#/usr/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 25 -j ACCEPT
#/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 25 -j ACCEPT

Spara filen (firewall) och gör den exekverbar med:
chmod ug+x firewall

Kör den nu med ./firewall . Notera att du måste vara inloggad som root för att få göra detta. Nu har du en routande brandvägg med NAT.

Alternativt kan du använda något av de grafiska gränssnitt som har nämnts i andra diskussioner i detta forum.

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Post by kjell-e » 7 March 2003, 18:15

# Slå på routing
echo "1" > /proc/sys/net/ipv4/ip_forward
Ojdå jag slog visst på routingen i brandväggsscriptet också.

Dr-One
Posts: 337
Joined: 4 December 2002, 22:15

Post by Dr-One » 10 March 2003, 10:59

Kabeln mellan Redhat-maskinen och Windows-maskinen bör väl vara en korsad nätverkskabel
eller har jag fel?

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Post by kjell-e » 10 March 2003, 11:25

Dator - Dator, korsad kabel
Dator - HUB/Switch, rak kabel
HUB/Switch - HUB/switch, korsad kabel

Alltså likadan utrustning i bägge ändar, korsad kabel och olika utrustning
i de två ändarna rak kabel.

Sedan finns det i många hubbar/switchar en uplink-port som man kan använda för att kunna använda en rak kabel när man kopplar ihop två switchar/hubbar. Kabeln ska då kopplas till ett vanligt uttag i ena änden
och uplink i andra änden.

I många fall är det även så att man kan använda antingen uplink eller port 1 i switchen/hubben inte båda samtidigt.

Post Reply