iptables

Iptables untuk pemula

Iptables untuk pemula
Iptables pada dasarnya adalah firewall utama yang digunakan untuk sistem Linux, ada alternatif seperti nftables tetapi Iptables tetap menjadi yang utama, sangat fleksibel dengan menerima arahan langsung dari pengguna, anda dapat memuat dan memunggah peraturan apabila diperlukan untuk meningkatkan dasar firewall anda ketepatan.

Sebenarnya anda tidak perlu mengetahui sintaks Iptable untuk menggunakannya, anda mempunyai alat grafik seperti Firewall Builder yang boleh menjadikan proses pembelajaran tidak perlu tetapi jika keinginan untuk menambah pengetahuan pentadbiran Linux, Iptables adalah langkah pertama untuk belajar bagaimana praktikal mentadbir keselamatan di Linux dan bahkan lebih senang menguruskan CISCO atau peranti keselamatan Fortigate dan seumpamanya.

Iptables pada dasarnya membolehkan anda mengarahkan sistem anda untuk menerima, menolak atau meneruskan sambungan bergantung pada parameter yang dipilih, misalnya untuk mengarahkan semua sambungan ke port X ke alamat IP yang berbeza, untuk menyekat semua sambungan yang berasal dari IP, julat IP tertentu atau ke terima semua sambungan yang berasal dari alamat IP yang disenaraikan di antara banyak fungsi lain.

Dalam tutorial ini kita akan belajar bagaimana melindungi Pelayan Web, bagaimana meneruskan sambungan ke alamat IP dalaman dari LAN kami dan bagaimana menawarkan perkhidmatan khusus hanya ke alamat IP yang disenaraikan.

Memasang Iptables

Untuk memasang iptables pada sistem Debian / Ubuntu hanya jalankan "apt update && apt install iptables" sebagai root atau dengan "sudo" sebagai awalan seperti pada gambar berikut.

Membuka port HTTP dan HTTPS

Pertama sekali mari kita tambahkan semua dasar MENERIMA bermula oleh pelayan web.

iptables -A INPUT -p tcp --dport 80 -j MENERIMA
iptables -A INPUT -p tcp --dport 443 -j MENERIMA

Untuk melihat peraturan kami ditambahkan jalankan "iptables -L"

Di mana:

Iptables = memanggil program
-A = menambah peraturan
INPUT = lalu lintas masuk
-hlm = protokol
-ddport = pelabuhan destinasi
-j = tentukan "target", target adalah jenis kebijakan: MENERIMA, MENGHILANG, QUEUE atau KEMBALI.

Kemudian pada contoh gambar di atas kami memberitahu Iptables untuk menambahkan peraturan agar lalu lintas masuk melalui protokol TCP dan port 80 dan 443 diterima.

Kita dapat mengubah perintah untuk menerima sambungan hanya dari IP tertentu dengan menambahkan parameter “-s":

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 80 -j MENERIMA

Di mana:

s = sumber
Iptables -L = menyenaraikan semua peraturan yang dimuat iptables
Iptables -L -v = sama dengan verbosity.

Kami juga boleh menguji firewall kami dengan nmap:

Seperti yang kita lihat, port 80 terbuka baik menurut "iptables -L" dan Nmap.

Catatan: Untuk maklumat lebih lanjut mengenai penggunaan Nmap, anda boleh membaca tutorial kami mengenainya

Melindungi pelayan anda

#Buka perkhidmatan HTTP dan HTTPS.
iptables -A INPUT -p tcp --dport 80 -j MENERIMA
iptables -A INPUT -p tcp --dport 443 -j MENERIMA
#Buka Perkhidmatan SSH Port
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate BARU, DITETAPKAN -j MENERIMA

Di mana parameter baru adalah:

-m = bermaksud "match" dan digunakan untuk memanggil sambungan Iptable seperti conntrack yang bukan merupakan sebahagian daripada fungsi teras iptable.

jalan masuk = Membolehkan untuk mengesan maklumat mengenai sambungan seperti alamat tertentu atau dalam keadaan ini keadaan sambungan. Ini mesti digunakan dengan berhati-hati, kerana banyak peraturan untuk melindungi pelayan dari beberapa serangan menggunakan conntrack sementara penggunaannya dibatasi oleh perkakasan dan batasan tersebut dapat digunakan untuk membebani sumber pelayan.

