ข้ามไปที่เนื้อหา
วันศุกร์, ตุลาคม 30, 2026ข่าวเทคโนโลยี รีวิว และคู่มือใช้งานจริงโดยอิสระ
เกี่ยวกับ
ล่าสุด /

MacBook Pro OLED: เบิร์นอิน ทัช และ PROLED XDR คุ้มไหม

อ่านคู่มือ
ความปลอดภัยไซเบอร์ & ความเป็นส่วนตัวGM / 399

วิธีรักษาความปลอดภัยเซิร์ฟเวอร์ Debian 12: 15 ขั้นตอนเสริมความปลอดภัยที่ผู้ดูแลระบบมักมองข้าม

คู่มือครบถ้วนในการเสริมความปลอดภัยเซิร์ฟเวอร์ Debian 12 ด้วย 15 ขั้นตอนสำคัญ ครอบคลุม SSH ไฟร์วอลล์ การยืนยันตัวตนสองขั้นตอน และอื่น ๆ

Debian 12 server protected by multi-layered firewall and security hardening components with teal and dark blue security architecture diagram
สถาปัตยกรรมการเสริมความปลอดภัยที่ครอบคลุมสำหรับเซิร์ฟเวอร์ Debian 12 ซึ่งใช้การป้องกันหลายชั้น รวมถึงกฎไฟร์วอลล์ การเสริมความปลอดภัยของเคอร์เนล และกลไกควบคุมการเข้าถึง

การทำให้เซิร์ฟเวอร์ Debian 12 ปลอดภัยต้องทำมากกว่าการติดตั้งระบบปฏิบัติการและเชื่อมต่อกับอินเทอร์เน็ต ผู้ดูแลระบบส่วนใหญ่ทำตามแนวทางความปลอดภัยพื้นฐาน คืออัปเดตแพ็กเกจ เปิดใช้ไฟร์วอลล์ และปิดการเข้าสู่ระบบด้วย root แต่กลับมองข้ามขั้นตอนการเสริมความปลอดภัยสำคัญหลายข้อที่ช่วยยกระดับความปลอดภัยได้อย่างชัดเจน มาตรการที่ถูกละเลยเหล่านี้สร้างช่องโหว่ที่ใช้โจมตีได้ ซึ่งผู้โจมตีระดับสูงคอยค้นหาอยู่ตลอดเวลา คู่มือฉบับสมบูรณ์นี้เผย 15 ขั้นตอนการเสริมความปลอดภัยที่จำเป็น ซึ่งผู้ดูแลระบบที่มีประสบการณ์มักมองข้าม เพื่อเปลี่ยนเซิร์ฟเวอร์ Debian 12 ของคุณจากแค่ใช้งานได้ ให้ปลอดภัยจริงจากการคุกคามสมัยใหม่​

ความต่างระหว่างการติดตั้งแบบพื้นฐานกับเซิร์ฟเวอร์ Debian 12 ที่เสริมความปลอดภัยอย่างถูกต้อง เป็นตัวกำหนดว่าระบบของคุณจะรอดจากการโจมตีแบบเจาะจง หรือกลายเป็นสถิติแรนซัมแวร์อีกราย แต่ละขั้นตอนที่มองข้ามคือพื้นผิวการโจมตีที่เพิ่มขึ้น ช่องโหว่ที่อาจเกิดขึ้น และโอกาสที่พลาดไปในการยกระดับกำแพงความปลอดภัยก่อนภัยคุกคามจะเกิดขึ้นจริง

Secure SSH key authentication illustration with locked cryptographic key symbol and encrypted connection protecting Debian 12 server access
การยืนยันตัวตนด้วยคีย์ SSH ขจัดช่องโหว่จากรหัสผ่านโดยใช้คู่คีย์เข้ารหัส ป้องกันการโจมตีแบบ brute-force และการเข้าถึงเซิร์ฟเวอร์ Debian โดยไม่ได้รับอนุญาต

พื้นฐาน: การอัปเดตระบบและการจัดการแพ็กเกจ

ขั้นตอนที่ 1: ตั้งค่าอัปเดตความปลอดภัยอัตโนมัติด้วย Unattended Upgrades

