Ketika Gilles menunjukkan konsepnya seperti ini: Tambahkan aturan ACCEPT untuk setiap hal spesifik yang ingin Anda izinkan apakah dengan IP sumber atau kualifikasi lainnya, lalu tetapkan kebijakan default untuk TOLAK.
Caleb
Jawaban:
27
Saya menulis posting blog tentang aturan dasar Iptables untuk pengguna desktop sejak lama dan Anda mungkin harus membacanya, dan artikelnya terkait dengan desain firewall Stateful . Tetapi pra kernel 2.6.39 (yang termasuk ipsetdan Anda mungkin ingin menggunakannya untuk daftar putih IP jika Anda memiliki lebih dari 10 untuk daftar putih (di mana 10 adalah sewenang-wenang)).
Pegangan pertama menyatakan bahwa kita tahu kita ingin menerima atau menjatuhkan, dan antarmuka.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
Jika Anda hanya ingin melakukan izin dengan IP saja, tanpa status
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Anda cenderung mengalami masalah dalam melakukan hal ini, dan saya sarankan menggunakan keadaan untuk membuat hidup Anda lebih mudah. Misalnya, tidak mengizinkan -i lodan -o lopasti akan menimbulkan masalah untuk aplikasi tertentu.
Saya mencoba kedua penyetelan dan KeePass2 tidak akan mulai, tahu? Juga jika saya melakukan iptables -Fitu untuk menghapus semua aturan, bahkan tidak bisa ping ubuntu.com
Pawel Cioch
@PawelCioch mengapa KeePass2 memerlukan koneksi internet?
Alex
@ Alex untuk menyimpan file DB di lokasi yang jauh, ini saya ingin IP tunggal. Tapi saya
mengerti
10
Inilah contoh (belum diuji!) Yang hanya memblokir koneksi masuk . Koneksi melalui antarmuka loopback, yang berasal dari 192.168.3.x, ICMP, atau ke port SSH diizinkan. Semua koneksi lain ditolak.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
@Gilles untuk menggunakan negara yang TERKAIT dan DITETAPKAN dengan benar, Anda harus mencocokkan paket awal dengan status BARU. lodalam contoh di atas dikecualikan dari pencocokan negara dan selalu diizinkan.
penguin359
@ penguin359: Bisakah Anda menguraikan mengapa BARU diperlukan? Saya jauh dari pakar iptables, saya sebagian menyalin aturan ini dari router rumah saya, yang tidak cocok dengan BARU. Sejauh yang saya mengerti, semua yang tersisa setelah aturan pertama adalah paket BARU (atau UNTRACKED). (Jika saya terlalu jauh dari sasaran dan Anda tidak dapat menjelaskan dalam komentar, poskan versi Anda dengan jawaban sebagai jawaban dan saya akan menghapus milik saya.)
Gilles 'SO- stop being evil'
@Gilles Saya selalu meninggalkan status INVALID sebelum menerima apa pun ... yang membuat apa pun tidak INVALID, TERKAIT, DIDIRIKAN, pasti keadaan BARU. Tapi saya tidak tahu alasan apa pun yang lain harus menentukan BARU. Secara teori, jika Anda tidak menangani INVALID, dan Anda tidak menentukan BARU, Anda bisa menerima INVALID. Tetapi begitu INVALID ditangani, menurut saya memeriksa keadaan BARU pada setiap aturan hanya membutuhkan lebih banyak pemrosesan untuk paket.
xenoterracide
@Gilles juga merupakan kebijakan standar penolakan yang buruk, karena ia mengirim paket tolak untuk setiap paket yang diterima, ini menambah serangan DOS.
Aturan di bawah ini hanya akan memungkinkan IP Anda dan Memblokir semua IP lain melalui port 22 atau ssh. Uji dengan terminal baru sebelum memutuskan koneksi.
terima kasih atas jawaban singkatnya. Bagaimana ini akan berubah jika saya ingin mengizinkan beberapa IP dan rentang IP. Di tempat yourIPaddresssaya dapat menambahkan beberapa alamat dan rentang IP? Dan jika saya menggunakan SSH pada port non-standar seperti 2888, maka perintahnya akan mengubah 22contoh Anda menjadi 2288? Juga, apakah ini juga akan memblokir rsync, sftp, dll ke server ini dari semua IP kecuali yang diizinkan?
PKHunter
1
Catatan yang -p tcppenting di sini karena --dporttidak berfungsi tanpanya. Saya juga menyarankan menggunakan -j REJECTdaripada DROPkarena REJECTmembuat port identik dengan port tertutup dan DROPmembuat paket-paket yang ditakdirkan untuk port black holed. Dalam praktiknya, penyerang jarak jauh dapat mendeteksi DROPport yang dikonfigurasi dari port yang sebenarnya tertutup.
Mikko Rantalainen
0
Ini adalah contoh lengkap.
Juga membuat aplikasi berfungsi (ulang: komentar saya tentang keepass tidak memulai)
Jawaban:
Saya menulis posting blog tentang aturan dasar Iptables untuk pengguna desktop sejak lama dan Anda mungkin harus membacanya, dan artikelnya terkait dengan desain firewall Stateful . Tetapi pra kernel 2.6.39 (yang termasuk
ipset
dan Anda mungkin ingin menggunakannya untuk daftar putih IP jika Anda memiliki lebih dari 10 untuk daftar putih (di mana 10 adalah sewenang-wenang)).Pegangan pertama menyatakan bahwa kita tahu kita ingin menerima atau menjatuhkan, dan antarmuka.
Jika Anda hanya ingin melakukan izin dengan IP saja, tanpa status
Anda cenderung mengalami masalah dalam melakukan hal ini, dan saya sarankan menggunakan keadaan untuk membuat hidup Anda lebih mudah. Misalnya, tidak mengizinkan
-i lo
dan-o lo
pasti akan menimbulkan masalah untuk aplikasi tertentu.sumber
iptables -F
itu untuk menghapus semua aturan, bahkan tidak bisa ping ubuntu.comInilah contoh (belum diuji!) Yang hanya memblokir koneksi masuk . Koneksi melalui antarmuka loopback, yang berasal dari 192.168.3.x, ICMP, atau ke port SSH diizinkan. Semua koneksi lain ditolak.
sumber
lo
dalam contoh di atas dikecualikan dari pencocokan negara dan selalu diizinkan.Aturan di bawah ini hanya akan memungkinkan IP Anda dan Memblokir semua IP lain melalui port 22 atau ssh. Uji dengan terminal baru sebelum memutuskan koneksi.
sumber
yourIPaddress
saya dapat menambahkan beberapa alamat dan rentang IP? Dan jika saya menggunakan SSH pada port non-standar seperti 2888, maka perintahnya akan mengubah22
contoh Anda menjadi2288
? Juga, apakah ini juga akan memblokir rsync, sftp, dll ke server ini dari semua IP kecuali yang diizinkan?-p tcp
penting di sini karena--dport
tidak berfungsi tanpanya. Saya juga menyarankan menggunakan-j REJECT
daripadaDROP
karenaREJECT
membuat port identik dengan port tertutup danDROP
membuat paket-paket yang ditakdirkan untuk port black holed. Dalam praktiknya, penyerang jarak jauh dapat mendeteksiDROP
port yang dikonfigurasi dari port yang sebenarnya tertutup.Ini adalah contoh lengkap.
Juga membuat aplikasi berfungsi (ulang: komentar saya tentang keepass tidak memulai)
https://github.com/skironDotNet/linux-allow-only-single-ip
sumber