Apa Yang Dapat Dilakukan Untuk Mengamankan Server Ubuntu?


35

Saya punya proyek untuk mengamankan Server Ubuntu sebanyak yang saya bisa. Server adalah server hosting web. Server akan menjalankan LAMP, Mail, dan DNS.


Layanan apa yang akan berjalan?
wojox

LAMP, Mail, DNS
One Zero

Saya telah membuat Lembar Cheat Server Ubuntu dan saya ingin membaginya dengan Anda. Beberapa halaman pertama adalah perintah linux umum, kemudian paket server khusus dan halaman terakhir adalah daftar periksa keamanan server. Daftar periksa menyatukan tips dan pengerasan dari banyak situs web. Saya harap ini membantu Anda! Dilisensikan di bawah lisensi WTFPL . Anda dapat melihat / mengunduh / apa pun daftar periksa di sini . Saya memperbaruinya dari waktu ke waktu.
Noah Krasser

Jawaban:


43

Berikut adalah daftar hal yang saya lakukan untuk mengamankan server saya.

  1. Nyalakan UFW ( sudo ufw enable) dan kemudian hanya izinkan port yang benar-benar digunakan. ( sudo ufw allow 80)
  2. Pastikan MySQL hanya mengizinkan koneksi dari localhost.
  3. Aktifkan TLS pada layanan email. Bahkan jika itu adalah sertifikat yang ditandatangani sendiri. Anda tidak ingin kata sandi dikirim dengan jelas.
  4. Instal ssh bruteforce blocker seperti denyhosts atau fail2ban. ( sudo apt-get install denyhosts)
  5. Lihatlah membuat login berbasis kunci ssh saja.
  6. Pelajari AppArmor. Jika Anda menggunakan konfigurasi vanilla yang cukup, maka itu sangat mudah. Pastikan itu dihidupkan. Ini akan membantu mengurangi eksploitasi nol hari.
  7. Tergantung pada akses fisik ke server, Anda bahkan mungkin ingin melihat mengenkripsi data pada harddisk.
  8. Ikuti rekomendasi lain di tautan ini. EDIT: Saya lupa mengedit ini ketika saya tidak memiliki reputasi yang cukup untuk menambahkan lebih banyak tautan. Tautan yang dimaksud di sini adalah tautan terakhir di bawah ini.
  9. Jangan pernah mempercayai pengguna Anda. Jika Anda memiliki banyak pengguna dengan akses ke sistem, kunci mereka. Jika Anda harus memberi mereka akses sudo, beri mereka hanya apa yang mereka butuhkan.
  10. Gunakan akal sehat. Berpikir sangat keras tentang bagaimana Anda akan masuk jika Anda pernah dikunci. Kemudian tutup lubang itu.

Beberapa hal lagi yang perlu dipertimbangkan. Kebanyakan orang lupa tentang akses fisik. Semua konfigurasi perangkat lunak di dunia tidak berarti apa-apa jika saya dapat berjalan secara fisik dengan LiveCD dan mencuri data Anda. Waspadalah terhadap rekayasa sosial. Ajukan pertanyaan untuk memverifikasi siapa yang ada di telepon dan pastikan mereka memiliki otorisasi untuk membuat permintaan yang mereka buat.

Karena saya masih pengguna 'baru', saya tidak dapat memposting lebih dari 2 tautan. Anda dapat membaca lebih lanjut tentang subjek ini di sini: https://help.ubuntu.com/12.04/serverguide/index.html dan memberi perhatian khusus pada https://help.ubuntu.com/12.04/serverguide/security.html


2
Alternatif untuk menggunakan UFW (saat masih menggunakan firewall bawaan di dalam Ubuntu) adalah dengan mengunci sistem Anda dengan iptablesaturan yang sangat spesifik untuk melarang akses eksternal ke layanan apa pun yang tidak akan Anda manfaatkan, jika Anda memiliki pengaturan bola yang membutuhkan rouing dan barang canggih sekalipun.
Thomas Ward

2
@LordofTime Setuju. Saya sebenarnya menggunakan iptables sendiri, tetapi ufw baik untuk sebagian besar pemasangan dasar. UFW juga kurang lebih hanya pembungkus untuk konfigurasi iptables yang paling umum. Sistem yang mendasarinya masih sama.
Patrick Regan

2
+1 untuk ufw, Anda bukan pengguna baru, Anda anggota selama 1 tahun: p
Tachyons

1
Memang, saya hanya ingin menunjukkan bahwa dalam kasus tertentu iptables akan memiliki kegunaan yang lebih baik daripada ufw dalam kasus-kasus tertentu
Thomas Ward

