Erdem YILDIZ

Siber Güvenlik Araştırmacısı
Python Geliştiricisi
Linux Hayranı

Python ile firewall gibi hareket eden script yazma !!!

Merhaba arkadaşlar bugün python ile yazmış olduğun firewall gibi çalışan bir script'i sizlere çalışma mantığını anlatıp , kodlarını sizlerle paylaşıp ve sonunda ise bir video ile çalıştığını göstereceğim. Haydi bir giriş yapalım...

Arkadaş bu scripteki amacım şuydu.Elimizde 1 adet serverımız olduğunu varsayarak kötü niyetli insaların serverımız üzerinde çeşitli güvenlik toollarıyla üzerinde çalışan servisleri öğrenerek daha sonra bu servislerin zafiyetine göre onları istismar etmelerini engellemekti. Kötü niyetli insanlar server'ımızda 5 adet farklı port'u taradığında onlara linux'da bulunan iptables paket filitreleme tool'unu kullanarak kötü niyetli insanların ip bilgileriyle iptables'a bir kural yazarak iletişimi engelliyoruz

Kötü kod yazdığım için üzgünüm.Daha iyi bir yazılımcı olmak için yazılım geliştirme ve problem çözme yeteneğim üzerinde hala uğraşmaktayım.
                                        Firewall.py
                                        #!/usr/bin/env python3
                                        from datetime import datetime
                                        import socket,struct,os
                                        def BlockIT(ipaddr):
                                            os.popen("iptables -A INPUT -s {} -j DROP".format(ipaddr))
                                        s = socket.socket(socket.PF_PACKET,socket.SOCK_RAW,8)
                                        dict = {}
                                        while True:
                                            try:
                                                pkt = s.recvfrom(2048)
                                                ip_header = pkt[0][14:34]
                                                ip_hdr= struct.unpack("!8sB3s4s4s",ip_header)
                                                IP = socket.inet_ntoa(ip_hdr[3])

                                                tcp_header = pkt[0][34:54]
                                                tcp_hdr = struct.unpack("!HH9ss6s",tcp_header)

                                                if IP =="127.0.0.1":
                                                    pass
                                                elif IP in dict.keys():
                                                    if tcp_hdr[1] not in dict[IP]:
                                                        dict[IP].append(tcp_hdr[1])
                                                    if len(dict[IP]) ==5:
                                                        print("This {} address was blocked".format(IP))
                                                        BlockIT(IP)
                                                else:
                                                    dict[IP] = []
                                            except KeyboardInterrupt:
                                                print("CTRL + C ile çıkış yapıldı")
                                                break

                                        

Yukarıda paylaşmış olduğum kodda bir sıkıntı yada yapılabilecek iyileştirmeler için bana ulaşabilirseniz çok sevinirim.Okuduğunuz için çok teşekkür ederim.Esen kalın :)