/* GuiDa AL MoNDo UNiX */
/* Tutto Su Unix,Iptables,Samba client,Nmap e Settaggio verliHub */
By SaTaNa

      /* GUIDA AL MONDO UNIX BY SATANA */


Linux Proviene da minix e quindi come sistema base si attiene a quella dei sistemi Unix.Esistono Varie Distribuzioni d Linux
Quasi tutte aderenti all'idea dell'Open Source. L'Open source nn vuol dire gratuito,vuol dire che un determinato software
venga distribuito con il codice sorgente ma nn vuol dire che deve esser fornito con setup e utilities varie.
Il cuore di questo sistema operativo è il Kernel, il quale scopo è quello di gestire l'hardware sella makkina, la sikurezza e la rete.
In fase di installazione è possibile rikiedere i sorgenti per lo sviluppo del kernel.
cmq i codici sorgenti si trovano nella directory /usr/src :P.
Questi vengono dati nel caso il sistema operativo viene rikonfigurato e bisogna ricompilare tutto.
Ora vi illustro le principali cartelle o files usati in Unix e la loro definizione:
/apps                                           Contiene le applicazioni dell'utente
/etc                                              Contiene i file d sistema che possono essere modificabili solo da un super user
/etc/hosts                                      I nomi degli host usati e dei relativi IP
/etc/hosts.Deny                             L'elenco degli host che nn hanno permesso per accedere al sistema
/etc/hosts.equiv                            Questi invece sono gli host che hanno i permessi
/etc/motd                                     Messaggio Del Giorno
/etc/password                              File Di Passwords
/etc/Protocols                              Elenca tutti i protocolli d internet
/etc/sendmail.cf                           Il mail sender deamon's
/etc/shadow                               Il database delle password Shadowed
/etc/ttys                                     I Terminali attivi
/mail                                         Mail Per root
/dev                                         Database con tutti i device contenuti
/tmp                                         Directory Temporanea
/usr                                           Dove sono contenute le directory degli utenti
/usr/bin                                     I file eseguibili dagli utenti
/var                                          Directory Varie per gli utenti
/adm                                        Riservata ai files d'amministrazione
/var/adm/lastlog                       La data dell'ultimo login degli utenti