1
Pertimbangkan BastilleLinux itu juga merupakan suite pengerasan keamanan yang baik.
pl1nk

13

Mengamankan memori bersama

/ dev / shm dapat digunakan dalam serangan terhadap layanan yang sedang berjalan, seperti httpd. Ubah / etc / fstab untuk membuatnya lebih aman.

Buka Jendela Terminal dan masukkan yang berikut ini:

sudo vi /etc/fstab

Tambahkan baris berikut dan simpan. Anda harus memulai ulang agar pengaturan ini berlaku:

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

Perketat jaringan dengan pengaturan sysctl

File /etc/sysctl.conf berisi semua pengaturan sysctl. Cegah perutean sumber paket yang masuk dan catat IP yang salah masukkan yang berikut di jendela terminal

sudo vi /etc/sysctl.conf

Edit file /etc/sysctl.conf dan hapus komentar atau tambahkan baris berikut:

# 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

Untuk memuat ulang sysctl dengan perubahan terbaru, masukkan:

sudo sysctl -p

Cegah IP Spoofing

Buka Terminal dan masukkan yang berikut ini:

sudo vi /etc/host.conf

Tambahkan atau edit baris berikut:

order bind,hosts
nospoof on

Harden PHP untuk keamanan

Edit file php.ini:

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

Tambahkan atau edit baris berikut:

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

Firewall Aplikasi Web - ModSecurity

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

Lindungi dari serangan DDOS (Denial of Service) - ModEvasive

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

Memindai log dan mencekal host yang mencurigakan - DenyHosts dan Fail2Ban

@DenyHosts

DenyHosts adalah program python yang secara otomatis memblokir serangan SSH dengan menambahkan entri ke /etc/hosts.deny. DenyHosts juga akan memberi tahu administrator Linux tentang host yang menyinggung, pengguna yang diserang, dan login yang mencurigakan.

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install denyhosts

Setelah instalasi edit file konfigurasi /etc/denyhosts.conf dan ubah email, dan pengaturan lainnya sesuai kebutuhan.

Untuk mengedit pengaturan email admin, buka jendela terminal dan masukkan:

sudo vi /etc/denyhosts.conf

Ubah nilai-nilai berikut seperti yang diperlukan di server Anda:

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 lebih maju daripada DenyHosts karena memperluas pemantauan log ke layanan lain termasuk SSH, Apache, Kurir, FTP, dan banyak lagi.

Fail2ban memindai file log dan mencekal IP yang menunjukkan tanda berbahaya - terlalu banyak kegagalan kata sandi, mencari eksploit, dll.

Umumnya Fail2Ban kemudian digunakan untuk memperbarui aturan firewall untuk menolak alamat IP untuk jumlah waktu tertentu, meskipun tindakan sewenang-wenang lainnya juga dapat dikonfigurasi. Di luar kotak, Fail2Ban dilengkapi dengan filter untuk berbagai layanan (apache, kurir, ftp, ssh, dll).

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install fail2ban

Setelah instalasi edit file konfigurasi /etc/fail2ban/jail.local dan buat aturan filter sesuai kebutuhan.

Untuk mengedit pengaturan, buka jendela terminal dan masukkan:

sudo vi /etc/fail2ban/jail.conf

Aktifkan semua layanan yang Anda ingin fail2ban untuk memantau dengan mengubah diaktifkan = salah menjadi * diaktifkan = benar *

Misalnya jika Anda ingin mengaktifkan pengawasan dan pelarangan penjara SSH, temukan baris di bawah ini dan ubah diaktifkan dari false ke true . Itu dia.

[ssh]

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

Jika Anda ingin menerima email dari Fail2Ban jika host dilarang mengubah baris berikut ke alamat email Anda.

destemail = root@localhost

dan ubah baris berikut dari:

action = %(action_)s

untuk:

action = %(action_mwl)s

Anda juga dapat membuat filter aturan untuk berbagai layanan yang ingin Anda monitor fail2ban yang tidak disediakan secara default.

sudo vi /etc/fail2ban/jail.local

Instruksi yang baik tentang cara mengkonfigurasi fail2ban dan membuat berbagai filter dapat ditemukan di HowtoForge - klik di sini untuk contoh

Setelah selesai dengan konfigurasi Fail2Ban restart layanan dengan:

sudo /etc/init.d/fail2ban restart

Anda juga dapat memeriksa statusnya dengan.

sudo fail2ban-client status

Periksa rootkit - RKHunter dan CHKRootKit.

Baik RKHunter dan CHKRootkit pada dasarnya melakukan hal yang sama - periksa sistem Anda untuk rootkit. Tidak ada salahnya menggunakan keduanya.

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install rkhunter chkrootkit

