Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-04-30 15:55:31

  Preibx - Użytkownik

Preibx
Użytkownik
Zarejestrowany: 2006-03-12

Firewall - porządek?

Witam

Przedstawiam do oceny pierwszą część firewall'a.

Na tym etapie chce wyczerpać tematy:
a) maksymalnie możliwe zabezpieczenie serwera z zewnątrz
b) blokada wszystkich możliwych portów
b) rozdzielenie internetu na sieć lokalną na razie tylko i wyłącznie dla portu 80
c) dostęp narazie tylko lokalny do SSH

Proszę o ocenę. Co można poprawić, czego być nie powinno, a może czego brakuje.

Kod:

#!/bin/sh

# Stałe są przykładowe
# Numery IP dla poszczególnych kart sieciowych
    ip_wew="192.168.0.1"

# Numery portów
    port_www="80"
    port_ssh="22"

# wlaczenie w kernelu forwardowania
        echo 1 > /proc/sys/net/ipv4/ip_forward

# czyszczenie starych reguł
        iptables -F
        iptables -X
        iptables -t nat -X
        iptables -t nat -F
        iptables -F INPUT
        iptables -F OUTPUT
        iptables -F FORWARD

# ustawienie polityki dzialania
        iptables -P INPUT DROP
        iptables -P FORWARD DROP
        iptables -P OUTPUT ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A FORWARD -o lo -j ACCEPT
    iptables -A INPUT -p icmp -j ACCEPT

# Sterowanie ping
# 8 - echo-requst
# 3 - destination-unreachable
# 0 - echo-reply
        iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# Akceptujemy polaczenia zainicjowane przez nas
    iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
    iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
    iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
           
# udostepniaie internetu w sieci lokalnej,
# -d i -s mają posłużyć małemu zabezpieczeniu
# przed podszywaniem się osób z naszej sieci pod inne adresy ip
        iptables -t nat -A POSTROUTING -s $ip_wew/24 -d 0/0 -j MASQUERADE
        iptables -A FORWARD -s $ip_wew/24 -j ACCEPT


# Udostępnianie portów
        iptables -A INPUT -s 0/0 -p tcp --dport $port_www -j ACCEPT
        iptables -A INPUT -s 0/0 -p udp --dport $port_www -j ACCEPT

        iptables -A INPUT -s 0/0 -p tcp --dport $port_ssh -j ACCEPT
        iptables -A INPUT -s 0/0 -p udp --dport $port_ssh -j ACCEPT

Offline

 

#2  2008-04-30 19:13:49

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Firewall - porządek?

1. udostepniasz ssh i www na serwerze dla wszystkich (ostatnia grupa wpisow)
2. udostepniasz wyjscie z sieci na dolowne porty (iptables -A FORWARD -s $ip_wew/24 -j ACCEPT)
3. "iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT" nie jest potrzebne bo wczesniej dajesz "iptables -A INPUT -p icmp -j ACCEPT"


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2008-05-26 13:19:40

  Preibx - Użytkownik

Preibx
Użytkownik
Zarejestrowany: 2006-03-12

Re: Firewall - porządek?

Witam ponownie.
Dziękuję za rady. Zastosowałem się do nich.
Oto poprawiony firewall:

Kod:

#!/bin/sh

# Numery IP dla poszczególnych kart sieciowych
ip_wew="xxx.xxx.xxx.xxx"
ip_zew="xxx.xxx.xxx.xxx"
    
# Numery portów udostępnienia dla sieci lokalnej
port_www="80"
port_ssh="zalecam inny niż 22"

# wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward

# czyszczenie starych reguł
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F

# ustawienie polityki dzialania
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

# Sterowanie ping
# 8 - echo-requst
# 3 - destination-unreachable
# 0 - echo-reply
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# Udostępnianie portów
iptables -A INPUT -s 0/0 -d $ip_wew -p tcp --dport $port_ssh -j ACCEPT
iptables -A INPUT -s 0/0 -d $ip_wew -p udp --dport $port_ssh -j ACCEPT
iptables -A OUTPUT -s 0/0 -d $ip_wew -p tcp --dport $port_ssh -j ACCEPT    
iptables -A OUTPUT -s 0/0 -d $ip_wew -p udp --dport $port_ssh -j ACCEPT

# Akceptujemy polaczenia zainicjowane przez nas
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
           
# udostepniaie internetu w sieci lokalnej,
# -d i -s mają posłużyć małemu zabezpieczeniu
# przed podszywaniem się osób z naszej sieci pod inne adresy ip
iptables -t nat -A POSTROUTING -s $ip_wew/24 -d 0/0 -j MASQUERADE
iptables -A FORWARD -s $ip_wew/24 -j ACCEPT

