Introduction to Linux

Download Report

Transcript Introduction to Linux

BASIC LINUX SECURITY
357362 – Special Problems in Electronics
Asst. Prof. Dr. Choopan Rattanapoka
Linux Security

เมื่อติดตั้งเครื่อง server สิ่งที่ตามมาหลังจากการ
CentOS
 ปรับแต่งระบบ
 เพิ่ม ลบ ผูใ้ ช้งาน
 กาหนด quota ผูใ้ ช้ และ การติดตั้ง RPM package
 ติดตั้ง

ก็คือ การดูแลความปลอดภัยของเครื่อง server
System Logger






System logger เป็ นเครื่องมือที่ใช้ในการสร้าง log ข้อมูลการทางานของ kernel
System logger อยูเ่ รียกใช้งานผ่านโปรแกรม daemon ที่ชื่อ rsyslogd
rsyslogd จะถูกเรียกใช้งานตั้งแต่ตอน boot เครื่อง
ข้อมูลต่างๆ ที่ถกู log จะเก็บไว้ใน directory /var/log
Log ของระบบจะอยูท่ ี่ /var/log/message แต่บางทีอาจตั้งไว้สาหรับเฉพาะหน้าที่
ได้ เช่น /var/log/maillog จะเก็บ log เกี่ยวกับการใช้งาน mail
รูปแบบของข้อมูลใน log จะเป็ นดังนี้
date time hostname
message
/etc/rsyslog.conf



rsyslog.conf เป็ นแฟ้ มข้อมูลสาหรับปรับแต่งการทางานของ rsyslogd
syslog.conf จะอยูใ่ น directory : /etc
ในแฟ้ มข้อมูล /etc/rsyslog.conf จะมีการปรับแต่งอยูใ่ นรูปแบบของกฎ แต่
ละกฎอยูใ่ นรูปแบบ
selector
action

Selector: เป็ นชื่อหน่ วยทางาน (facility)และ priority ที่ตอ้ งการจะบันทึก log

Selector จะอยูใ่ นรูปแบบของ Facility.priority
Action: จะให้ไปทาอะไร
 ตัวอย่าง


cron.*
/var/log/cron
Selector Facility
Facility
คาอธิบาย
daemon
ข้อความของ daemon ที่ไม่มี facility ของตัวเอง
lpr
ข้อความที่เกี่ยวข้องกับการทางานของ printer
mail
ข้อความที่เกี่ยวข้องกับการทางานของ mail
mark
สาหรับใช้ภายใน Linux
news
ข้อความเกี่ยวกับการทางานของ news server
syslog
ข้อความที่มาจาก syslogd
user
ข้อความที่มาจากโปรแกรมประเภท server ที่ user เป็ นคนเรียกใช้งาน
uucp
ข้อความเกี่ยวกับ UUCP (Unix-to-Unix copy)
local0-local7
เอาไว้ปรับแต่งใช้งานเองได้ local7 เก็บข้อความขณะ boot
cron
ข้อความที่มาจาก crond
authpriv
ข้อความเกี่ยวข้องกับความปลอดภัย
kern
ข้อความที่ kernel เขียน (สาหรับการพัฒนา kernel)
Selector Priority
Low
High
Priority
คาอธิบาย
debug
ข้อความ debug
info
ข้อความทัว่ ไป
notice
ข้อความที่ควรให้ความสนใจ
warning
ข้อความเตือนบางอย่างที่อาจมีผลกับระบบ
crit
ข้อความ critical ที่อาจเกิดจาก hardware หรือ software มีปัญหา
alert
ข้อความเตือนซึ่งอาจเกิดจากการทางานผิดพลาดของ software รีบตรวจระบบโดยด่วน
emerg
ข้อความเตือนปั ญหาที่เกิดขึ้ นกับ kernel ซึ่งจะทาให้ระบบไม่เสถียร
การใช้งาน Selector (1)

ถ้าต้องการจะเก็บข้อมูลทัว่ ไป เกี่ยวกับการใช้งาน mail
 mail.info

[info  emerg]
ถ้าต้องการเก็บข้อมูลทัว่ ไปของ mail และ cron
 mail.info;cron.info
 สามารถเขียนได้อีกวิธีคือใช้ “,”
กับ Facility ถ้ามี Priority เหมือนกัน
 mail,cron.info

ถ้าต้องการเก็บ log ทุกอย่างของ cron ใช้ “*” แทน Priority ทั้งหมด
 cron.debug
 cron.*
การใช้งาน Selector (2)

ถ้าต้องการให้ cron เก็บข้อมูลเฉพาะ info ใช้เครื่องหมาย “=“
 cron.=info

ถ้าต้องการให้ cron เก็บข้อมูลทุกอย่าง ยกเว้นข้อความ warning
 สามารถใช้ “!”
