Có thể làm gì để bảo mật máy chủ Ubuntu?


35

Tôi có một dự án để bảo mật Ubuntu Server nhiều nhất có thể. Máy chủ là một máy chủ lưu trữ web. Máy chủ sẽ chạy LAMP, Mail và DNS.


Những dịch vụ nào sẽ được chạy?
wojox

LAMP, Mail, DNS
One Zero

Tôi đã tạo một Ubuntu Cheat Sheet và tôi muốn chia sẻ nó với bạn. Một vài trang đầu tiên là các lệnh linux chung, sau đó là các gói máy chủ cụ thể và trang cuối cùng là danh sách kiểm tra bảo mật máy chủ. Danh sách kiểm tra kết hợp các mẹo và độ cứng từ nhiều trang web. Tôi hy vọng nó sẽ giúp bạn! Được cấp phép theo giấy phép WTFPL . Bạn có thể xem / tải xuống / bất cứ điều gì danh sách kiểm tra ở đây . Tôi cập nhật nó theo thời gian.
Noah Krasser

Câu trả lời:


43

Dưới đây là danh sách những điều tôi làm để bảo mật máy chủ của mình.

  1. Bật UFW ( sudo ufw enable) và sau đó chỉ cho phép các cổng thực sự được sử dụng. ( sudo ufw allow 80)
  2. Hãy chắc chắn rằng MySQL chỉ cho phép kết nối từ localhost.
  3. Kích hoạt TLS trên các dịch vụ thư. Ngay cả khi đó là một chứng chỉ tự ký. Bạn không muốn mật khẩu được gửi rõ ràng.
  4. Cài đặt các trình chặn ssh bruteforce như denyhosts hoặc fail2ban. ( sudo apt-get install denyhosts)
  5. Nhìn vào việc tạo các thông tin đăng nhập dựa trên khóa ssh.
  6. Tìm hiểu AppArmor. Nếu bạn sử dụng cấu hình khá vani, thì cực kỳ dễ. Chỉ cần chắc chắn rằng nó được bật. Nó sẽ giúp giảm khai thác zero-day.
  7. Tùy thuộc vào quyền truy cập vật lý vào máy chủ, bạn thậm chí có thể muốn xem mã hóa dữ liệu trên đĩa cứng.
  8. Thực hiện theo các khuyến nghị khác trong liên kết này. EDIT: Tôi đã quên chỉnh sửa điều này khi tôi không có đủ danh tiếng để thêm nhiều liên kết. Liên kết có nghĩa ở đây là liên kết cuối cùng bên dưới.
  9. Không bao giờ tin tưởng người dùng của bạn. Nếu bạn có nhiều người dùng có quyền truy cập vào hệ thống, hãy khóa họ lại. Nếu bạn phải cung cấp cho họ quyền truy cập sudo, chỉ cung cấp cho họ những gì họ cần.
  10. Sử dụng suy nghĩ thông thường. Hãy suy nghĩ thật kỹ về cách bạn sẽ vào nếu bạn bị khóa. Sau đó đóng các lỗ đó lại.

Một vài điều nữa để xem xét. Hầu hết mọi người quên mất truy cập vật lý. Tất cả các cấu hình phần mềm trên thế giới không có ý nghĩa gì nếu tôi có thể đi bộ thực tế với LiveCD và đánh cắp dữ liệu của bạn. Coi chừng kỹ thuật xã hội. Đặt câu hỏi để xác minh ai là người trên điện thoại và đảm bảo họ có quyền thực hiện yêu cầu họ đang thực hiện.

Vì tôi vẫn là người dùng 'mới', tôi không thể đăng nhiều hơn 2 liên kết. Bạn có thể đọc thêm về chủ đề này tại đây: https://help.ubfox.com/12.04/serverguide/index.html và đặc biệt chú ý đến https://help.ub Ubuntu.com/12.04/serverguide/security.html


2
Một cách khác để sử dụng UFW (trong khi vẫn sử dụng tường lửa tích hợp trong Ubuntu) là khóa hệ thống của bạn với các iptablesquy tắc cực kỳ cụ thể để không cho phép truy cập bên ngoài vào bất kỳ dịch vụ nào bạn sẽ không sử dụng, nếu bạn có một số lẻ thiết lập bóng đòi hỏi rouing tiên tiến và công cụ mặc dù.
Thomas Ward