แม้ผู้ดูแลระบบส่วนใหญ่จะรัน apt update และ apt upgradeแต่มีเพียงไม่กี่คนที่ตั้งค่าการแพตช์ความปลอดภัยอัตโนมัติ ซึ่งเป็นการมองข้ามครั้งสำคัญที่ทำให้ระบบเผชิญความเสี่ยงระหว่างรอบอัปเดตด้วยมือ​

แพตช์ความปลอดภัยของ Debian แก้ไขช่องโหว่ที่รู้จักซึ่งผู้โจมตีนำไปใช้โจมตีอยู่จริง การอัปเดตด้วยมือสร้างช่องว่างที่เป็นอันตราย เช่น เช้าวันจันทร์ที่คุณรันอัปเดต ช่องโหว่ zero-day ของวันอังคารถูกนำไปใช้หมุนเวียนในกลุ่มผู้โจมตีแล้ว พอถึงเย็นวันอังคาร ระบบของคุณก็ยังไม่ถูกแพตช์ทั้งที่มีตัวแก้อยู่ในคลังของ Debian แล้ว​

ติดตั้ง unattended-upgrades เพื่ออัปเดตความปลอดภัยอัตโนมัติ:

bashsudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure -plow unattended-upgrades

ตั้งค่าอัปเดตความปลอดภัยอัตโนมัติโดยแก้ไข /etc/apt/apt.conf.d/50unattended-upgrades:

bashsudo nano /etc/apt/apt.conf.d/50unattended-upgrades

ตรวจสอบว่าการตั้งค่าสำคัญเหล่านี้เปิดใช้งานอยู่:

textUnattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::AutoFixInterruptedDpkg "true";

การตั้งค่านี้จะติดตั้งอัปเดตความปลอดภัยโดยอัตโนมัติทุกวัน ลบแพ็กเกจเคอร์เนลที่ไม่ได้ใช้ และส่งอีเมลถึงคุณเฉพาะเมื่อเกิดข้อผิดพลาด ช่วยป้องกันช่องว่างความปลอดภัยที่เป็นอันตรายโดยไม่เพิ่มภาระงานของผู้ดูแล​

การเสริมความปลอดภัยเซิร์ฟเวอร์ Debian 12 ด้วยชั้นป้องกันไฟร์วอลล์

การเสริมความปลอดภัยการเข้าถึง SSH

ขั้นตอนที่ 2: บังคับใช้การยืนยันตัวตนด้วยคีย์ SSH (ปิดการยืนยันตัวตนด้วยรหัสผ่าน)

เซิร์ฟเวอร์ส่วนใหญ่เปิดการยืนยันตัวตนด้วยรหัสผ่าน SSH ไว้เป็นค่าเริ่มต้น ซึ่งเป็นช่องโหว่ที่เปิดทางให้เกิดการโจมตีแบบ brute-force จากทุกที่บนอินเทอร์เน็ต ผู้โจมตีใช้เครื่องมืออัตโนมัติลองรหัสผ่านหลายล้านชุดทุกคืน และถ้าคุณไม่ใช้รหัสผ่านที่แข็งแรงเป็นพิเศษร่วมกับ fail2ban สักวันหนึ่งก็จะมีคนเดาถูกจนได้​

การยืนยันตัวตนด้วยคีย์ SSH ปลอดภัยกว่าในเชิงการเข้ารหัส: แม้ผู้โจมตีเจาะเข้าเครือข่ายของคุณได้ พวกเขาก็ใช้รหัสผ่านที่ขโมยมาไม่ได้ เพราะเซิร์ฟเวอร์ไม่รับรหัสผ่านอีกต่อไป​

สร้างคู่คีย์ SSH ที่แข็งแรงบนเครื่องของคุณ:

bashssh-keygen -t rsa -b 4096 -f ~/.ssh/debian_server -N "your-strong-passphrase"

คัดลอกคีย์สาธารณะไปยังเซิร์ฟเวอร์ของคุณ (ทำครั้งเดียวจากเครื่องของคุณ):

bashssh-copy-id -i ~/.ssh/debian_server.pub username@your_server_ip

ตอนนี้ตรวจสอบว่าการเข้าถึงด้วยคีย์ทำงานได้ก่อนปิดการใช้รหัสผ่าน:

bashssh -i ~/.ssh/debian_server username@your_server_ip

แก้ไขการตั้งค่าของ SSH daemon:

bashsudo nano /etc/ssh/sshd_config

ใช้การตั้งค่า SSH ที่เสริมความปลอดภัยเหล่านี้:

textProtocol 2
Port 22
AddressFamily inet
ListenAddress 0.0.0.0

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM yes

PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 1m
StrictModes yes
IgnoreRhosts yes
HostbasedAuthentication no
RhostsRSAAuthentication no
RSAAuthentication no

X11Forwarding no
X11UseLocalhost no

TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 2

Subsystem sftp /usr/lib/openssh/sftp-server

รีสตาร์ต SSH เพื่อให้การเปลี่ยนแปลงมีผล:

bashsudo systemctl restart ssh

ทดสอบการตั้งค่าของคุณอย่างละเอียดก่อนออกจากเซสชันปัจจุบัน เพราะหากตั้งค่าผิดพลาด คุณอาจถูกล็อกออกจากระบบอย่างถาวร​

ความปลอดภัยของการยืนยันตัวตนด้วยคีย์ SSH เพื่อการเข้าถึงเซิร์ฟเวอร์ที่ปลอดภัย

ขั้นตอนที่ 3: เปลี่ยนพอร์ต SSH จากค่าเริ่มต้น 22 (ไม่บังคับแต่ได้ผล)

แม้ไม่จำเป็นในเชิงการเข้ารหัส การเปลี่ยน SSH จากพอร์ต 22 ช่วยลดเสียงรบกวนจากการสแกนพอร์ตของเครื่องมือโจมตีอัตโนมัติ นี่คือความปลอดภัยผ่านการปกปิด ซึ่งใช้ได้จริงในการลดขยะในล็อกและทำให้การตรวจค้นแบบผิวเผินช้าลง​

ใน /etc/ssh/sshd_configให้แก้ไข:

textPort 2222

อัปเดตไฟร์วอลล์เพื่ออนุญาตพอร์ตใหม่:

bashsudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp

จดบันทึกการเปลี่ยนแปลงนี้ไว้ เพราะคุณจะลืมมันตอนเกิดเหตุฉุกเฉินครั้งหน้าที่ตี 3​

ขั้นตอนที่ 4: ติดตั้ง Fail2ban เพื่อป้องกันการโจมตีแบบ brute-force

แม้ใช้การยืนยันตัวตนด้วยคีย์ SSH แล้ว บริการเสริมอื่น ๆ (อีเมล เว็บแอปพลิเคชัน ฯลฯ) อาจยังรับรหัสผ่าน Fail2ban จะเฝ้าดูความพยายามยืนยันตัวตนที่ล้มเหลวและแบนที่อยู่ IP ที่ก่อเหตุชั่วคราว หยุดการโจมตีแบบ brute-force ก่อนจะสำเร็จ​

ติดตั้ง Fail2ban:

bashsudo apt update && sudo apt install fail2ban -y

ตั้งค่า Fail2ban โดยคัดลอกไฟล์การตั้งค่าเริ่มต้น:

bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

แก้ไขไฟล์การตั้งค่า:

bashsudo nano /etc/fail2ban/jail.local

ใน [DEFAULT] ให้ตั้งค่า:

text[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1 your_trusted_ip

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1800

เริ่มและเปิดให้ Fail2ban ทำงานตอนบูต:

bashsudo systemctl enable fail2ban
sudo systemctl start fail2ban

ตรวจดูการแบนที่กำลังทำงานอยู่:

bashsudo fail2ban-client status sshd

การตั้งค่านี้จะแบน IP เป็นเวลา 1800 วินาที (30 นาที) เมื่อมีการพยายาม SSH ผิดพลาด 3 ครั้งภายในช่วง 10 นาที ซึ่งเข้มงวดพอที่จะหยุดการโจมตีแบบเดารหัสผ่านซ้ำ ๆ โดยไม่ทำให้เกิดการแบนผิดพลาด​

การตั้งค่าไฟร์วอลล์และการเสริมความปลอดภัยเครือข่าย

ขั้นที่ 5: ตั้งค่าไฟร์วอลล์ UFW ด้วยนโยบายเริ่มต้นที่เข้มงวด

ผู้ดูแลระบบหลายคนข้ามการตั้งค่าไฟร์วอลล์หรือใช้กฎที่ผ่อนปรนเกินไป ไฟร์วอลล์ที่ตั้งค่าอย่างถูกต้องคือแนวป้องกันแรกของคุณต่อการเข้าถึงโดยไม่ได้รับอนุญาต​

ติดตั้งและตั้งค่า UFW (Uncomplicated Firewall):

bashsudo apt update && sudo apt install ufw -y

ก่อนเปิดใช้งาน UFW ให้อนุญาต SSH ก่อนเพื่อไม่ให้ล็อกตัวเองออกจากระบบ:

bashsudo ufw allow 2222/tcp
sudo ufw allow ssh

กำหนดนโยบายเริ่มต้นแบบจำกัด:

bashsudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed

เปิดใช้งาน UFW:

bashsudo ufw enable

สำหรับเว็บเซิร์ฟเวอร์ ให้อนุญาต HTTP และ HTTPS เพิ่มด้วย:

bashsudo ufw allow 80/tcp
sudo ufw allow 443/tcp

อนุญาตเฉพาะ IP ที่ระบุให้เข้าถึงบริการที่ละเอียดอ่อน:

bashsudo ufw allow from 192.168.1.100 to any port 3306

ดูการตั้งค่าของคุณ:

bashsudo ufw status verbose

ขั้นที่ 6: เสริมความปลอดภัยพารามิเตอร์เคอร์เนลด้วย Sysctl

ผู้ดูแลระบบแทบไม่เคยแก้ไขพารามิเตอร์เคอร์เนลนอกเหนือจากค่าเริ่มต้น ซึ่งเป็นการมองข้ามที่สำคัญ การเสริมความปลอดภัยเคอร์เนลผ่าน sysctl สามารถป้องกันการโจมตีเครือข่ายและการโจมตีช่องโหว่ได้ทั้งกลุ่ม​

สร้างไฟล์การตั้งค่าสำหรับเสริมความปลอดภัย:

bashsudo nano /etc/sysctl.d/99-hardening.conf

เพิ่มพารามิเตอร์เสริมความปลอดภัยของเคอร์เนลให้ครบถ้วน:

text# Network Security
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# IPv6 Security
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Memory Protection
kernel.dmesg_restrict = 1
kernel.printk = 3 3 3 3
kernel.kptr_restrict = 2
kernel.core_uses_pid = 1
kernel.kexec_load_disabled = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

# Process Restrictions
kernel.unprivileged_userns_clone = 0
kernel.perf_event_paranoid = 3

ใช้การตั้งค่าเสริมความปลอดภัยทันที:

bashsudo sysctl -p /etc/sysctl.d/99-hardening.conf

พารามิเตอร์เหล่านี้ปิดการส่งต่อ IP (เว้นแต่คุณจำเป็นต้องใช้) เปิด SYN cookies เพื่อป้องกันการโจมตีแบบ SYN flood เปิดการกรอง reverse-path เพื่อป้องกันการปลอมแปลง IP และเพิ่มการป้องกันหน่วยความจำต่อการเปิดเผยข้อมูล​

ขั้นที่ 7: ปิดบริการเครือข่ายที่ไม่จำเป็น

ทุกบริการที่ทำงานอยู่คือพื้นที่โจมตีที่อาจเกิดขึ้น การติดตั้ง Debian ตามค่าเริ่มต้นหลายแห่งมีบริการที่คุณไม่จำเป็นต้องใช้ เช่น เมลเซิร์ฟเวอร์ ตัวแปลง DNS หรือแม้แต่ Bluetooth บนเซิร์ฟเวอร์แบบไม่มีหน้าจอ​

ระบุบริการที่กำลังทำงาน:

bashsudo systemctl list-units --type=service --state=running

ตรวจสอบว่าบริการใดกำลังเปิดรับการเชื่อมต่อบนพอร์ตเครือข่าย:

bashsudo ss -tulnp

ปิดบริการที่ไม่จำเป็น สำหรับเว็บเซิร์ฟเวอร์พื้นฐาน คุณมักไม่จำเป็นต้องใช้:

bashsudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
sudo systemctl disable avahi-daemon.service
sudo systemctl mask isc-dhcp-server
sudo systemctl mask isc-dhcp-server6

หลังจากปิดไม่ให้เริ่มตอนบูตแล้ว ให้หยุดบริการเหล่านั้น:

bashsudo systemctl stop bluetooth.service
sudo systemctl stop cups.service

จดบันทึกว่าคุณปิดบริการใดบ้างและเพราะอะไร เพราะข้อมูลนี้สำคัญมากเมื่อมีการตรวจสอบความปลอดภัย​

การควบคุมการเข้าถึงและการยืนยันตัวตน

ขั้นที่ 8: ใช้การยืนยันตัวตนสองขั้นตอนสำหรับ SSH

การยืนยันตัวตนสองขั้นตอน (2FA) เพิ่มชั้นความปลอดภัยที่สอง แม้มีคนได้คีย์ส่วนตัว SSH ของคุณไป พวกเขาก็ยังเข้าถึงเซิร์ฟเวอร์ของคุณไม่ได้หากไม่มีปัจจัยที่สอง​

ติดตั้ง Google Authenticator สำหรับ TOTP (รหัสผ่านใช้ครั้งเดียวตามเวลา):

bashsudo apt update && sudo apt install libpam-google-authenticator -y

ตั้งค่า 2FA ในฐานะผู้ใช้ของคุณ (ไม่ใช่ root):

bashgoogle-authenticator -t -f -d -w 10 -r 3 -R 30

คำสั่งนี้จะสร้าง QR code ให้สแกนด้วยแอปยืนยันตัวตนของคุณ เก็บรหัสสำรองไว้ในที่ปลอดภัย เพราะนี่คือช่องทางกู้คืนของคุณหากอุปกรณ์ยืนยันตัวตนหาย​

แก้ไขการตั้งค่า PAM ของ SSH เพื่อบังคับใช้ 2FA:

bashsudo nano /etc/pam.d/sshd

เพิ่มบรรทัดนี้ก่อน @include common-auth:

textauth required pam_google_authenticator.so nullok

แก้ไขการตั้งค่าดีมอน SSH:

bashsudo nano /etc/ssh/sshd_config

เพิ่มหรือแก้ไข:

textChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

รีสตาร์ต SSH:

bashsudo systemctl restart ssh

ทดสอบการตั้งค่าของคุณด้วยหน้าต่างเทอร์มินัลใหม่ก่อนปิดเซสชันปัจจุบัน​

การยืนยันตัวตนสองขั้นตอนช่วยรักษาความปลอดภัยในการเข้าถึงเซิร์ฟเวอร์ Debian

ขั้นที่ 9: เสริมความปลอดภัยนโยบายบัญชีผู้ใช้

นโยบายบัญชีผู้ใช้เริ่มต้นใน Debian มีข้อจำกัดไม่เพียงพอ หากไม่เสริมความปลอดภัย นโยบายรหัสผ่านที่อ่อนแอและกลไกการล็อกบัญชีจะทำให้ระบบเสี่ยงต่อการถูกยึดข้อมูลรับรอง​

แก้ไข /etc/login.defs เพื่อบังคับใช้นโยบายรหัสผ่านที่เข้มงวดขึ้น:

bashsudo nano /etc/login.defs

แก้ไขการตั้งค่าสำคัญเหล่านี้:

textPASS_MAX_DAYS   30
PASS_MIN_DAYS   1
PASS_WARN_AGE   7
LOGIN_RETRIES   3
LOGIN_TIMEOUT   60
FAILLOG_ENAB    yes
LOG_UNKFAIL_ENAB yes
LOG_OK_LOGINS    yes
SYSLOG_SU_ENAB   yes

ปิดใช้งานบัญชีผู้ใช้ที่ไม่จำเป็น:

bashsudo passwd -l games
sudo passwd -l news
sudo passwd -l uucp

สร้างการกำหนดค่า sudo ที่เข้มงวด ซึ่งกำหนดให้ต้องใช้รหัสผ่านและบันทึกการใช้งาน sudo:

bashsudo visudo

ตรวจสอบให้แน่ใจว่ามีบรรทัดเหล่านี้:

textDefaults use_pty
Defaults log_input, log_output
Defaults requirepass
%sudo ALL=(ALL:ALL) ALL

การตั้งค่านี้บังคับให้คำสั่ง sudo ทำงานใน pseudo-terminal บันทึกอินพุต/เอาต์พุตทั้งหมด และกำหนดให้ต้องยืนยันด้วยรหัสผ่านเมื่อยกระดับสิทธิ์​

การตรวจสอบ การตรวจประเมิน และการตรวจจับการบุกรุก

ขั้นตอนที่ 10: ใช้งานการบันทึกล็อกอย่างครอบคลุมด้วย Auditd

ผู้ดูแลระบบส่วนใหญ่อาศัยเพียง syslog จึงพลาดเหตุการณ์ด้านความปลอดภัยโดยละเอียดที่ auditd บันทึกไว้ auditd ให้ร่องรอยการตรวจสอบโดยละเอียดซึ่งจำเป็นสำหรับการสืบสวนทางนิติวิทยาศาสตร์และการปฏิบัติตามข้อกำหนด​

ติดตั้ง auditd:

bashsudo apt update && sudo apt install auditd audispd-plugins -y

กำหนดค่า auditd โดยแก้ไข /etc/audit/rules.d/audit.rules:

bashsudo nano /etc/audit/rules.d/audit.rules

เพิ่มกฎการตรวจสอบที่สำคัญ:

text# Remove any existing rules
-D

# Buffer Size
-b 8192

# Failure Mode
-f 2

# Audit the audit logs
-w /var/log/audit/ -k auditlog

# Audit system administration
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# Audit system calls
-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b32 -S execve -k exec

# Audit file modifications
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity

# Make the configuration immutable
-e 2

โหลดกฎการตรวจสอบ:

bashsudo systemctl restart auditd

ดูล็อกการตรวจสอบ:

bashsudo ausearch -m EXECVE --start recent

สร้างรายงานการตรวจสอบ:

bashsudo aureport

auditd สร้างล็อกจำนวนมหาศาล—กำหนดค่าการหมุนเวียนล็อกเพื่อป้องกันปัญหาเนื้อที่ดิสก์เต็ม​

ขั้นตอนที่ 11: ติดตั้งเครื่องมือตรวจจับ rootkit และมัลแวร์

ผู้ดูแลระบบหลายคนคิดว่าระบบของตนปลอดมัลแวร์เพราะไม่มีอะไรดูผิดปกติ rootkit ที่ซับซ้อนจะซ่อนการมีอยู่ของมันไว้พร้อมกับคงการเข้าถึงของผู้โจมตีไว้​

ติดตั้ง rootkit hunter:

bashsudo apt update && sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check --skip-warning

ติดตั้ง chkrootkit เพื่อตรวจหามัลแวร์อีกชั้นหนึ่ง:

bashsudo apt install chkrootkit -y
sudo chkrootkit

ติดตั้ง AIDE (Advanced Intrusion Detection Environment) สำหรับตรวจสอบความสมบูรณ์ของไฟล์:

bashsudo apt install aide aide-common -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check

ตั้งเวลาสแกนรายสัปดาห์ผ่าน cron:

bashsudo nano /etc/cron.d/rootkit-checks

เพิ่ม:

text0 2 * * 0 root /usr/bin/rkhunter --check --skip-warning 2>&1 | mail -s "Weekly rootkit check" [email protected]
0 3 * * 0 root /usr/bin/aide --check 2>&1 | mail -s "Weekly AIDE check" [email protected]

เครื่องมือเหล่านี้แจ้งเตือนคุณเกี่ยวกับ rootkit และมัลแวร์ก่อนที่มันจะฝังตัวถาวรในระบบ​

ขั้นตอนที่ 12: เปิดใช้งานและตรวจสอบล็อกของระบบ

ผู้ดูแลระบบมักเปิด syslog ไว้แต่ไม่เคยตรวจดูล็อกจริง ๆ ล็อกจะมีประโยชน์ก็ต่อเมื่อคุณเฝ้าติดตามอย่างจริงจัง​

กำหนดค่า rsyslog สำหรับการบันทึกล็อกอย่างครอบคลุม:

bashsudo nano /etc/rsyslog.conf

ตรวจสอบให้แน่ใจว่าเปิดใช้งานโมดูลสำคัญแล้ว:

textmodule(load="imuxsock")
module(load="imklog")
module(load="imtcp")

input(type="imtcp" port="514")

กำหนดค่าการหมุนเวียนล็อกด้วย logrotate:

bashsudo nano /etc/logrotate.d/rsyslog

ตรวจสอบให้แน่ใจว่าหมุนเวียนล็อกอย่างถูกต้อง:

text/var/log/syslog {
    daily
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

ติดตั้งและกำหนดค่า logwatch สำหรับสรุปล็อกรายวัน:

bashsudo apt install logwatch -y
sudo nano /etc/logwatch/conf/logwatch.conf

กำหนดค่าการส่งอีเมล:

textOutput = mail
Format = html
Email = [email protected]
Hostname = your-server-name

การควบคุมการเข้าถึงและการจัดการสิทธิ์

Multi-factor authentication security illustration with authenticator app and security verification layers protecting Debian 12 server access
การยืนยันตัวตนสองขั้นตอน (2FA) เพิ่มชั้นความปลอดภัยที่สองที่จำเป็น โดยต้องมีทั้ง SSH key และรหัสผ่านใช้ครั้งเดียวแบบอิงเวลา ช่วยป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตแม้คีย์ส่วนตัวจะถูกยึดไป

ขั้นตอนที่ 13: ใช้งานและบังคับใช้การควบคุมการเข้าถึงแบบบังคับ

ระบบสิทธิ์การเข้าถึงมาตรฐานของ Linux (DAC) มีความละเอียดไม่พอที่จะป้องกันไม่ให้แอปพลิเคชันที่ถูกเจาะทำความเสียหายต่อระบบ AppArmor ให้การควบคุมการเข้าถึงแบบบังคับ (MAC) ตามโปรไฟล์ ซึ่งช่วยป้องกันการเคลื่อนที่ในแนวนอนหลังถูกเจาะ​

Debian มี AppArmor มาพร้อมค่าเริ่มต้น แต่บ่อยครั้งโหลดโปรไฟล์ไว้เพียงน้อย ตรวจสอบว่า AppArmor ทำงานอยู่:

bashsudo aa-status

ติดตั้งโปรไฟล์ AppArmor เพิ่มเติม:

bashsudo apt install apparmor-profiles apparmor-profiles-extra apparmor-utils -y

โหลดโปรไฟล์ใหม่:

bashsudo systemctl reload apparmor

ตรวจสอบว่าการป้องกันทำงานอยู่:

bashsudo aa-status | grep "profiles in enforce mode"

สร้างโปรไฟล์ AppArmor แบบกำหนดเองสำหรับแอปพลิเคชันที่ละเอียดอ่อน:

bashsudo aa-genprof /usr/bin/your-application

AppArmor จำกัดแอปพลิเคชันให้เข้าถึงเฉพาะทรัพยากรที่กำหนดไว้ ป้องกันไม่ให้เว็บเซิร์ฟเวอร์ที่ถูกเจาะเข้าถึงไฟล์ระบบหรือการกำหนดค่าฐานข้อมูล​

ขั้นตอนที่ 14: กำหนดค่าสิทธิ์การเข้าถึงไฟล์และ umask อย่างปลอดภัย

สิทธิ์การเข้าถึงไฟล์โดยค่าเริ่มต้นใน Debian อนุญาตให้อ่านได้โดยไม่จำเป็น การกำหนดค่า umask ที่เหมาะสมป้องกันไม่ให้ไฟล์ที่ละเอียดอ่อนถูกอ่านได้โดยทุกคน​

ตรวจสอบ umask ปัจจุบัน:

bashumask

ตั้งค่าเริ่มต้นที่ปลอดภัยใน /etc/profile.d/ สำหรับผู้ใช้ทุกคน:

bashsudo nano /etc/profile.d/secure-umask.sh

เพิ่ม:

textif [ $UID -ge 1000 ]; then
    umask 0077
else
    umask 0027
fi

ทำให้ไฟล์นี้เรียกใช้งานได้:

bashsudo chmod 644 /etc/profile.d/secure-umask.sh

ตรวจสอบสิทธิ์ไฟล์ปัจจุบันของไฟล์สำคัญที่ผู้ใช้อื่นอ่านได้:

bashsudo find /etc -type f -perm -444 -exec ls -l {} \;
sudo find /home -type f -perm -444 -exec ls -l {} \;

ลบสิทธิ์การอ่านที่ไม่จำเป็น:

bashsudo chmod 600 /etc/ssh/sshd_config
sudo chmod 640 /etc/sudoers

ขั้นตอนที่ 15: ปิด capabilities ของระบบไฟล์ที่ไม่จำเป็น

ระบบ Linux สมัยใหม่ให้สิทธิ์แบบละเอียดแก่โปรแกรม แทนการแบ่งแบบไบนารีระหว่าง root กับ non-root capabilities ที่ไม่จำเป็นบนไบนารีของระบบจะสร้างช่องทางยกระดับสิทธิ์​

ระบุ capabilities บนไบนารีของระบบ:

bashgetcap -r /usr/bin 2>/dev/null
getcap -r /usr/sbin 2>/dev/null

ลบ capabilities ที่ไม่จำเป็น (ตัวอย่าง):

bashsudo setcap -r /usr/bin/dumpcap
sudo setcap -r /usr/bin/chsh

บันทึกว่า capabilities ใดจำเป็นสำหรับแอปของคุณ แล้วลบส่วนที่เหลือ แต่ละอย่างล้วนเป็นช่องทางยกระดับสิทธิ์ที่อาจถูกใช้ประโยชน์ได้​

การเสริมความปลอดภัยและการบำรุงรักษาอย่างต่อเนื่อง

หลังจากทำตามขั้นตอนการเสริมความปลอดภัยทั้ง 15 ข้อนี้แล้ว ความปลอดภัยจะกลายเป็นกระบวนการต่อเนื่อง:

งานประจำเดือน: ตรวจสอบบันทึกการตรวจสอบเพื่อหาความผิดปกติ ดูรูปแบบการแบนของ Fail2ban ปรับพารามิเตอร์เคอร์เนลตามความจำเป็น และตรวจสอบว่าโปรไฟล์ AppArmor ทำงานอยู่

งานประจำไตรมาส: สแกนหา rootkit แบบเต็มรูปแบบ ตรวจสอบกฎไฟร์วอลล์เพื่อหาข้อยกเว้นที่ไม่จำเป็น ตรวจสอบบัญชีผู้ใช้ที่ไม่มีการใช้งาน และหาบริการที่เลิกใช้แล้วซึ่งปิดได้

งานประจำปี: ตรวจสอบความปลอดภัยอย่างครบถ้วนด้วยเครื่องมืออย่าง Lynis ทบทวนและอัปเดตนโยบายความปลอดภัยทั้งหมด ทดสอบขั้นตอนการกู้คืนจากภัยพิบัติ และอัปเดตแผนรับมือเหตุการณ์

บทสรุป

ความแตกต่างระหว่างเซิร์ฟเวอร์ Debian 12 ที่มีช่องโหว่กับเครื่องที่เสริมความปลอดภัยแล้วอยู่ที่การลงมือทำ 15 ขั้นตอนเหล่านี้ซึ่งผู้ดูแลระบบจำนวนมากมองข้าม ตั้งแต่การอัปเดตความปลอดภัยอัตโนมัติและการเสริมความปลอดภัยของคีย์ SSH ไปจนถึงการปรับพารามิเตอร์เคอร์เนล การบันทึกข้อมูลอย่างครอบคลุม และการตรวจสอบอย่างต่อเนื่อง แต่ละมาตรการจัดการกับเส้นทางโจมตีเฉพาะที่ผู้โจมตีระดับสูงใช้ประโยชน์อยู่ทุกวัน​

เริ่มจากขั้นตอนพื้นฐาน ได้แก่ การอัปเดตอัตโนมัติ การบังคับใช้การยืนยันตัวตนด้วยคีย์ SSH การตั้งค่าไฟร์วอลล์ และการเปิดใช้ 2FA จากนั้นค่อยไปสู่การตรวจสอบและตรวจจับการบุกรุก อย่าพยายามทำทุกอย่างพร้อมกัน การเสริมความปลอดภัยเป็นระยะจะช่วยป้องกันข้อผิดพลาดในการตั้งค่าและทำให้คุณเข้าใจแต่ละองค์ประกอบ บันทึกการเปลี่ยนแปลงอย่างละเอียด ทดสอบการตั้งค่าก่อนนำขึ้นใช้งานจริง และหมั่นตรวจสอบอย่างสม่ำเสมอ

เซิร์ฟเวอร์ Debian 12 ของคุณจะไม่มีวันปลอดภัย 100% ความปลอดภัยคือการเดินทางที่ต่อเนื่อง ไม่ใช่จุดหมายปลายทาง แต่การทำตามขั้นตอนการเสริมความปลอดภัยทั้ง 15 ข้อนี้จะกำจัดเป้าหมายง่าย ๆ ที่การโจมตีอัตโนมัติใช้ประโยชน์ และสร้างการป้องกันที่แน่นหนาพอจะต้านทานได้ทุกฝ่าย ยกเว้นคู่ต่อสู้ที่มุ่งมั่นและมีทรัพยากรสูงสุด

เพิ่มสัญญาณของคุณ

อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

thไทย