2009-03-15

LINUX TCPDUMP

tcpdump -XXnve -i eth1 'arp [7]==2' -s0
#read data with header in ASCI and HEX - use option -XX, which 8-th byte in ARP header will be 2(DEC) - count from 0 to 7, means answer on ARP broadcast
tcpdump -XXnve -i eth1 'tcp [13]==18' -s 0
#read data as above, which 14th byte in TCP header:
18(DEC) = 12 (HEX) = 00010010(BIN) means set flags SYN and ACK, C|E|U|A|P|R|S|F where letters mean flags in bits code
0 0 0 1 0 1 1 0 means set flag ACK,RST,SYN - 22(DEC) and 16(HEX)

describe TCPDUMP output

ARP answer on  broadcast:
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
12:55:53.464953 00:c0:a8:fe:6f:f2 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 192.168.1.212 tell 192.168.1.24
0x0000:  ffff ffff ffff 00c0 a8fe 6ff2 0806 0001  ..........o.....
0x0010:  0800 0604 0001 00c0 a8fe 6ff2 c0a8 0118  ..........o.....
0x0020:  0000 0000 0000 c0a8 01d4 0000 0000 0000  ................
0x0030:  0000 0000 0000 0000 0000 0000            ............
Description in order:
1w/8k/1-4 means 1 row/8 column/position form 1 to 4:
1w/1k/1-...1w/3k/-4 destination MAC
1w/4k/1-...1w/6k/-4 source MAC
1w/7k/1-4  typ ramki: 0806 - ARP; 0800 - IP; 8035 - reverse ARP; 8137 - IPX
------------------------START IP protocol----------------------------------------------
1w/8k/1-4  device address type: 0001 - Ethernet
2w/1k/1-4  protocol address type: 0800 - IP
2w/2k/1-2  length device address in Btes
2e/2k/3-4  length proctocol address in Bytes
2w/3k/1-4  operation: 0001 - question; 0002 - answer
2w/4k/1-...2w/6k/-4 sender MAC
2w/7k/1-...2w/8k/-4 sender IP
3w/1k/1-...3w/3k/-4 recipient MAC
3w/4k/1-...3w/5k/-4 recipient IP

