Ako blokovať porty - BackTrack 4 Linux

IDS, detekce útoků, analýza a vyhodnocení systémových událostí a logů v lokálních bezdrátových a metalických sítích
Odpovědět
Uživatelský avatar
Michal
Level 7
Příspěvky: 242
Registrován: 19 kvě 2008, 20:14
Bydliště: Košice

25 srp 2009, 19:04

Zdravím, potreboval by som nakopnúť. Operačný systém BackTrack 4 používam na bežné činnosti (žiaden Apache, žiadne remote Services), klasika e-mail, web, aim, skype, ktorrent, Vmware, irc, písanie článkov. Prekvapenie nastalo ked som si všimol počet otvorených portov pomocou Nmap.
Výsledok Nmap scanu:

Kód: Vybrat vše

 PORT      STATE SERVICE
1/tcp         open  tcpmux
79/tcp       open  finger
80/tcp       open  http
111/tcp     open  rpcbind
119/tcp     open  nntp
143/tcp     open  imap
1080/tcp   open  socks
1524/tcp   open  ingreslock
2000/tcp   open  callbook
6667/tcp   open  irc
6881/tcp   open  bittorrent-tracker
12345/tcp open  netbus
31337/tcp open  Elite
32771/tcp open  sometimes-rpc5
32772/tcp open  sometimes-rpc7
32773/tcp open  sometimes-rpc9
32774/tcp open  sometimes-rpc11

Strýčko Google vraví upraviť súbory inetd.conf, resp. xinetd a zakomentovať riadok pre príslušný port, resp. zistiť aký proces používa príslušný port, prípadne nakonfigurovať iptables. Neviem však nájsť konfiguračný súbor resp. ako zistiť príslušný proces na Ubuntu/Backtrack 4.
Keďže sa mi nepodarilo vyhľadať riešenie ako porty zatvoriť, nejakú chvíľu som strávil pri iptables a azda prišiel s dočasným riešením:

Kód: Vybrat vše

 iptables -A INPUT -p TCP  --dport cislo_portu -j DROP 

Výsledok:

Kód: Vybrat vše

 
PORT      STATE    SERVICE
1/tcp         filtered tcpmux
79/tcp       filtered finger
80/tcp       open     http
111/tcp     filtered rpcbind
119/tcp     filtered nntp
143/tcp     filtered imap
1080/tcp   filtered socks
1524/tcp   filtered ingreslock
2000/tcp   filtered callbook
6667/tcp   open     irc
9050/tcp   open     tor-socks
12345/tcp filtered netbus
31337/tcp filtered Elite
32771/tcp filtered sometimes-rpc5
32772/tcp filtered sometimes-rpc7
32773/tcp filtered sometimes-rpc9
32774/tcp filtered sometimes-rpc11 

Chcel by som sa spýtať či toto riešenie je dostatočné (bezpečné) pre dočasné riešenie, a samozrejme hlavná otázka je ako postupovať, prípadne čo študovať, ak chcem porty zatvárať/otvárať podľa želania. Prípadne, ak by sa niekto stretol s portami (sometimes-rpc, callbok), rád by som vedel o čo vlastne ide. Azda zmysluplný post, no v tomto smere nie som moc zdatný.

Uživatelský avatar
maskov1
Level 0
Příspěvky: 10
Registrován: 10 zář 2008, 13:30

25 srp 2009, 23:44

Tie otvorene porty pravdepodobne vyvolala nejaka sluzba/aplikacia, teda na nej naslucha. Ak nevies co znamena, mozes ju kludne Dropnut, pretoze je ti zbytocna ked ani nevies co je (pre vlastne bezpecie).

Iptables povazujem za plnohodnotne riesenie firewallu, preto si myslim ze pomenovanie "docasne" riesenie je nezmysel. Na internete najdes dost vela iptables firewall scriptov. Na serveroch pouzivam uz asi 2 roky iptables, pre ktory napisem konfigurak, spustim ho a som secure (nechytajte ma za toto za slovicka). Netreba zabudat nastavit chmod a+x pre subor a spustit ho (predtym si ho edituj ako uznas za vhodne). AK je to server a system nerestartuvavas, tak nemusis ani nastavovat automaticke spustanie (nebudem rozpisovat, je totiz rozdielny od linuxu k linuxu od init.d po rc..)

Treba mat nainstalovane iptables, sem prikladam obsirnejsi konfigurak z ktoreho vychadzam pri konfigurovani serverov

Kód: Vybrat vše


#!/bin/bash
 
IPTABLES="/sbin/iptables"
 
 
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
# Nastavenia spojenia
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
 
# Vonkajesie spojenie
 
IP_Addr="XX.XX.XX.XX" #IPcka serveru
Link_encap="eth0"

# Spojenie s dalsim serverom
IP_Amid="10.0.0.2"

# Lokalne
 
IP_LO="127.0.0.1/32"
LO_encap="lo"
 
