Saya menghabiskan beberapa waktu untuk memikirkan dua hal tentang iptables ini: kebanyakan dari mereka yang mencari tutorial ini adalah pemula dan kedua, banyak yang sudah mencari sesuatu yang cukup sederhana dan sudah dielaborasi.
Contoh ini untuk server web, tetapi Anda dapat dengan mudah menambahkan lebih banyak aturan dan menyesuaikannya dengan kebutuhan Anda.
Saat Anda melihat "x" berubah untuk ip Anda
#!/bin/bash
# Kita membersihkan tabel iptables -F iptables -X # Kita membersihkan NAT iptables -t nat -F iptables -t nat -X # tabel mangle untuk hal-hal seperti PPPoE, PPP, dan ATM iptables -t mangle -F iptables -t mangle -X # Kebijakan Saya pikir ini adalah cara terbaik untuk pemula dan # masih tidak buruk, saya akan menjelaskan keluaran (keluaran) semua karena mereka adalah koneksi keluar #, masukan kita membuang semuanya, dan tidak ada server yang harus meneruskan. iptables -P INPUT DROP iptables -P OUTPUT MENERIMA iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Pertahankan status. Segala sesuatu yang sudah terhubung (didirikan) dibiarkan seperti ini iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, kami tidak menentukan antarmuka karena # kami ingin semua iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh hanya secara internal dan dari kisaran ip iptables ini -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # monitoring misalnya jika mereka memiliki zabbix atau beberapa layanan snmp lainnya iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping terserah Anda iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh jika Anda ingin mengirim email # iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - wan ip server Anda yang sebenarnya LAN_RANGE = "192.168.xx / 21 "# Rentang LAN jaringan Anda atau vlan # Ip Anda yang tidak boleh masuk ke ekstranet,adalah menggunakan sedikit # logika jika kita memiliki antarmuka WAN murni, ia tidak boleh memasukkan # lalu lintas jenis LAN melalui antarmuka itu 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 "# Tindakan default - untuk dijalankan ketika ada aturan yang cocok dengan ACTION =" DROP "# Paket dengan ip yang sama dari server saya melalui wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paket dengan LAN Range untuk wan, saya taruh seperti ini jika Anda memiliki # jaringan tertentu, tetapi ini berlebihan dengan # aturan berikut di dalamnya loop "untuk" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Semua SPOOF Jaringan tidak diizinkan oleh wan untuk ip in $ SPOOF_IPS melakukan iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION selesai
Seperti biasa saya menunggu komentar Anda, pantau terus blog ini, Terima kasih
Ini membantu saya untuk terus belajar lebih banyak terima kasih disalin.
sama-sama, senang bisa membantu
Saya benar-benar minta maaf, tapi saya punya dua pertanyaan (dan satu sebagai hadiah 😉):
Apakah Anda akan datang dengan konfigurasi ini untuk menjalankan Apache dan menutup sisanya kecuali SSH?
#Kami membersihkan tabel
iptables -F
iptables -X
Kami membersihkan NAT
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –dport 80 -j TERIMA
ssh hanya secara internal dan dari kisaran ip ini
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j ACCEPT
Pertanyaan kedua: Apakah 7659 port yang digunakan di SSH dalam contoh ini?
Dan ketiga dan terakhir: di file manakah konfigurasi ini harus disimpan?
Terima kasih banyak untuk tutorialnya, sayang sekali Anda adalah seorang pemula dan tidak dapat memanfaatkannya dengan baik.
ini adalah aturan yang Anda butuhkan untuk http dari apache
iptables -A INPUT -p tcp –dport 80 -j TERIMA
tetapi Anda juga perlu mendeklarasikan kebijakan drop default (ada di skrip)
iptables -P DRP INPUT
iptables -P OUTPUT ACCEPT
iptables -P MAJU DROP
dan ini karena jika Anda jauh, itu akan membuang Anda.
iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
jika 7659 adalah port ssh itu dalam contoh, secara default adalah 22, meskipun saya sarankan Anda mengubah ke port "tidak terkenal"
Sobat, saya tidak tahu, seperti yang Anda inginkan ... firewall.sh dan Anda letakkan di rc.local (sh firewall.sh) sehingga berjalan otomatis, itu tergantung pada sistem operasi apa yang Anda miliki, ada file di mana Anda dapat menempatkan aturan secara langsung.
Hai, skrip Anda sangat bagus, menganalisisnya .... Apakah Anda tahu bagaimana saya dapat menolak semua permintaan dari pengguna saya ke situs web tertentu?…. tetapi situs web ini memiliki banyak server….
Saya merekomendasikan opsi lain:
1) Anda dapat membuat zona palsu di dns Anda ...
2) Anda dapat menempatkan proxy dengan acl
embargo dosa
Untuk iptables Anda bisa menyukai ini ... ini tidak selalu merupakan pilihan terbaik (ada lebih banyak cara)
iptables -A INPUT -s blog.desdelinux.ne -j DROP
iptables -A OUTPUT -d blog.desdelinux.net -j DROP
Beri tahu saya jika berhasil
Terima kasih atas jawabannya, semuanya beres. Saya bertanya tentang porta karena saya terkejut menggunakan 7659, karena port privat dimulai pada 49152, dan dapat mengganggu beberapa layanan atau sesuatu.
Sekali lagi, terima kasih untuk semuanya, itu bagus!
Salam.
BrodyDalle, bagaimana saya bisa menghubungi Anda? Sangat menarik naskah Anda.
soulofmarionet_1@hotmail.com
Baris terakhir "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" adalah untuk mencegah mesin Anda melakukan spoofing? Atau mungkinkah beberapa paket yang diracuni masuk dan keluar dengan sumber yang diracuni itu dan itulah mengapa aturan tersebut juga disertakan dengan OUTPUT?
Terima kasih banyak atas klarifikasinya !!!
ini script iptables saya sendiri, lengkap sekali:
#franes.iptables.airoso
# doc.iptables.airoso: iptables untuk warisan dan untuk nft
#
# port firewall
##########################
#! / bin / bash
#
# bersihkan layar
############################# mulai dari /etc/f-iptables/default.cfg ||i>i>i>
jelas
# tinggalkan baris kosong
gema
ekspor yes = »» no = »echo off»
# variabel yang dapat Anda ubah untuk mengizinkan akses
###################### variabel untuk diubah dengan $ yes atau $ no
ekspor hayexcepciones = »$ no»
# ada pengecualian: $ yes untuk mengizinkan host yang luar biasa dan $ no untuk menonaktifkan
ekspor hayping = »$ no»
# hayping: $ yes untuk mengizinkan ping ke pihak ketiga dan $ tidak untuk menolak
ekspor haylogserver = »$ no»
# haylogeosserver: $ yes untuk bisa log tcp $ no agar tidak bisa log tcp
######
###################### variabel untuk mengubah penambahan "," atau dengan rentang ":"
ekspor pengecualian = »baldras.wesnoth.org»
# pengecualian mengizinkan satu atau beberapa host dari firewall atau tanpa nilai
ekspor logserver = buang, ipp, dikt, ssh
# port server tcp yang dicatat ketika paket masuk
ekspor redserver = 0/0
# redserver: jaringan untuk port server lebih disukai jaringan lokal atau beberapa ips
ekspor klien merah = 0/0
# clientnet: jaringan untuk port klien lebih disukai daripada semua jaringan
ekspor servidortcp = buang, ipp, dict, 6771
# servidortcp: port server tcp yang ditentukan
export serverudp = buang
#udpserver: port server udp yang ditentukan
ekspor clientudp = domain, bootpc, bootps, ntp, 20000: 45000
#udp client: port klien udp yang ditentukan
ekspor clienttcp = domain, http, https, ipp, git, dict, 14999: 15002
# klien tcp: port klien tcp yang ditentukan
############################ akhir dari /etc/f-iptables/default.cfg ||i>i>i>
############################## akhir variabel yang akan diubah
ekspor firewall = $ 1 variabel = $ 2
jika ["$ variabel" = "$ NULL"]; lalu sumber /etc/f-iptables/default.cfg;
lain sumber / etc / f-iptables / $ 2; fi
############################## atau akan menimpa variabel dengan file .cfg
############################################### ########################################
ekspor firewall = $ 1 variabel ekspor = $ 2
######################################## variabel sistem otomatis
if ["$ firewall" = "terputus"]; lalu echo FIREWALL DISCONNECTED;
ekspor activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client"]; lalu echo KLIEN FIREWALL;
ekspor activateserver = »$ tidak» activateclient = »» basah = »$ tidak»;
elif ["$ firewall" = "server"]; lalu echo FIREWALL SERVER;
export activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "klien dan server"]; lalu echo FIREWALL CLIENT AND SERVER;
ekspor aktifkan server = »»; ekspor activateclient = »»; ekspor basah = »$ no»;
elif ["$ firewall" = "permisif"]; lalu echo PERMISSIVE FIREWALL;
ekspor activateserver = »$ no» activateclient = »$ no» wet = »»;
lain
$ check sudo echo iptables-legacy:
$ cek sudo iptables-legacy -v -L INPUT
$ cek sudo iptables-legacy -v -L OUTPUT
$ check sudo echo iptables-nft:
$ cek sudo iptables-nft -v -L INPUT
$ cek sudo iptables-nft -v -L OUTPUT
echo _____parameters____ $ 0 $ 1 $ 2
echo "cast tanpa parameter adalah daftar iptables."
echo "Parameter pertama (aktifkan iptables): terputus atau klien atau server atau klien dan server atau permisif."
echo "Parameter kedua: (opsional): file default.cfg memilih /etc/f-iptables/default.cfg"
echo "Pengaturan variabel:" $ (ls / etc / f-iptables /)
keluar 0; fi
#################
gema
echo Melempar $ 0 terputus atau klien atau server atau klien dan server atau permisif atau variabel atau tanpa menggunakan parameter untuk membuat daftar iptables.
echo File $ 0 berisi beberapa variabel yang dapat diedit di dalamnya.
############################## variabel di atas diaktifkan
##############################
echo mengatur variabel iptables
variabel yang diaktifkan gema
gema
########################## aturan iptables
echo Setting iptables-legacy
sudo / usr / sbin / iptables-legacy -t filter -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -t filter -F
sudo / usr / sbin / ip6tables-legacy -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A FORWARD -j DROP
sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ exception -j ACCEPT> / dev / null
$ aktifkan sudo server / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan 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 mapan -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state didirikan -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ exception -j ACCEPT> / dev / null
$ aktifkan sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan server sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan klien 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 OUTPUT -p icmp –icmp-type echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
echo iptables-legacy diaktifkan
gema
echo Pengaturan iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t filter -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A KELUARAN -j DROP
sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / 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 $ exception -j ACCEPT> / dev / null
$ aktifkan server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan 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 state –state mapan -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state mapan -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ exception -j ACCEPT> / dev / null
$ aktifkan server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan 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 OUTPUT -p icmp –icmp-type echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
echo iptables-nft diaktifkan
gema
$ wet sudo / usr / sbin / iptables-legacy -F> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state –state didirikan -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -F> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state –state didirikan -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
#########################
echo Anda telah melempar $ 0 $ 1 $ 2
# keluar dari skrip
keluar 0
Bagaimana saya menetapkan aturan jika firewall ini menggunakannya untuk gateway saya dan memiliki squid di dalam LAN ???