|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
Quote:
non è il massimo della pulizia, ma far passare tutti i pacchetti per il mio programma non mi esalta molto. tra il passaggio in user space, il mio demone e il ritorno indietro ho paura che alla fine pesi troppo. che ne pensi? pensandoci meglio la regola per i new deve essere all'inizio, altrimenti i processi con lo stesso pid e la stessa porta di uno vecchio lo lascia passare. ciao! |
|
![]() |
![]() |
![]() |
#22 | |||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
Potresti "rilassare" i requisiti; ovvero se l'oggetto da testare è rwx--x--x root.root, lo consideri "affidabile". Quote:
Per inserire una regola a partire dalla seconda (o ennesima) posizione, puoi usare -I (invece di -A), ma se usi -m state potresti considerarlo superfluo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 Ultima modifica di ilsensine : 15-06-2005 alle 20:48. |
|||
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
secondo voi far accettare al demone solo connessioni da 127.0.0.1 è corretto?
con quell'inidirizzo posso essere certo che mi stia tornando indietro dall'interfaccia di loopback o esiste un modo per controllarlo meglio? intedo una sorta di controllo sull'interfaccia di entrata. ciao! |
![]() |
![]() |
![]() |
#24 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
aaaaaaaaaaaaaaaaaaaaaah!
ho sviluppato parte del demone dopo aver riletto tutto il possibile. ho lasciato una bellissima funzioncina che doveva prendere il pid in sospeso. ora ho provato a svilupparla e....... aaaaaaaaaaaaaaaaaaaaaaah!!! il pid è sempre 0 ![]() ![]() che può ssere successo? ho anche riscritto un altro programmino (praticamente copiato da man), ma il risultato non cambia ![]() Codice:
#include <linux/netfilter.h> #include <libipq/libipq.h> #include <stdio.h> #define BUFSIZE 2048 static void die(struct ipq_handle *h){ ipq_perror("passerr"); ipq_destroy_handle(h); exit(1); } int main(){ int status; unsigned char buf[BUFSIZE]; struct ipq_handle *h; h = ipq_create_handle(0,PF_INET); if(h == NULL){ die(h); } status = ipq_set_mode(h,IPQ_COPY_META,0); if(status < 0){ die(h); } while(1){ status = ipq_read(h,buf,BUFSIZE,0); if(status < 0){ die(h); } switch(ipq_message_type(buf)){ case NLMSG_ERROR: fprintf(stderr,"Recived error: %d\n",ipq_get_msgerr(buf)); break; case IPQM_PACKET:{ ipq_packet_msg_t *m = ipq_get_packet(buf); fprintf(stderr,"pid: %ld , %u \n" ,m->timestamp_usec, m->packet_id); status = ipq_set_verdict(h,m->packet_id,NF_ACCEPT,0,NULL); if(status < 0){ die(h); } break; } default: fprintf(stderr,"Unknown message type\n"); break; } } return 0; } ![]() |
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
mi correggo, stampa zero come intero, ma il campo sembra essere NULL
ciao! |
![]() |
![]() |
![]() |
#26 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
Quote:
l'espressione risulta falsa e allora ci piazza zero. cosa è quell'affare che controlli? ![]() ciao! |
|
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Puoi mettere una
printk("pid: %d\n", pmsg->timestamp_usec); nella ip_queue.c, dopo l'assegnazione? (così dmesg dovrebbe stamparti quello che trova) Quale regola di iptables usi per mandare un queue i pacchetti?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#28 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
Quote:
Codice:
if(entry->skb->sk->sk_socket->file) printk("si\n"); else printk("no\n"); pmsg->timestamp_usec = entry->skb->sk->sk_socket->file ? entry->skb->sk->sk_socket->file->f_owner.pid : 0; printk("pid: %d\n", pmsg->timestamp_usec); ![]() il punto è che non trovo nemmeno la definizione di sk ![]() ciao |
|
![]() |
![]() |
![]() |
#29 | ||
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
ho sistemato il programmino, ora anche lui trova un pid valido e uno zero....
Quote:
![]() se lancio due ping insieme (la regola è sugli icmp) ho: Quote:
![]() per ora metto un controllo che mi escluda lo zero, intanto non credo che sia un pid valido. ciao! |
||
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
ah, la ho provata sull'input!
il sistema si freeza ![]() avevavi ragione. però sto continuando con l'idea di netstat per l'input, non mi sembra malissimo. ciao |
![]() |
![]() |
![]() |
#31 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
![]() In altre catene puoi andare da un crash ( ![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#32 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
ok, ultima domandona!
quando avevi detto che aggiungedno un record alla struttura avrei dovuto ricompilare iptables hai sottointeso anche delle modifiche? o posso semplicemente cambiare la dichiarazione e ricompilarmi il mio bel iptables? ciao! |
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Dipende se i sorgenti di iptables definiscono per conto proprio quella struttura, oppure usano gli header del kernel. Non ho controllato.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
controllerò con il mio solito metodo barbaro
![]() grazie di nuovo ciao! |
![]() |
![]() |
![]() |
#35 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
non sono scomparso!
![]() volevo un parere. prima che riceva la prima connessione di un client (quello che si occupa di chiedere all'utente se vuole accettare o no le connessioni) come mi dovrei comportare? rifiuto tutto? accetto tutto? accetto solo quello che ha i privilegi di amministrazione? ciao! |
![]() |
![]() |
![]() |
#36 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Non è che sei molto chiaro...
Per "client" intendi "programma locale che vuole connettersi fuori"?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#37 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
Quote:
![]() ho un demone che gira che prende i pacchetti nuovi con ipq, confronta gli md5 attuali con quelli del suo database (ho usato il berkeley). quando non li trova prende i dati, e fa una richiesta all'utente. la comunicazione tra il demone e l'utente ho pensato di realizzarla con dei socket locali (non so se si dice così, cmq ho usato AF_LOCAL). in pratica il demone quando trova md5 errati o non ha record sul programma manda le informazioni al client dell'utente che ha avviato il programma che si crea la sua finestrella e chiede all'utente. la prima soluzione che mi sono pensato per evitare di intercettare pacchetti prima di avere qualcuno che mi dica che fare mi sono pensato di aspettare prima una connessione. a parte che questo lascia la parte di avvio quasi completamente scoperta (qui bisogna mettere delle regole di default), ma mi impedisce anche di avere più connessioni da più client dato che una fork mi sdoppierebbe anche la parte di creazione dell'handler delle ipq. c'è anche da dire che difficilemnte troveremo un pc che ha più utenti collegati, ma dato che a livello di righe di codice costerebbe relativamente poco mi sarebbe piaciuto implementarlo. il programma quindi una volta avviato dovrebbe avere un comportamento di default in attesa della prima connessione del client. potrei lasciarlo configurare all'utente, ma allora l'obbiettivo del programma si vanifica (dovrebbe comunque mettere le mani a iptables per avere delle regole di default). potrei accettare trutto quello che viene da root... potrei accettare le estabilished e le related, ma vanificherei il filtro sull'output... spero di essere stato più chiaro ![]() cmq ora vado in vacanza! continuerò il 9 agosto al ritorno ![]() ciao |
|
![]() |
![]() |
![]() |
#38 | |||||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Continua a non essere chiarissimo, comunque vediamo...
Quote:
Come "autentichi" l'applicazione utente che si connette al socket per dialogare con il demone? Quote:
![]() Quote:
...cosa dicevi riguardo al fork? Quote:
Le connessioni established,related puoi farle sempre passare tramite iptables. Non c'è motivo di riverificarle ogni volta, e renderebbe la rete lentissima. Puoi adottare la soluzione più semplice: se non ci sono client connessi, _quindi_ non ci sono utenti loggati, blocchi tutto. Quote:
![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|||||
![]() |
![]() |
![]() |
#39 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
sono tornato!
ho speso un pacco di tempo a rifattorizzare il codice, ora è diventato di dimensioni irrisorie, e si legge che è un piacere ![]() Quote:
e ora l'ultimo problema (in realtà la parte del kernel la ho lasciata un pochino indietro... ![]() si collega l'utente pippo al mio demone. secondo te dovrei aspettare anche altre connessioni? complica di brutto la gestione del codice (e del database) e non so che uso se ne potrebbe fare..... su un desktop dubito ci saranno mai due utenti collegati insieme. che ne dici? ciao! |
|
![]() |
![]() |
![]() |
#40 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
dai dai!!!
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:26.