fw_start()
{
 
 
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
# Nastavenia povoleni
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
 
# Whitelist IPciek na danom porte
# Pripisujte komentar za mriezku aby sa v tom dalo vyznat
 
$IPTABLES -A INPUT -s 81.XX.XX.XX -p TCP --dport 22 -j ACCEPT  # maskov

$IPTABLES -A INPUT -i $LO_encap -j ACCEPT                         # LO bez obmedzeni
$IPTABLES -A INPUT -i eth1 -j ACCEPT
$IPTABLES -A INPUT -s $IP_Amid -j ACCEPT   #Server

# Sluzby a ich povolene porty
 
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 21 -j ACCEPT           # FTP
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 25 -j ACCEPT           # SMTP
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 80 -j ACCEPT           # HTTP
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 443 -j ACCEPT          # HTTPS
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 110 -j ACCEPT          # POP3
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 143 -j ACCEPT          # IMAP
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 993 -j ACCEPT          # IMAP4
$IPTABLES -A INPUT -i $Link_encap -p TCP --dport 995 -j ACCEPT          # POP3
 
 
# Odchodzie pakety
 
$IPTABLES -A OUTPUT -s $IP_LO -j ACCEPT                           # LO spojenie
$IPTABLES -A OUTPUT -s $IP_Addr -j ACCEPT                         # eth spojenie
$IPTABLES -A OUTPUT -s $IP_Amid -j ACCEPT                         # Server                     

# Politika ostatnych paketov (zahadzovat)
 
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
 
# Pokracovanie v predchodzich spojeniach
 
$IPTABLES -A INPUT -i $Link_encap -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
# Filtrovanie, ochrana, limity
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<##
 
# Zahadzovanie paketov + logovanie
# odkomentujte posledny riadok ak chcete limit
 
$IPTABLES -N logdrop
$IPTABLES -F logdrop
$IPTABLES -A logdrop -j DROP
# $IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "IN_FW drop: " --log-level 6
 
# Nastavenie logov aj do ossec, nastavte ci chcete vidiet tie co presli
# alebo tie co nepresli
 
$IPTABLES -A INPUT -p tcp -j LOG --log-prefix="DROP "
#$IPTABLES -A INPUT -p tcp -j LOG --log-prefix="ACCEPT "
 
# Uplne filtrovanie nezmyselnych IP
 
$IPTABLES -N IN_FW
$IPTABLES -F IN_FW
$IPTABLES -A IN_FW -s 192.168.0.0/16 -j logdrop 
$IPTABLES -A IN_FW -s 172.16.0.0/12 -j logdrop 
$IPTABLES -A IN_FW -s 127.0.0.0/8 -j logdrop
 
#Ochrana proti SYN floods (cez prichodzie spojenia + google)
 
$IPTABLES -N syn-flood
$IPTABLES -F syn-flood
$IPTABLES -A syn-flood -m limit --limit 100/s --limit-burst 100 -j RETURN
$IPTABLES -A syn-flood -j DROP
$IPTABLES -N google
$IPTABLES -F google
$IPTABLES -A google -m limit --limit 300/second --limit-burst 300 -j RETURN
$IPTABLES -A google -j DROP
$IPTABLES -A INPUT -i $Link_encap -p tcp --syn -j syn-flood
$IPTABLES -A INPUT -s 66.249.0.0/16 -j google
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
 
# IP spoofing
 
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" > ${interface}
done
 
 
 
# ICMP limity + ochrana proti syn-floodu, max 10 pingov za sekundu
 
$IPTABLES -A INPUT -i $Link_encap -p icmp -j syn-flood
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT
 
# Filtrovanie adries, FIN, SYN portscan filter
 
$IPTABLES -A INPUT -i $Link_encap -j IN_FW
$IPTABLES -A INPUT -p tcp -i $Link_encap --tcp-flags SYN,FIN SYN,FIN \
 -j LOG -m limit --limit 10/m --log-prefix="Falesny packet: "
$IPTABLES -A INPUT -p tcp -i $Link_encap --tcp-flags SYN,FIN SYN,FIN -j DROP
 
# Dalsie logovanie
 
$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT drop: "
 
# Nakoniec optimalizacia ciest
 
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --dport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $Link_encap -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput
 
}
fw_stop() {
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F IN_FW
$IPTABLES -X IN_FW
$IPTABLES -F logdrop
$IPTABLES -X logdrop
$IPTABLES -F google
$IPTABLES -X google
$IPTABLES -F syn-flood
$IPTABLES -X syn-flood
$IPTABLES -F -t mangle
}
 
fw_restart()
{
  fw_stop
  sleep 1
  fw_start
}
 
#################################################
 
case "$1" in
'start')
  fw_start
  ;;
'stop')
  fw_stop
  ;;
'restart')
  fw_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac

Ak vam to hodi nejaku chybu, skontrolujte ci mate spravne komentare ( mriezka #)
Ak chcete mat passiv connection

Kód: Vybrat vše

$IPTABLES  -A INPUT -p tcp --sport 6969: --dport 6969:  -m state --state ESTABLISHED -j ACCEPT
$IPTABLES  -A OUTPUT -p tcp --sport 6969: --dport 6969:  -m state --state ESTABLISHED,RELATED -j ACCEPT 
ak to nepojde, tak hodte este do input aj related, nezabudajte passiv si otvara novy port, preto 6969 v mojom pripade... subor ulozte napr ako rc.firewall, chmod a+x rc.firewall, cp rc.firewall /usr/bin a uz len spustite, pripadne nastavte automat spustanie so startom....

dufam som problematiku vyriesil komplexne a bude sa na tento "navod" odkazovat (len pre informaciu, tento konfigurak som robil asi 6 hodin kym som ho doladil a zabralo to aj par telefonatov do server housingu pre zapojenie konzole alebo restart :) :)

Uživatelský avatar
Michal
Level 7
Příspěvky: 242
Registrován: 19 kvě 2008, 20:14
Bydliště: Košice

06 lis 2009, 19:45

maskov1 ďakujem. Chvíľu som používal skript napísaný podľa týchto inšturkcií, po nejasnostiach s Nmap-om neskôr prešiel na Firestarter firewall a skončil pri Uncomplicated Firewall (ufw) Na screene je vidieť, že má aj príjemné grafické rozhranie Gufw. Pre osobný počítač ideál.

Kód: Vybrat vše

http://img692.imageshack.us/img692/9457/gufw.png
"The reason ufw was developed is that we wanted to create a server-level firewalling utility that was a little bit more for `human beings`."

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Informace
  • Kdo je online

    Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti