Saya meluangkan masa untuk memikirkan dua perkara mengenai iptables ini: kebanyakan mereka yang mencari tutorial ini adalah pemula dan kedua, banyak yang sudah mencari sesuatu yang cukup sederhana dan sudah dihuraikan.
Contoh ini adalah untuk pelayan web, tetapi anda boleh menambahkan lebih banyak peraturan dengan mudah dan menyesuaikannya dengan keperluan anda.
Apabila anda melihat "x" ubah untuk ip anda
#!/bin/bash
#Kami membersihkan jadual iptables -F iptables -X # Kami membersihkan NAT iptables -t nat -F iptables -t nat -X # mangle table untuk perkara seperti PPPoE, PPP, dan ATM iptables -t mangle -F iptables -t mangle -X # Polies Saya fikir ini adalah cara terbaik untuk pemula dan # masih tidak buruk, saya akan menerangkan output kerana semuanya adalah sambungan keluar #, input kami membuang semuanya, dan tidak ada pelayan yang harus meneruskan. iptables -P INPUT DROP iptables -P OUTPUT MENERIMA iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. Segala-galanya yang telah disambungkan (dibentuk) dibiarkan seperti ini: iptables -SATU INPUT -m -state DITETAPKAN, BERKAITAN -j MENERIMA # Peranti gelung. iptables -A INPUT -i lo -j MENERIMA # http, https, kami tidak menentukan antara muka kerana # kami mahu ia untuk semua iptables -A INPUT -p tcp --dport 80 -j MENERIMA iptables -A INPUT -p tcp - dport 443 -j MENERIMA # ssh hanya secara dalaman dan dari rangkaian iptables ip ini -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j MENERIMA # pemantauan misalnya jika mereka mempunyai zabbix atau yang lain perkhidmatan snmp iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping baik terpulang kepada anda iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j MENERIMA #mysql dengan postgres adalah port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j MENERIMA #sendmail bueeeh jika anda ingin menghantar beberapa surat #iptables -A OUTPUT -p tcp --dport 25 -j MENERIMA # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # IP pelayan - ip sebenar pelayan anda LAN_RANGE = "192.168.xx / 21" # rangkaian LAN rangkaian atau vlan # Ip anda yang tidak boleh memasuki extranet,adalah menggunakan sedikit logik # jika kita mempunyai antara muka WAN semata-mata ia tidak boleh memasuki # jenis lalu lintas LAN melalui antara muka 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 "# Tindakan lalai - untuk dilaksanakan apabila mana-mana peraturan sepadan dengan TINDAKAN =" DROP "# Paket dengan ip pelayan saya yang sama melalui wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paket dengan Julat LAN untuk wan, saya meletakkannya seperti ini sekiranya anda mempunyai # rangkaian tertentu, tetapi ini berlebihan dengan # peraturan berikut di dalam gelung " untuk "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Semua Rangkaian SPOOF tidak dibenarkan oleh wan untuk ip dalam $ SPOOF_IPS lakukan iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ TINDAKAN selesai
Seperti biasa saya menunggu komen anda, nantikan blog ini, Terima kasih
Ini membantu saya untuk terus belajar sedikit lagi terima kasih disalin.
anda dialu-alukan, gembira dapat membantu
Saya benar-benar minta maaf, tetapi saya mempunyai dua soalan (dan satu sebagai hadiah 😉):
Adakah anda akan tiba dengan konfigurasi ini untuk menjalankan Apache dan menutup yang lain kecuali SSH?
#Kami membersihkan meja
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 dalaman dan dari rangkaian ip ini
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j TERIMA
Soalan kedua: Adakah 7659 port yang digunakan dalam SSH dalam contoh ini?
Dan ketiga dan terakhir: dalam fail mana konfigurasi ini harus disimpan?
Terima kasih banyak untuk tutorial ini, memalukan bahawa anda seorang pemula dan tidak dapat memanfaatkannya dengan baik.
ini adalah peraturan yang anda perlukan untuk http dari apache
iptables -A INPUT -p tcp –dport 80 -j TERIMA
tetapi anda juga perlu menyatakan dasar penurunan lalai (ada dalam skrip)
iptables -P INPUT DROP
iptables-P OUTPUT ACCEPT
iptables -P KEHADIRAN HUJUNG
dan ini kerana jika anda jauh, ia akan membuang anda.
iptables -A INPUT -m state -state DILAYAN, BERKAITAN -j MENERIMA
jika 7659 adalah port ssh dalam contoh, secara lalai ia adalah 22, walaupun saya mengesyorkan anda menukar ke port "tidak terkenal"
Man, saya tidak tahu, seperti yang anda mahukan ... firewall.sh dan anda meletakkannya di rc.local (sh firewall.sh) supaya ia berjalan secara automatik, ia bergantung pada sistem operasi yang anda miliki, ada fail di mana anda boleh meletakkan peraturan secara langsung.
Hei, skrip anda sangat bagus, menganalisisnya .... Adakah anda tahu bagaimana saya boleh menolak semua permintaan pengguna saya ke laman web tertentu?…. tetapi laman web ini mempunyai banyak pelayan….
Saya mengesyorkan pilihan lain:
1) Anda boleh membuat zon palsu di dns anda ...
2) Anda boleh meletakkan proksi dengan acl
embargo dosa
Untuk iptables, anda boleh menyukai ini ... bukan selalu pilihan terbaik (ada lebih banyak cara)
iptables -A INPUT -s blog.desdelinux.ne -j JATUHKAN
iptables -A OUTPUT -d blog.desdelinux.net -j DROP
Beritahu saya jika ia berjaya
Terima kasih atas jawapannya, semuanya selesai. Saya bertanya mengenai pelabuhan itu kerana saya terkejut menggunakan 7659, kerana pelabuhan persendirian bermula pada 49152, dan ia boleh mengganggu perkhidmatan atau sesuatu.
Sekali lagi, terima kasih untuk segalanya, itu bagus!
Greetings.
BrodyDalle, bagaimana saya boleh menghubungi anda? Sangat menarik skrip anda.
soulofmarionet_1@hotmail.com
Baris sebelumnya "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" adalah untuk mengelakkan mesin anda sendiri melakukan spoofing? Atau mungkinkah sebilangan paket beracun masuk dan dapat keluar dengan sumber beracun itu dan itulah sebabnya peraturan tersebut juga disertakan dengan OUTPUT?
Terima kasih banyak atas penjelasan !!!
ini adalah skrip iptables saya sendiri, sangat lengkap:
# franes.iptables.berangin
# doc.iptables.airoso: iptables untuk warisan dan untuk nft
#
# port firewall
############################
#! / Bin / Bash
#
# kosongkan skrin
############################# permulaan /etc/f-iptables/default.cfg |||||
jelas
# tinggalkan garis kosong
echo
eksport ya = »» tidak = »gema mati»
# pemboleh ubah yang boleh anda ubah untuk membenarkan akses
###################### pemboleh ubah untuk diubah dengan $ ya atau $ tidak
eksport hayexcepciones = »$ tidak»
# ada pengecualian: $ ya untuk membenarkan hos yang luar biasa dan $ tidak untuk melumpuhkan
eksport rumput kering = »$ tidak»
# hayping: $ ya untuk membenarkan ping kepada pihak ketiga dan $ tidak untuk dinafikan
eksport haylogserver = »$ tidak»
# haylogeosserver: $ ya untuk dapat log tcp $ tidak untuk tidak dapat log tcp
######
###################### pemboleh ubah untuk diubah dengan menambahkan "," atau dengan rentang ":"
pengecualian eksport = »baldras.wesnoth.org»
# pengecualian membenarkan hos tunggal atau berbilang dari firewall atau tiada nilai
eksport logserver = buang, ipp ,ict, ssh
# port pelayan tcp yang dilog semasa paket masuk
eksport redserver = 0/0
# redserver: rangkaian untuk port pelayan rangkaian tempatan pilihan atau beberapa ips
pelanggan eksport merah = 0/0
#clientnet: rangkaian untuk port klien lebih baik daripada semua rangkaian
eksport servidortcp = buang, ipp, dikt, 6771
# servidortcp: port pelayan tcp yang ditentukan
eksport serverudp = buang
#udpserver: port pelayan udp yang ditentukan
eksport clientudp = domain, bootpc, bootps, ntp, 20000: 45000
#udp client: port klien udp yang ditentukan
eksport clienttcp = domain, http, https, ipp, git ,ict, 14999: 15002
# tcp client: port klien tcp yang ditentukan
############################# akhir /etc/f-iptables/default.cfg |||||
############################### akhir pemboleh ubah untuk mengubah suai
eksport firewall = $ 1 pemboleh ubah = $ 2
jika ["$ variables" = "$ NULL"]; kemudian sumber /etc/f-iptables/default.cfg;
sumber lain / etc / f-iptables / $ 2; fi
############################### atau akan menimpa pemboleh ubah dengan fail .cfg
################################################# #########################################
eksport firewall = $ 1 pemboleh ubah eksport = $ 2
######################################### pemboleh ubah sistem automatik
jika ["$ firewall" = "terputus"]; kemudian gema FIREWALL TIDAK DITUNGGU;
export activateserver = »$ no» activateclient = »$ no» basah = »$ tidak»;
elif ["$ firewall" = "client"]; kemudian gema CLIENT FIREWALL;
export activateserver = »$ no» activateclient = »» basah = »$ tidak»;
elif ["$ firewall" = "pelayan"]; kemudian gema SERVER FIREWALL;
export activateserver = »» activateclient = »$ no» basah = »$ tidak»;
elif ["$ firewall" = "pelanggan dan pelayan"]; kemudian gema CLIENT DAN SERVER FIREWALL;
eksport aktifkan pelayan = »»; export activateclient = »»; eksport basah = »$ tidak»;
elif ["$ firewall" = "permisif"]; kemudian gema TUNJANG PERMISSIVE;
export activateserver = »$ no» activateclient = »$ no» basah = »»;
lagi
$ semak sudo echo iptables-legacy:
$ semak sudo iptables-legacy -v -L INPUT
$ semak sudo iptables-legacy -v -L OUTPUT
$ semak sudo echo iptables-nft:
$ semak sudo iptables-nft -v -L INPUT
$ semak sudo iptables-nft -v -L OUTPUT
gema _____parameter____ $ 0 $ 1 $ 2
echo "cast tanpa parameter adalah untuk menyenaraikan iptables."
echo "Parameter pertama (aktifkan iptables): terputus atau pelanggan atau pelayan atau pelanggan dan pelayan atau permisif."
echo "Parameter kedua: (pilihan): fail .cfg lalai memilih /etc/f-iptables/default.cfg"
echo "Tetapan berubah-ubah:" $ (ls / etc / f-iptables /)
jalan keluar 0; fi
#################
echo
echo Membuang $ 0 terputus atau klien atau pelayan atau pelanggan dan pelayan atau permisif atau pemboleh ubah atau tanpa menggunakan parameter untuk menyenaraikan iptables.
echo Fail $ 0 mengandungi beberapa pemboleh ubah yang dapat diedit di dalamnya.
############################### pemboleh ubah di atas diaktifkan
#################################
echo menetapkan pemboleh ubah iptables
pemboleh ubah diaktifkan gema
echo
############################ peraturan iptables
echo Menetapkan 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 MENERIMA> / 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 $ pengecualian -j ACCEPT> / dev / null
$ activate server sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan pelayan 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 found -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 found -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -j TERIMA> / dev / null
sudo / usr / sbin / iptables-legacy-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 $ pengecualian -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 pelayan sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport -sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan pelanggan 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 TERIMA> / dev / null
sudo / usr / sbin / iptables-legacy-OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy-A FORWARD -j DROP
echo iptables-legacy diaktifkan
echo
echo Menetapkan 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 OUTPUT -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 MENERIMA> / 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 $ pengecualian -j ACCEPT> / dev / null
$ aktifkan pelayan sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan pelayan 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 found -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 found -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j TERIMA> / 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 $ pengecualian -j ACCEPT> / dev / null
$ aktifkan pelayan sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktifkan pelayan 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 TERIMA> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
echo iptables-nft didayakan
echo
$ basah sudo / usr / sbin / iptables-legacy -F> / dev / null
$ basah sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-legacy -A INPUT -m state -state ditubuhkan -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ basah sudo / usr / sbin / iptables-legacy-A OUTPUT -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ basah sudo / usr / sbin / iptables-nft -F> / dev / null
$ basah sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-nft -A INPUT -m state -state ditubuhkan -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ basah sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ basah sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
###########################
gema anda telah membuang $ 0 $ 1 $ 2
# keluar skrip
jalan keluar 0
Bagaimana saya menetapkan peraturan jika firewall ini menggunakannya untuk gateway saya dan mempunyai sotong di LAN ???