เพื่อบอก priority ที่ไม่เอาได้
 cron.*;cron.!warning
 cron.!=warning

Priority “none” คือไม่ให้ log ข้อความใดๆ เลย
 cron.none
Action

ส่วน Action ของ /etc/rsyslog.conf คือ ตาแหน่ งที่จะเก็บข้อมูล log ซึ่ง
สามารถเป็ น

แฟ้ มข้อมูลธรรมดาในเครื่อง


Terminal (หน้าจอเสมือน)



cron.info @logserver.cit.kmutnb.ac.th (UDP)
cron.info @@logserver.cit.kmutnb.ac.th (TCP)
รายชื่อของผูใ้ ช้


cron.info /dev/tty2
เครื่องคอมพิวเตอร์เครื่องอื่น (ใช้เครื่องหมาย @ นาหน้าชื่อ log server)


cron.info /var/log/cron
cron.info root,choopan
เมื่อมีการแก้ไข /etc/rsyslog.conf จะต้อง restart โปรแกรม rsyslog ด้วย
โดยใช้คาสัง่

service rsyslog restart
แบบฝึ กหัด

จงเขียนกฎใน /etc/rsyslog.conf
log ข้อความที่เกิดจากระบบ mail โดย log เฉพาะข้อความ
alert และ emerg ไว้ที่แฟ้ มข้อมูล /var/log/mailprob
 ถ้าต้องการ log ข้อความที่เกิดจากระบบความปลอดภัย (authpriv) เฉพาะ
ข้อความ (info) เท่านั้น ส่ง mail ไปให้ root
 ถ้าต้องการ log ข้อความที่เกิดจากระบบความปลอดภัย (authpriv) ทุกอย่าง
ยกเว้น info เท่านั้น ส่งไปที่ server : cit.kmutnb.ac.th (บน TCP)
 ถ้าต้องการ log ของทุก Facility เฉพาะข้อความ info เท่านั้ น ออกที่
terminal /dev/tty5
 ถ้าต้องการ
การตรวจสอบผูบ้ ุกรุกเบื้ องต้น


ในส่วนของ facility : authpriv จะเป็ นส่วนที่บนั ทึกการเข้าใช้งานระบบ ด้วย login,
passwd ซึ่งเราสามารถจะใช้เป็ นการตรวจสอบผูบ้ ุกรุกระบบเบื้ องต้นได้
ใน /etc/rsyslog.conf ที่ติดตั้งมาพร้อมกับ CentOS จะมีกฎนี้

authpriv.*
/var/log/secure
Log Server

Client

ในกรณีที่มีการปรับแต่ง action ของการเก็บ log ไปยังเครื่องคอมพิวเตอร์เครื่องอื่น
@log-server-hostname สาหรับ UDP
 @@log-server-hostname สาหรับ TCP


Server

ต้องปรับแต่ง /etc/rsyslog.conf

สาหรับ UDP


เปิ ด comment ที่บรรทัด $ModLoad imudp และ $UDPServerRun 514
สาหรับ TCP

เปิ ด comment ที่บรรทัด $ModLoad imtcp และ $InputTCPServerRun 514
รีสตาร์ทเซอร์วสิ service rsyslog restart
 ปรับ firewall ให้เปิ ด port 514

การทางานอัตโนมัติดว้ ย cron

ในการทางานกับ server ข้อมูลที่อยูใ่ น server ถือว่ามีความสาคัญมาก
 ข้อมูลในระบบฐานข้อมูล
 ข้อมูลหน้าเว็บต่างๆ



ดังนั้นเพื่อลดความเสี่ยงของข้อมูลที่อาจจะสูญหายเมือ่ server มีปัญหาจึง
ควรมีการทา backup ของข้อมูลเหล่านั้น
ใน CentOS มีโปรแกรมช่วยให้ทางานอัตโนมัติตามเวลาที่กาหนดด้วย
คาสัง่ crontab
crontab เป็ นคาสัง่ ที่ให้ผใู้ ช้รายบุคคลสามารถสัง่ ให้งานถูกทาตามเวลาที่
กาหนด โดยข้อมูลต่างๆเกี่ยวกับงานจะอยูใ่ น /var/spool/cron
cron.allow และ cron.deny




cron.allow และ cron.deny เป็ นคอนฟิ คไฟล์เมื่อใช้ในการอนุ ญาตว่าผูใ้ ช้คนใดสามารถใช้
งาน crontab ได้บา้ ง
ทั้ง 2 ไฟล์นี้อยูท่ ี่ directory : /etc
มีเพียง root เท่านั้นที่จะแก้ไขข้อมูลภายใน cron.allow และ cron.deny
การใช้งานพื้ นฐาน