Untuk menjalankan chkrootkit, buka jendela terminal dan masukkan:

sudo chkrootkit

Untuk memperbarui dan menjalankan RKHunter. Buka Terminal dan masukkan yang berikut ini

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

Pindai port terbuka - Nmap

Nmap ("Network Mapper") adalah utilitas sumber terbuka dan gratis untuk penemuan jaringan dan audit keamanan.

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install nmap

Pindai sistem Anda untuk port terbuka dengan:

nmap -v -sT localhost

SYN memindai dengan yang berikut ini:

sudo nmap -v -sS localhost

Menganalisis file LOG sistem - LogWatch

Logwatch adalah sistem analisis log yang dapat disesuaikan. Logwatch mem-parsing melalui log sistem Anda dan membuat laporan menganalisis area yang Anda tentukan. Logwatch mudah digunakan dan akan berfungsi langsung dari paket di sebagian besar sistem.

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install logwatch libdate-manip-perl

Untuk melihat keluaran logwatch, gunakan lebih sedikit:

sudo logwatch | less

Untuk mengirim email laporan jam tangan selama 7 hari terakhir ke alamat email, masukkan yang berikut dan ganti mail@domain.com dengan email yang diperlukan. :

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

Audit keamanan sistem Anda - Tiger.

Tiger adalah alat keamanan yang dapat digunakan baik sebagai audit keamanan dan sistem deteksi intrusi.

Buka Terminal dan masukkan yang berikut ini:

sudo apt-get install tiger

Untuk menjalankan harimau masuk:

sudo tiger

Semua output Tiger dapat ditemukan di / var / log / tiger

Untuk melihat laporan keamanan harimau, buka Terminal dan masukkan yang berikut ini:

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

Untuk Bantuan Lebih Lanjut


PHP: magic_quotes_gpc = On. Kutipan ajaib telah ditinggalkan lebih dulu dan kemudian dihapus: php.net/manual/en/security.magicquotes.whynot.php
Tim

13

Karena Anda mengatakan ini adalah web-hosting-server ... Saya ingin berbagi praktik dan pengalaman terbaik saya selama 5 tahun di jajaran web-hosting.

  1. Dari pengalaman masa lalu saya, daripada langsung masuk ke neraka konfigurasi, Anda harus terlebih dahulu mengumpulkan anggur keamanan yang menggantung rendah seperti yang ditunjukkan pada artikel yang diberikan.

  2. Karena Anda memiliki LAMP, maka Anda harus sangat berhati-hati tentang PHP dan pengaturan php.ini-nya. Ini adalah tautan yang bagus untuk mengamankan PHP. PHP memiliki kekuatan super yang dapat menjadi loop keamanan saat tidak dikonfigurasi dengan benar.

  3. Anda dapat menggunakan pekerjaan cron untuk memeriksa kapan file Anda diubah tanpa izin dan kemungkinan diretas; menggunakan pekerjaan cron ini . Saya lebih suka Notepad ++ untuk membandingkan hasil cron (langsung unduh cron email dari server web Anda dan buka di Notepad ++).

  4. Jika Anda ingin menginstal beberapa SEM, maka cPanel lebih disukai (namun dibayar). Webmin dan zpanel adalah alternatif gratis yang sangat bagus. Webmin lebih baik karena minimal menggunakan sertifikat yang ditandatangani sendiri dan menambah keamanan.

  5. Jika Anda ingin sesuatu berfungsi langsung di luar kotak maka Anda dapat memilih Turnkey Linux. Ini didasarkan pada Ubuntu, sangat mudah diimplementasikan dan fleksibel untuk kebutuhan Anda. Dengan sedikit usaha Anda mendapatkan keamanan di luar kotak. Ini adalah tumpukan LAMP mereka . Saya pribadi menggunakan dan lebih suka ini saja.

  6. Jika Anda memulai dari awal, maka Anda juga dapat menginstal ISPconfig3. Instruksi Di Sini .

  7. Anda dapat menguji keamanan Anda dengan mencoba menembus keamanan Anda menggunakan Back-Track-Linux .

  8. simpan kata sandi yang panjang dan acak yang rumit . Jangan menyimpannya di PC. Tulislah. Gunakan CD langsung untuk mengakses login ini.

  9. dapatkan perangkat lunak perlindungan yang kasar seperti fail2ban.

  10. Jangan jalankan daemon yang tidak Anda butuhkan.

  11. Blokir semua port yang tidak perlu . berhati-hatilah dengan port SSH (22).

  12. Dapatkan diri Anda dengan IP statis pada sistem di mana Anda akan mengelola server. Manfaatkan sebagian besar hal-hal blok IP dan hanya memungkinkan IP khusus Anda untuk mengakses tempat-tempat konfigurasi seperti port 22.

