Bilindiği üzere TCP protokol olarak çok
kullanılmaktadır. ftp, telnet vs.
TCP paketleri ile yapılacak olan veri aktarımlarında
ise TCP'nin üç-koşullu-onaylama (three way
hanshaking) olarak adlandırılan yöntemi kullanılır.
Yöntem bir bağlantı isteği (active open olarak geçer) ile
işlemeye başlar.
İstemci makina sunucuya SYN (syncronise)
sayısı içeren bir paket gönderdiğinde sunucu buna SYN
ve ACK (acknowledgement) ile cevap
verir.
Üçüncü adım olarak da istemciden sadece bir ACK geri
döner (passive open).
Daha fazla ayrıntısına girmeyeceğim bu iletişim bir TCP
bağlantısı başlatır. Biz eğer makinamıza giren TCP
isteklerini kontrol etmek istersek (bu sekilde TCP
kullanan tüm servisler kontrol edilir; ftp,
telnet, ssh, finger
www vs.) ipchains'in
-y parametresi yardımımıza koşar.
Bu parametre ile içinde SYN biti 1 olan ve aynı
zamanda ACK ve FIN bitleri 1'e
eşit olan (SYN=1 && ACK=0 && FIN=0 durumu) paketler
yakalanabilir.
Parametrenin ! (tersi) seçeneği de vardır. (bit durumlarının tersi değil
koşul sağlanmasının tersi). Ve de doğal olarak sadece TCP
protokolü için kullanılır.
# ipchains -A input -p tcp -s 0/0 -d 155.223.3.202/32 -y -j DENY
Komutu ile makinaya gelen tüm SYN_REQ'ler kabul
edilmemiş olur. Böylece dışardan hiçbir şekilde makinaya
TCP bağlantısı yapılamaz.
Ve de bizim dışarıya TCP bağlantısı isteklerimiz de
bundan etkilenmez. (çünkü bizim başlattığımız TCP'lerde
de bu bitler kullanılır ne kadar sadece output kümesini ilgilendiriyor
görünse de TCP'nin çift taraflı özelliğinden ötürü
input kümesi de olaya girer. Ama belirttiğimiz gibi
-y parametresi bizim başlattığımız
TCP bağlantılarını görmez).