Ini milik saya /etc/sysconfig/iptables
:
Ini memiliki dua port buka 80 apache dan 22 untuk ssh.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Untuk port 22 (SSH) saya ingin memastikan tidak ada yang dapat terhubung ke port ini kecuali untuk alamat ip tertentu.
contoh ip:
1.2.3.4
Harap abaikan pengawasan / kekhawatiran tentang bagaimana jika ip saya berubah dan saya tidak bisa SSH ke server saya lagi.
iptables
mendukung inversi dengan operator letusan jika Anda ingin melakukan yang ditargetkanDROP
. Contoh:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP
DROP
tidak terlalu diperlukan, Anda cukup mengatur kebijakan default pada firewall denganiptables -P INPUT DROP
dan membiarkannya pergi begitu saja. Anda mungkin juga ingin melakukannya sebagai penambahan jika melakukannya dengan cara ini jika tidak semua lalu lintas akan tertangkap olehDROP
dan tidak pernah mencapaiACCEPT
aturan Anda .iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
daniptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
"3" setelah INPUT berarti menyisipkan sebagai aturan INPUT # 3 (dengan asumsi Anda memasukkan dua ACCEPTS, jika tidak hanya satu ACCEPT maka gunakan "2" untuk INPUT.-I
akan memasukkan aturan iptables baru di bagian atas. Dengan demikian, Anda mungkin akan memberikan drop sebelum Anda mengizinkan. Saya sarankan menggunakan-A
bukannyaMeskipun saya sarankan menggunakan kunci SSH, saya akan memberi Anda penjelasan.
Anda tidak harus menggunakan tabel IP untuk apa yang ingin Anda capai, ada beberapa cara. Ini adalah cara IPtables:
[YOUR_HOME_IP]
= IP rumah Anda (cukup mudah)[SSH_PORT]
= Port tempat Anda menjalankan SSH (secara default 22)Ini memastikan tidak seorang pun kecuali IP Anda dapat masuk ke SSH.
Ada cara lain, yaitu dengan menambahkan sesuatu ke
sshd_config
.Tambahkan yang berikut ini:
Ini memungkinkan Anda untuk masuk ke SSH sebagai
root
pengguna dari IP Anda tanpa meminta kata sandi.Perlu diingat bahwa cronjob dengan
mungkin cerdas sehingga Anda tidak terkunci dari server Anda dengan SSH (cronjob akan mengatur ulang IPtables sehingga Anda akan mendapatkan akses lagi). Jika Anda masih memiliki akses, Anda dapat menghapus cronjob dan mengatur IPtables Anda lagi.
sumber
iptables
? Beberapa bentuk akses keluar dari band adalah metode yang biasa digunakan.knockd
adalah yang lain.at
apakah itu.Without-Password
berarti otentikasi kata sandi tidak diperbolehkan, jadi Anda harus menggunakan otentikasi kunci SSH. Memang sedikit penamaan yang tidak jelas untuk metode otentikasi ini. Tetapi ini tidak berarti bahwa Anda tidak perlu kata sandi untuk login sebagai root. Namun demikian, metode yang lebih aman adalah mengaturPermitRootLogin no
dan menggunakan akun sudo yang berbeda untuk login, karena root adalah target umumJawaban lain digunakan
iptables -I
dalam contoh mereka, yang seringkali bukan yang seharusnya Anda gunakan.iptables akan menjalankan aturan pertama yang cocok, sehingga urutan aturan sangat penting.
-I
adalah perintah "masukkan", dan harus digunakan dengan parameter indeks untuk menentukan di mana dalam daftar aturan yang diberikan berada.-A
adalah perintah "append", yang akan menambahkan aturan ke akhir daftar.Dalam beberapa distrobutions (mungkin semua) menggunakan
-I
tanpa parameter indeks akan menambahkan aturan ke indeks satu, menjadikannya aturan pertama yang diperiksa. Dalam skenario ini jika perintah terakhir yang Anda jalankan adalahiptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
iptables akan menjatuhkan semua lalu lintas, terlepas dari apakah Anda memilikiACCEPT
aturan atau tidak nanti dalam rantai.Berikut contoh pengaturan aturan yang hanya mengizinkan SSH dari satu IP:
Mulai tanpa aturan:
Tambahkan aturan "izinkan SSH baru dari 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Blokir SSH dari semua IP lain:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Sekarang rantai INPUT Anda akan terlihat seperti:
Kemudian, jika Anda perlu memasukkan daftar putih IP kedua Anda dapat menggunakan
-I
parameter untuk menempatkannya sebelum aturan daftar hitam.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Perhatikan bahwa menggunakan
-I INPUT 2
menambahkan aturan baru sebagai aturan nomor 2 dan menabrak aturan DROP ke nomor 3.sumber