2
@LordofTime Đồng ý. Tôi thực sự sử dụng iptables cho mình, nhưng ufw chỉ tốt cho hầu hết các cài đặt cơ bản. Ngoài ra, UFW ít nhiều chỉ là một trình bao bọc cho hầu hết các cấu hình iptables phổ biến. Hệ thống cơ bản vẫn giống nhau.
Patrick Regan

2
+1 cho ufw, bạn không phải là người dùng mới, bạn là thành viên trong 1 năm: p
Tachyons

1
Thật vậy, tôi chỉ muốn chỉ ra rằng trong một số trường hợp, iptables sẽ có khả năng sử dụng tốt hơn ufw trong một số trường hợp nhất định
Thomas Ward

1
Hãy xem xét BastilleLinux, đây cũng là một bộ tăng cường bảo mật tốt.
pl1nk

13

Bảo mật bộ nhớ chia sẻ

/ dev / shm có thể được sử dụng trong một cuộc tấn công vào một dịch vụ đang chạy, chẳng hạn như httpd. Sửa đổi / etc / fstab để làm cho nó an toàn hơn.

Mở một cửa sổ đầu cuối và nhập như sau:

sudo vi /etc/fstab

Thêm dòng sau và lưu lại. Bạn sẽ cần khởi động lại để cài đặt này có hiệu lực:

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

Mạng cứng với cài đặt sysctl

Tệp /etc/sysctl.conf chứa tất cả các cài đặt sysctl. Ngăn chặn định tuyến nguồn của các gói đến và đăng nhập IP không đúng định dạng, hãy nhập thông tin sau vào cửa sổ đầu cuối

sudo vi /etc/sysctl.conf

Chỉnh sửa tệp /etc/sysctl.conf và bỏ bình luận hoặc thêm các dòng sau:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

Để tải lại sysctl với những thay đổi mới nhất, hãy nhập:

sudo sysctl -p

Ngăn chặn giả mạo IP

Mở Terminal và nhập thông tin sau:

sudo vi /etc/host.conf

Thêm hoặc chỉnh sửa các dòng sau:

order bind,hosts
nospoof on

Bảo vệ PHP để bảo mật

Chỉnh sửa tệp php.ini:

sudo vi /etc/php5/apache2/php.ini

Thêm hoặc chỉnh sửa các dòng sau:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

Tường lửa ứng dụng web - ModSecurance

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubfox-1204-lts-server

Bảo vệ khỏi các cuộc tấn công DDOS (Từ chối dịch vụ) - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubfox-1204-lts-server

Quét nhật ký và cấm các máy chủ đáng ngờ - Denyhost và Fail2Ban

@Denyhosts

Denyhosts là một chương trình python tự động chặn các cuộc tấn công SSH bằng cách thêm các mục vào /etc/hosts.deny. Denyhosts cũng sẽ thông báo cho quản trị viên Linux về việc vi phạm máy chủ, tấn công người dùng và đăng nhập đáng ngờ.

Mở Terminal và nhập thông tin sau:

sudo apt-get install denyhosts

Sau khi cài đặt, chỉnh sửa tệp cấu hình /etc/denyhosts.conf và thay đổi email cũng như các cài đặt khác theo yêu cầu.

Để chỉnh sửa cài đặt email quản trị, hãy mở một cửa sổ đầu cuối và nhập:

sudo vi /etc/denyhosts.conf

Thay đổi các giá trị sau theo yêu cầu trên máy chủ của bạn:

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2ban tiên tiến hơn Denyhost vì nó mở rộng việc theo dõi nhật ký cho các dịch vụ khác bao gồm SSH, Apache, Courier, FTP, v.v.

Fail2ban quét các tệp nhật ký và cấm IP hiển thị các dấu hiệu độc hại - quá nhiều lỗi mật khẩu, tìm cách khai thác, v.v.

