Làm thế nào để đóng các cổng mở của Nether?


22

Vài ngày trước, tôi bắt đầu quan tâm rất nhiều về bảo mật dữ liệu của mình, cuối cùng nmaptôi tự nhận:nmap 127.0.0.1

Bất ngờ, ngạc nhiên, tôi có rất nhiều dịch vụ đang hoạt động lắng nghe localhost:

$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
53/tcp  open  domain
111/tcp open  rpcbind
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

Người duy nhất tôi có thể sử dụng là ssh(mặc dù nó có thể không được cấu hình tốt, tôi sẽ giữ vấn đề này cho câu hỏi khác).

Theo như tôi biết ippgiao thức được CUPS sử dụng để chia sẻ máy in của mình, tôi không cần chia sẻ chúng, chỉ cần truy cập máy in từ máy chủ.

Đây là đầu ra của netstat -lntupngười dùng root, loại bỏ các địa chỉ localhost:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      497/sshd        
tcp        0      0 0.0.0.0:17500           0.0.0.0:*               LISTEN      2217/dropbox    
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:50022           0.0.0.0:*               LISTEN      1021/rpc.statd  
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      892/smbd        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      906/rpcbind     
tcp6       0      0 :::22                   :::*                    LISTEN      497/sshd        
tcp6       0      0 :::42712                :::*                    LISTEN      1021/rpc.statd  
tcp6       0      0 :::445                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::139                  :::*                    LISTEN      892/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      906/rpcbind     
udp        0      0 0.0.0.0:51566           0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7362/dhclient   
udp        0      0 0.0.0.0:111             0.0.0.0:*                           906/rpcbind     
udp        0      0 192.168.1.255:137       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:137        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.255:138       0.0.0.0:*                           1782/nmbd       
udp        0      0 192.168.1.67:138        0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           1782/nmbd       
udp        0      0 0.0.0.0:655             0.0.0.0:*                           906/rpcbind     
udp        0      0 0.0.0.0:17500           0.0.0.0:*                           2217/dropbox    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           615/avahi-daemon: r
udp        0      0 0.0.0.0:34805           0.0.0.0:*                           1021/rpc.statd  
udp6       0      0 :::40192                :::*                                1021/rpc.statd  
udp6       0      0 :::111                  :::*                                906/rpcbind     
udp6       0      0 :::655                  :::*                                906/rpcbind     
udp6       0      0 :::5353                 :::*                                615/avahi-daemon: r
udp6       0      0 :::42629                :::*                                615/avahi-daemon: r

Làm cách nào để định cấu hình các dịch vụ đó để chúng chỉ lắng nghe thế giới bên ngoài khi tôi thực sự sử dụng chúng?


Làm thế nào để bạn muốn nói với nó bạn đang sử dụng chúng?
Reactormonk

tự khởi động các dịch vụ (với đặc quyền người dùng và vỏ cha mẹ)
RSFalcon7

2
Chính xác, nếu bạn đang sử dụng CUPS chỉ từ hệ thống cục bộ, bạn chỉ có thể nghe nó ở cổng 631 trên localhost (127.0.0.1). Tôi sẽ chạy lại nmap bằng IP thực tế mà máy có và không chỉ 127.0.0.1.
slm

1
một lệnh tốt hơn để chạy sẽ là netstat -lntup-l = lắng nghe -n = số -t = tcp -u = udp -p = pid. Hiển thị những quá trình bạn đang chạy và những cổng nào họ đang phơi bày. Bất cứ điều gì mở tới 127.0.0.1 đều không thể truy cập được vào internet.
ếchstarr78

1
Nếu bạn không cần Samba, chỉ cần gỡ cài đặt nó. Nếu bạn làm cần đến nó, bạn có thể hạn chế nó vào giao diện địa phương (ví dụ eth0?) Bằng cách thêm vào smb.confhai chỉ thị bind interfaces only = yesinterfaces = eth0.
LSerni

Câu trả lời:


26

Xác định tiếp xúc của bạn

Lấy đầu ra của bạn từ netstatlệnh, thứ trông giống như rất nhiều dịch vụ thực sự là một danh sách rất ngắn:

$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd

Lấy một mảnh đất

Nhìn vào danh sách này, có một số dịch vụ mà tôi để lại một mình.

  • thông minh
    • Trình nền máy chủ DHCP chịu trách nhiệm lấy địa chỉ IP của bạn, phải có địa chỉ này.
  • hộp thư
    • rõ ràng là Dropbox, phải có

Bắt đầu giảm nó - vô hiệu hóa Samba

Bạn có thể tắt Samba ngay lập tức, nó chiếm 2 trong số các dịch vụ trên nmbdsmbd. Điều đáng nghi ngờ là bạn thực sự cần điều đó khi chạy trên máy tính xách tay cho dù trên localhost hoặc IP của bạn đối diện với mạng của bạn.

Để kiểm tra xem chúng có đang chạy hay không, bạn có thể sử dụng lệnh sau status:

$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423