Powtórzę założenia firewall’a:
a)    nie ograniczony dostęp do Internetu dla sieci lokalnej
b)    całkowity brak dostępu jakichkolwiek usług z Internetu

Moje pytania to:

1)    Czy w tym przykładzie czegoś brakuje lub jest czegoś za dużo?
2)    Czy stosuje odpowiednia kolejność regułek?
3)    Dlaczego mimo nie udostępnienia portu 80 lub np. 995 (poczta SSL) użytkownicy z sieci lokalnej mogą korzystać z wszystkich usług?
         Czy dobrze rozumiem, że domyślnie wszystkie porty są otwarte dla sieci wewnętrznej?
4)      Gdzie w Debianie Etch znajduje się (musze tu użyć odpowiedniej scieżki):

Kod:

my $ipt = '/usr/local/sbin/iptables';     # lokalizacja iptables

5)      Jak przerobić skrypt BiExi na pobranie adresu IP do zmiennej:

Kod:

#!/usr/bin/perl
$ip = `ifconfig eth0 | grep "inet addr"` ;

if ($ip =~ /addr:(\d+\.\d+\.\d+\.\d+)/)
{
printf "$1 \n";
} ;

Z góry serdecznie dziękuje za pomoc.

Ostatnio edytowany przez Preibx (2008-05-26 13:20:53)

Offline

 

#4  2008-05-26 13:45:52

  Ventrue - Użytkownik

Ventrue
Użytkownik
Skąd: Lubin
Zarejestrowany: 2007-08-16

Re: Firewall - porządek?

Ad 4:
użyj `whereis iptables` ?
Ad 5:
BiExi napisała w Perlu, a ja napiszę w sh :P

Kod:

#!/bin/bash
zmienna_z_adresem_ip=`ifconfig eth0 | grep "inet addr" | cut -d ":" -f 2 | cut -d "B" -f 1`
echo "$zmienna_z_adresem_ip"

Reszty nie wiem ;)

Ostatnio edytowany przez Ventrue (2008-05-26 13:47:21)


[i]The Linux philosophy is 'Laugh in the face of danger'. Oops. Wrong One. 'Do it yourself'. Yes, that's it.[/i]
[b]Linus Torvalds[/b]

Offline

 

#5  2008-05-26 15:04:28

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Firewall - porządek?

[quote=Preibx]b) rozdzielenie internetu na sieć lokalną na razie tylko i wyłącznie dla portu 80[/quote]
[quote=Preibx]Powtórzę założenia firewall’a:
a)    nie ograniczony dostęp do Internetu dla sieci lokalnej
b)    całkowity brak dostępu jakichkolwiek usług z Internetu[/quote]
to jak w koncu ma byc z tym udostepnianiem netu dla sieci wewnetrznej - tylko www czy bez ograniczen ?

(nadmienie iz obecnie jest bez ograniczen)

[quote=Preibx]3)    Dlaczego mimo nie udostępnienia portu 80 lub np. 995 (poczta SSL) użytkownicy z sieci lokalnej mogą korzystać z wszystkich usług?[/quote]
chodzi o uslugi na lokalnym serwerze czy uslugi w Internecie ?

dziwnie traktujesz ICMP (przyjmujesz pingi, ale nie przyjmujesz odpowiedzi na wysylane przez siebie pingi ?)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#6  2008-05-26 18:20:03

  bobycob - Członek z Ramienia

bobycob
Członek z Ramienia
Skąd: Wrocław
Zarejestrowany: 2007-08-15

Re: Firewall - porządek?

nie prościej zamiast IP użyć nazwy międzymordzia?
zakładając, że:
eth0 = lan

iptables -A INPUT  -i eth0 -p udp --dport $port_ssh -j ACCEPT
iptables -A OUTPUT  -o eth0 -p tcp --dport $port_ssh -j ACCEPT   
iptables -A OUTPUT  -o eth0 -p udp --dport $port_ssh -j ACCEPT

iptables -t nat -A POSTROUTING -i eth0  -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT

wydaje się znacznie prościej :)
-s 0/0  i -d 0/0 - pomija się je aby nie komplikować zapisu - klawka też się oszczędza :)

Ostatnio edytowany przez bobycob (2008-05-26 18:22:04)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.014 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00016 SET CHARSET latin2
0.00008 SET NAMES latin2
0.00156 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.224.37.68' WHERE u.id=1
0.00123 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.224.37.68', 1715208721)
0.00070 SELECT * FROM punbb_online WHERE logged<1715208421
0.00266 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=11340 AND t.moved_to IS NULL
0.00008 SELECT search_for, replace_with FROM punbb_censoring
0.00282 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=11340 ORDER BY p.id LIMIT 0,25
0.00162 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=11340
Total query time: 0.01091 s