Nói chung Fail2Ban sau đó được sử dụng để cập nhật các quy tắc tường lửa để từ chối các địa chỉ IP trong một khoảng thời gian xác định, mặc dù mọi hành động khác tùy ý cũng có thể được cấu hình. Fail2Ban đi kèm với các bộ lọc cho các dịch vụ khác nhau (apache, chuyển phát nhanh, ftp, ssh, v.v.).

Mở Terminal và nhập thông tin sau:

sudo apt-get install fail2ban

Sau khi cài đặt chỉnh sửa tệp cấu hình /etc/fail2ban/jail.local và tạo quy tắc lọc theo yêu cầu.

Để chỉnh sửa cài đặt, hãy mở một cửa sổ đầu cuối và nhập:

sudo vi /etc/fail2ban/jail.conf

Kích hoạt tất cả các dịch vụ bạn muốn fail2ban theo dõi bằng cách thay đổi enable = false thành * enable = true *

Ví dụ: nếu bạn muốn kích hoạt giám sát SSH và cấm tù, hãy tìm dòng bên dưới và thay đổi được bật từ false thành true . Đó là nó.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

Nếu bạn muốn nhận email từ Fail2Ban nếu máy chủ bị cấm thay đổi dòng sau thành địa chỉ email của bạn.

destemail = root@localhost

và thay đổi dòng sau từ:

action = %(action_)s

đến:

action = %(action_mwl)s

Bạn cũng có thể tạo các bộ lọc quy tắc cho các dịch vụ khác nhau mà bạn muốn fail2ban theo dõi mà không được cung cấp theo mặc định.

sudo vi /etc/fail2ban/jail.local

Hướng dẫn tốt về cách định cấu hình fail2ban và tạo các bộ lọc khác nhau có thể được tìm thấy trên HowtoForge - nhấp vào đây để xem ví dụ

Khi hoàn tất cấu hình Fail2Ban, hãy khởi động lại dịch vụ với:

sudo /etc/init.d/fail2ban restart

Bạn cũng có thể kiểm tra trạng thái với.

sudo fail2ban-client status

Kiểm tra rootkit - RKHunter và CHKRootKit.

Cả RKHunterCHKRootkit về cơ bản đều làm điều tương tự - kiểm tra hệ thống của bạn để tìm rootkit. Không có hại trong việc sử dụng cả hai.

Mở Terminal và nhập thông tin sau:

sudo apt-get install rkhunter chkrootkit

Để chạy chkrootkit, hãy mở một cửa sổ đầu cuối và nhập:

sudo chkrootkit

Để cập nhật và chạy RKHunter. Mở Terminal và nhập thông tin sau

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

Quét các cổng mở - Nmap

Nmap ("Network Mapper") là một tiện ích nguồn mở và miễn phí để khám phá mạng và kiểm tra bảo mật.

Mở Terminal và nhập thông tin sau:

sudo apt-get install nmap

Quét hệ thống của bạn để tìm các cổng mở với:

nmap -v -sT localhost

Quét SYN với các mục sau:

sudo nmap -v -sS localhost

Phân tích tệp LOG hệ thống - LogWatch

Logwatch là một hệ thống phân tích nhật ký tùy biến. Logwatch phân tích cú pháp thông qua nhật ký hệ thống của bạn và tạo một khu vực phân tích báo cáo mà bạn chỉ định. Logwatch rất dễ sử dụng và sẽ hoạt động ngay trên gói trên hầu hết các hệ thống.

Mở Terminal và nhập thông tin sau:

sudo apt-get install logwatch libdate-manip-perl

Để xem đầu ra logwatch sử dụng ít hơn:

sudo logwatch | less

Để gửi email báo cáo logwatch trong 7 ngày qua đến địa chỉ email, hãy nhập thông tin sau và thay thế mail@domain.com bằng email yêu cầu. :

sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today' 

Kiểm tra bảo mật hệ thống của bạn - Tiger.

Tiger là một công cụ bảo mật có thể được sử dụng như là một hệ thống phát hiện xâm nhập và kiểm toán bảo mật.

Mở Terminal và nhập thông tin sau:

sudo apt-get install tiger

Để chạy hổ vào:

sudo tiger

Tất cả đầu ra Tiger có thể được tìm thấy trong / var / log / tiger

Để xem các báo cáo bảo mật của hổ, hãy mở Terminal và nhập thông tin sau:

sudo less /var/log/tiger/security.report.*

Để được trợ giúp thêm


PHP : magic_quotes_gpc = On. Các trích dẫn ma thuật đã bị phản đối đầu tiên và sau đó bị xóa: php.net/manual/en/security.magicquotes.whynot.php
Tim

13

Vì bạn nói đây là máy chủ lưu trữ web ... Tôi muốn chia sẻ kinh nghiệm và thực tiễn tốt nhất của tôi về 5 năm dài trong dòng lưu trữ web.

  1. Từ kinh nghiệm trong quá khứ của tôi, thay vì đi sâu vào cấu hình ngay lập tức, trước tiên bạn nên lắp ráp các loại nho bảo mật treo thấp như được chỉ ra trên bài viết đã cho.

  2. Vì bạn đang có LAMP, do đó bạn phải rất thận trọng với PHP và các cài đặt php.ini của nó. Đây là một liên kết tốt để bảo mật PHP. PHP có siêu năng lực có thể trở thành vòng lặp bảo mật khi không được cấu hình đúng.

  3. Bạn có thể sử dụng một công việc định kỳ để kiểm tra khi các tệp của bạn được sửa đổi mà không có sự cho phép của bạn và có thể bị hack; sử dụng công việc định kỳ này . Tôi thích Notepad ++ để so sánh kết quả cron (tải trực tiếp email cron từ máy chủ web của bạn và mở trong Notepad ++).

  4. Nếu bạn muốn cài đặt một số SEM, thì cPanel được ưu tiên tốt nhất (tuy nhiên phải trả tiền). Webminzpanel là những lựa chọn thay thế miễn phí rất tốt. Webmin là tốt hơn cho nó ít nhất sử dụng chứng chỉ tự ký và thêm bảo mật.

  5. Nếu bạn muốn một cái gì đó hoạt động ngay lập tức thì bạn có thể dùng Turnkey Linux. Nó dựa trên Ubuntu, cực kỳ dễ thực hiện và linh hoạt theo nhu cầu của bạn. Với rất ít nỗ lực bạn có được bảo mật ra khỏi hộp. Đây là ngăn xếp LAMP của họ . Cá nhân tôi chỉ sử dụng và thích điều này.

  6. Nếu bạn đang bắt đầu từ đầu, thì bạn cũng có thể cài đặt ISPconfig3. Hướng dẫn tại đây .

  7. bạn có thể kiểm tra bảo mật của mình bằng cách cố gắng xâm nhập bảo mật của bạn bằng Back-Track-Linux .

  8. giữ mật khẩu dài và phức tạp . Đừng lưu trữ chúng trên PC. Viêt chung xuông. Sử dụng đĩa CD trực tiếp để truy cập các thông tin đăng nhập này.

  9. có được một phần mềm bảo vệ vũ phu như fail2ban.

  10. Đừng chạy những daemon mà bạn không cần.

  11. Chặn tất cả các cổng không cần thiết . cực kỳ cẩn thận với cổng SSH (22).

  12. Nhận cho mình một IP tĩnh trên hệ thống thông qua đó bạn sẽ quản lý máy chủ. Tận dụng hầu hết các khối IP và chỉ cho phép IP cụ thể của bạn truy cập vào các vị trí cấu hình như cổng 22.

Vào cuối ngày ... làm việc với tâm trí hoàn toàn, đừng có cảm xúc với việc cài đặt và áp dụng lẽ thường sẽ đưa bạn vượt xa.

**My heartiest best wishes to you. good luck.**

1
PHP cũng có thể nguy hiểm khi tin tưởng đầu vào của người dùng (ví dụ tiêm sql).
NoBugs

@NoBugs Tôi hoàn toàn đồng ý với điểm này. Nó không thể nén tất cả mọi thứ trong một câu trả lời đơn lẻ. Câu trả lời của tôi chứa nhiều siêu liên kết vì những trang web này chứa những trang đó thực sự rất hữu ích. Hy vọng câu trả lời của tôi và các liên kết bao gồm giúp cộng đồng :)
Bhavesh Diwan

