Tại sao chúng ta cần tường lửa nếu không có chương trình nào đang chạy trên các cổng của bạn?


14

Khi tôi cố gắng telnet đến một cổng trên máy chủ và nếu không có chương trình nào nghe trên cổng đó thì telnet sẽ chết với lỗi "Không thể kết nối ...". Tôi hiểu điều đó. Nhưng, tại sao chúng ta cần tường lửa nếu không có chương trình nghe trên bất kỳ cổng nào?


Câu trả lời:


31

Có thể không có một dịch vụ chạy ngay bây giờ, nhưng ngày mai thì sao? Bạn đã tắt tất cả, nhưng người dùng của bạn thì sao? Bất cứ ai trên hệ thống unix / windows / mac đều có thể mở một cổng> 1024 trên bất kỳ máy nào họ có quyền truy cập. Còn phần mềm độc hại thì sao? Thế còn virus? Họ cũng có thể mở các cổng và bắt đầu cung cấp thông tin cho thế giới hoặc bắt đầu lắng nghe các kết nối từ mạng.

Mục đích chính của tường lửa không phải là chặn các cổng cho các dịch vụ mà bạn biết bị vô hiệu hóa, đó là chặn các cổng trên các dịch vụ mà bạn có thể không biết. Hãy coi nó như một sự từ chối mặc định chỉ với một số lỗ hổng nhất định đối với các dịch vụ mà bạn ủy quyền. Bất kỳ người dùng hoặc chương trình nào được bắt đầu bởi người dùng đều có thể khởi động máy chủ trên hệ thống mà họ có quyền truy cập, tường lửa ngăn người khác kết nối với dịch vụ đó.

Một quản trị viên giỏi biết những dịch vụ nào cần được tiếp xúc và có thể kích hoạt chúng. Tường lửa chủ yếu là để giảm thiểu rủi ro từ các máy chủ không xác định đang chạy trên hệ thống hoặc mạng của bạn, cũng như để quản lý những gì được phép vào mạng từ một vị trí trung tâm.

Điều quan trọng là phải biết những gì đang chạy trên máy / máy chủ của bạn và chỉ kích hoạt những gì bạn cần, nhưng tường lửa cung cấp thêm một chút bảo vệ chống lại những điều bạn không biết.


1
> "Bất kỳ người dùng hoặc chương trình nào được bắt đầu bởi người dùng đều có thể khởi động máy chủ trên hệ thống mà họ có quyền truy cập, tường lửa ngăn người khác kết nối với dịch vụ đó." Nhưng, điều này sẽ làm cho dịch vụ không thể sử dụng?
Khaja Minhajuddin

5
@KhajaMinhajuddin vâng! Đó chính xác là vấn đề. (-:
gabe.

2
@KhajaMinhajuddin Bạn chỉ muốn các dịch vụ mà bạn thiết lập có sẵn cho cả thế giới. Bạn không muốn máy chủ smtp mà super_spam_virus.exe khởi động trong khi bạn không muốn lắng nghe các kết nối từ các hệ thống bị nhiễm khác. Một tường lửa sẽ ngăn chặn điều này, mặc dù nó không phải là thuốc chữa bách bệnh.
gabe.

super_spam_virus.exe không giống như Unix & Linux :)
người dùng chưa biết

@userunknown đúng ... thế còn a.out hoặc phiên bản / bin / ls bị xâm phạm đã được sao chép vào hệ thống của bạn. Hoặc, nếu bạn là nhà phát triển hg servekhởi động máy chủ web trên máy của bạn. Vấn đề là, việc khởi động một máy chủ trên bất kỳ máy nào là không quan trọng cho dù nó được sử dụng như một 'máy tính để bàn' hay 'máy chủ' không thành vấn đề. Và một khi máy chủ đó được khởi động, và bạn không biết về nó ... tốt, đó là khi niềm vui bắt đầu.
gabe.

3

NẾU không có chương trình nghe trên bất kỳ cổng nào, bạn không cần tường lửa, nhưng bạn cũng không thể kết nối với máy chủ của mình vì nó được 'niêm phong' từ phần còn lại của thế giới.

Mặt khác ... giả sử máy chủ của bạn không có chương trình chạy cục bộ nào nghe trên bất kỳ cổng nào, nhưng nó hoạt động như một cổng cho các máy tính khác đằng sau nó. Trong trường hợp này, bạn sử dụng tường lửa để quản lý giả mạo (NAT) và tùy ý bạn có thể lọc một số nội dung khi chuyển tiếp gói.


Đây là một điểm tốt, nhưng nếu tôi muốn máy chủ thực hiện công việc (tôi thường sẽ đặt openssh và máy chủ web). Ngay cả với tường lửa, tôi phải mở các cổng để làm cho các ứng dụng đang chạy như openssh và máy chủ web trở nên hữu ích. Vì vậy, tôi đoán những gì tôi đang hỏi là, Có chương trình nào mở cổng ra thế giới bên ngoài cần được chặn bởi tường lửa và vẫn sẽ hữu ích.
Khaja Minhajuddin