Tắt dịch vụ có thể gây nhầm lẫn với tất cả các thông tin đang diễn ra với doanh nghiệp mới nổi, /etc/rc.d, do đó có thể khó tìm ra dịch vụ nào thuộc công nghệ nào. Đối với Samba, bạn có thể sử dụng servicelệnh:

$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting

Bây giờ họ đã tắt:

$ status nmbd 
nmbd stop/waiting
$ status smbd 
smbd stop/waiting

Giữ chúng ... vĩnh viễn

Để làm cho họ tránh xa tôi đã sử dụng công cụ này sysv-rc-conf, để quản lý các dịch vụ từ bảng điều khiển, nó hoạt động tốt hơn hầu hết. Nó cho phép bạn kiểm tra những dịch vụ nào bạn muốn chạy và trong đó runlevel chúng nên được khởi động / dừng:

$ sudo apt-get install sysv-rc-conf

   ss của sysv-RC-conf

Vô hiệu hóa phần còn lại của những gì KHÔNG cần thiết

Vì vậy, bây giờ Samba đã rời đi với những điều sau đây:

  • avahi-daemon
    • một phần của zeroconf (plug-n-play), tắt nó đi
  • rpcbind
    • cần thiết cho NFS - tắt nó đi
  • rpc.statd
    • cần thiết cho NFS - tắt nó đi

Đối với 3 người còn lại, bạn có thể làm những điều tương tự chúng tôi đã làm cho Samba để tắt chúng đi.

CUPS?

Để tắt CUPS, điều mà bạn không thực sự cần, bạn có thể thực hiện theo cùng một điệu nhảy tắt dịch vụ và sau đó vô hiệu hóa nó khỏi khởi động. Để có thể in, bạn cần cài đặt riêng từng máy in trên hệ thống của mình. Bạn có thể làm như vậy thông qua system-config-printerGUI.

Làm những dịch vụ này theo yêu cầu?

Đây thực sự là trọng tâm của câu hỏi của bạn nhưng thực sự không có giải pháp viên đạn bạc nào để làm cho các dịch vụ này trở nên "thông minh" để chúng chạy khi chúng được sử dụng, thay vì mọi lúc.

# 1 - systemd so với upstart

Một phần của nó là sự phân chia hiện tại giữa systemdupstart . Có một cái nhìn tổng quan về 2 công nghệ cạnh tranh ở đây .

Cả hai công nghệ đang cố gắng làm những điều hơi khác nhau, IMO, với các bộ tính năng của chúng, systemd dường như hướng nhiều hơn đến các máy chủ trong khi sự khởi đầu dường như hướng nhiều hơn đến cuộn máy tính để bàn. Theo thời gian, điều này sẽ tự khắc phục, IMO và cả hai dịch vụ sẽ ổn định và có nhiều tính năng.

Cuối cùng, cả hai dịch vụ sẽ cung cấp theo yêu cầu bắt đầu và dừng trên bảng cho tất cả các dịch vụ mà họ quản lý. Các tính năng như StopWhenUnneeded=yesđã tồn tại systemdchẳng hạn, vì vậy chỉ còn là vấn đề thời gian cho đến khi các khả năng này được bổ sung.

# 2 - hỗ trợ dịch vụ

Một số dịch vụ không hỗ trợ bị dừng / bắt đầu rất tốt nếu có. Các dịch vụ như sshddường như không có ý nghĩa gì để chạy theo yêu cầu, đặc biệt nếu chúng được sử dụng nhiều. Ngoài ra, một số dịch vụ như Apache cung cấp các cơ chế trong chính họ để thu hút ít nhiều người nghe của chính họ tự quản lý. Vì vậy, không rõ làm thế nào theo yêu cầu được cung cấp bởi systemdhoặc upstartsẽ tích hợp với các loại dịch vụ này.

Điều này có thực sự cần thiết?

Bạn sẽ nghe từ cả hai phía rằng điều này là quá mức hoặc bạn nên thực hiện phương pháp tối giản chỉ cài đặt những gì bạn thực sự cần, nhưng đó thực sự là một lựa chọn cá nhân. Hiểu rằng các dịch vụ này ở đó và những gì họ làm là thực sự quan trọng. Vào cuối ngày, máy tính là một công cụ và bằng cách sử dụng hệ thống Unix, bạn đã nói rằng bạn sẵn sàng nhìn trộm sau bức màn và hiểu điều gì khiến máy tính của bạn đánh dấu.

Tôi muốn nói rằng loại câu hỏi này chính xác là khung suy nghĩ mà mọi người nên cố gắng khi làm việc với máy tính và Unix nói chung.

Tài liệu tham khảo


2
@ RSFalcon7 - bạn được chào đón! Cảm ơn câu hỏi!
slm

12

127.0.0.1 không phải là "thế giới bên ngoài", nó đang nhìn xung quanh bên trong ngôi nhà.

Kiểm tra cấu hình tường lửa của bạn (iptables trong Linux ngày hôm nay), hầu hết chúng không thể truy cập được từ ouside.

