Saya mengikuti panduan ini di sini: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/
Dan saya memiliki iptables yang tercantum ditampilkan, tetapi server saya tampaknya masih menerima semua koneksi masuk (yaitu: rekan-rekan bittorrent masih terhubung, meskipun saya tidak mengizinkan port tersebut).
/etc/iptables.rules
*filter
# This will allow all loopback (lo0) traffic and drop all traffic to 127/8
# that does not use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# This accepts all already established connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# This allows all outbound traffic
-A OUTPUT -j ACCEPT
# This will allow HTTP and HTTPS connections from anywhere, this are the normal
# ports used for a web server
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow bittorrent/rtorrent ports, from ~/.rtorrent.rc
## -A INPUT -p tcp --dport 8071:8079 -j ACCEPT
# Allow ICMP ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Reject all other inbound traffic
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
Ketika saya menjalankan iptables -L setelah reboot, saya masih mendapatkan ini sebagai aturan pertama saya:
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Tidak yakin dari mana ini berasal.
Berikut daftar lengkapnya:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere icmp echo-request
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Ini adalah output dari iptables-save:
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*raw
:PREROUTING ACCEPT [6701:942626]
:OUTPUT ACCEPT [8927:989420]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*nat
:PREROUTING ACCEPT [3281:284415]
:INPUT ACCEPT [9:720]
:OUTPUT ACCEPT [1758:148908]
:POSTROUTING ACCEPT [1758:148908]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*mangle
:PREROUTING ACCEPT [6701:942626]
:INPUT ACCEPT [6701:942626]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8928:989684]
:POSTROUTING ACCEPT [8928:989684]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
Berikut ini adalah keluaran iptables -vL:
$ sudo iptables -vL
[sudo] password for ettinger:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
8303 1206K ACCEPT all -- lo any anywhere anywhere
0 0 REJECT all -- !lo any anywhere loopback/8 reject-with icmp-port-unreachable
12M 7191M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
18 980 ACCEPT tcp -- any any anywhere anywhere tcp dpt:www
7 344 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https
379 22728 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
18316 1110K ACCEPT tcp -- any any anywhere anywhere tcp dpts:8071:8079
120K 15M ACCEPT udp -- any any anywhere anywhere udp dpt:6881
24809 1489K ACCEPT tcp -- any any anywhere anywhere tcp dpt:9001
688 35244 ACCEPT tcp -- any any anywhere anywhere tcp dpt:9030
874 73072 ACCEPT icmp -- any any anywhere anywhere icmp echo-request
12705 871K REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
14M 12G ACCEPT all -- any any anywhere anywhere
ACCEPT all -- anywhere anywhere
?iptables -vL
?Jawaban:
Garis yang Anda khawatirkan:
sebenarnya karena ini dalam aturan Anda:
Perhatikan antarmuka secara eksplisit dalam aturan, tetapi tidak dalam
-L
output. Pindahkan aturan itu ke tengah daftar, gunakaniptables-restore
dan perhatikan "MENERIMA semua - di mana saja" juga telah turun. Sekarang coba ubah sedikit aturan:dan
-L
hasilnya akan menjadi:"localhost.localdomain" akan menjadi hostname 127.0.0.1 Anda dari
/etc/hosts
. Setidaknya ini membuatnya lebih jelas dari mana aturan itu berasal.Anda juga dapat melihat informasi lebih rinci termasuk antarmuka dengan
iptables -vL
.BTW, Anda mungkin ingin memulai aturan Anda:
Tetapkan semuanya secara default sebagai pengaman untuk keselamatan. Namun ini dianggap perilaku buruk (lihat tautan dalam komentar Gilles di bawah), jadi Anda mungkin ingin membuat tangkapan akhir semua untuk setiap tabel yang digunakan
-j REJECT --reject-with icmp-net-prohibited
.sumber
iptables -vL
akan menunjukkan aturan penuh, termasuk antarmuka. Jadi itu akan menghilangkan kebingungan seperti ini.-v
. Aturan firewall saya tidak terlihat seburuk yang saya kira :)Sama seperti masalah kelengkapan, untuk menghindari masalah ini di masa depan, gunakan
-v
opsi baris perintah verbose saat menampilkan tabel. Dengan demikian:Output sekarang harus mencakup antarmuka yang mempengaruhi kolom "dalam" dan "keluar":
sumber
Masalahnya ada di bagian rantai INPUT ini:
terutama di baris terakhir. Segala sesuatu setelah baris ini tidak perlu, karena baris ini menerima semuanya.
Anda harus menghapus baris ini dari aturan dengan perintah ini:
Anda harus memeriksa aturan firewall Anda, di mana aturan, yang menambahkan baris ini.
sumber