Bu iptables hakkında iki şey düşünmek için biraz zaman harcadım: bu eğitimleri arayanların çoğu yeni başlayanlar ve ikincisi, birçoğu zaten oldukça basit ve zaten ayrıntılı bir şey arıyor.
Bu örnek bir web sunucusu içindir, ancak kolayca daha fazla kural ekleyebilir ve bunu ihtiyaçlarınıza göre uyarlayabilirsiniz.
IP'leriniz için "x" değişimini gördüğünüzde
#!/bin/bash
# İptables tablolarını temizliyoruz -F iptables -X # NAT iptables'ı temizliyoruz -t nat -F iptables -t nat -X # PPPoE, PPP ve ATM iptables gibi şeyler için mangle tablası -t mangle -F iptables -t mangle -X # Politikalar Bunun yeni başlayanlar için en iyi yol olduğunu düşünüyorum ve # yine de fena değil, çıktıları açıklayacağım çünkü bunlar giden bağlantılar #, girdi her şeyi atıyoruz ve hiçbir sunucu iletmemeli. iptables -P GİRİŞ DROP iptables -P ÇIKIŞI KABUL Eptables -P İLERİ DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Durumu koru. Zaten bağlı (kurulmuş) olan her şey şu şekilde bırakılır: iptables -Bir GİRİŞ -m durumu --state KURULUŞ, İLGİLİ -j KABUL # Döngü cihazı. iptables -Bir GİRİŞ -i lo -j KABUL # http, https, arayüzü belirtmiyoruz çünkü # tüm iptables olmasını istiyoruz -A GİRİŞ -p tcp --dport 80 -j iptables KABUL ET -A GİRİŞ -p tcp - dport 443 -j ACCEPT # ssh yalnızca dahili olarak ve bu ip'lerin iptables aralığından -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # izleme örneğin zabbix varsa veya diğer bazı snmp hizmeti iptables -A GİRİŞ -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j KABUL # icmp, ping iyi, size kalmış iptables -A GİRİŞ -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql postgres ile bağlantı noktası 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh eğer posta göndermek istiyorsanız # iptables -A ÇIKIŞ -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # sunucu IP'si - sunucunuzun gerçek wan ip'i LAN_RANGE = "192.168.xx / 21 "# Ağınızın LAN aralığı veya vlan # IP'leriniz asla extranete girmemelidir,sadece bir WAN arayüzümüz varsa, o arayüz üzerinden # LAN türü trafiğe asla girmemelidir SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# Varsayılan eylem - herhangi bir kural ACTION =" DROP "ile eşleştiğinde gerçekleştirilecek # wan iptables aracılığıyla sunucumun aynı IP'sine sahip paketler -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A ÇIKIŞ -o $ extranet -s $ SERVER_IP -j $ EYLEM # wan için LAN Aralığı olan paketler, herhangi bir ağa # sahip olmanız durumunda bunu böyle koyuyorum, ancak bu, aşağıdaki # kuralı ile gereksizdir döngü "için" iptables -A GİRİŞ -i $ extranet -s $ LAN_RANGE -j $ EYLEM iptables -A ÇIKIŞ -o $ extranet -s $ LAN_RANGE -j $ ACTION ## wan tarafından ip girişi için tüm SPOOF ağlarına izin verilmez $ SPOOF_IPS iptables yapıyor -Bir GİRİŞ -i $ extranet -s $ ip -j $ EYLEM iptables -A ÇIKIŞ -o $ extranet -s $ ip -j $ İŞLEM yapıldı
Her zaman olduğu gibi yorumlarınızı bekliyorum, bu blogda bizi izlemeye devam edin, Teşekkürler
Kopyalanan teşekkürler biraz daha öğrenmeye devam etmeme yardımcı oluyor.
rica ederim, yardımcı olduğuma sevindim
Gerçekten üzgünüm ama iki sorum var (ve biri hediye olarak 😉):
Bu yapılandırmayla Apache'nin çalışır durumda olması ve SSH dışında kalanların kapatılması için varır mısınız?
# Masaları temizliyoruz
iptables-F
iptables-X
NAT'ı temizliyoruz
iptables -t nat -F
iptables -t nat -X
iptables -A GİRİŞ -p tcp –dport 80 -j KABUL
ssh yalnızca dahili olarak ve bu ip aralığından
iptables -A GİRİŞ -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j KABUL
İkinci soru: 7659, bu örnekte SSH'de kullanılan bağlantı noktası mı?
Ve üçüncü ve son olarak: bu yapılandırma hangi dosyaya kaydedilmelidir?
Eğitim için çok teşekkür ederim, bu kadar acemi olmanız ve bundan iyi yararlanamamanız çok yazık.
bu, apache'den http için ihtiyacınız olan kuraldır
iptables -A GİRİŞ -p tcp –dport 80 -j KABUL
ama aynı zamanda bırakma varsayılan politikalarını da belirtmeniz gerekir (komut dosyasında bulunur)
iptables -P GİRİŞ DROP
iptables -P ÇIKTI KABUL
iptables -P İLERİ DAMLA
ve bunun nedeni, eğer uzaktaysanız, sizi çöpe atacaktır.
iptables -Bir GİRİŞ -m durum –devlet KURULU, İLGİLİ -j KABUL
Örnekte 7659 bu ssh'nin bağlantı noktasıysa, varsayılan olarak 22'dir, ancak "iyi bilinmeyen" bir bağlantı noktasına geçmenizi öneririm
Dostum, istediğin gibi bilmiyorum ... firewall.sh ve rc.local (sh firewall.sh) içine yerleştirirsin, böylece otomatik olarak çalışır, sahip olduğun işletim sistemine bağlı kuralları doğrudan yerleştirebilirsiniz.
Hey, senaryonuz çok iyi analiz ediliyor… Kullanıcılarımdan belirli bir web sitesine gelen tüm istekleri nasıl reddedebileceğimi biliyor musunuz?…. ancak bu web sitesinin bir çok sunucusu var….
Diğer seçenekleri tavsiye ederim:
1) DNS'nizde sahte bölge oluşturabilirsiniz ...
2) acl ile bir proxy yerleştirebilirsiniz
günah ambargo
İptables için bunu beğenebilirsiniz ... her zaman en iyi seçenek değildir (daha fazla yol vardır)
iptables -A INPUT -s blogu.desdelinux.ne -j BIRAK
iptables -A ÇIKTI -d blogu.desdelinux.net -j BIRAK
İşe yarayıp yaramadığını söyle
Cevap için teşekkürler, her şey düzeldi. Bağlantı noktasını soruyordum çünkü 7659'u kullanmak beni şaşırttı, çünkü özel bağlantı noktaları 49152'de başlıyor ve bazı hizmetlere veya başka bir şeye müdahale edebilir.
Her şey için tekrar teşekkürler, bu güzel!
Selamlar.
BrodyDalle, seninle nasıl iletişime geçebilirim? Senaryonuz çok ilginç.
soulofmarionet_1@hotmail.com
Bir önceki satır olan "iptables -A ÇIKTI -o $ extranet -s $ ip -j $ ACTION" kendi makinenizin sahtekarlık yapmasını önlemek için mi? Yoksa zehirli bir paketin girmesi ve o zehirli kaynakla çıkması mümkün mü ve bu yüzden kural ÇIKTI'ya da dahil mi?
Açıklama için çok teşekkür ederim !!!
bu benim iptables betiğim, çok eksiksiz:
# franes.iptables.airy
# doc.iptables.airoso: eski ve nft için iptables
#
# güvenlik duvarı bağlantı noktası
#############################
#! / Bin / bash
#
# ekranı temizle
############################### /etc/f-iptables/default.cfg |||||
açık
# bir satırı boş bırakın
kaçırmak
dışa aktar evet = »» hayır = »yankı kapalı»
# erişime izin vermek için değiştirebileceğiniz değişkenler
$ yes veya $ no ile değiştirmek için ####################### değişkenler
ihracat hayexcepciones = »$ no»
# istisnalar var: istisnai ana bilgisayarlara izin vermek için $ evet ve devre dışı bırakmak için $ hayır
ihracat samanlığı = »$ no»
# hayping: Üçüncü taraf ping'lerine izin vermek için $ evet ve reddetmek için $ hayır
haylogserver dışa aktar = »$ no»
# haylogeosserver: $ yes tcp günlüğünü tutabilmek için $ hayır tcp günlüğünü tutamamak için
######
####################### değişkenleri "," ekleyerek veya ":" aralıklarıyla değiştirmek için
ihracat istisnaları = »baldras.wesnoth.org»
# istisna, güvenlik duvarından tekli veya çoklu ana makinelere izin verir veya değer yok
günlük sunucusunu dışa aktar = at, ipp, dict, ssh
Paketler geldiğinde günlüğe kaydedilen # tcp sunucu bağlantı noktaları
redserver dışa aktar = 0/0
# redserver: sunucu bağlantı noktaları için ağ, tercih edilen yerel ağ veya birkaç IP
ihracat müşterisi kırmızı = 0/0
# clientnet: tüm ağlar için tercih edilen istemci bağlantı noktaları için ağ
ihracat servidortcp = atma, ipp, dict, 6771
# servidortcp: belirtilen tcp sunucu bağlantı noktaları
dışa aktar serverudp = at
#udpserver: belirtilen udp sunucusu bağlantı noktaları
dışa aktarma clientudp = etki alanı, bootpc, bootps, ntp, 20000: 45000
#udp istemcisi: belirtilen udp istemci bağlantı noktaları
dışa aktarma clienttcp = etki alanı, http, https, ipp, git, dict, 14999: 15002
# tcp istemcisi: belirtilen tcp istemci bağlantı noktaları
############################## /etc/f-iptables/default.cfg |||||
################################# Değiştirilecek değişkenlerin sonu
güvenlik duvarını dışa aktar = 1 $ değişken = 2 $
eğer ["$ değişkenler" = "$ NULL"]; sonra kaynak /etc/f-iptables/default.cfg;
başka kaynak / etc / f-iptables / 2 $; fi
################################# veya bir .cfg dosyasıyla değişkenlerin üzerine yazar
#################################################### ###########################################
güvenlik duvarını dışa aktar = 1 dolar dışa aktarma değişkenleri = 2 dolar
############################################ otomatik sistem değişkenleri
eğer ["$ güvenlik duvarı" = "bağlantı kesildi"]; sonra yankı GÜVENLİK DUVARI BAĞLANTISI KESİLDİ;
export activateserver = »$ hayır» activateclient = »$ hayır» ıslak = »$ hayır»;
elif ["$ firewall" = "istemci"]; sonra GÜVENLİK DUVARI İSTEMCİSİNİ yankılayın;
export activateserver = »$ hayır» activateclient = »» ıslak = »$ hayır»;
elif ["$ güvenlik duvarı" = "sunucu"]; sonra yankı GÜVENLİK DUVARI SUNUCUSU;
export activateserver = »» activateclient = »$ hayır» ıslak = »$ hayır»;
elif ["$ güvenlik duvarı" = "istemci ve sunucu"]; sonra yankı GÜVENLİK DUVARI İSTEMCİSİ VE SUNUCUSU;
dışa aktarma etkinleştirme sunucusu = »»; export activateclient = »»; ıslak dışa aktar = »$ no»;
elif ["$ güvenlik duvarı" = "izin veren"]; sonra echo PERMISSIVE FIREWALL;
export activateserver = »$ hayır» activateclient = »$ hayır» ıslak = »»;
başka
$ check sudo echo iptables-legacy:
$ check sudo iptables-legacy -v -L INPUT
$ check sudo iptables-legacy -v -L ÇIKTI
$ check sudo echo iptables-nft:
$ check sudo iptables-nft -v -L GİRİŞ
$ sudo iptables-nft -v -L ÇIKIŞI kontrol edin
echo _____parameters____ $ 0 $ 1 $ 2
echo "parametresiz çevrim iptables'ı listelemektir."
echo "İlk parametre (iptables'ı etkinleştir): bağlantısı kesildi veya istemci veya sunucu veya istemci ve sunucu veya izin verilen."
echo "İkinci parametre: (isteğe bağlı): default.cfg dosyası /etc/f-iptables/default.cfg'yi seçer"
echo "Değişken ayarları:" $ (ls / etc / f-iptables /)
çıkış 0; fi
################
kaçırmak
echo $ 0 bağlantısı kesilmiş veya istemci veya sunucu veya istemci ve sunucu veya izin verilen veya değişkenleri veya iptables'ı listelemek için parametre kullanmadan atar.
echo $ 0 dosyası içinde bazı düzenlenebilir değişkenler içerir.
################################### yukarıdaki değişkenler etkinleştirildi
##################################
echo iptables değişkenlerini ayarlama
yankı ile etkinleştirilen değişkenler
kaçırmak
############################## iptables kuralları
echo iptables-legacy'yi ayarlama
sudo / usr / sbin / iptables-eski -t filtresi -F
sudo / usr / sbin / iptables-eski -t nat -F
sudo / usr / sbin / iptables-eski -t mangle -F
sudo / usr / sbin / ip6tables-eski -t filtresi -F
sudo / usr / sbin / ip6tables-eski -t nat -F
sudo / usr / sbin / ip6tables-eski -t mangle -F
sudo / usr / sbin / ip6tables-eski -Bir GİRİŞ -j DAMLA
sudo / usr / sbin / ip6tables-eski -A ÇIKTI -j DAMLA
sudo / usr / sbin / ip6tables-eski -BİR İLERİ -j DAMLA
sudo / usr / sbin / iptables-eski -A GİRİŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ istisnalar var sudo / usr / sbin / iptables-legacy -A INPUT -s $ istisnalar -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sports $ clientudp -m state –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A GİRİŞ -p icmp –icmp-tipi echo-cevap -j KABUL> / dev / null
sudo / usr / sbin / iptables-eski -Bir GİRİŞ -j DAMLA> / dev / null
sudo / usr / sbin / iptables-eski -A ÇIKIŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-eski -A ÇIKTI -d $ istisnalar -j KABUL> / dev / null
$ activ sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A ÇIKIŞ -p icmp –icmp-türü echo-istek -j KABUL> / dev / null
sudo / usr / sbin / iptables-eski -A ÇIKTI -j DAMLA
sudo / usr / sbin / iptables-eski -BİR İLERİ -j DAMLA
echo iptables-legacy etkin
kaçırmak
echo iptables-nft ayarı
sudo / usr / sbin / iptables-nft -t filtresi -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t karıştırmak -F
sudo / usr / sbin / ip6tables-nft -t filtresi -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t karıştırmak -F
sudo / usr / sbin / ip6tables-nft -A GİRİŞ -j DAMLA
sudo / usr / sbin / ip6tables-nft -A ÇIKTI -j DAMLA
sudo / usr / sbin / ip6tables-nft -A İLERİ -j DAMLA
sudo / usr / sbin / iptables-nft -A GİRİŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ istisnalar -j KABUL> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-response -j KABUL> / dev / null
sudo / usr / sbin / iptables-nft -A GİRİŞ -j DAMLA> / dev / null
sudo / usr / sbin / iptables-nft -A ÇIKIŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ istisnalar var sudo / usr / sbin / iptables-nft -A OUTPUT -d $ istisnalar -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A ÇIKIŞ -p icmp –icmp-türü echo-istek -j KABUL> / dev / null
sudo / usr / sbin / iptables-nft -A ÇIKTI -j DAMLA
sudo / usr / sbin / iptables-nft -A İLERİ -j DAMLA
echo iptables-nft etkin
kaçırmak
$ ıslak sudo / usr / sbin / iptables-legacy -F> / dev / null
$ ıslak sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-eski -Bir GİRİŞ -m durum-durum kuruldu -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ ıslak sudo / usr / sbin / iptables-legacy -A ÇIKTI -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -F> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -A GİRİŞ -m durum-durum kuruldu -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -A ÇIKTI -j KABUL> / dev / null
$ ıslak sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
############################
echo 0 $ 1 $ 2 $ attınız
# komut dosyasından çıkar
çıkış 0
Bu güvenlik duvarı bunu ağ geçidim için kullansaydı ve LAN içinde bir mürekkep balığı olsaydı nasıl kural koyardım ???