1
Vâng, có đấy. Không cần một ví dụ cho máy chủ, nhưng giả sử bạn có máy Linux được cài đặt X và X chạy trên cổng mạng. Bạn sẽ muốn cho phép máy tính của mình, có thể một số máy tính khác từ mạng LAN kết nối với X. Tuy nhiên, bạn sẽ không muốn Joe từ Pháp kết nối với nó. Một ví dụ khác, giả sử bạn thiết lập nhiều dịch vụ VPN trên máy chủ của mình và bạn cần kiểm soát mạng nào có thể xem các mạng khác (hoặc không nhìn thấy). Hoặc giả sử bạn có OpenSSH nhưng bạn chỉ muốn cho phép kết nối từ máy tính ở nhà. Có rất nhiều ví dụ khác.
Patkos Csaba

1
@KhajaMinhajuddin: Đối với ssh, bạn nên sử dụng /etc/ssh/sshd_configđể bảo mật máy. PermitRootLoginnên được đặt thành Không, bạn nên sử dụng mật khẩu bảo mật và duy trì máy bằng sudo (bạn có thể sử dụng sudo sau khi đăng nhập bằng tài khoản có quyền sudo). Đặt các hạn chế với tường lửa chỉ là công cụ sai cho công việc. Điều tương tự cũng đúng với postgresqlcơ sở dữ liệu: Sử dụng cấu hình cơ sở dữ liệu, để đặt và thu hồi quyền.
người dùng không xác định

3

Nói đúng ra có thể không cần thiết, tuy nhiên, hãy nhớ rằng tường lửa có thể cung cấp nhiều chức năng hơn là chỉ từ chối các kết nối qua các cổng mạng. Ví dụ, hành vi DROP so với RE DỰ ÁN.


1
Lợi thế của DROP so với DỰ ÁN là gì?
người dùng không xác định

Tôi không chắc chắn, nhưng tôi tin rằng DROP chỉ không đáp ứng nên người yêu cầu thậm chí không biết liệu yêu cầu đã được nhận hay nếu máy của bạn tồn tại. DỰ ÁN nói rằng bạn chắc chắn ở đó và chỉ không muốn nói về nó. Và, nếu có thứ gì đó đằng sau cánh cửa bị khóa, có lẽ đáng để thử tìm cách tìm ra thứ đáng để bảo vệ.
Joe

-5

Nhưng, tại sao chúng ta cần tường lửa nếu không có chương trình nghe trên bất kỳ cổng nào?

Nếu bạn có máy tính để bàn một người dùng , không phải máy chủ, bạn không cần tường lửa, nếu không có dịch vụ nào đang chạy, như trên bản cài đặt Ubuntu mặc định.

Windows đã có một số lần, sau khi có thể thực hiện kết nối mạng, một số dịch vụ chạy mặc định để bảo trì, cập nhật, truyền tin nhắn nội bộ, v.v. Bạn không thể ngăn chặn chúng, mà không ngăn các cửa sổ hoạt động, nhưng chúng dễ bị tấn công từ bên ngoài. Vì vậy, người dùng windows cần tường lửa và meme, mọi người đều cần tường lửa, lan nhanh.

Khi họ gặp những người dùng Linux, thường là quản trị viên máy chủ, họ không nói 'bạn không cần tường lửa trên linux' nhưng 'chúng tôi có tường lửa miễn phí như iptables trong gần một thập kỷ'.

Một tường lửa cá nhân , ngồi trên hệ thống mà nó sẽ bảo vệ, cũng không phải là ý tưởng tốt nhất.

Trên một hệ thống máy tính để bàn người dùng, bạn không cần tường lửa cá nhân.


3
Nhìn vào câu trả lời từ gabe và suy nghĩ lại. Đặc biệt là các máy khách Desktop dễ bị tấn công.
Nils

1
@userunknown: virus có thể là người dùng máy tính để bàn của bạn. Một daemon mà bạn cài đặt và không thể cấu hình là quá.
André Paramés

1
Tôi đã chạy thử nghiệm bảo mật trong nhiều năm và truy cập thông qua máy tính để bàn là một lộ trình rất hữu ích để tuyên truyền một cuộc tấn công. Không quan trọng nếu đó là Windows, Linux, Solaris, bất cứ điều gì. Khóa nó hoặc mất nó cho kẻ tấn công. Cụm từ chính xác là bạn có thể cần tường lửa trên máy tính để bàn của mình - đánh giá đầy đủ các rủi ro trong môi trường của bạn
Rory Alsop

2
@userunknown chỉ vì bạn sử dụng máy tính desktopkhông có nghĩa là nó không serverchỉ là những từ. Bạn desktopcó rất nhiều serversthứ có khả năng chạy trên nó, và có thể là như vậy.
gabe.

1
Hãy suy nghĩ về CUPS (bất kỳ linux), SLPD (SuSE) và các thứ khác (KDE-remote, iSCSI-server / client) có thể đang chạy trên linux sau khi cập nhật. Ngay cả khi bạn đã kiểm tra trước khi những điều này có thể xuất hiện. Nếu họ làm điều đó là tốt để chặn chúng. BTW - kích hoạt tường lửa của bạn thông qua GUI (don t allow anything) on RedHat, start CUPS and see if you can connect to it from outside. Then look at iptables-save`: Voila - cổng CUPS đang mở mà không hiển thị trong gui ...
Nils
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.