-ctstate = menentukan keadaan peraturan yang akan dipadankan, keadaan yang mungkin adalah: BARU, DITUBUHKAN, BERKAITAN dan TERLARANG.

#Lindungi Perkhidmatan SSH anda daripada serangan brute force dengan hanya membenarkan IP tertentu
untuk mengakses iptables -A INPUT -p tcp -s X.X.X.X --port 22 -m conntrack --ctstate BARU,
DITETAPKAN -j MENERIMA
#Lindungi Perkhidmatan SSH anda daripada serangan kekerasan dengan membatasi percubaan sambungan
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate BARU -j 22-test
Iptables -A 22 ujian -m terbaru --nama SAMBUNGAN --set --mask 255.255.255.255 - sumber
Iptables -A 22 ujian -m terbaru --nama CONNECTIONS --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitungan 3 -j 22-perlindungan
Iptables -A 22-test -j MENERIMA
Iptables -A 22-protection -j TURUNKAN

Di mana:
Dalam liNe pertama peraturan kami mengatakan "-m conntrack -ctstate BARU " yang bermaksud jika sambungannya baru maka lulus ke aturan "22-test".

Baris kedua mengatakan paket netmask 255.255.255.255 dinamakan sebagai HUBUNGAN .

Baris ketiga mengatakan jika a HUBUNGAN nampaknya lebih dari 3 kali dalam 30 saat firewall terus menggunakan rantai 22-perlindungan. Baris keempat mengatakan jika HUBUNGAN nampaknya tidak lebih dari 3 kali dalam 30 saat ia dapat diterima.
Baris kelima, yang tergolong dalam 22-perlindungan rantai mengatakan untuk menjatuhkan HUBUNGAN jika kelihatan lebih dari 3 kali dalam masa 30 saat.

Sekarang hingga akhir, mari menolak semua sambungan yang tidak diterima dan biarkan semua lalu lintas keluar:

iptables -P OUTPUT MENERIMA
iptables -P INPUT DROP

Di mana -P bermaksud rantaian sasaran, ingatlah sasarannya adalah kebijakan, MENERIMA, MENGHILANG, MENGATASI atau MENGEMBALIKAN. Dalam hal ini, kita mengatakan bahawa kebijakan lalai untuk lalu lintas keluar adalah untuk menerima dan kebijakan lalai untuk lalu lintas yang masuk adalah menolak, kecuali kita menetapkan sesuatu yang berbeza dalam peraturan sebelumnya. Ini adalah firewall yang sangat asas yang tidak termasuk peraturan untuk banyak serangan, untuk tujuan pembelajaran dan bukan untuk pengeluaran, di akhir artikel saya melampirkan firewall yang saya gunakan untuk pengeluaran di pelayan, ia mempunyai komen yang menjelaskan setiap peraturan.

MENGHADAPI Sambungan ke Pelabuhan Khas ke ALAMAT IP KHUSUS

Ini sangat berguna juga untuk pengguna desktop yang ingin melakukan sambungan melalui peranti tertentu, ia dapat berguna bahkan untuk pemain, biasanya kita melakukannya dari pengaturan router tetapi mari kita anggap perangkat penghala menjalankan Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --port 8080 -j DNAT - ke destinasi
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.X.X.X

Peraturan di atas memanggil NAT (Terjemahan Alamat Rangkaian) untuk menentukan sambungan melalui protokol TCP, ke alamat X.X.X.X dan port 8080 akan dialihkan ke alamat Y.Y.Y.Y, pelabuhan 80. Peraturan kedua menetapkan balasan mesti dihantar ke alamat sumber (X.X.X.X). Kita boleh menggunakan peraturan ini untuk membenarkan akses ke kamera IP, untuk membolehkan permainan dalam talian dengan rangkaian luaran, dll.

Tutorial ini bertujuan untuk memperkenalkan pemula kepada Iptables dan hanya menerangkan sejumlah fungsi asas. Di bawah ini anda dapat melihat contoh firewall terancang yang digunakan untuk pelayan produksi, ini termasuk dari beberapa peraturan yang telah kita lihat hingga peraturan yang lebih kompleks untuk mencegah serangan DDoS antara lain.
Tutorial seterusnya adalah mengendus dalam rangkaian tempatan, tetapi pada tutorial seterusnya saya akan menerangkan beberapa peraturan yang diterapkan pada firewall di bawah ini.  Terima kasih kerana mengikuti LinuxHint.com, terus ikuti kami untuk kemas kini di masa depan mengenai Iptables dan Linux secara umum.

