26. december 2000 - 19:40Der er
47 kommentarer og 1 løsning
IpChains Problemer
hello! Jeg har følgende problem med IpChains: jeg kan ikke sende i Irc. Jeg har prøvet med forskellige scripts: Polaris, OperScript og normal Mirc. Men jeg kan simpelthen ikke sende. Folk kan heller ikke connecte til min Fserve. Hvordan kan dette løses?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
tjaa.... det ved jeg sgu ikke rigtig... jeg har fyret en portscan af og har fundet ud af at de her porte er i brug. Men hvad f bruges alle disse porte til? 21 er min ftpserver, 23 er min smtpserver, 80 til min webserver, 139 til netbios (samba) men hvad bruges alle de andre til? Er jeg bombet med backdoors og diverse eller hvad bruges de porte til?: 21 22 23 80 111 113 139 443 513 514 515 1024 1099 1113 1116 3306 Håber du kan bruge det til noget.
Okay jeg er ikke den store Linux Haj men hvis du loader \"modprobe ip_masq_irq ports=6666,6667\" så vil den også loade de moduler ip_masq_irq er afhængig af! det gør insmod ikke!
Det lader til at ALADIN har helt styr på modulerne. Hvad angår de porte du har åbne kan du begrænse det væsentligt ved at udkommentere alt du ikke bruger i /etc/inetd.conf. Du kan få en bedre liste ved at skrive netstat -l Du bør lukke alle services som du ikke bruger.
Well jeg har også prøvet med modprobe men uden held. Og i første omgang vil jeg gerne have åbnet for de services som jeg bruger og så kan jeg lukke bagefter.
OK, så laver vi et script der lukker for alt andet end det du selv starter. Så skal jeg bare lige vide hvilke interfaces du har og om du bruger alle aplikationer fra LINUX maskinen eller om du bruger den som gateway for andre maskiner.
eth0 og eth1 linuxmaskinen er gateway for 3 windows klienter. Disse services kører jeg: Telnet Ftp Http Samba Glæder mig til at se hvad i bikser sammen = )
Jeg går udfra at eth0 er det interne interface og eth1 det eksterne.
Her er et simpelt lille script der vil sikre dig rimeligt godt mod det onde.
Alle DENY\'s bliver logget så hvis der er noget som ikke fungerer kan du se i din log hvad der går galt og derefter åbne for det.
Det er som sagt et meget simpelt script og det kan sagtens rafineres mere.
# !/bin/sh # # Enable IP forwarding. echo \"1\" > /proc/sys/net/ipv4/ip_forward # Dræb fragmenterings bomber. echo \"1\" > /proc/sys/net/ipv4/ip_always_defrag # Fix din LINUX maskines porte til 56000-60999 echo \"56000 60999\" > /proc/sys/net/ipv4/ip_local_port_range # Slå ICMP broadcast replying fra. echo \"1\" > /proc/sys/net/ipv4/conf/icmp_echo_ignore_broadcasts # Dræb spoffede pakker for file in /proc/sys/net/ipv4/*/conf/rp_filter do echo \"1\" > $file done
# Load de moduler du skal bruge her yada yada yada ........
# IPchains regler herefter ipchains -F ipchains -X # Regelsæt for pakker mod internettet: ipchains -N IN-EXT # regelsæt for pakker mod lokal nettet: ipchains -N EXT-IN # regelsæt for pakker mod det externe interface: ipchains -N EXT # Regelsæt for pakker mod det interne interface: ipchains -N IN
#----------- ipchains -A EXT-IN -j DENY -l
#----------- ipchains -A IN-EXT -p tcp --dport 135:139 -j REJECT ipchains -A IN-EXT -p udp --dport 135:139 -j REJECT ipchains -A IN-EXT -i eth1 -j MASQ
#--------- ipchains -A IN -j ACCEPT
#--------- # Accepter connections til LINUX maskinens og MASQ forbindelserne: ipchains -A EXT -j -p tcp --dport 56000:65096 -j ACCEPT ipchains -A EXT -j -p udp --dport 56000:65096 -j ACCEPT # Indsæt her de regler der skal åbne for Eks.vis ICQ. ipchains -A EXT -j -p tcp --dport 4000 -j ACCEPT ipchains -A EXT -j -p udp --dport 4000 -j ACCEPT # Alt du ikke åbner for bliver fanget herunder: ipchains -A EXT -j DENY -l
#-------- ipchains -A forward -s <internt_netværk> -i eth1 -j IN-EXT ipchains -A forward -s 0.0.0.0/0 -i eth0 -j EXT-IN ipchains -A input -d <intern_ip> -j IN ipchains -A input -d <extern_ip> -j EXT
den melder fejl ved disse: echo \"1\" > /proc/sys/net/ipv4/conf/icmp_echo_ignore_broadcasts echo \"56000 60999\" > /proc/sys/net/ipv4/ip_local_port_range den siger at de ikke eksisterer
Hmm det virker underligt at de ikke eksisterer. Du kan udkomentere dem. Hvis du kigger i din log fil kan du se hvilke klienter der prøver hvad så du kan åbne for det. Jeg går ud fra at du fik styr på modprobe og ipchains. En af fejlene du kan have er hvis du har misforstået <internt_netværk> den kunne se sådan her ud : 192.168.0.0/24 Nu var det noget jeg bare skrev ud af hovedet så der kan være der er tyrkfejl, men jeg synes at det ser ud til at der ikke umiddelbart er nogen fejl. Du har ikke nogen begrænsninger på hvilke forbindelser du kan oprette ud af dit net gennem MASQ\'en ud over at jeg har REJECT\'et netbios over IP som Windows maskiner er slemme til at sende ud til højre og venstre. Når du skal åbne for noget er det kun i forbindelse med at du loader nogle moduler. Hvis nogen skal oprette en ICQ forbindelse direkte til dig er LINUX maskinen\'s ICQmodul nødt til at kunne se hvis der er nogen som prøver at snakke med port 4000. Som det er nu er det kun forbindelser til port 56000-65096 der \'når\' ind til LINUX maskinen, resten bliver nuppet i den chain der hedder : ipchains -A EXT -j DENY -l Grunden til at man ikke bare kan lukke for alle initierende forbindelser til din LINUX maskine er at du så ikke kan køre FTP. Alle forbindleser du opretter gennem din MASQ chain er på porte der kan lytte. Grunden til at jeg har lavet scriptet så det lukker for alt der ikke er åbnet for er at du så ikke glemmer noget og at jeg ikke kan sige hvad du har åbent for. På denne måde er der ikke åbent for andet ind til din LINUX maskine end det der er defineret.
Hvis vi følger en IP pakke gennem en IPCHAINS er INPUT først, derefter FORWARD og til sidst OUTPUT.
Dette betyder at hvis du stopper noget i INPUT kan du ikke FORWARDE det.
Så hvis du checker din forbindelse med et PING for du ikke noget svar tilbage da der ikke er åbnet i EXT chainen for ICMP.
Prøv at åbne en consol som root og skriv : tail -f /var/log/messages Så for du en live update af din log fil og kan se hvad der biver fanget i din \'firewall\' på den måde kan du finde ud af hvad der skal åbnes for hvis du ønsker det .
HVis du ikke kan definere det lokale port range skal der ændres i scriptet. Så fortæl lige lidt om dine resultater. Jeg har lavet scriptet så du kan se hvad der foregår og det er let at overskue. Som du kan se er det ikke bare lige at lave den slags, men med lidt behændighed finder vi nok ud af det til sidst. Det er vigtigt at du prøver forstå hvad der sker i scriptet og hvorfor rækkefølgen er som den er.
skal der være \" om tallene i echo 1? og hvad med \"56000 60999\" skal det ikke skrives som: [56000;60999]? Jeg spørger måske dumt men jeg er total newbie :-)
Det er ikke nødvendigt at skrive \" om tallene, men det virker når du gør det. Nej der skal stå \"56000 60999\" Det eneste der er problemet med scriptet er at når du ikke kan definere local port range så er der i princippet lukket for LINUX maskinen selv da den så bruger porte fra 1024 -> 4999
Din MASQ bruger portene fra 61000 -> 65096
Så disse linier : # Accepter connections til LINUX maskinens og MASQ forbindelserne: ipchains -A EXT -j -p tcp --dport 56000:65096 -j ACCEPT ipchains -A EXT -j -p udp --dport 56000:65096 -j ACCEPT
Skal ændres til : # Accepter connections til MASQ forbindelserne: ipchains -A EXT -j -p tcp --dport 61000:65096 -j ACCEPT ipchains -A EXT -j -p udp --dport 61000:65096 -j ACCEPT # Accepter connections til LINUX maskinen: ipchains -A EXT -j -p tcp --dport 1024:4999 -j ACCEPT ipchains -A EXT -j -p udp --dport 1024:4999 -j ACCEPT
Det jeg så bare kan se som problem er at der så er åbent for de porte som du har i det område, men da din maskine ikke vil bruge dem til at afsende fra kan du lave en regel der stopper adgangen hertil. Hvis det er porte som du bruger i forbindelse med internettet er det dog kikset at lukke helt for dem, så du kan lave en regel der forbyder initierende forbindelser, men tilader at portene selv opretter forbindelser ud på internettet. Den vil hedde noget i retning af :
ipchains -A EXT -p tcp --dport 1113 -y -j DENY -l
Det denne regel gør er at forbyde SYN til port 1113, men tillader de efter flg. øvelser i en TCP pakkes liv.
ok sådan ser scriptet ud: # !/bin/sh # # Enable IP forwarding. echo \"1\" > /proc/sys/net/ipv4/ip_forward # Dræb fragmenterings bomber. echo \"1\" > /proc/sys/net/ipv4/ip_always_defrag # Fix din LINUX maskines porte til 56000-60999 echo \"56000 60999\" > /proc/sys/net/ipv4/ip_local_port_range # Slå ICMP broadcast replying fra. echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Dræb spoffede pakker for file in /proc/sys/net/ipv4/conf/all/rp_filter do echo \"1\" > $file done
# Load de moduler du skal bruge heyada yada yada ........ /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_ftp
# IPchains regler herefter /sbin/ipchains -F /sbin/ipchains -X # Regelsæt for pakker mod internettet: /sbin/ipchains -N IN-EXT # regelsæt for pakker mod lokal nettet: /sbin/ipchains -N EXT-IN # regelsæt for pakker mod det externe interface: /sbin/ipchains -N EXT # Regelsæt for pakker mod det interne interface: /sbin/ipchains -N IN
#----------- /sbin/ipchains -A EXT-IN -j DENY -l
#----------- /sbin/ipchains -A IN-EXT -p tcp --dport 135:139 -j REJECT /sbin/ipchains -A IN-EXT -p udp --dport 135:139 -j REJECT /sbin/ipchains -A IN-EXT -i eth1 -j MASQ
#--------- /sbin/ipchains -A IN -j ACCEPT
#--------- #Accepter skidt til linux og masq /sbin/ipchains -A EXT -j -p tcp --dport 56000:65096 -j ACCEPT #/sbin/ipchains -A EXT -j -p udp --dport 56000:65096 -j ACCEPT # Indsæt her de regler der skal åbne for Eks.vis ICQ. #/sbin/ipchains -A EXT -j -p tcp --dport 4000 -j ACCEPT #/sbin/ipchains -A EXT -j -p udp --dport 4000 -j ACCEPT # Alt du ikke åbner for bliver fanget herunder: #/sbin/ipchains -A EXT -j DENY -l
#-------- /sbin/ipchains -A forward -s 192.168.0.0/4 -i eth1 -j IN-EXT /sbin/ipchains -A forward -s 0.0.0.0/0 -i eth0 -j EXT-IN /sbin/ipchains -A input -d 192.168.0.0/4 -j IN /sbin/ipchains -A input -d 212.242.162.173 -j EXT
det der ikke virker nu er: /sbin/ipchains -A EXT -j -p tcp --dport 56000:65096 -j ACCEPT #/sbin/ipchains -A EXT -j -p udp --dport 56000:65096 -j ACCEPT # Indsæt her de regler der skal åbne for Eks.vis ICQ. #/sbin/ipchains -A EXT -j -p tcp --dport 4000 -j ACCEPT #/sbin/ipchains -A EXT -j -p udp --dport 4000 -j ACCEPT den melder fejl ved dem. Hvad er der ivejen med de kommandoer?
Jeg kan se at jeg i min nytårs brandert har sat et \'-j\' ind efter \'EXT\' Væk med det så ruller det. -j kommer jo senere i linien og kan ikke være der 2 gange.
skal det se sådan ud: #Accepter skidt til linux og masq /sbin/ipchains -A EXT -p tcp --dport 56000:65096 -j ACCEPT /sbin/ipchains -A EXT -p udp --dport 56000:65096 -j ACCEPT # Indsæt her de regler der skal åbne for Eks.vis ICQ. /sbin/ipchains -A EXT -p tcp --dport 4000 -j ACCEPT /sbin/ipchains -A EXT -p udp --dport 4000 -j ACCEPT # Alt du ikke åbner for bliver fanget herunder: /sbin/ipchains -A EXT -j DENY -l
her er scriptet i sin helhed: # !/bin/sh # # Enable IP forwarding. echo \"1\" > /proc/sys/net/ipv4/ip_forward # Dræb fragmenterings bomber. echo \"1\" > /proc/sys/net/ipv4/ip_always_defrag # Fix din LINUX maskines porte til 56000-60999 echo \"56000 60999\" > /proc/sys/net/ipv4/ip_local_port_range # Slå ICMP broadcast replying fra. echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Dræb spoffede pakker for file in /proc/sys/net/ipv4/conf/all/rp_filter do echo \"1\" > $file done
# Load de moduler du skal bruge heyada yada yada ........ /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_ftp
# IPchains regler herefter /sbin/ipchains -F /sbin/ipchains -X # Regelsæt for pakker mod internettet: /sbin/ipchains -N IN-EXT # regelsæt for pakker mod lokal nettet: /sbin/ipchains -N EXT-IN # regelsæt for pakker mod det externe interface: /sbin/ipchains -N EXT # Regelsæt for pakker mod det interne interface: /sbin/ipchains -N IN
#----------- /sbin/ipchains -A EXT-IN -j DENY -l
#----------- /sbin/ipchains -A IN-EXT -p tcp --dport 135:139 -j REJECT /sbin/ipchains -A IN-EXT -p udp --dport 135:139 -j REJECT /sbin/ipchains -A IN-EXT -i eth1 -j MASQ
#--------- /sbin/ipchains -A IN -j ACCEPT
#--------- #Accepter skidt til linux og masq /sbin/ipchains -A EXT -p tcp --dport 56000:65096 -j ACCEPT /sbin/ipchains -A EXT -p udp --dport 56000:65096 -j ACCEPT # Indsæt her de regler der skal åbne for Eks.vis ICQ. /sbin/ipchains -A EXT -p tcp --dport 4000 -j ACCEPT /sbin/ipchains -A EXT -p udp --dport 4000 -j ACCEPT # Alt du ikke åbner for bliver fanget herunder: /sbin/ipchains -A EXT -j DENY -l
#-------- /sbin/ipchains -A forward -s 192.168.0.0/4 -i eth1 -j IN-EXT /sbin/ipchains -A forward -s 0.0.0.0/0 -i eth0 -j EXT-IN /sbin/ipchains -A input -d 192.168.0.0/4 -j IN /sbin/ipchains -A input -d 212.242.162.173 -j EXT
De linier der åbner for port 4000 på det EXTerne interface er kun et eksempel for hvordan det skal se ud med ICQ moduler loaded. Hvis du vil have en ide om hvad der går galt med din IRC så prøv at skrive tail -f /var/log/messages Så får du en live update over hvad der nægtes adgang til i dit firewall script mens du laver en IRC session. Prøv også at lave en netstat -l så du kan se hvilke porte der er åbne på din maskine. Der findes en fil der hedder /etc/services den indeholder en liste over port numre og navne. Prøv at skrive netstat -nap Så får du en liste over hvilke programmer der lytter på hvilke porte. Så kan du også se hvilke porte som dit IRC modul lytter på.
Jeg fatter absolut 0% af det her! Burde det ikke være nok at skrive: /sbin/modprobe ip_masq_irc? Jeg aner ikke hvordan jeg skal konfigurere det. Jeg får ikke noget brugbart ud af tail og netstat viser intet med irc, og jeg har ikke brug for at lukke mere AF jeg skal have lukket OP.
Yes, du kan bare ændre de linier der hedder noget med : EXT til en linie der hedder /sbin/ipchains -A EXT -j ACCEPT Så har du åbent for ALT ind til din LINUX box.
Du bør blokere de porte og protokoller som du ikke mener skal være offentlige tilgængelige.
Dette er min gamle konfiguration, kan denne ikke udvides? Det burde da ikke være så svært at få den til at åbne for noget så simpelt som en Irc-Fserve?
Fortæl hvad den gør og jeg skal fortælle dig hvad du skal gøre ;-)
Umiddelbart kunne jeg forestille mig at dit problem er at der udefra skal oprettes en aktiv session til din klient. Før det kan lade sig gøre skal du finde hvilken port der skal bruges og åbne for den, derefter skal den så forwardes ind til den maskine som du bruger med fserve.
damn hvor føler mig dum :-) Problem var uhyre simpelt... det er et velkendt problem at klienterne til ip masqueraded server ikke kan oprette DCC sends i irc. Problemet lå slet ikke i firewall konfigurationen men simpelthen i configurationen af irc-klienten svaret var simpelthen at finde på IP-Masquerading hjemmeside: http://www.e-infomax.com/ipmasq/howto/ipmasq-HOWTO-1.95c-7.html#ss7.25
Nå men ellers tak for jeres forsøg. Og victor du får pointene for du prøvede sgu ihertigt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.