Bu iptables kurallarını başlangıçta çalışacak şekilde nasıl ayarlayabilirim?


20

Ne zaman giriş yaparsam genellikle iptables kurallarımı çalıştırırım. Terminal I tipinden;

sudo sh firewall.sh

Kız kardeşimin bilgisayarını kurarak, ona bazı temel güvenlik duvarı koruması vermek istiyorum. Standart bir hesap olarak admin olarak girmeyecek. Herhangi bir parola girmek zorunda kalmadan her oturum açtığında bir güvenlik duvarı komut dosyasını nasıl çalıştırabilirim?

Kız kardeşimin bilgisayarı için yazdığım senaryo;

#!/bin/sh

modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Onu ev klasörüne firewall.sh olarak yerleştirdim ve çalıştırılabilir olarak ayarladım (dosyaya sağ tıklayın ve izinler sekmesinde "dosyanın program olarak yürütülmesine izin ver" seçeneğini işaretliyorum).

Bu betiği terminalden root olarak çalıştırmak gayet iyi çalışıyor.

Yazdıktan sonra;

sudo sh firewall.sh

Terminale yazdım

sudo iptables -L -v

ve anladım

Chain INPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN
    0     0 DROP       udp  --  any    any     anywhere             anywhere            
    0     0 DROP       icmp --  any    any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  any    any     anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:https
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere             udp spts:32768:61000 dpt:domain
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:http
    0     0 ACCEPT     all  --  any    lo      anywhere             anywhere

Bu betiğin giriş sırasında otomatik olarak çalışmasını veya bu kuralları kız kardeşlerimin bilgisayarına kalıcı olarak kaydetmesini nasıl sağlayabilirim? Rc.local yöntemi ve iptables-save'daki ilk girişimlerim çok başarılı olmadığından, ayrıntılı bir kod verebilir misiniz? Her yeniden başlatmada, tüm INPUT, OUTPUT ve FORWARD zincirleri, yazarken ilkeler listelenmemiş olarak KABUL EDİLDİRsudo iptables -L -v


Neredeyse iki yıl sonra, ancak önemli bir yorum: ip6tablesIPv6 tarafından yapıldığından ip6tablesve kullanılmadığından bir gün v6 bağlantısı kurarsanız kurallara sahip olduğunuzdan emin olun iptables.
Thomas Ward

Yanıtlar:


38

iptables-persistentPaketi, önyükleme komut dosyalarınızı karıştırmak yerine kullanmak isteyebilirsiniz . İlk önce, güvenlik duvarı kurallarını ayarlamak için betiğinizi çalıştırın. İkincisi, koşun sudo apt-get install iptables-persistentve talimatları izleyin. Geçerli kuralları kaydetmeyi istediğinde, her iki istemde de "Evet" düğmesine basın. Şimdi, yeniden başlatırken, iptables kurallarınız geri yüklenecek.


NOT: Bundan sonra kurallarınızı değiştirirseniz, değişikliklerden sonra aşağıdaki komutları yapmanız gerekir:

IPv4 iptables kurallarınızı kaydetmek için: sudo su -c 'iptables-save > /etc/iptables/rules.v4'

IPv6 ip6tables kurallarınızı kaydetmek için: sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'


Teşekkürler, işe yaradı. Kuralları geçici olarak değiştirmek istersem, sadece terminalden bir komut dosyası çalıştırabilir miyim?
Mikelane

Evet, ya da doğrudan iptables sistemini yönetebilirsiniz. NASIL, geçici kuralı ısrarla kullanmayı planlıyorsanız, cevabımda belirttiğim komutları yapmazsanız, yeni kuralların kaydedilmesi garanti edilmez.
Thomas Ward

sudo dpkg-reconfigure iptables-persistentBir kuralı değiştirdikten sonra kaçmak kötü bir fikir midir?
souravc

@ souravc buna cevap veren soru şudur: "Neden ihtiyacın olsun veya istemesin?" Buradaki fikir, yeniden yazmak zorunda kalmayacağınız ve sadece yeniden yazmanız (veya üzerine yazmanız ( rules.v4veya rules.v6dosyaları elle, böylece bir sonraki önyüklemede indekslenebilmeleri veya çalıştırmanız durumunda hemen iptables-restore < /etc/iptables/rules.v4veyaip6tables-restore < /etc/iptables/rules.v6
Thomas Ward

2

Güvenlik duvarı kurallarına sahip olduğunuzu varsayarak:

/etc/iptables.up.rules

Belki de en bariz cevap iptables adında bir dosya oluşturmak olacaktır:

/etc/network/if-pre-up.d

içeriği ile:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

ve kullanarak çalıştırılabilir yapmak

sudo chmod +x /etc/network/if-pre-up.d/iptables

Bu şekilde ağ arayüzünüz aktif hale getirilmeden önce kurallarınız yüklenecektir.


Teşekkürler, herhangi bir yere kütük atıyor mu? Bu çalışmıyor ve bunun benim dns sunucumun ana bilgisayarım önyüklenirken henüz başlatılmayan bir çözümleyicisine sahip olmasından kaynaklanıyor.
Dimitri Kopriwa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.