2
# 9: Không, passdomrd ramdom là xấu, khóa là chiều dài , tức là. "D0g ....................." mạnh hơn "PrXyc.N (n4k77 # L! EVdAfp9". Giải thích tại giải thíchxkcd.com/2011/08/10 / mật khẩu-sức mạnh
papukaija

2
@papukaija tôi khuyên bạn nên google brute force attacksdictionary attacks.. Mật khẩu dài ngẫu nhiên là cách duy nhất để bảo vệ bạn khỏi các cuộc tấn công như vậy.
Bhavesh Diwan

6

Sử dụng dự án Bastille Linux.

Nó cung cấp một công cụ tương tác để thực hiện các biện pháp tăng cường bảo mật bổ sung để tăng tính bảo mật trên tất cả và giảm tính nhạy cảm của sự thỏa hiệp cho hệ thống Ubuntu của bạn (từ Bastille Linux ).

Nó cung cấp chức năng đánh giá và báo cáo, để nó có thể cho bạn biết những phần nào của hệ thống không bị khóa. Nó kiểm tra hệ thống theo kiểu chỉ đọc, báo cáo về trạng thái của từng vật phẩm cứng của nó. Ví dụ, Bastille có thể kiểm tra xem máy chủ DNS có bị khóa trong nhà tù chroot hay không, liệu telnet có bị tắt hay không, ngay cả khi mật khẩu được yêu cầu có độ dài tốt. Bạn có thể xem bản demo chỉ dành cho Web thông qua liên kết này ( thông tin thêm ).

Bạn có thể xem trước bản demo Web (chỉ) tại đây .

BastillleLinux


1
Tôi có thể thứ hai đề nghị đó. Để chạy các máy chủ tiếp xúc (ví dụ: máy chủ web), bastille sẽ tiến một bước dài để bảo vệ hệ thống.
Floyd

Điều này trông tương tự như hệ thống SELinux mà bạn tìm thấy trên CentOS / Redhat nhưng tôi cá là SELinux hiện đại hơn.
djangofan

3

Sử dụng nmaptrên tất cả các giao diện trên máy, để bạn biết bạn đang chạy dịch vụ nào trên máy. Đây là một công cụ thiết yếu để bảo mật.

Xóa tất cả các dịch vụ bạn không cần trên các giao diện bên ngoài của bạn. Bạn có thể cấu hình MySQL để chỉ nghe trên các giao diện cụ thể, như localhost.

Sử dụng ufw để bảo vệ dịch vụ SSH của bạn (và những người khác có thể) để nó không cho phép quá nhiều kết nối (không thành công) mỗi phút từ cùng một máy. Điều đó sẽ làm cho các cuộc tấn công vũ phu mạnh mẽ hơn. Để thay đổi số cổng không phải là hữu ích, chỉ là tối nghĩa, không bảo mật.

Hãy hạn chế với số lượng tài khoản trên máy của bạn. Cũng không cài đặt nhiều gói / chương trình hơn bạn thực sự sử dụng. Chỉ cài đặt máy khách X11, không phải máy chủ X11.

Chỉ cho phép đăng nhập ssh vào máy có chứng chỉ kỹ thuật số, không có mật khẩu. Điều đó cũng sẽ làm cho các cuộc tấn công vũ phu trở nên khó khăn / không thể.



0

An ninh luôn đi kèm với một mức giá. Thiết lập một số ranh giới thực tế sẽ giúp bạn đạt được mục tiêu của mình. Tôi sẽ xem xét các khía cạnh sau đây:

  • Chống lại những gì bạn đang bảo vệ chính mình (loại nhân vật phản diện, ngân sách của anh ta là gì)?
  • Vectơ tấn công của bạn là gì?

Kiểm tra tất cả các liên kết được đăng ở đây, tôi nghĩ rằng cái này nên được thêm vào. Nó đi vào chi tiết về không chỉ cách thiết lập phần mềm của bạn, mà còn để suy nghĩ về kế hoạch bảo mật. Như một điểm cộng, mọi lệnh để thực thi được giải thích với một nguồn cho nó.

Bảo vệ máy chủ web Ubuntu trên Xenial 16.04


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.