Pada akhirnya, bekerja dengan pikiran yang utuh, jangan menjadi emosional dengan pemasangan dan menerapkan akal sehat akan membawa Anda jauh melampaui itu.

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

1
PHP juga bisa berbahaya ketika mempercayai input pengguna (misalnya injeksi sql).
NoBugs

@NoBugs Saya sangat setuju dengan hal ini. Tidak mungkin untuk mengompres semuanya dalam satu jawaban tunggal. Jawaban saya mengandung banyak hyperlink dan karena itu situs web yang berisi halaman-halaman ini benar-benar sangat berguna. Semoga jawaban saya dan tautan yang disertakan membantu komunitas :)
Bhavesh Diwan

2
# 9: Tidak, passowrds ramdom buruk, kuncinya ada pada panjangnya , yaitu. "D0g ....................." lebih kuat dari "PrXyc.N (n4k77 # L! EVdAfp9". Penjelasan di menjelaskanxkcd.com/2011/08/10 / password-strength
papukaija

2
@papukaija saya sarankan Anda ke Google brute force attacksdan dictionary attacks.. Kata sandi acak panjang adalah satu-satunya cara untuk mengamankan diri Anda dari serangan tersebut.
Bhavesh Diwan

6

Manfaatkan proyek Bastille Linux.

Ini menyediakan alat interaktif untuk melakukan langkah-langkah pengerasan keamanan tambahan untuk meningkatkan keamanan keseluruhan, dan mengurangi kerentanan kompromi untuk sistem Ubuntu Anda (dari Bastille Linux ).

Ini menawarkan fungsi penilaian dan pelaporan, sehingga dapat memberi tahu Anda bagian mana dari sistem yang tidak dikunci. Ini memeriksa sistem dengan cara baca-saja, melaporkan status masing-masing item pengerasannya. Sebagai contoh, Bastille mungkin memeriksa apakah server DNS terkunci di penjara chroot, apakah telnet dimatikan, atau bahkan jika kata sandi diperlukan untuk panjang yang baik. Anda dapat melihat demo hanya-Web ini melalui tautan ini ( info lebih lanjut ).

Anda dapat memiliki pratinjau demo Web (hanya) di sini .

BastillleLinux


1
Saya dapat merekomendasikan kedua rekomendasi itu. Untuk menjalankan host yang terbuka (mis. Server web), bastille sangat membantu pengamanan sistem.
Floyd

Ini terlihat mirip dengan sistem SELinux yang Anda temukan di CentOS / Redhat tapi saya yakin SELinux lebih modern.
djangofan

3

Gunakan nmappada semua antarmuka di mesin, sehingga Anda tahu layanan apa yang Anda jalankan di mesin Anda. Ini adalah alat penting untuk keamanan.

Hapus semua layanan yang tidak Anda butuhkan pada antarmuka eksternal Anda. Anda dapat mengonfigurasi MySQL untuk hanya mendengarkan pada antarmuka tertentu, seperti localhost.

Gunakan ufw untuk melindungi layanan SSH Anda (dan kemungkinan orang lain) sehingga tidak mengizinkan terlalu banyak (gagal) koneksi per menit dari mesin yang sama. Itu akan membuat serangan brute force lebih sulit. Untuk mengubah nomor port tidak begitu berguna, hanya ketidakjelasan, tidak ada keamanan.

Batasi jumlah akun di mesin Anda. Juga jangan menginstal lebih banyak paket / program daripada yang sebenarnya Anda gunakan. Hanya instal X11-klien, bukan X11-server.

Hanya izinkan login ssh ke mesin dengan sertifikat digital, tanpa kata sandi. Itu juga akan membuat serangan brute force sulit / tidak mungkin.



0

Keamanan selalu disertai dengan harga. Menetapkan beberapa batasan realistis akan membantu Anda dalam mencapai tujuan. Saya akan mempertimbangkan aspek-aspek berikut:

  • Terhadap apa yang kamu lindungi sendiri (penjahat jenis apa, berapa anggarannya)?
  • Apa vektor serangan Anda?

Memeriksa semua tautan yang diposting di sini, saya pikir yang ini harus ditambahkan. Ini menjelaskan secara rinci tentang tidak hanya cara mengatur perangkat lunak Anda, tetapi juga untuk memikirkan tentang rencana keamanan. Sebagai nilai tambah, setiap perintah untuk dieksekusi dijelaskan dengan sumbernya.

Mengamankan Server Web Ubuntu pada Xenial 16.04


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.