ถ้ามีแฟ้ มข้อมูล cron.allow เฉพาะชื่อบัญชีที่อยูใ่ น cron.allow จะสามารถใช้crontab ได้
ถ้าไม่มีแฟ้ มข้อมูล cron.allow ทุกคนจะใช้ crontab ได้ยกเว้นบัญชีที่มีชื่ออยูใ่ น cron.deny
ถ้าไม่มีไม่มีท้งั แฟ้ มข้อมูล cron.allow และ cron.deny มี root เท่านั้นที่ใช้ crontab ได้
ถ้ามีชื่ออยูท่ ้งั cron.allow และ cron.deny จะเอาที่ cron.allow เป็ นหลักคือยังใช้งานได้
ตัวอย่าง : ถ้าในเครื่องมีผใู้ ช้อยู่ 4 คน: root, abc, cit, ect เขียน cron.allow และ
cron.deny ดังตารางข้างล่าง ถามว่าใครสามารถใช้ crontab ได้บา้ ง
cron.allow
cron.deny
root
ect
ect
การใช้งาน crontab



การเพิ่มงานอัตโนมัติให้กบั crontab จะใช้คาสัง่ crontab –e
crontab จะเรียก vi ขึ้ นมาเป็ นตัว editor ถ้าไม่เคยใช้งานมาก่อนก็จะ
เหมือนกับใช้ vi เปิ ดแฟ้ มข้อมูลเปล่า
รูปแบบการเขียนงานใน crontab
นาที ชัว่ โมง วันที่ เดือน วันในสัปดาห์
งาน
หน่วยของเวลา
ค่าที่จะใช้ได้
นาที
0-59
ชัว่ โมง
0-23
วันที่ (day of month)
1-31
เดือน
1-12
วันในสัปดาห์ (day of week)
0-6 (เริ่มนับ 0 จากวันอาทิตย์)
ตัวอย่างการเขียนงานอัตโนมัติ

ถ้าต้องการให้สร้างแฟ้ มข้อมูลชื่อ /root/touchtest เวลา 6:40 ทุกวัน


sh
/root/bin/backupdb.sh
0 0 * * 1-5
sh
/root/bin/backupdb.sh
ถ้าต้องการให้ backupdb.sh ถูกเรียกใช้งานเที่ยงคืนเฉพาะวันเสาร์และอาทิตย์


00**5
ถ้าต้องการให้ backupdb.sh ถูกเรียกใช้งานเที่ยงคืนทุกจันทร์ถึงศุกร์


touch /root/touchtest
ถ้ามี shell script ชื่อ backupdb.sh อยูท่ ี่ตาแหน่ ง /root/bin จะให้ถกู
เรียกใช้งานทุกวันศุกร์เวลาเที่ยงคืน


40 6 * * *
0 0 * * 0,6
sh
/root/bin/backupdb.sh
ถ้าต้องการให้ backupdb.sh ถูกเรียกใช้งานทุกๆ 2 ชัว่ โมง (ใช้ */)

* */2 * * *
sh /root/bin/backupdb.sh
Option อื่นๆ ของคาสัง่ crontab

ถ้าต้องการตรวจสอบว่าเราได้ใส่งานอะไรให้กบั crontab บ้างสามารถ
ตรวจสอบได้ ด้วย option -l
 crontab

-l
ถ้าต้องการเอางานบางอย่างออกสามารถทาได้ 2 วิธีคือ
 เรียกคาสัง่
crontab –e
 ลบบรรทัดที่งานนั้ นถูกสัง่ ให้ทางานออก
 ใส่ comment

หรือ
หน้าบรรทัด (#)
ถ้าต้องการลบทุกงานที่อยูใ่ น crontab ออกให้หมด ใช้ option –r
 crontab
-r
แบบฝึ กหัด (1)

เขียนงานใน crontab ต่อไปนี้
 ให้เรียก
shell script ชื่อ doit.sh ที่ตาแหน่ ง /root
 โดยให้ทางานทุกวันจันทร์,
พุธ, ศุกร์ ตอน 6 โมงเช้า
failed ของแฟ้ มข้อมูล /var/log/secure ไป
ต่อท้ายแฟ้ มข้อมูลชื่อ secureProblem ที่ตาแหน่ ง /root/log
 ให้กรองบรรทัดที่มีคาว่า
 โดยให้ทางานทุกวันที่
 ให้ copy
5 ของเดือน เวลา 4 ทุ่มครึ่ง
ไดเรคทอรี่ /home ไปยัง /backup
 โดยให้ทางานทุกๆ 7
วัน
แบบฝึ กหัด (2)


ทาให้ client เก็บ log ของ facility : authpriv มาที่เครื่อง
server ผ่าน protocol TCP
อย่าลืมเปิ ด firewall ให้รบั ข้อมูลของ client