Queste sono le più imporanti directory che rikordo per unix.Invece la directory dove linux gestisce il device d rete è :
/etc/sysconfig/network.scripts   (molto importante) i vari file d interfaccia sono : ifcfg-ethN8n sta per numero d'interfaccia)
ad esempio la prima interfaccia è ifcfg-eht0 la seconda ifcfg-eht1 ecc ecc...
Con il comando ifconfig vediamo le interfaccie attive a altri file importante che scordavo è il lilo.conf cioè dov'è costituito il boot loader
di linux scusate se l'avevo dimentikato :P.
Una parte molto importante e che rende spettacolare linux è sikuramente il firewall.Il sistema d filtraggio dei pakketti di unix avviene tramite network.
Inoltre il firewall permette il maskeramento dell'ip cioè l'ip potra essere visibile sulla rete tra gli ip che vengono definiti pubblici.
La gestione e il settaggio dei files del firewall avviene sotto  /etc/rc.d/init.d/ tra cui cìè il piu importante che è /etc/rc.d/init.d/Firewall.
Dentro questo file vengono gestite le regole del firewall, mentre dentro al file named.conf  dove vengono definiti i server di gestione dei dns.
Un altro server importante su unix è il send mail i quali file allegati più importanti sono:
/etc/mail/access
/etc/aliases
/etc/sendmail.cw
/etc/sendmail.mc
Invece parlando in server APACHE i file d settaggio si trovano invece in /usr/local/Apache/conf esattamente nel file httpd.conf
Ora vi illustro i comandi principali di UNIX (piu che principali quelli che ricordo)
awk (cerca la stringa in un file)
bg (fa ripartire un processo)
cal (calendario)
cc (Editor in c)
cd (cambia la directory corrente)
chgrp(cambia il gruppo di appartenenza dei files)
chsh (cambia la shell in un file delle password)
clear (pulisce lo skermo)
cmp ( paragona due file)
date (visualizza data e ora)
df (visualizza lo spazio libero di un determinato file system)
du (visualizza l'utilizzo del file system)
echo (visualizza sull'stdout la linea d testo passata come argomento)
ed (editor di testo)
emacs (altro editor d testo)
find (trova dei file)
ftp (ftp)
head ( visualizza l'inizio di un file)
help (visualizza l'aiuto)
hostname (visualizza il nome dell'host)
kill (kiude un processo)
ksh ( la mitica korn shell)
In (linka i files)
ipq (vedi la coda di stampa)
Is (visualizza i file contenuti in una directory)
mail (invia una mail)
man (manuale online)
mkdir ( crea una nuova cartella)
mv (rinomina un file)
passwd (cambia la propria password)
pico (altro editor di testo)
ps (visualizza lo stato dei processi)
rm (cancella un file)
rmdir (cancella una cartella)
sh (shell bourne)
sleep (mette in pausa un processo)
split (splitta un file tra piu file)
talk (chat di testo)
telnet (Il mitico emulatore di terminale)
uucp (sistema per la copia d file)
uudecode (decodifika un file)
uuencode (codifica un file binario)
who (visualizza chi è nel sistema)
whois (cerca un utente in remoto)
write (invia un messaggio ad un utente)
Parte molto importante di unix sono i suoi "demoni" i comandi che partono in bootstrap che rimangono sempre in esecuzione.
nel comando ps  -eaf  vengono fatti visualizzare dopo il processo di init 1,quando init fa partire un demone invia una stringa allo script con "start",
quando lo vuole fermare "stop".
Questi due programmi importanti che reagiscono alle stringhe inviate da init prendono il nome di kndemone e sndemone.Vedere bene nella cartella
/etc/rc.d/init.d. esempio di un comando che termina tutti i processi è shutdown -h how che provoca un kill d tutti i provessi.
un altro demone assai importante è cron che prevede di eseguire dei comandi a tempo per i singoli utenti loggati comandi come:
netstat oppure per vedere quali demoni stanno ascoltando in det porte netstat -na|grep -i listen oppure per vedere le connessione in esterno
netstat -na|grep -i poi per vedere i pacchetti che passano dalla scheda d rete s fa tcpdump o tcpdump -n
per vedere lo stato in rete di un computer ping -f nomecomputer Es:(ping -f Rossi) ultimi messaggi di sistema con
tail-f/var/log/messages  sotto red hat vedere i programmi installati si fa con rpm -qa altri comandi vari:
unzippare o startare un file : gunzip < file.tar.gz | tar xvt -
per spostare un programma in backgroud: CTRL -z
per trovare le cartelle che occupano d piu in C: du -k nomecartella|sort -r -n|less
per leggere un dischetto msdos da root: mount -t msdos /dev/fd0/mnt/floppy.
chat (1 bytes)
int   (2 bytes)
long (4 bytes)
IPTABLES
Iptables e' per i kernel della serie 2.4 l'equivalente di Ipchains per i kernel della serie 2.2. Sostanzialmente e' l'applicazione che gira auserspace, attraverso la quale si "pilotano" le possibilita' di packet filtering offerte dal kernel. In realta' questa e' una semplificazione,perche' Iptables e' anche parte di Netfilter...ma conviene pensare che netfilter stia a livello kernel e iptables a userspace.

Quando ci riferiamo ad una tabella di regole di iptables intendiamo una ‘catena’, un insieme di regole concatenate fra loro che vanno ad agire sulle intestazioni IP dei pacchetti per verificarne la corrispondenza. Con il comando "iptables -L -n" siamo venuti a conoscenza delle tre catene di iptables :

INPUT
FORWARD
OUTPUT


In un precedente articolo riguardante il Nat  abbiamo visto con il comando "iptables -t nat -L -n" le catene del NAT o MASQUERADING:

POSTROUTING
PREROUTING


Ma come orientarci nel loro corretto uso? INPUT e OUTPUT sono due catene che agiscono specificatamente sui pacchetti i quali, destinazione o sorgente, riguardano soltanto il nostro host locale. La prima comprende quelli in entrata (da un host verso il nostro pc), l'altra quelli in uscita (dal nostro host verso un altro pc). FORWARD è specificatamente riservata ai pacchetti che passano (in gergo “forwardati”) da un'interfaccia all'altra (chi è rimasto fedele a ipchains vada a vedere il paragrafo delle "differenze" per un concetto più ampio).
Pensate invece che le catene POSTROUTING e PREROUTING agiscano concettualmente agli estremi della firewall una alla fine e l'altra all'inizio c. Le catene contengono le regole (ogni regola è un anello della catena), dove per ordine di "altezza" ogni regola è assegnata ad un numero, come se iptables assegnasse un ordine gerarchico alle regole, la prima regola ad essere letta è appunto la prima (quella che sta più in alto), e finchè il pacchetto non è influenzato da nessun'altra regola iptables continua a scendere di "anello in anello" leggendo tutte le regole fino alla fine della catena (in questo caso il pacchetto passa attraverso la firewall tranquillamente fino a raggiungere i processi interni dell'OS).
Premesso ciò mi è obbligatorio sottolineare che la prima regola è capace di annullare tutte le altre anche se ancora non siamo arrivati all'analisi della sintassi di iptables è bene che lo teniate a mente.

I comandi di Iptables
Per impartire comandi a iptables dobbiamo rispettare una sintassi semplice ed intuitiva.
comandi di iptables:
-A = append, appende una regola, seguono a questo comando il nome della catena, eventuali opzioni ed il target.
-D = delete, segue a delete il nome della catena e il numero di una regola (es . iptables -D OUTPUT 4 : la quarta regola a contare dall'alto della catena OUTPUT). Questo comando cancella la regola selezionata.
-C : check, segue il nome della catena e il numero della regola. Effettua un test.
-I = insert, inserisce una regola nella catena (in pratica la "infila" tra 2 regole, se l'avesse "appesa" sarebbe apparsa come l'ultima regola della catena, e sarebbe stata influenzata dalle precedenti) è obbligatorio il nome della catena e il numero con cui vogliamo inserire la regola (se 1 diventa la prima, se 2 la seconda..etc)
-R = replace, in pratica fonde i comandi Insert e Delete. Sostituisce una regola con un'altra.
-F = flush, se usato senza specificazione cancella tutte le regole di tutte le catene, altrimenti specificare il nome della catena.
-L = list, abbiamo già analizzato questo comando precedentemente.
-Z = zero, azzera i contatori della catena (se specificata) o di tutte le catene.
-N = new, crea una nuova catena. Segue a questo comando il nome della catena.
-X = cancella una catena che avete creato con -N, va specificato il suo nome.
-P = policy, è la politica del firewall (vedere paragrafi successivi) ed è seguita dal nome della catena e dal target.
-E = rename, rinomina una catena, da inserire obbligatoriamente il vecchio nome della catena ed il nuovo.
-h = help, è l'help!


Le opzioni di Iptables
Le opzioni seguono il nome della catena ed alcuni di essi hanno bisogno di moduli specifici; se avete seguito le indicazioni di questo articolo non riscontrerete nessuna difficoltà nell'applicazione di essi in una regola.

L'opzione "!" non è obbligatoria ma può essere applicata alle opzioni per invertirne il significato.
-p = protocol, segue il nome del protocollo, icmp, udp, tcp o all (per avere specifiche su "all" consultare /etc/protocols)
-s = source, specifica l'indirizzo sorgente, in pratica l'host/ip da cui arrivano i pacchetti. Può essere specificata anche una netmask o una porta applicando come seguente: -s 1.1.1.1/24 o -s 194.168.0.5/255.255.255.0 per la netmask, per la porta invece -s 194.168.0.5:21.-d = destination, è l'ip dove sono diretti i pacchetti. Di solito è il nostro ip, e sono possibili le stesse specificazioni di -s.
-i = interface, serve a specificare l'interfaccia d'input. Al nome dell'interfaccia, eth0, ppp1 etc.etc. possiamo applicare la variabile + per specificare un'interfaccia attiva. Es -i ppp+, se l'interfaccia ppp0 è attiva ppp+ assumerà il valore di ppp0.
-o = output/interfaces, è l'interfaccia di uscita usata nelle catene OUTPUT e POSTROUTING, catene che con l'opzione precedente non hanno applicazioni (se i pacchetti escono che c'entra l'interfaccia d' entrata?).
-j = è la fine che facciamo fare ai pacchetti. ACCEPT, DROP, RETURN etc.etc.
-n = fornisce un output numerico di porte ed indirizzi ( es. iptables -L -n).
-v = verbose, o " -vv" per avere un listato delle regole attive più dettagliato. Per capirlo a fondo provate con:

$/sbin/itpables -L -vv


-x = exac, se i contatori dei pacchetti o dei byte sono utilizzati visualizzano un output numerico al posto di K, M o G (kilobyte, megabyte, gigabyte).
-f = fragment, la regola si riferisce al secondo frammento o ai successivi. E' applicata sui pacchetti frammentati e può essere preceduto da "!" per controllare solo gli "head fragments" o "unfragment packets". Frammentati? Durante una connessione in rete spesso capita che un pacchetto venga frammentato per la sua eccessiva grandezza. Immaginiamo un pacchetto che per le sue dimensioni viene suddiviso in 2 parti, la prima (head fragment) con l'intestazione, che va a soddisfare o meno le regole del firewall, la seconda senza. Iptables potrebbe confondersi e scartare uno o più frammenti di un pacchetto.
--tcp-flags = applicabile solo se specificato il protocollo tcp. Questa opzione verifica i flags dei pacchetti per trovarne la corrispondenza.
Se vogliamo analizzare i flags SYN, FIN, RST e ACK ma accettare solo i SYN e ACK (pacchetti di risposta di avvenuta connessione) utilizziamo la seguente sintassi. Come noterete i flags accettati sono divisi dal resto non con una virgola ma con uno spazio:

-p tcp --tcp-flags SYN,FIN,RST,ACK SYN,ACK


--syn = valida solo se applicata al protocollo tcp. Questa regola specifica soltanto i pacchetti di risposta ad un'avvenuta connessione (è esattamente l'abbreviazione dell'esempio precedente sui flags).
--icmp-type = valida solo se applicata al protocollo icmp (-p icmp), questa regola specifica a quale categoria di icmp packets la regola deve trovare applicazione. Per visualizzare tutti i tipi di pacchetti icmp digitare:

$/sbin/iptables -p icmp -h
--mac-source = valida dopo l'opzione -m mac come il seguente esempio
-m mac --mac-source 00:00:ab:c0:45:a7
questa opzione serve a specificare l'applicazione della regola su un'indirizzo sorgente MAC.
--limit = imposta un limite, una frequenza massima di una regola. La frequenza può essere specificata in un periodo con /hour, /minute, /second, /day. Ad esempio, se vogliamo che il nostro server non accetti più di una connessione alla volta per secondo basta usare -m limit con l'opzione -p tcp --syn. Il seguente esempio vi mostra la corretta sintassi:
-m limit --limit 1/sec

--limit-burst = è complementare a --limit ed è seguito da un numero, quello di default è 5. Ogni volta che un pacchetto soddisfa l'opzione --limit, --limit-burst fa da massimo burst (raffica) prima che il limite succitato li respinga. Anche se a prima vista possa sembrare inutile, limit e limit-burst si possono rivelare come delle ottime soluzioni a vari tipi di flood, come ad esempio i syn-floods:
$iptables -A FORWARD -p tcp --syn -m limit 1/sec -j ACCEPT

--port = questa opzione è valida solo con -m multiport e -p tcp, -p udp, e viene applicata quando sia la porta sorgente che quella di destinazione sono uguali.
--mark = riguarda i pacchetti con un valore mark. Questo valore va impostato con il target MARK che verrà trattato successivamente.
--uid-owner = valido solo per la catena OUTPUT ed è seguito da l'id di un utente. Funziona solo per i pacchetti creati sul pc locale.
--gid-owner = uguale al precedente, unica differenza che comprende i gruppi e non gli utenti.
--pid-owner = a differenza dei precedenti in questa opzione va applicato l'ID di un processo (PID).
--sid-owner = segue questa opzione l'ID di una sessione.
--state = questa opzione identifica lo stato di una connessione TCP con i seguenti valori:
NEW: connessione appena stabilita o in stallo.
ESTABILISHED: connessione stabilita.
RELATED: nuova connessione "relativa" ad una connessione stabilita (come ad esempio dei messaggi d'errore icmp inerenti ad una connessione ).
INVALID: riguardano i pacchetti di scansione.
-m state "VALORE"

unclean = quest'opzione è adatta per specificare i pacchetti inusuali o creati male, dato che è ancora in fase sperimentale ne sconsiglio l'uso. La sintassi è -m unclean.
hi pensa che le opzioni di iptables siano finite si sta illudendo pietosamente, infatti passiamo ora ad analizzare meglio il già citato "type of service" (tipo di servizio).

--tos = è un'opzione usata per soddisfare una TOS MASK (vedere tabella di riferimento). Qui rappresentato uno stralcio di regola:
-m tos--tos 16

TOS specifica i pacchetti relativi a determinati tipi di servizi, e può essere impostato indipendentemente a netfilter dal target....

…e iniziamo con i targets...
TOS = permette l'impostazione del valore del "type of service" ed è valido sono nelle catene di OUTPUT e PREROUTING. Segue il seguente argomento obbligatorio che "può" contenere uno dei valori numerici della tabella dedicata, per visualizzare con iptables una lista di "valid TOS names" digitare da prompt:

$iptables -j TOS -h

la sintassi per impostare il valore è la seguente:

--set-tos "numeroTOS"


Policy e Targets
I Targets, o in parole spicciole, dove vogliamo destinare i pacchetti che soddisfano le caratteristiche di una regola, sono specificati nelle regole e sono valori che determinano o meno l'entrata, il forwarding, l'uscita, il logging, il mascheramento etc.etc. di uno o più pacchetti. A differenza dei Targets la Policy è sì, applicata ad una regola, ma agisce nei confronti di un'intera catena. Per Policy si intende la politica adottata in una catena, ogni catena ne ha una di default che ha come valore ACCEPT.
Il seguente esempio ci svela la sua applicazione nella catena di FORWARD:

$iptables -P FORWARD -j DROP

Questa regola cambia la FORWARD's policy di default in DROP, se non appendiamo nessuna regola che permetta una "via di fuga" per i pacchetti, nessun pacchetto verrà forwardato dal nostro pc.
Eccovi esposta un piccolo firewall con policy "paranoica" e con l'aggiunta delle sopraccitate "vie di fuga" per permettere al pc alcune transizioni indispensabili:

$iptables -A INPUT -s 127.0.0.1/255.0.0.0 -j ACCEPT
$iptables -A INPUT -s ip/range -j ACCEPT
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$iptables -P INPUT -J DROP


La precedente è un firewall con policy DROP in INPUT, non accetta nessun genere di pacchetto dall'esterno se non quelli espressamente specificati nelle regole della catena.
La regola n° 1 specifica che tutti i pacchetti provenienti dal nostro pc locale devono essere accettati (altrimenti iptables rifiuta anche quelli!).
La regola n° 2 specifica che tutti i pacchetti provenienti dalla nostra piccola rete LAN devono essere accettati.
La regola n° 3 lascia passare dall'esterno soltanto i pacchetti destinati sulla porta 22 di protocollo tcp (di solito quella porta è abbinanta a ssh).
La regola n° 4, quella che precede la Policy, accetta dall'esterno soltanto le risposte dei ping (detti pong). Ed infine abbiamo inserito la Policy (se l'avessimo inserita prima delle regole avremmo avuto difficoltà nell'interagire con il nostro pc... eheheh, è assurdo ma vero, iptables se vuole essere paranoico ci riesce veramente bene!), per rendere raggiungibile dall'esterno soltanto la porta 22 (almeno in INPUT ).
Abbiamo parlato di Targets e Policy, vediamo le loro caratteristiche fondamentali:

ACCEPT = accetta i pacchetti specificati nella regola.
DROP = rifiuta i pacchetti specificati nella regola.
REJECT = come DROP, unica differenza che restituisce all'host sorgente un messaggio d'errore che possiamo decidere con la seguente opzione:
--reject-with-type = quest'opzione vi permette di cambiare il messaggio predefinito "icmp-net-unreachable" in icmp-host-unreachable, icmp-port-unreachable o in icmp-proto-unreachable.
RETURN = ha lo stesso effetto di quando si arriva alla fine di una catena: se l'ultima regola appartiene a una catena predefinita, allora viene eseguita la tattica della catena. Altrimenti se appartiene ad una catena definita dall'utente, si prosegue con la catena precedente, con la regola successiva a quella che aveva causato il salto nella catena dell'utente.
QUEUE = è un gestore delle code, il suo compito è quello di accodare i pacchetti per elaborazioni "userspace". Per funzionare ha bisogno del modulo "ip_queue".


Tutti i seguenti target hanno bisogno di un loro specifico modulo:


LOG = effettua il logging dei pacchetti che soddisfano la regola. E' consigliabile associare a questo target la precedente opzione -limit. I seguenti argomenti sono facoltativi:
--log-level = permette di specificare il livello di logging.
--log-prefix = permette di aggiungere un massimo di 14 caratteri all'inizio del log per identificarne il tipo.
--log-tcp-sequence = logga i numeri di sequenza tcp.
--log-tcp-options = logga il campo options dell'instestazione del pacchetto tcp.
--log-ip-options = uguale al precedente soltanto che è valido per i pacchetti ip.
MARK = è valido solo nella tabella mangle ed associa al pacchetto un valore mark.
--set-mark "valorenumerico"
MIRROR = inverte gli indirizzi sorgente/destinazione dei pacchetti. E' valido nelle catene INPUT, OUTPUT e FORWARD ed è ancora in fase sperimentale.
SNAT = Source NAT, richiede la tabella nat ed è valido nella catena di POSTROUTING. E' stato trattato in un articolo (maggio 2002) precedente insieme ai seguenti targets.
DNAT = Destination NAT, valido in PREROUTING.
MASQUERADE = valido nella tabella POSTROUTNG.
REDIRECT = valido solo in PREROUTING, OUTPUT o in una catena definita dall'utente, questo target effettua un redirect sui pacchetti all' host locale.
--to-ports = valido con protocolli tcp e udp questa opzione seguente REDIRECT ci permette di modificare le regole euristiche di selezione della porta predefinita.


Strategie
Finora ci siamo occupati dell'analisi dei comandi, opzioni e targets di iptables, ora bisogna decidere come mettere insieme più regole nelle catene per ottenere un firewall sicuro. Tutto dipende dalla strategia che intendete adottare per il vostro firewall. Potete scegliere di piazzare un bel DROP come Policy sia in INPUT che in OUTPUT che in FORWARD e poi decidere minuziosamente quale pachetto deve entrare o uscire, oppure potete lasciare le vostre catene in ACCEPT e appendere soltanto le regole che ritenete necessarie per la vostra sicurezza.

Il primo passo da fare è conoscere i propri servizi e le proprie esigenze, chi meglio di netstat è capace di visualizzarle?!

$netstat -tau

con il listato di netstat potete capire che servizi attivi avete, attraverso quali protocolli stanno comunicando, lo stato in cui sono (leggere l'opzione -m state) gli indirizzi locali e gli indirizzi remoti, con queste informazioni bisogna plasmare il proprio firewall.
Una firewall semplice
Costruiamo un firewall minimalista per soddisfare le nostre esigenze casalinghe:

$iptables -F INPUT
$iptables -F OUTPUT
$iptables -F FORWARD

dopo aver ripulito le nostre catene andiamo ad appendere le regole. Ammettiamo di avere un X server, samba e ssh come servizi attivi:

$iptables -A INPUT -s 127.0.0.1 -j ACCEPT
$iptables -A INPUT -s 194.168.0.0/24 -j ACCEPT
$iptables -A INPUT -p tcp --dport 6000 -j DROP
$iptables -A INPUT -p all --dport 137:139 -j DROP
$iptables -A INPUT -p icmp --icmp-type echo-request
-j DROP
$iptables -A INPUT -p icmp ! --icmp-type echo-reply
-j DROP
$iptables -A INPUT -p udp --dport 33435:33525 -j DROP
$iptables -A FORWARD -p tcp --syn -m limit –limit 3/s
-j ACCEPT
$iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST
RST -m limit –limit 1/s -j ACCEPT


In INPUT le prime due regole le abbiamo già analizzate in precedenza, la tre e la quattro specificano di non far passare nessun pacchetto diretto al nostro X server o a samba, la cinque rifiuta gli echo-request mentre la sei risponde solo ai echo-reply inviati dal nostro host. In FORWARD la prima regola ci protegge dai Syn-Floods, la seconda da scans remoti sospetti. Come avete notato soltanto la nostra rete LAN raggiunge tutti i servizi del nostro pc, su internet soltanto ssh è stato reso raggiungibile con delle semplici precauzioni, e il nostro pc non ha nessun problema nel compiere azioni quotidiane su internet, come chattare o prelevare le e-mails.
Salvare le regole
Una volta settato il firewall è bene salvare le regole correnti (o attive) in modo tale da non dover riscrivere il tutto al prossimo boot della macchina. Gli utenti di Red hat o Mandrake possono ricorrere al seguente metodo:


$/sbin/iptables-save –c > /etc/syconfig/iptables

Chi utilizza distribuzioni differenti dovrebbe dare un’occhiata agli script di init.d inerenti iptables. Per Debian basta indicare a /etc/init.d/*iptables di salvare le regole attive:

/etc/init.d/*iptables save active

Per ogni necessità consultare in /usr/share/doc/*iptables* per avere specifiche sulle metodologie di salvataggio delle regole.


Io ho scritto un buon firewall in 3-4 righe d codice,che filtra determinati pakketti da una porta specifika e a seconda lo droppa
p rejetta su un determinato host

iptables -t filter -A INPUT -p ALL --dport 0:1025 -i eth0 -j REJECT
iptables -t filter -A INPUT -p tcp --syn --dport 0:1025 -i eth0 -j REJECT
iptables -t nat -A PREROUTING -p tcp --dport 0:1025 -i eth0 -j DNAT --to vecchibalordi.bug-hack.it:411
iptables-saves > esempio by satana


SAMBA CLIENT
Il primo programma da esaminare è smbclient che si usa fondamentalmente in due maniere:
smbclient -L nome_server_samba
per avere la lista delle risorse condivise dal servente; oppure:
smbclient nome_servizio [-U nominativo_utente]
per connettersi alla risorsa nome_servizio (ad esempio //serversamba/public). Se la connessione ha successo si ha a disposizione un'interfaccia testuale del tutto simile a quella del programma ftp tradizionale, dove si possono eseguire più o meno gli stessi comandi (get, put, cd, pwd, ecc.).
Un'opzione importante è -I seguita da un numero IP, con la quale si può appunto indicare il numero IP del servente a cui ci si vuole connettere.
Sicuramente l'interfaccia messa a disposizione da smbclient non è il massimo della comodità; sarebbe molto meglio poter disporre della risorsa condivisa da un'altra macchina come se fosse una risorsa locale. Anche questo si può ottenere con Samba, in particolare grazie a smbmount.
La sintassi è:
smbmount nome_servizio punto_di_innesto [-o opzioni]
Ad esempio:
# smbmount //serversamba/public /mnt/dirsamba -o username=tizio%parola_d'ordine
Per smontare la risorsa si può usare il comando:
smbumount punto_di_innesto
È anche possibile ottenere l'inserimento automatico della risorsa all'avvio di GNU/Linux con la riga seguente nel file /etc/fstab:
Per usare su una macchina GNU/Linux una stampante condivisa da una macchina MS-Windows, occorre impostare in modo opportuno il file di definizione delle stampanti GNU/Linux: /etc/printcap.
Ecco un esempio di righe di configurazione da aggiungere a tale scopo:
stsamba:\
   :mx=0:\
   :sh:\ 
   :sd=/var/spool/lpd/stsamba:\
   :lp=/dev/null:\
   :af=/var/spool/lpd/stsamba/acct:\
   :if=/usr/bin/smbprint:
Una breve spiegazione sul significato di queste righe è necessaria, anche se lo studio del file di configurazione delle stampanti in GNU/Linux esula dallo scopo di questo documento:
mx=0 indica nessun limite di grandezza dei file da stampare;
sd= indica la directory della coda per questa stampante;
lp=/dev/null indica che la stampante non è collegata ad alcuna porta (non è locale);
af= indica il nome del file per registrare le transazioni;
if= indica il nome del filtro da usare per la stampa; quello usato nell'esempio è un filtro fornito in modo predefinito con la distribuzione Red Hat all'interno del pacchetto samba-client.
Affinché il tutto funzioni è poi necessaria la presenza del file .config nella directory della coda indicata con la riga sd=. Un esempio del suo contenuto è il seguente:
   share="//server_smb/nome_stampante_condivisa"
   user="tizio"
   password="god"   (tanti mettono com password dio,amore,sesso,segreto si credono brossi ^_^)
Data la complessità della configurazione manuale di una stampante SMB in GNU/Linux (e anche di una stampante in generale), può essere consigliabile l'uso di strumenti appositi come printconf-gui che semplificano molto queste operazioni.

Altri comandi presenti nel pacchetto samba-client sono:
nmblookup che permette di trovare il numero IP di una macchina fornendo il nome NetBIOS;
findsmb che fornisce informazioni sui serventi Samba presenti in rete;
smbtar che permette di effettuare copie di sicurezza di risorse SMB su unità a nastro installate sul servente GNU/Linux.
Per i dettagli di uso di questi comandi si rimanda ai rispettivi manuali in linea.
PORTSCANNER
ottimo portscanner se nn il migliore portscanner è come al solito sotto abiente UNIX cioè il mitico nmap
potrete scaricarlo in web ma c'è quasi sempre d base nel sistema
Fate da shell nmap o nmap help nn rikordo per visualizzare i comandi cmq il modo migliore pr fare uno scan è sikuramente:
nmap -sS 127.0.0.1

VERLIHUB

Tra i vari DC software server che conosciamo: YnHub, YHub, PtokaX, DCHub, XHub, ... Verlihub sembra essere considerato quello più stabile e performante e nella pratica lo è realmente.
La sua stabilità e le sue performance sono dovute a diversi fattori:
·    Separazione dei dati grazie a un database back-end
·    Comunicazione asincrona che permette di ottenere performance notevoli
·    Linguaggio C++ che permette la compilazione su diverse piattaforme: Solaris, Unix, Linux
Per poter operare è quindi necessario avere:
·    Un sistema Unix funzionante (una distribuzione Linux è sufficiente)
·    MySQL serie 4.x installato e funzionante, una rete a cui esporre il servizio (naturalmente)
·    I comandi make, autoconf, g++, ... (tutta la suite di development per C/C++)
·    Librerie GeoIP
·    Librerie PCRE e PCRE-DEVEL
·    E infine il server Direct Connect in questione ovvero Verlihub.

In questo articolo vi mostrerò come poter scaricare l'ultima versione dal Current Versioning System Server.
Naturalmente c'è da fare una premessa, quando si scarica codice CVS non sempre si ottiene codice stabile o codice funzionante, vi posso dire data la mia esperienza con Verlihub che Verliba (il creatore) è molto attento nel rilasciare solo codice funzionante.
Qualsiasi distribuzione usiate verificate di aver installato sul vostro sistema il comando cvs.
Vediamo come fare per una distribuzione Debian.

root@localhost:~# apt-get install cvs

Una volta finito il processo di installazione del comando cvs, in Debian vi verrà chiesto se configurarlo come server, rispondete di no o ignorate qualsiasi tipo di domanda fatta in tal senso.
A questo punto siete pronti per inviare i comandi relativi al download del codice sorgente di Verlihub:

Il seguente comando vi autenticherà nel server CVS di sourceforge.net:

[root@localhost root]# cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/verlihub login
[Premere ENTER alla richiesta di password]

Con il seguente comando scaricate il codice sorgente di Verlihub e quindi vi verrà creata una cartella di nome verlihub nella current working directory (cioè nella directory in cui vi trovate):

[root@localhost root]# cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/verlihub co verlihub

E infine se volete arricchire il server con funzionalità aggiuntive eseguite il seguente comando:

[root@localhost root]# cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/verlihub co chatroom floodprot forbid lua hublink isp

A questo punto verranno create anche le cartelle chatroom, floodprot, forbid, lua, hublink e isp.
Ora siete pronti per compilare il tutto !

[root@localhost root]# cd verlihub/
[root@localhost root]# ./configure
[root@localhost root]# make
[root@localhost root]# make install

A questo punto se tutto è andato bene avete verlihub installato in /usr/local il che vuol dire che il binario del server risiede in /usr/local/bin, le librerie in /usr/local/lib e gli headers di sviluppo in /usr/local/include.
Ora per ogni plugin scaricato fate la stessa cosa che avete fatto con il server, ad esempio con lua¹:

[root@localhost root]# cd lua/
[root@localhost root]# ./configure
[root@localhost root]# make
[root@localhost root]# make install
...e così per tutte le altre cartelle.

lua¹ : Tenete conto che per il plugin lua dovete aver installato il linguaggio di programmazione lua, scaricabile da http://www.lua.org nella sezione download.
Ad installazione terminata, dare il seguente comando:
[root@localhost root]# vh_install
per configurare il database di verlihub e creare le relative tabelle.
A configurazione ultimata dare il seguente comando per avviare Verlihub:
[root@localhost root]# vh_runhub


COMANDI

*** Comandi utili per la configurazione di verlihub ***

I seguenti comandi sono inclusi nel file di configurazione di Verlihub, visibile agli Admin e i Master dell' hub con il comando !gc

Ricordo di inserire prima di ogni riga sotto riportata il comando !set  :

min_share_reg        scrivere la grandezza desiderata espressa in Mb (es: 1GB sarà scritto così 1024)
min_share_vip        scrivere la grandezza desiderata espressa in Mb (es: 1GB sarà scritto così 1024)
min_share_ops        scrivere la grandezza desiderata espressa in Mb (es: 1GB sarà scritto così 1024)
max_share            scrivere la grandezza desiderata espressa in Mb (es: 1GB sarà scritto così 1024)
max_share_reg        scrivere la grandezza desiderata espressa in Mb (es: 1GB sarà scritto così 1024)
tban_kick            scrivere la durata desiderata del KICK espressa in secondi (es: 10 minuti sarà scritto così 600)
hub_name            srivere il nome dell' hub
hub_version            versione dell' hub software
hub_version_special        versione speciale del tipo (By Pinco-Pallino)
hub_desc            descrizione hub
max_nick            lunghezza massima nick
min_nick            lunghezza minima nick
nick_chars            caratteri speciali consentiti
listen_port            porta di ascolto del server (la porta 411 è quella predefinita)
extra_listen_ports         porta d' ascolto secondaria
min_class_bc            minima classe a cui è consentito di inviare mass message
min_class_bc_regs        minima classe a cui è consentito di inviare mass message agli user registrati
min_class_redir        minima classe a cui è consentito reindirizzare gli utenti su un altro server
hub_security            nome del bot security
hub_security_desc        descrizione del bot
opchat_name            nome della chat operatori
opchat_desc            descrizione della chat operatori
hub_owner            nome di ki ha creato l' hub
int_search            intervallo di ricerca espresso in secondi
int_chat_ms            intervallo di chat espresso in millisecondi
show_tags            1 per visualizzare - 0 per nascondere
show_desc_len         1 per visualizzare - 0 per nascondere
show_email            1 per visualizzare - 0 per nascondere
msg_chat_onoff = << To turn your chat on, use command !chaton >>
msg_change_pwd = << Please change your password NOW using command +passwd new_passwd!!! See +help, 5 minutes remaining >>
msg_banned = <<You are banned and this is a default extra message>>
msg_hub_full = <<User limit exceeded, hub is full, for some reason>>
msg_nick_prefix = <<You don't have desired nick prefix>>
msg_welcome_guest        Messaggio di benvenuto per utenti
msg_welcome_reg         Messaggio di benvenuto per utenti registrati
msg_welcome_vip        Messaggio di benvenuto per utenti vip
msg_welcome_op        Messaggio di benvenuto per operatori
msg_welcome_cheef        Messaggio di benvenuto per super operatori
msg_welcome_admin        Messaggio di benvenuto per admin
msg_welcome_master    Messaggio di benvenuto per master
redir_host0             indirizzo di redirect
redir_host1            indirizzo di redirect
redir_host2            indirizzo di redirect
redir_host3            indirizzo di redirect
redir_host4            indirizzo di redirect
redir_host5            indirizzo di redirect
redir_host6            indirizzo di redirect
redir_host7            indirizzo di redirect
redir_host8            indirizzo di redirect
redir_host9            indirizzo di redirect
redir_host_max        numero massimo di reindirizzamenti da 1 a 10

IL SAPERE UMANO APPARTIENE AL MONDO
alla prossima...

/* No CoMmEnT */