Đừng chạy các dịch vụ bạn không cần. Gỡ cài đặt tất cả phần mềm không cần thiết.

Thay đổi mật khẩu để mạnh hơn. Kiểm tra việc sử dụng hệ thống của bạn, đừng theo đuổi bất kỳ trang web thú vị nào một cách ngẫu nhiên. Kiểm tra cấu hình chống lừa đảo, chống kịch bản, v.v. của trình duyệt. Sửa đổi bạn sử dụng SSH và su / sudo.

Nhưng trên hết, hoang tưởng quá mức là phản tác dụng. Đừng bị mắc kẹt bởi sự hào nhoáng của công nghệ .


3
Tôi đồng ý với "Đừng chạy các dịch vụ mà bạn không cần". Nhưng "Gỡ cài đặt tất cả phần mềm không cần thiết.", Nghiêm túc chứ? Điều đó sẽ giúp chống lại điều gì?
Hauke ​​Laging

6
@HaukeLaging, như người ta vẫn nói, "chuột làm tổ trong đống quần áo không sử dụng". Bất kỳ phần mềm nào cũng có thể có lỗ hổng có thể bị khai thác. Nếu chương trình không có ở đó, rủi ro đó không tồn tại. Nếu nó không được sử dụng, chi phí là không đáng kể. Bên cạnh đó, một hệ thống đơn giản sẽ dễ dàng giám sát và giữ gọn gàng hơn.
vonbrand

Nhờ nhắc nhở rằng 127.0.0.1 không phải là woruld bên ngoài . Tôi hoàn toàn đăng ký để không chạy các dịch vụ mà tôi không cần , nhưng gỡ cài đặt là một chút quá mức, nếu chúng ở đây, chúng sẽ hữu ích trong một thời gian
RSFalcon7

2
@ RSFalcon7, nếu họ hữu ích (hoặc có ích cho người khác, họ đang có trong phân phối sau khi tất cả) là không có consecuence. Nếu bạn không sử dụng nó, hãy tặc lưỡi. Sử dụng ít đĩa hơn, ít cập nhật hơn, ít rủi ro hơn. Nếu bạn cần nó sau, cài đặt lại.
vonbrand

3

Trong khi bạn có thể 'đóng' các dịch vụ riêng lẻ - có lẽ việc cài đặt tường lửa sẽ dễ dàng hơn. Gần như tất cả các bản phân phối phổ biến (Ubuntu, Debian, Centos, v.v.) đều hỗ trợ các iptables tích hợp sẵn.

Một bộ quy tắc đơn giản để bắt đầu: (bạn chỉ cần nhập chúng vào dấu nhắc lệnh; để đặt chúng vĩnh viễn thêm chúng vào tập lệnh khởi động của bạn hoặc cho chúng tôi biết bạn đang sử dụng bản phân phối nào. Trên Centos, ví dụ: system-config -firewall là một giao diện người dùng tốt để định cấu hình quy tắc iptables)

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP

Về cơ bản - cho phép ssh trong nước; bỏ mọi thứ khác

Chuỗi INPUT của bạn bây giờ trông như thế này:

  • Nếu một gói đến máy tính của tôi cho 'ssh' - hãy cho phép nó
  • Nếu một gói không khớp với bất kỳ quy tắc nào trước đó - chỉ cần vứt nó đi.

Sau đó vào một ngày sau đó, giả sử bạn muốn cho phép 'samba' (chia sẻ tệp windows): bạn có thể chạy

iptables -I INPUT-p tcp --dport 465 -j ACCEPT

Các khoản chuẩn bị -Ivà quy tắc vào danh sách; -Anối một quy tắc. Vì vậy, chuỗi của bạn bây giờ trông như thế này:

  • Nếu một gói được đưa vào máy tính của tôi cho 'samba' - hãy cho phép nó
  • Nếu một gói đến máy tính của tôi cho 'ssh' - hãy cho phép nó
  • Nếu một gói không khớp với bất kỳ quy tắc nào trước đó - chỉ cần vứt nó đi.

Các INPUTchuỗi đề cập đến các gói tin cho hệ thống của bạn. Các chuỗi khác OUTPUTdành cho các gói từ máy tính của bạn, truy cập internet và FORWARDcho các gói được định tuyến qua máy tính của bạn (đó là các gói 'chuyển' máy tính của bạn, như khu vực quá cảnh của sân bay - thứ không phải INPUTvì nó không vào máy tính của bạn ).

Như một lưu ý chia tay: nmap'ing 127.0.0.1 không hữu ích lắm; rất nhiều dịch vụ chỉ có thể truy cập từ 127.0.0.1 và không có địa chỉ nào khác. Nếu bạn không có máy khác, bạn có thể chạy nmap từ - hãy thử sử dụng Khiên bảo vệ của Gibson Research! ( https://www.grc.com/shieldsup ) - đây là một bản đồ trực tuyến miễn phí. Hoặc thêm một nhận xét với IP / email của bạn và tôi sẽ sơ đồ cho bạn :)

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.