Bonus: Contoh firewall pengeluaran

iptables -F
# ---- Aktifkan perlindungan mesej ralat buruk
aktifkan / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Hidupkan penapisan laluan terbalik. Lebih selamat, tetapi memecahkan perutean asimetrik dan / atau IPSEC
aktifkan / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Jangan terima paket yang diarahkan sumber. Peralihan sumber jarang digunakan untuk sah
tujuan melumpuhkan / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Nonaktifkan penerimaan pengalihan ICMP yang dapat digunakan untuk mengubah jadual penghalaan anda
lumpuhkan / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Karena kami tidak menerima pengalihan, jangan kirim pesan Redirect juga
lumpuhkan / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Abaikan paket dengan alamat yang mustahil
lumpuhkan / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Lindungi dari membungkus nombor urutan dan bantu pengukuran masa perjalanan pergi balik
aktifkan / proc / sys / net / ipv4 / tcp_timestamps
# ---- Membantu menentang serangan DoS atau DDoS syn-banjir menggunakan pilihan awal tertentu
Nombor urutan TCP membolehkan / proc / sys / net / ipv4 / tcp_syncookies
# ---- Gunakan Selective ACK yang dapat digunakan untuk menandakan bahawa paket tertentu tidak ada
lumpuhkan / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
# Sekarang kita boleh mula menambahkan perkhidmatan terpilih ke penapis firewall kita. Perkara pertama
adalah iptables antara muka localhost -A INPUT -i lo -j MENERIMA
#Kami memberitahu firewall untuk mengambil semua paket masuk dengan bendera tcp TIADA dan hanya HAPUSnya.
iptables -A INPUT -p tcp ! -m conntrack --ctstate BARU -j TURUN
#Kami memberitahu iptables untuk menambahkan (-A) peraturan pada yang masuk (INPUT) - SSH berfungsi pada port 50683
sebaliknya 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j TERIMA
iptables -A INPUT -p tcp -m tcp -s ip khusus -dport 50683 -j MENERIMA
iptables -A INPUT -p tcp -m tcp -s ip khusus -dport 50683 -j MENERIMA
iptables -A INPUT -p tcp -m tcp -s ip khusus --dport 50683 -j MENERIMA
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate BARU -m terbaru --set
--namakan SSH -j TERIMA
iptables -A INPUT -p tcp --dport 50683 -m terkini --kemas kini --seconds 60 --hitcount 4
--rttl --nama SSH -j LOG - awalan log "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m terkini --kemas kini --seconds 60 --hitcount 4
--rttl --nama SSH -j TURUN
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate BARU -m terbaru --set
--namakan SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate BARU -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate BARU -m terkini --kemas kini
--detik 60 --hitungan 4 --rttl --nama SSH -j ULOG --ulog-awalan SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate BARU -m terkini --kemas kini
--saat 60 --hitungan 4 --rttl --nama SSH -j DROP
# Sekarang saya membenarkan imap, dan smtp.
-INPUT -p tcp --port 25 -j TERIMA
# Membolehkan sambungan muncul dan timbul
-INPUT -p tcp --port 110 -j TERIMA
-INPUT -p tcp --port 995 -j MENERIMA
############ IMAP & IMAPS ############
-INPUT -p tcp --dport 143 -j MENERIMA
-INPUT -p tcp --port 993 -j MENERIMA
########### MYSQL ###################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j MENERIMA
########## Sistem CD1 R1soft ###############
iptables -A INPUT -p tcp -m tcp -s ip khusus -dport 1167 -j MENERIMA
############### keluar ###################
iptables -I INPUT -m conntrack --state yang DILAYAN, BERKAITAN -j MENERIMA
### Benarkan berterusan, blok masuk tidak ditentukan ###
iptables -P OUTPUT MENERIMA
iptables -P INPUT DROP
iptables -L -n
iptables-simpan | tee / etc / iptables.ujian.peraturan
iptables-memulihkan < /etc/iptables.test.rules
#service iptables dimulakan semula
Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...
Tutorial Battle for Wesnoth
The Battle for Wesnoth adalah salah satu permainan strategi sumber terbuka paling popular yang boleh anda mainkan pada masa ini. Bukan hanya permainan...