send 1 tcp packet with flags SYN,ACK,RST and data "ABC" which means 3 Bytes from file "wy" by hping3:
hping3 192.168.1.253 -S -A -R -E wy -d 3 -c 1
we receive:
ROUTER:/# tcpdump -XXnve -i eth1 'tcp [13]==22' -s0 and host 192.168.1.4
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:30:10.508842 00:0c:76:e7:f1:d3 > 00:30:4f:23:b8:4e, ethertype IPv4 (0x0800), length 60: IP (tos 0x0, ttl  64, 
id 57585, offset 0, flags [none], length: 43) 192.168.1.4.2029 > 192.168.1.253.0: SR [tcp sum ok] 1842019365:1842019368(3) 
ack 2138831316 win 512 [RST ABC]
0x0000:  0030 4f23 b84e 000c 76e7 f1d3 0800 4500  .0O#.N..v.....E.
0x0010:  002b e0f1 0000 4006 158a c0a8 0104 c0a8  .+....@.........
0x0020:  01fd 07ed 0000 6dca fc25 7f7b f9d4 5016  ......m..%.{..P.
0x0030:  0200 ba09 0000 4142 4300 0000            ......ABC...
----------------------------------------------------------------------------------------
1w/1k/1-...1w/3k/-4 destination MAC
1w/4k/1-...1w/6k/-4 source MAC
1w/7k/1-4  typ ramki: 0806 - ARP; 0800 - IP; 8035 - reverse ARP; 8137 - IPX
------------------------START IP protocol----------------------------------------------
1w/8k/1   wersja protokoĊ‚u
1w/8k/2   header length in Bytes
1w/8k/3-4  TOS type
2w/1k/1-4  whole length hader plus data
2w/2k/1-4  datagram ID
2w/3k/1   fragmentation sign
2w/3k/2-4  shift
2w/4k/1-2  TTL field
2w/4k/3-4  protocol type: 06 - TCP; 17 - UDP; 01 - ICMP;
2w/5k/1-4  control sum header
2w/6k/1-...2w/7k/-4 sender IP
2w/8k/1-...3w/1k/-4 recipient IP
------------------------START TCP protocol---------------------------------------------
3w/2k/1-4  source port
3w/3k/1-4  destination port
3w/4k/1-...3w/5k/-4 output data order nr
3w/6k/1-...3w/7k/-4 input data order nr
3w/8k/1-2  header length
3w/8k/3-4  cody bits: 02 - SYN; 12 - SYN,ACK; 16 - SYN,ACK,RST
4w/1k/1-4  input data window
4w/2k/1-4  header control sum
4w/3k/1-4  pointer data
------------------------START data----------------------------------------------------
4w/4k/1-  dane 41,42,43 in ASCI means ABC

LINUX POSTFIX


#################################################################
# USTAWIENIA GLOWNE #
#################################################################

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

# komunikat wyswietlany po polaczeniu z postfixem
smtpd_banner = $myhostname ESMT

mail_name = Microsoft (5.0.2195.5329)
# jw wieksze zmiany w zrodle w plik_postfix/src/bounce/bounce_notify_until.c

# setgid_group = postdrop

# FQDN maszyny
myhostname = [domena]
# FQDN dla poczty wychodzacej taka jak hostname to co bedzie w polu
myorigin = [domena]
# FQDN bez nazwy hosta
mydomain = [domena]
#dla jakich domen serwer bedzie dostarczal poczte lokalnie, poczta przychodzaca akceptowana wylacznie na te domeny
mydestination = [domena],localhost.localdomain, localhost
# adresy sieci,dla ktorych serwer poczty bedzie wykonywal relay, z ktorych bedzie mozna przekierowac poczte(relay)
mynetworks = 127.0.0.0/8
# domyslnie postfix przetwarza poczte od klientow z mynetworks oraz od klientow z relay_domains moze byc /plik w ktorym beda te domeny, dla innych lokalizacji pop-before-smtp lub pop-before-smtp
relay_domains = [domena]

# listy baz aliasow calkowicie kontrolowane przez postfixa
alias_database = hash:/etc/aliases
# lista baz aliasow type:name tutaj typ - hash a name - sciezka do pliku
alias_maps = hash:/etc/aliases
# o skladni [nazwa:wartosc] gdzie nazwa - nazwa alisu a wartosc - adres,forward na dany adres,
#wartosc - |komenda - na przyklad przekazanie do procmaila,
#wartosc - :include:/plik - mail wysylany do adresatow w plik,
#wartosc = /plik - mail wpisywany do pliku gdy /plik/ to typ Maildir

# allow_mail_to_commadns = alias, forward #aby powyzsze komendy mogly byc wykonane nalezy dopisac jeszcze include
# allow_mail_to_files = alias, forward #aby powyzsze komendy mogly byc wykonane nalezy dopisac jeszcze include

# mailbox_command = procmail -a "$EXTENSION"
# obrabianie maili przez procmaila

mailbox_size_limit = 51200000
message_size_limit = 20480000
inet_interfaces = all

# ilosc wolnego miejsca na dysku w systemie plikow kolejek ktorego postfix nie moze przekroczyc, nie bedzie wariowal po zapelnieniu dysku a jedynie odsylal wiadomosci
queue_minfree = 40000000

# notify clases
#ustalamy jakie komunikaty bede kierowane na adres postmaster@domena parametry ponizej
#bounce #wysyla postmasterowi kopie niedostarczonej poczty
#2bounce
#delay #inf o opoznionej poczcie
#policy #inf o odrzuconych zadaniach przez postfix np przez filtry
#protocol #inf o wywolaniu niezaimplementowanych komend
#resource #inf o poczcie nie wyslanej z powodu klopotow z zasobami serwera
#software #inf o poczcie nie wyslanej z powodu klopotow programowych

#relayhost =
#disable_dns_lookups = yes #logowanie IP a nie nazw
#sender_canonical_maps = hash:/plik #mapowanie uzytkownikow z /plik [user user_po_zmapowaniu] i postmap /plik
#relocated_maps = hash:/plik #wysylanie nadawcy maila odpowiedzi od razu z /plik [user "user zmienil adres na user@wp.pl"]
#home_mailbox #ustawienie typu skrzynki pocztowej domyslnie /var/mail/user gdy Maildir/ to kazdy mail w innym pliku
#default_proces_limit #kontrola procesow domyslnie 100
#initial_destination_concurrency #liczba polaczen do zdalnego hosta
#default_destination_concurrency_limit #max ilosc poloczen > liczby procesow
#local_destination_concurrency_limit #ilosc jednoczesnych maili do jednego uzytkownika
#queue_run_delay #czestotliwosc z jaka skanuje kolejke deferred w poszukiwaniu poczty do wyslania domyslnie 1000s
#maximal_queue_lifetime #jak dlugo ma byc przechowywana poczta ktorej nie udalo sie wyslac np 5s to 5 sekund 5d to 5 dni
#minimal_backoff_time #min czas przez jaki wiadomosc nie bedzie przetwarzana po nieudanej probie dostarczenia
#maximal_backoff_time #max jw
#qmgq_message_recipient_limit #dlugosc listy niedostepnych hostow
#line_length_limit #max dlugosc lini tekstu po przekroczeniu ktorej linia zostanie podzielona
#header_size_limit #max dlugosc naglowka
#extract_recipient_limit #ile adresow odbiorcy zostanie wyluskanych z naglowka
#bounce_size_limit #ile bajtow wiadomosci zostanie zwrocone gdy przekroczy sie wartosc powyzej
#qmgr_message_recipient_limit #liosc struktur adresow odbiorcy w pamieci
#qmgr_message_active_limit #max liczba maili w kolejce active
#duplicate_filter_limit #ilosc adresow odbiorcy pamietanych przez local i cleanup
#always_bcc = user@linux.pl #kopia kazdego maila zostanie wyslana do user@linux.pl
#command_time_limit #czas oczekiwania na |polecenie z pliku aliasow
#usluga_time_limit #czas transportu maila przez program pipe do polecenia
#luser_relay = admin@linux.pl #przechwytywanie poczty dla uzytkownikow ktorzy nie istnieja w systemie
# debug_peer_list = 1.2.3.4 #?do logow

#################################################################
# WIRTUALNE DOMENY #
#################################################################

# virtual_maps = hash:/plik #w /plik wpisuje sie w pierwszej lini [linux.pl cokolwiek] a w nastepnych [userwirt@linux.pl user
#to znaczy ze mail dla usrewirt trafia do user
#wydac komende postmap /plik

# transport_maps = hash:/plik #w /plik wpisujemy [linux.pl virtual] co oznacza ze domena linux.pl jest obslugiwana wirualnie
# virtual_mailbox_base = /home/virtuals #lokalizacja wirualnych skrzynek /home/virtuals - podstawa
# virtual_mailbox_maps = hash:/plik #tablica dopasowania /plik wpisuje sie [user@linux.pl /sciezka] to dla danego usera sciezka to /home/virtuals/sciezka
# virtual_uid_maps = hash:/plik #w /plik wpisujemy user@linux.pl 505
# virtual_gid_maps = static:1000 #dla kazdego uzytkownika zostanie uzyty gid=1000

# virtual_maps = hash:/etc/postfix/virtual
# virtual_mailbox_base = /home/virtuals
# virtual_mailbox_maps = hash:/

#################################################################
# BEZPIECZENSTWO #
#################################################################

smtpd_helo_required = yes
smtpd_recipient_limit = 50
# max liczba wysylanych na raz wiadomosci

strict_rfc821_envelopes = yes

smtpd_delay_reject = no
# gdy yes to restrykcje sprawdzane dopiero po otrzymaniu adresu odbiorcy

smtpd_error_sleep_time = 3
# czas na jaki przerywa dzialanie serwer jesli powstanie blad w sesji SMTP domyslnie 5s

smtpd_soft_error_limit = 3
# liczba bledow sesji SMTP po przekroczeniu ktorej serwer zerwie polaczenie domyslie 10s

smtpd_hard_error_limit = 5
# po ilu bledach polaczenie zostanie przerwane domyslnie 100

# smtpd_sender_restrictions = #sprawdzane poczty na podstawie adresu odbiorcy listu (from)
# reject_unknown_client #odrzucenie ip ktorego nie ma w DNS
# reject_unknown_sender_domain #odrzuca mail jesli po @ nie ma wpisu w DNS
# reject_unknown_recipient_domain #
# reject_invalid_hostname #
# reject_non_fqdn_hostname #odrzuca mail jesli czesc po @ nie jest pelna
# check_sender_access hash:/plik #przeszukuje /plik ktory zawira co zrobic np heniek@ reject lub heniek@wp.pl ok lub wp.pl reject
#aby dzialalo wpisac postmap /plik aby utworzyc /plik.db
# reject_non_fqdn_sender

smtpd_sender_restrictions = reject_unknown_client, reject_unknown_sender_domain, reject_invalid_hostname,reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_rbl_client dynamic.dnsbl.rangers.eu.org, reject_rbl_client spam.dnsbl.rangers.eu.org, check_relay_domains

# smptd_recipient_restrictions = #dla adresu odbiorcy listu, na podstawie adresu nadawcy listu(rcpt to)
# reject_non_fqdn_recipient #odrzuc list jezeli adres odbiorcy nie jst pelny
# reject_unknown_recipient_domain #odrzuc jezeli adres docelowy nie istnieje w DNS
# check_recipient_access hash:/plik #przeszukuje plik podany jako argument i na jego podstawie decyduje czy wyslac list
# permit_auth_destination #przyjmij mail jesli nasz serwer jest jego celem lub adres przeznaczenia zawiera sie w zmiennaj $relay_domains
# reject_unauth_destination #jw tylko odrzuc list jezeli nasz serwer nie jest jego celem ...
# check_relay_domains #jesli ip ktory wysyla pasuje do relay_domains lub celem jest ip z relay_domains to przyjmij, w przeciwnym wypadku odrzuc
# reject_rbl_client /plik_z_lista_rbli #
# reject_unknown_hostname
# reject_non_fqdn_hostname

smtpd_recipent_restrictions = reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, check_relay_domains

# smtpd_client_restrictions = #dla hosta laczacego sie z serwerem, sprawdzenie komputera z ktorego wysylana jest wiadomosc
# check_sender_access regexp:/etc/postfix/bany, #
# permit_mynetworks, #pozwolenie dla hostow ujetych w zmiennej $mynetworks
# reject_unknown_client, #odrzucenie ip ktorego nie ma w DNS
# check_helo_access hash:/etc/postfix/helo.access, #
# check_client_access hash:/plik, #sprawdaz ip/nazwe kompa w /plik i pisze co z nim robic np 192.168.1.15 OK
# check_client_access cidr:/plik #baza cidr w /plik pozwala na blokowanie zakresow ip np dla korei i chin z www.okean.com
# permit #dwa zachowania gdy na koncu gdy powyzsze reguly nie pasuja
# reject


smtpd_client_restrictions = reject_unknown_client, reject_rbl_client dynamic.dnsbl.rangers.eu.org, reject_rbl_client, spam.dnsbl.rangers.eu.org

# smtpd_helo_restrictions = #helo $hostname
# reject_unauth_pipelining #gdy serwer smtp ktory wysyla do nas maila nie czeka na odpowiedz to go odrzuc
# reject_invalid_hostname #
# permit_mynetworks, #
# check_helo_access hash:/plik #/plik zawiera [ REJECT you aren't me
# localhost REJECT you aren't me]
# reject_rbl_client /plik #lista rbli

smtpd_helo_restrictions = reject_invalid_hostname, reject_invalid_hostname, check_helo_access hash:/etc/postfix/helo_access

mailbox_command = /usr/bin/procmail


content_filter=smtp-amavis:[127.0.0.1]:10024


#################################################################
# DODATKOWE #
#################################################################
#apt-get install pflogsumm
#polecenie pflogsumm.pl -e -d yesterday /var/log/mail.log
#dodatkowo polecenie postsuper
#dodatkowo mailq pokazuje kolejke
#dodatkowo postcat /var/spool/postfix/deferred/0/0/plik |more pokazuje skolejkowana wiadomosc