CHẤP NHẬN tất cả các quy tắc iptables vẫn xuất hiện


8

Tôi đang làm theo hướng dẫn này tại đây: http://aluazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

Và tôi có các iptables được liệt kê hiển thị, nhưng máy chủ của tôi vẫn chấp nhận tất cả các kết nối đến (ví dụ: các đồng nghiệp bittorrent vẫn đang kết nối, mặc dù tôi không cho phép các cổng đó).

/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

Khi tôi chạy iptables -L sau khi khởi động lại, tôi vẫn coi đây là quy tắc đầu tiên của mình:

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere  

Không chắc chắn nơi này đến từ đâu.

Dưới đây là danh sách đầy đủ:

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

Đây là đầu ra của 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

Đây là đầu ra 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      

Bạn chưa nhận thấy quy tắc INPUT đầu tiên của mình ACCEPT all -- anywhere anywhere?
ott--

1
Có vẻ như các quy tắc không được tải vào lúc khởi động. Đảm bảo rằng bạn đã thêm dòng "pre-up iptables-restore </etc/iptables.rules" vào tệp / etc / network / giao diện của bạn (như tác giả của hướng dẫn gợi ý)
mzet

1
@ott: nó chỉ liên quan đến lo inteface, vì vậy nó ổn
mzet

2
Bạn có thể làm lại danh sách của bạn với iptables -vL?
ott--

Quy tắc của bạn và trạng thái khởi động bài đăng của bạn thực sự khớp với nhau, đó không phải là vấn đề - hãy xem câu trả lời của tôi;)
goldilocks

Câu trả lời:


17

Dòng bạn lo lắng về:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere       

thực sự là vì điều này trong quy tắc của bạn:

-A INPUT -i lo -j ACCEPT

Lưu ý giao diện rõ ràng trong quy tắc, nhưng không phải trong -Lđầu ra. Di chuyển quy tắc đó vào giữa danh sách, sử dụng iptables-restorevà chú ý "CHẤP NHẬN tất cả - mọi nơi" cũng đã được chuyển xuống. Bây giờ hãy thử thay đổi quy tắc một chút:

-A INPUT -i lo -s 127.0.0.1 -j ACCEPT

-Lđầu ra sẽ trở thành:

target     prot opt source                 destination  
ACCEPT     all  --  localhost.localdomain  anywhere

"localhost.localdomain" sẽ là tên máy chủ 127.0.0.1 của bạn từ /etc/hosts. Điều này ít nhất làm cho nó rõ ràng hơn nơi quy tắc đó đến từ đâu.

Bạn cũng có thể xem thông tin chi tiết hơn bao gồm các giao diện với iptables -vL.

BTW, bạn có thể muốn bắt đầu quy tắc của mình:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

Bỏ mọi thứ theo mặc định như một cú ngã cho an toàn. Tuy nhiên, đây được coi là cách cư xử tệ (xem liên kết trong nhận xét của Gilles bên dưới), vì vậy bạn có thể muốn tạo một lần bắt cuối cùng cho mỗi bảng sử dụng -j REJECT --reject-with icmp-net-prohibited.


4
FYI, iptables -vLsẽ hiển thị quy tắc đầy đủ, bao gồm giao diện. Vì vậy, nó sẽ loại bỏ sự nhầm lẫn như thế này.
derobert

Cảm ơn @derobert - Tôi đã quên mất màn hình đó. Sẽ chỉnh sửa điều này thành câu trả lời!
goldilocks


@derobert +1 trên -vcông tắc. Các quy tắc tường lửa của tôi trông không tệ như tôi nghĩ :)
Matt Borja

1

Cũng giống như vấn đề đầy đủ, để tránh vấn đề này trong tương lai, hãy sử dụng -vtùy chọn dòng lệnh dài dòng khi hiển thị bảng. Như vậy:

iptables -Lv

Đầu ra bây giờ sẽ bao gồm giao diện mà nó ảnh hưởng trong các cột "vào" và "ra":

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  151 13073 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
  126 33414 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

-1

Vấn đề nằm ở phần này của chuỗi INPUT:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere

đặc biệt là trong dòng cuối cùng. Tất cả mọi thứ sau dòng này là không cần thiết, bởi vì dòng này chấp nhận mọi thứ.

Bạn phải xóa dòng này khỏi quy tắc bằng lệnh này:

iptables -D INPUT 1

Bạn phải kiểm tra các quy tắc tường lửa của mình, đâu là quy tắc, thêm dòng này.


7
"CHẤP NHẬN tất cả - mọi nơi mọi nơi" xuất phát từ quy tắc này: "-A INPUT -i lo -j CHẤP NHẬN" vì vậy nó chỉ liên quan đến giao diện lo, vì vậy đó không phải là vấn đề.
mzet

Tôi đã xóa tất cả mọi thứ, nhưng nó vẫn hiển thị với iptables -L
chovy

ok, đó là những gì người khác đề cập. cảm ơn. Tôi có thể yên tâm bỏ qua nó.
chovy

1
@chovy: quy tắc của bạn là ok. Vấn đề nằm ở việc khôi phục nó sau khi khởi động lại. Hãy thử làm theo các bước sau: debian-adftime.org/articles/445
mzet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.