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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Pomyślałem ostatnio, żeby jakoś zabezpieczyć mój system (chociaż zdania na ten temat są podzielone), poczytałem o iptables i zbudowałem firewalla. Komputer to w zasadzie typowa stacja robocza, klient pop3, smtp, www, ftp... + p2p (sieć e2k), zresztą wszystkie usługi widać w załączonym skrypcie. Stałe zewnętrzne IP, połączenie przez SDI, żadnych NAT-ów, maskarady, sieci lokalnych itp. Na świat otwarte są tylko dwa porty tcp/4662 i udp/4666 (jest jeszcze kilka tylko na localhost, ale to chyba tutaj nie ma znaczenia).
[b]firewall[/b]
#!/bin/bash case "$1" in start) # Czyszczenie tablic IPtables iptables -F -t filter iptables -X -t filter # Domyślna polityka, odrzucamy wszystko iptables -P INPUT DROP iptables -P OUTPUT DROP # Przepuszczenie połączeń na interfejsie lokalnym iptables -A INPUT -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT # www - pakiety przychodzące z www w naszym kierunku i wychodzące od nas w kierunku www iptables -A INPUT -p tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT # ftp iptables -A INPUT -p tcp --sport 20 -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --sport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT # poczta (smtp) iptables -A INPUT -p tcp --sport 25 -j ACCEPT iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # poczta (pop3) iptables -A INPUT -p tcp --sport 110 -j ACCEPT iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT # dns iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT # irc iptables -A INPUT -p tcp --sport 6667:6669 -j ACCEPT iptables -A OUTPUT -p tcp --dport 6667:6669 -j ACCEPT # news (nntp) iptables -A INPUT -p tcp --sport 119 -j ACCEPT iptables -A OUTPUT -p tcp --dport 119 -j ACCEPT # tor (wcześniej port 80 i teraz jeszcze te trzy) iptables -A INPUT -p tcp --sport 443 -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --sport 9001 -j ACCEPT iptables -A OUTPUT -p tcp --dport 9001 -j ACCEPT iptables -A INPUT -p tcp --sport 9030 -j ACCEPT iptables -A OUTPUT -p tcp --dport 9030 -j ACCEPT # whois iptables -A INPUT -p tcp --sport 43 -j ACCEPT iptables -A OUTPUT -p tcp --dport 43 -j ACCEPT # p2p, sieć e2k iptables -A INPUT -p tcp --dport 4662 -j ACCEPT iptables -A OUTPUT -p tcp --sport 4662 -j ACCEPT iptables -A INPUT -p udp --dport 4666 -j ACCEPT iptables -A OUTPUT -p udp --sport 4666 -j ACCEPT iptables -A INPUT -p tcp --sport 4661 -j ACCEPT iptables -A OUTPUT -p tcp --dport 4661 -j ACCEPT # ping # można pingować innych, ale nas nikt nie spinguje iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT #odpowiedź na echo request iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT #żądanie echa iptables -A INPUT -p icmp --icmp-type network-unreachable -j ACCEPT #sieć nieosiągalna iptables -A INPUT -p icmp --icmp-type host-unreachable -j ACCEPT #host nieosiągalny iptables -A INPUT -p icmp --icmp-type port-unreachable -j ACCEPT #port nieosiągalny iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT #wymagana fragmentacja ;; stop) iptables -F -t filter iptables -X -t filter iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT ;; restart) $0 stop $0 start ;; esac
Jednak w pewnych sprawach mam wątpliwości, stąd kilka pytań:
1) Czy firewall w jakikolwiek sposób wpływa poziom bezpieczeństwa działających usług (dla których pakiekty dostały ACCEPT)?Bo na przykład:
# nmap -sS -p 4662 zewnętrzne_IP
Starting Nmap 4.00 ( http://www.insecure.org/nmap/ ) at 2006-04-21 21:59 CEST
sendto in send_ip_packet: sendto(4, packet, 40, 0, adres_IP, 16) => Operation not permitted
sendto in send_ip_packet: sendto(4, packet, 40, 0, adres_IP, 16) => Operation not permitted
Interesting ports on nazwa_hosta (adres_IP):
PORT STATE SERVICE
4662/tcp filtered unknown
Hmmm... wynik dokładnie taki sam jak dla każdego innego portu tcp. A przecież ten port jest otwarty i w iptables jest regułka, żeby te połączenia były przepuszczane (w przypadku 4666 udp jest podobnie - status open|filtered, nie wiem dlaczego open, ale dokładnie taki sam jak dla wszystkich innych (zamkniętych) portów udp) . Z drugiej strony skanowanie 4662 tcp na stronie http://www.pcflank.com w trybie SYN pokazuje mi ten port otwarty... Więc jak to jest: czy firewall ma w takiej sytuacji jakieś znaczenie? Pod Windowsem to właśnie tak jest, mam tam Outposta, w systemie otwarty jest NetBIOS, po jego włączeniu skanery na www (nmap pod Win 98 mi nie chodzi) pokazują dla portu NetBIOSa stealth albo blocked (czyli najlepszy możliwy status) pomimo tego, że jest on otwarty... Na jakiej zasadzie?
2) Co właściwie będzie odcinał taki firewall jak napisałem? Próby ataków na zamknięte porty (bo teraz skanery na www dla nich pokazują blocked albo stealth zamiast closed)??? Ale takie ataki to już chyba ekwilibrystyka (przynajmniej tak mi się zdaje...). Czy taki firewall w realnym stopniu zwiększy bezpieczeństwo komputera?
3) Gdzie mogę uzyskać informacje (numery IP, porty...) o pakietach, które próbowały dotrzeć do komputera, ale zostały przez firewall odrzucone, dostały DROP, najlepiej wraz z jakąś informacją co to mogło być (skanowanie portów itp...)
4) p2p (e2k, aktualnie MLDonkey). Tutaj mam najwięcej wątpliwości, bo z jednej strony słyszałem, że to mocno niebezpieczne, a z drugiej jednak muszę mieć przynajmniej te dwa porty otwarte, żeby dostać HighID. Czy, jeśli nie używa się w ogóle iptables, istnieje duże prawdopodobieństwo, że ktoś będzie mógł uzyskać w ten sposób dostęp do danego komputera (nie tylko do zasobów shared, ale np. do całego dysku z prawami użytkownika, a może nawet roota)? Czy tak zbudowany firewall coś zmienia w tej sytuacji? I co myślicie o tych regułkach na p2p? Chyba nie sią najlepsze, bo jednak znaczna część połączeń będzie odrzucana, jest jakiś lepszy sposób?
5) Czy Windowsowe firewalle działają na tej samej zasadzie co iptables? Bo za nie jednak trzeba płacić i to czasem dość sporo, a jak patrzę na te regułki to one jednak bardzo proste są i jakiejś wielkiej filozofii w tym nie ma... Dlaczego więc nie ma darmowego iptables pod Windows?
6) Jakie ewentualnie inne programy związane z bezpieczeństwem możecie polecić na taką maszynę jak opisałem. Słyszałem coś o snort, portsentry, honeypot i innych, ale nie wiem czy w ogóle może to być przydatne.
Offline
Widze że kolega popadł w paranoie pt "bezpieczny komputer". Tez tak miałem ale trzeba troche sobie popuscic bo człowiek naprawde moze oszaleć. Co do Iptables czyli filtru pakietów. Jesteś właczony do internetu i stajesz sie jego częścią. Firewall na podstawie nagłówków protokołów podejmuje decyzje czy przepuścic pakiet czy tez nie. Filtrowanie pakietów słuzy do tego aby ograniczyc i uniemozliwic dostep do twojej maszyny. Główna zaleta jest elastyczność , którą mogłeś zauważyc projektujac swój firewall co nie daja takiej mozliwosci firewalle gotowe. Jeśli brakuje Tobie jakis funkcji proponuje przyjżeć sie zbioru dodatków o nazwie Patch-o-matic ( http://www.netfilter.org/projects/patch-o-matic/pom-extra.html ) Co do pytania dlaczego nie ma w windows? Ponieważ w jądro nie maja wkompilowanego modułu netfilter :) :D i takie tam rózne .... Informacje o tym co sie działo mozesz otrzymac stosując w swoim iptables przekierowani do logów i tam czytac co jest. Ale lepszym rozwiązaniem jest IDS czyli Intrusion Detection System - ang. system wykrywania włamań. Popularnym i dajacym duze możliwości jest snort ( http://www.snort.org/ ) .Portsentry jest opisany tu na dugu ( http://dug.net.pl/servery/portsentry.php ). Polecałbym bys sie przyjzał temu firewallowi Shorewall ( http://www.shorewall.net/ ) zapoznaj sie tez z patchem grseciurity ( http://www.grsecurity.net/ ).
No to na tyle jak narazie bo mi śniadanko stygnie :);)
Pozdrawiam :)
Offline
włączę się do tematu. co sądzisz o takim firewall`u?
[url]http://cybek5.fm.interia.pl/firewall[/url]
Stacja robocza najwyżej z apache`m amule ktorrent lokalne (tylko dla mojego kompa) mysql oczywiścieoglądanie stron itp. mam sambe, kadu, oraz cups`a (drukraka u brata na win xp) telnet nie używam więc jest zahaszowany
Offline
Informacje o tym co sie działo mozesz otrzymac stosując w swoim iptables przekierowani do logów i tam czytac co jest. [/quote]
Jak można coś takiego zrobić?
Offline
Przez opcje -j LOG --log-level i wybranie jednego z 7 poziomów (debug,info,notice,warning,err,crit,alert,emerg) np.
iptables -t filter -A FORWARD -s 192.168.0.0/255.255.255.0 -d 0/0 -j LOG --log-level debug
ale nie wiem czy o to ci chodziło, no i bedziesz zbędnymi śmieciami zawalał sobie logi w syslogu. Możesz też wydac polecenie:
watch -n 1 iptables -L -nv
tu zobaczysz obecny stan reguł i przechodzace pakiety przez firewalla. Jak chcesz patrzec na pakiety jakie przechodza mozesz zainstalowac ethereal .Ale najlepiej zainteresuj sie Snortem, to bardzo ciekawe narzędzie.
Offline
Time (s) | Query |
---|---|
0.00008 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00099 | 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='52.14.158.115' WHERE u.id=1 |
0.00083 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '52.14.158.115', 1738364360) |
0.00048 | SELECT * FROM punbb_online WHERE logged<1738364060 |
0.00033 | SELECT topic_id FROM punbb_posts WHERE id=26478 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=3362 ORDER BY posted |
0.00060 | 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=3362 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00091 | 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=3362 ORDER BY p.id LIMIT 0,25 |
0.00092 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=3362 |
Total query time: 0.00529 s |