ฉันมีโครงการที่จะรักษาความปลอดภัยเซิร์ฟเวอร์ Ubuntu ให้มากที่สุด เซิร์ฟเวอร์เป็นเว็บเซิร์ฟเวอร์ที่ให้บริการพื้นที่ เซิร์ฟเวอร์จะใช้งาน LAMP, Mail และ DNS
ฉันมีโครงการที่จะรักษาความปลอดภัยเซิร์ฟเวอร์ Ubuntu ให้มากที่สุด เซิร์ฟเวอร์เป็นเว็บเซิร์ฟเวอร์ที่ให้บริการพื้นที่ เซิร์ฟเวอร์จะใช้งาน LAMP, Mail และ DNS
คำตอบ:
นี่คือรายการสิ่งที่ฉันทำเพื่อรักษาความปลอดภัยเซิร์ฟเวอร์ของฉัน
sudo ufw enable
) จากนั้นอนุญาตเฉพาะพอร์ตที่ใช้งานจริง ( sudo ufw allow 80
)sudo apt-get install denyhosts
)อีกสองสิ่งที่ต้องพิจารณา คนส่วนใหญ่ลืมเกี่ยวกับการเข้าถึงทางกายภาพ การกำหนดค่าซอฟต์แวร์ทั้งหมดในโลกนี้ไม่ได้มีความหมายอะไรเลยหากฉันสามารถเดินเข้าไปใน LiveCD และขโมยข้อมูลของคุณได้ ระวังวิศวกรรมสังคม ถามคำถามเพื่อตรวจสอบว่าใครอยู่ในโทรศัพท์และตรวจสอบให้แน่ใจว่าพวกเขาได้รับอนุญาตให้ทำตามคำขอ
เนื่องจากฉันยังเป็นผู้ใช้ใหม่ฉันจึงไม่สามารถโพสต์ลิงก์มากกว่า 2 ลิงก์ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่นี่: https://help.ubuntu.com/12.04/serverguide/index.htmlและให้ความสนใจเป็นพิเศษกับhttps://help.ubuntu.com/12.04/serverguide/security.html
iptables
กฎที่เฉพาะเจาะจงอย่างยิ่งที่จะไม่อนุญาตการเข้าถึงจากภายนอกไปยังบริการใด ๆ ที่คุณไม่ได้ใช้งาน การตั้งค่าลูกที่ต้องใช้รูเล็ตขั้นสูงและสิ่งต่าง ๆ
/ dev / shm สามารถใช้ในการโจมตีบริการที่กำลังทำงานอยู่เช่น httpd แก้ไข / etc / fstab เพื่อให้ปลอดภัยยิ่งขึ้น
เปิดหน้าต่างเทอร์มินัลแล้วป้อนข้อมูลต่อไปนี้:
sudo vi /etc/fstab
เพิ่มบรรทัดต่อไปนี้และบันทึก คุณจะต้องรีบูตเพื่อให้การตั้งค่านี้มีผล:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
ไฟล์ /etc/sysctl.conf มีการตั้งค่า sysctl ทั้งหมด ป้องกันการกำหนดเส้นทางต้นทางของแพ็กเก็ตที่เข้ามาและบันทึก IP ที่มีรูปแบบไม่ถูกต้องป้อนข้อมูลต่อไปนี้ในหน้าต่างเทอร์มินัล
sudo vi /etc/sysctl.conf
แก้ไขไฟล์/etc/sysctl.confและไม่แสดงความคิดเห็นหรือเพิ่มบรรทัดต่อไปนี้:
# 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
หากต้องการรีโหลด sysctl ด้วยการเปลี่ยนแปลงล่าสุดให้ป้อน:
sudo sysctl -p
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo vi /etc/host.conf
เพิ่มหรือแก้ไขบรรทัดต่อไปนี้:
order bind,hosts
nospoof on
แก้ไขไฟล์ php.ini:
sudo vi /etc/php5/apache2/php.ini
เพิ่มหรือแก้ไขบรรทัดต่อไปนี้:
disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On
DenyHosts เป็นโปรแกรมไพ ธ อนที่บล็อกการโจมตี SSH โดยอัตโนมัติโดยการเพิ่มรายการไปยัง /etc/hosts.deny DenyHosts จะแจ้งผู้ดูแลระบบ Linux เกี่ยวกับโฮสต์ที่ถูกโจมตีโจมตีผู้ใช้และการเข้าสู่ระบบที่น่าสงสัย
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install denyhosts
หลังจากการติดตั้งแก้ไขไฟล์การกำหนดค่า / etc / denyhosts.conf และเปลี่ยนอีเมลและการตั้งค่าอื่น ๆ ตามที่ต้องการ
หากต้องการแก้ไขการตั้งค่าอีเมลผู้ดูแลระบบให้เปิดหน้าต่างเทอร์มินัลแล้วป้อน:
sudo vi /etc/denyhosts.conf
เปลี่ยนค่าต่อไปนี้ตามที่ต้องการบนเซิร์ฟเวอร์ของคุณ:
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 นั้นล้ำหน้ากว่า DenyHosts เนื่องจากมันขยายการตรวจสอบบันทึกไปยังบริการอื่น ๆ รวมถึง SSH, Apache, Courier, FTP และอื่น ๆ
Fail2ban สแกนไฟล์บันทึกและห้ามแบนด์วิดธ์ IP ที่แสดงสัญญาณที่เป็นอันตราย - รหัสผ่านล้มเหลวมากเกินไปค้นหาการหาช่องโหว่ ฯลฯ
โดยทั่วไปแล้ว Fail2Ban จะใช้เพื่ออัปเดตกฎไฟร์วอลล์เพื่อปฏิเสธที่อยู่ IP ตามระยะเวลาที่กำหนดแม้ว่าจะสามารถกำหนดค่าการดำเนินการอื่นใดก็ได้ Fail2Ban มาพร้อมกับตัวกรองสำหรับบริการต่างๆ (apache, courier, ftp, ssh, ฯลฯ )
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install fail2ban
หลังจากการติดตั้งแก้ไขไฟล์กำหนดค่า/etc/fail2ban/jail.local และสร้างกฎตัวกรองตามต้องการ
หากต้องการแก้ไขการตั้งค่าให้เปิดหน้าต่างเทอร์มินัลแล้วป้อน:
sudo vi /etc/fail2ban/jail.conf
เปิดใช้งานบริการทั้งหมดที่คุณต้องการ fail2ban เพื่อตรวจสอบโดยการเปลี่ยนenabled = false เป็น * enabled = true *
ตัวอย่างเช่นถ้าคุณต้องการเปิดใช้งาน SSH การตรวจสอบและห้ามคุกพบบรรทัดด้านล่างและการเปลี่ยนแปลงการเปิดใช้งานจากfalse เป็น true แค่นั้นแหละ.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
หากคุณต้องการรับอีเมลจาก Fail2Banหากโฮสต์ถูกแบนให้เปลี่ยนบรรทัดต่อไปนี้เป็นที่อยู่อีเมลของคุณ
destemail = root@localhost
และเปลี่ยนบรรทัดต่อไปนี้จาก:
action = %(action_)s
ไปที่:
action = %(action_mwl)s
นอกจากนี้คุณยังสามารถสร้างตัวกรองกฎสำหรับบริการต่างๆที่คุณต้องการ fail2ban เพื่อตรวจสอบว่าไม่ได้เป็นค่าเริ่มต้น
sudo vi /etc/fail2ban/jail.local
คำแนะนำที่ดีเกี่ยวกับวิธีกำหนดค่า fail2ban และสร้างตัวกรองต่าง ๆ สามารถดูได้ที่HowtoForge - คลิกที่นี่เพื่อดูตัวอย่าง
เมื่อเสร็จสิ้นด้วยการกำหนดค่าของ Fail2Ban เริ่มบริการด้วย:
sudo /etc/init.d/fail2ban restart
คุณสามารถตรวจสอบสถานะได้ด้วย
sudo fail2ban-client status
ทั้งRKHunterและCHKRootkitนั้นทำสิ่งเดียวกัน - ตรวจสอบระบบของคุณเพื่อหารูทคิท ไม่เป็นอันตรายต่อการใช้งานทั้งคู่
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install rkhunter chkrootkit
ในการรัน chkrootkit เปิดหน้าต่างเทอร์มินัลและป้อน:
sudo chkrootkit
เพื่ออัปเดตและเรียกใช้ RKHunter เปิดเทอร์มินัลแล้วป้อนข้อมูลต่อไปนี้
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
Nmap ("Network Mapper") เป็นยูทิลิตี้ฟรีและโอเพ่นซอร์สสำหรับการค้นหาเครือข่ายและการตรวจสอบความปลอดภัย
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install nmap
สแกนระบบของคุณสำหรับพอร์ตที่เปิดด้วย:
nmap -v -sT localhost
การสแกน SYN พร้อมกับสิ่งต่อไปนี้:
sudo nmap -v -sS localhost
Logwatch เป็นระบบวิเคราะห์บันทึกที่ปรับแต่งได้ Logwatch แยกวิเคราะห์ผ่านบันทึกของระบบของคุณและสร้างรายงานการวิเคราะห์พื้นที่ที่คุณระบุ Logwatch ใช้งานง่ายและจะทำงานได้ทันทีจากแพ็คเกจในระบบส่วนใหญ่
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install logwatch libdate-manip-perl
ในการดูเอาต์พุตของบันทึกดูใช้น้อย:
sudo logwatch | less
หากต้องการส่งรายงานรายงานการตรวจสอบย้อนหลัง 7 วันที่ผ่านมาไปยังที่อยู่อีเมลให้ป้อนข้อมูลต่อไปนี้และแทนที่ mail@domain.com ด้วยอีเมลที่จำเป็น :
sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today'
Tiger เป็นเครื่องมือรักษาความปลอดภัยที่สามารถใช้ได้ทั้งกับระบบตรวจสอบความปลอดภัยและระบบตรวจจับการบุกรุก
เปิด Terminal และป้อนข้อมูลต่อไปนี้:
sudo apt-get install tiger
ในการวิ่งเสือเข้า:
sudo tiger
เอาต์พุต Tiger ทั้งหมดสามารถพบได้ใน / var / log / tiger
หากต้องการดูรายงานความปลอดภัยของเสือเปิดเทอร์มินัลแล้วป้อนข้อมูลต่อไปนี้:
sudo less /var/log/tiger/security.report.*
magic_quotes_gpc = On
PHP: อัญประกาศเวทมนต์ถูกเลิกใช้ครั้งแรกและถูกลบแล้ว: php.net/manual/en/security.magicquotes.whynot.php
เนื่องจากคุณบอกว่านี่เป็นเว็บโฮสติ้งเซิร์ฟเวอร์ ... ฉันต้องการแบ่งปันแนวปฏิบัติที่ดีที่สุดและประสบการณ์5 ปีในสายเว็บโฮสติ้ง
จากประสบการณ์ที่ผ่านมาของฉันแทนที่จะเข้าสู่นรกแห่งการกำหนดค่าในทันทีคุณควรรวบรวมองุ่นที่มีความปลอดภัยต่ำตามที่ระบุไว้ในบทความที่ให้ไว้
เนื่องจากคุณมี LAMP ดังนั้นคุณจะต้องระมัดระวัง PHPและการตั้งค่า php.ini อย่างระมัดระวัง นี่คือลิงค์ที่ดีสำหรับการรักษาความปลอดภัย PHP PHP มีพลังพิเศษซึ่งอาจกลายเป็นความปลอดภัยเมื่อไม่ได้กำหนดค่าอย่างเหมาะสม
คุณอาจใช้งาน cronเพื่อตรวจสอบว่าไฟล์ของคุณถูกแก้ไขโดยไม่ได้รับอนุญาตและอาจถูกแฮ็ค ใช้งาน cronนี้ ฉันชอบNotepad ++เพื่อเปรียบเทียบผลลัพธ์ cron (ดาวน์โหลดอีเมล cron โดยตรงจากเว็บเซิร์ฟเวอร์ของคุณและเปิดใน Notepad ++)
หากคุณต้องการติดตั้ง SEM บางส่วน cPanel เป็นที่ต้องการมากที่สุด Webminและzpanelเป็นทางเลือกฟรีที่ดีมาก Webmin ดีกว่าเพราะจะใช้ใบรับรองที่ลงนามด้วยตนเองและเพิ่มความปลอดภัย
หากคุณต้องการบางสิ่งบางอย่างในการทำงานทันทีคุณอาจเลือกTurnkey Linux มันขึ้นอยู่กับ Ubuntu ใช้งานง่ายและยืดหยุ่นตามความต้องการของคุณ ด้วยความพยายามน้อยมากที่คุณจะได้รับความปลอดภัยนอกกรอบ นี้เป็นของพวกเขาโคมไฟกอง ฉันใช้เป็นการส่วนตัวและชอบสิ่งนี้เท่านั้น
หากคุณเริ่มต้นจากรอยขีดข่วนคุณอาจติดตั้ง ISPconfig3 การเรียนการสอนที่นี่
คุณอาจทดสอบการรักษาความปลอดภัยของคุณโดยการพยายามที่จะเจาะความปลอดภัยของคุณโดยใช้กลับ-Track ลินุกซ์
เก็บรหัสผ่านแบบยาวและแบบสุ่มที่ซับซ้อน อย่าเก็บไว้ในพีซี เขียนลงไป ใช้ซีดีสดเพื่อเข้าถึงการเข้าสู่ระบบเหล่านี้
รับซอฟต์แวร์ป้องกันกำลังดุร้ายอย่าง fail2ban
อย่าเรียกใช้ daemons ที่คุณไม่ต้องการ
บล็อกพอร์ตที่ไม่จำเป็นทั้งหมด ใช้ความระมัดระวังอย่างมากกับพอร์ต SSH (22)
รับ IP แบบคงที่ในระบบที่คุณจะจัดการเซิร์ฟเวอร์ ใช้ประโยชน์จากทุกสิ่งในบล็อก IP และอนุญาตให้เฉพาะ IP ของคุณเข้าถึงสถานที่การกำหนดค่าเหล่านั้นเช่นพอร์ต 22
ในตอนท้ายของวัน ... ทำงานด้วยชิ้นส่วนของจิตใจไม่ได้รับอารมณ์กับการติดตั้งและใช้สามัญสำนึกจะนำคุณไปไกลกว่า
**My heartiest best wishes to you. good luck.**
brute force attacks
และdictionary attacks
.. รหัสผ่านแบบยาวเป็นวิธีเดียวที่จะป้องกันตัวเองจากการถูกโจมตี
ใช้ประโยชน์จากโปรเจค Bastille
มันมีเครื่องมือแบบอินเทอร์แอคทีฟเพื่อใช้มาตรการเสริมความปลอดภัยเพิ่มเติมเพื่อเพิ่มความปลอดภัยมากขึ้นและลดความไวต่อการถูกบุกรุกสำหรับระบบ Ubuntu ของคุณ (จากBastille Linux )
มันมีฟังก์ชั่นการประเมินและการรายงานเพื่อให้สามารถบอกคุณได้ว่าส่วนใดของระบบที่ไม่ถูกล็อค มันตรวจสอบระบบในรูปแบบอ่านอย่างเดียวรายงานเกี่ยวกับสถานะของแต่ละรายการที่ชุบแข็ง ตัวอย่างเช่น Bastille อาจตรวจสอบว่าเซิร์ฟเวอร์ DNS ถูกล็อคในคุก chroot หรือไม่ว่า telnet นั้นถูกปิดใช้งานหรือแม้ว่ารหัสผ่านจะต้องมีความยาวที่ดี คุณสามารถดูตัวอย่างของเว็บนี้ผ่านลิงก์นี้ ( ข้อมูลเพิ่มเติม )
ใช้nmap
กับส่วนต่อประสานทั้งหมดบนเครื่องเพื่อให้คุณทราบว่าบริการใดที่คุณใช้งานบนเครื่องของคุณ นี่เป็นเครื่องมือสำคัญสำหรับความปลอดภัย
ลบบริการทั้งหมดที่คุณไม่ต้องการบนอินเทอร์เฟซภายนอกของคุณ คุณสามารถกำหนดค่า MySQL ให้รับฟังได้เฉพาะอินเทอร์เฟซเฉพาะเช่น localhost
ใช้ ufw เพื่อปกป้องบริการ SSH ของคุณ (และอื่น ๆ ที่เป็นไปได้) เพื่อให้ไม่อนุญาตการเชื่อมต่อ (ล้มเหลว) มากเกินไปต่อนาทีจากเครื่องเดียวกัน นั่นจะทำให้การโจมตีของสัตว์ดุร้ายยากขึ้น ในการเปลี่ยนหมายเลขพอร์ตนั้นไม่ได้มีประโยชน์เพียงแค่คลุมเครือไม่มีความปลอดภัย
จำกัด จำนวนบัญชีในเครื่องของคุณ ยังไม่ติดตั้งแพ็คเกจ / โปรแกรมเพิ่มเติมมากกว่าที่คุณใช้จริง ติดตั้งเฉพาะไคลเอ็นต์ X11 ไม่ใช่เซิร์ฟเวอร์ X11
อนุญาตให้ลงชื่อเข้าใช้ ssh ไปยังเครื่องที่มีใบรับรองดิจิทัลเท่านั้นไม่มีรหัสผ่าน นั่นจะทำให้การโจมตีแบบเดรัจฉานบังคับยาก / เป็นไปไม่ได้
ฉันจะศึกษาเอกสารCIS Debian Benchmarksและมีขั้นตอนและกระบวนการจำนวนมากสำหรับการทำให้ระบบปฏิบัติการที่ใช้กับ Ubuntu แข็งแกร่งขึ้นเนื่องจากเป็นตราสารอนุพันธ์ของ Debian ฉันจะปรึกษาด้วย:
ความปลอดภัยมาพร้อมกับราคาเสมอ การกำหนดขอบเขตที่เหมือนจริงบางอย่างจะช่วยคุณในการบรรลุเป้าหมาย ฉันจะพิจารณาประเด็นต่อไปนี้:
ตรวจสอบลิงค์ทั้งหมดที่โพสต์ที่นี่ฉันคิดว่าควรจะเพิ่มลิงค์นี้ มันมีรายละเอียดเกี่ยวกับไม่เพียง แต่วิธีการตั้งค่าซอฟต์แวร์ของคุณ แต่ยังคำนึงถึงแผนการรักษาความปลอดภัยด้วย ในฐานะที่เป็นบวกทุกคำสั่งในการดำเนินการถูกอธิบายด้วยแหล่งที่มา
ฉันทำโพสต์เกี่ยวกับเรื่องนี้ไม่นานที่ผ่านมาเกี่ยวกับวิธีการรักษาความปลอดภัยอูบุนตู 16.04-18.04 ขั้นตอนเหล่านี้รวมถึง:
แทนที่รหัสผ่านเข้าสู่ระบบด้วยคีย์ที่ได้รับอนุญาตติดตั้งไฟร์วอลล์บนเซิร์ฟเวอร์ Linux ของคุณ
และอีกมากมาย https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/