Mais conteúdo relacionado
Semelhante a NETWORK SERVICEOPENSSH + NTP + SQUID (20)
Mais de Ploynatcha Akkaraputtipat (6)
NETWORK SERVICEOPENSSH + NTP + SQUID
- 2. Network Service
การทางานที่เกี่ยวข้องกับระบบเครือข่ายเป็ นจุดแข็งของ Linux
เนื่ องจาก Linux ได้ถกออกแบบมาเพื่อรองรับการทางานบนระบบเครือข่าย
ู
โดยเฉพาะ เช่น
การเข้าถึงเครื่องแม่ขายผ่านระบบเครือข่ายด้วยช่องทางที่ปลอดภัย (SSH)
่
NTP
Proxy server, web caching server
Remote file sharing
DNS
DHCP
..etc..
- 3. OpenSSH
SSH เป็ น 1 ในวิธีที่ผดแลระบบจะใช้ในการติดต่อกับเครื่องแม่ขายเมื่อไม่
ู้ ู ่
สามารถเข้าถึงเครื่องแม่ขายได้โดยตรง
่
SSH ได้เข้ามาแทนที่การใช้งาน telnet เนื่ องจาก telnet ไม่มีการ
เข้ารหัสข้อมูลในการรับ-ส่ง ทาให้เสี่ยงต่อความปลอดภัย
OpenSSH configuration File
แฟ้ มข้อมูลในการปรับแต่งบริการ ssh คือแฟ้ มข้อมูลชื่อ sshd_config
/etc/ssh
อยูที่ตาแหน่ ง
่
รูปแบบของการปรับแต่ง คือ directive_name value
หลังจากแก้ไขค่าต่างๆแล้ว ต้องพิมพ์ service sshd restart
- 4. การเชื่อมต่อกับ OpenSSH Server
คาสังใน Linux เพื่อเชื่อมต่อกับ OpenSSH server คือ
่
ssh user@remote_machine [-p port_number]
ssh เป็ นคาสังที่ใช้เชื่อมต่อกับ OpenSSH server
่
user ชื่อบัญชีที่มีอยูในเครื่องที่ตองการเชื่อมต่อ
่ ้
remote_machine ชื่อเครื่องปลายทาง
ตัวอย่าง
ssh root@localhost
ssh choopan@ect.cit.kmutnb.ac.th
ssh ect.cit.kmutnb.ac.th (บัญชีชื่อเดียวกันทั้ง 2 เครื่อง)
- 5. การ copy แฟ้ มข้อมูลระหว่างเครื่องแบบปลอดภัย
ในการโอนถ่ายแฟ้ มข้อมูลจากเครื่องหนึ่ งไปยังอีกเครื่องหนึ่ ง สามารถทาผ่าน
ช่องทางปลอดภัยได้ โดยใช้คาสัง scp
่
scp [-P port_number] [-r] yourfile user@remotemachine:target_directory
-r ถ้าต้องการ copy directory
ตัวอย่าง
ถ้าต้องการ copy แฟ้ มข้อมูลชื่อ /var/log/message ไปที่บญชี root ใน
ั
เครื่อง ect.cit.kmutnb.ac.th ที่ตาแหน่ ง /tmp
scp /var/log/message root@ect.cit.kmutnb.ac.th:/tmp
ถ้าต้องการ copy แฟ้ มข้อมูลชื่อ /root/myfile.txt ของบัญชี root จากเครื่อง
cit.kmutnb.ac.th มายังเครื่องและบัญชีที่เราใช้งานอยู่
scp root@cit.kmutnb.ac.th:/root/myfile.txt .
- 6. ทดลอง
สร้างแฟ้ มข้อมูลเป็ นรหัสนักศึกษาขึ้ นมา 1 แฟมข้อมูล (touch)
้
ส่งแฟ้ มข้อมูลนี้ ไปยังบัญชี ect ที่เครื่อง ect.cit.kmutnb.ac.th ที่
ตาแหน่ ง /home/ect
ใช้ ssh เข้าไปดูวาแฟ้ มข้อมูลนั้นถูก copy เข้าไปจริงหรือไม่
่
จากนั้นให้กลับมายังเครื่องของนักศึกษาแล้ว copy แฟ้ มข้อมูลชื่อ
downloadme.txt ที่อยูในตาแหน่ ง /home/ect ในบัญชี ect ที่
่
เครื่อง ect.cit.kmutnb.ac.th มายังเครื่องนักศึกษา
Copy ทั้ง directory ชื่อ downloadME ที่อยูในตาแหน่ ง ่
/home/ect ในบัญชี ect ที่เครื่อง ect.cit.kmutnb.ac.th มายัง
เครื่องนักศึกษา
- 7. OpenSSH Key
การทางานผ่าน OpenSSH จะปลอดภัยเนื่ องจากมีการเข้ารหัส โดยการใช้
key ซึ่งจะมี key 2 ชนิ ดคือ
private key
ใช้สาหรับเข้าและถอดรหัสของข้อมูลบนเครื่องแม่ข่าย key ตัวนี้ จะเป็ นความลับและไม่มีการ
แจกจ่าย
ssh_host_dsa_key และ ssh_host_rsa_key เป็ นแฟ้ มข้อมูล private key ที่ถก ู
เข้ารหัสด้วย DSA, และ RSA ตามลาดับ
public key
ใช้สาหรับเครื่องที่ติดต่อกับเครื่องแม่ข่าย จะเข้ารหัสข้อมูลด้วย public key ที่ได้มา และจะถูก
ถอดรหัสได้เมื่อใช้ private key ของเครื่องแม่ขายเท่านั้น
่
ssh_host_dsb_pub.key และ ssh_host_rsa_pub.key เป็ น public key
CentOS จะเก็บ key ทั้ง 2 ของเครื่องไว้ใน /etc/ssh
- 8. OpenSSH Fingerprints
เมื่อมีการเชื่อมต่อครั้งแรกของเครื่องเราสูเครื่องคอมพิวเตอร์แม่ขายผ่าน
่ ่
SSH
ตัว client จะถูกถามถึงการยอมรับหรือปฎิเสธ fingerprint ของเครื่อง
แม่ขาย เนื่ องจาก fingerprint นี้ ไม่เคยรูจกมาก่อน
่ ้ั
Fingerprint จริงๆแล้วก็คือ public key ที่ใช้ในการติดต่อ
Fingerprint จะถูกเก็บใน directory .ssh ใน home ในแฟ้ มข้อมูลที่ชื่อ
known_hosts
- 9. แฟ้ มข้อมูล ~/.ssh/known_hosts
เมื่อมีการเชื่อมต่อกันด้วย ssh แล้ว fingerprint ของเครื่องที่ทาการ
เชื่อมต่อด้วยจะถูกเก็บไว้ในแฟ้ มข้อมูล known_hosts
จากนั้นครั้งต่อไปเมื่อมีการเชื่อมต่อกันอีกจะไม่มีการถามถึง fingerprint
อีกต่อไป
ยกเว้นกรณีเครื่องที่เราเคยติดต่อไป ได้ลงระบบปฎิบติการใหม่ ทาให้
ั
fingerprint เปลี่ยนไป ซึ่งเมื่อเราไปเชื่อมต่อจะเกิด warning ขึ้ น
ดังนั้นเราจึงต้องไปลบ fingerprint เก่าออกจากแฟ้ มข้อมูล
known_hosts ก่อนถึงจะเชือมต่อกันได้
่
- 10. NTP Server
เวลาบนเครื่อง server เป็ นสิ่งที่สาคัญมาก
เวลาที่เก็บlog เพื่อค้นหาผูกระทาผิด หรือ ผูบุกรุกระบบ
้ ้
เวลาที่สงให้ crontab ทางาน
ั่
โดยเฉพาะอย่างยิงเมื่อมีเครื่องแม่ขายหลายตัวและต้องการใช้เวลาของเครื่อง
่ ่
แม่ขายทุกตัว มีเวลาที่ตรงกัน หรือใกล้กนมากที่สุด
่ ั
ปั ญหาเรื่องเวลาสามารถแก้ไขได้ดวย Network Time Protocol (NTP)
้
NTP มีกลไลในการ synchronize เวลาในเครื่องเรากับเครื่องแม่ขายเวลา
่
และมีการใช้ time scale คือ Coordinated Universal Time (UTC)
- 11. โครงสร้าง NTP
โครงสร้างของ NTP จะแบ่งในลักษณะลาดับชั้นเรียกว่า strata
Strata ที่อยูช้นบนสุดคือแหล่งกาเนิ ดของเวลาที่ใช้ในการ synchronize
่ ั
- 12. NTP configuration modes
NTP มีการทางานอยูดวยกัน 5 โหมด
่ ้
Client-Server
มีเครื่อง 1 เครื่องทาหน้าที่เป็ น NTP Server และเครื่องที่เหลือจะใช้ NTP Clientดึงเวลา
มาจากเครื่อง server
Symmetric active/passive
NTP server จะถูก config เป็ นให้เป็ น peer เพื่อเป็ นตัว backup ให้ server หลัก
โดยถ้าทุก peer ทางานจะส่งข้อมูล update เวลาไปให้กบเครื่องอื่นๆ ถ้ามี peer ไหนไม่
ั
สามารถให้บริการได้ ก็ยงเหลือ peer อื่นที่ทางานได้
ั
Broadcast/Multicast สาหรับเครือข่ายแบบ WAN
Manycast สาหรับ NTP version 4 ให้ server ถูกค้นหาได้ดวย
้
multicast
Orphan ทางานโดยไม่มี server
- 13. ติดตั้ง NTP + Client-Server mode
NTP ไม่ได้ถกลงมากับ CentOS โดย default
ู
แต่เราสามารถติดตั้ง NTP ได้ดวยคาสัง
้ ่
yum install ntp
โหมด Client-Server
แก้ไขแฟ้ มข้อมูล /etc/ntp.conf
เพิ่ม server ที่จะใช้ในการ synchronization ในรูปแบบ
server ชื่อ NTP server
หลังจากเพิ่มเติมแล้วให้ restart บริการใหม่ดวย
้
service ntpd restart
ถ้าต้องการดู log การทางานของ ntpd สามารถใช้คาสัง
่
ntpd –d
- 14. NTP: Symmetric Active/Passive Mode
ทาได้โดยการเพิ่มข้อความข้างล่างลงในแฟ้ มข้อมูล /etc/ntp.conf
บรรทัดล่างสุด
peer ip ของเครื่องที่จะแลกเปลี่ยนเวลากัน
โดยทัวไปจะมีการปรับแต่งต่อท้าย Client/Server mode
่
Peer จะแลกเปลี่ยนเวลากันเมื่อไม่สามารถติดต่อกับ NTP server
เมื่อปรับแต่งเสร็จเรียบร้อยแล้วจะต้อง
service ntpd restart
- 15. NTP : Broadcast Mode
จะต้องไม่ใช้ร่วมกับ Active/Passive mode
เพิ่มบรรทัดให้กบตัวที่ตองการจะ broadcast เวลา
ั ้
broadcast ip
disable auth
ตัวอย่าง
broadcast 192.168.1.255
disable auth
สาหรับเครื่องที่ตองการจะรับเวลาจากเครื่องที่ broadcast ให้ใส่
้
broadcastclient
disable auth
- 16. Squid Web Caching Server
เมื่อระบบเครือข่ายขององค์กรมี bandwidth ไม่เพียงพอต่อความ
ต้องการ ถึงเวลาที่ตองใช้ Web caching หรือ Web Proxy เข้ามา
้
ช่วย
Web caching ที่มีให้ใช้ใน CentOS คือ Squid
Squid มีขอจากัดบางประการ คือ สามารถเป็ น web caching หรือ
้
เพิมความเร็วให้กบบาง protocol เท่านั้น (HTTP, HTTPS by
่ ั
pass-through, และ FTP)
Squid ไม่ได้ถกติดตั้งมากับ CentOS โดยตรง เพราะฉนั้นจึงต้องติดตั้ง
ู
Squid เอง ด้วยคาสัง ่
yum install squid
- 17. Squid Main Configuration File
Config file ของ Squid จะเก็บอยูที่ตาแหน่ ง /etc/squid
่
ใน directory /etc/squid จะมีแฟ้ มข้อมูลที่สาคัญอยูคือ
่
squid.conf
ในแฟ้ มข้อมูล /etc/squid/squid.conf จะบรรจุคาสัง ่
(directive) ซึ่ง 1 บรรทัดคือ 1 คาสัง
่
Directive มีรปแบบไวยกรณ์ดงนี้
ู ั
directivename given_value_1 [ given_value_2 … given_value_N ]
- 18. visible_hostname directive
visible_hostname givenhostname
visible_hostname เป็ น directive ใช้เพื่อบันทึกใน system
log file และบอกผูใช้ เกี่ยวกับ ชื่อของ web cache server เมื่อเกิด
้
ปั ญหา
จะต้อง set ค่านี้ ก่อนเรียกใช้งาน Squid ไม่เช่นนั้น Squid จะไม่อานค่า
่
ปกติชื่อ host ที่ทาหน้าที่เป็ น web cache จะเรียกว่า proxy
ตัวอย่าง proxy.cit.kmutnb.ac.th
ตัวอย่างการใช้งาน directive
visible_hostname proxy.cit.kmutnb.ac.th
- 19. cache_dir directive
cache_dir เป็ น directive ที่บอกกับ squid ถึง directory ที่จะใช้ในการเก็บ
cache ต่างๆ (หน้า web, files)
มีรปแบบดังนี้
ู
cache_dir storagetype targetdirectory storagesize directorycount subdirectorycount
cache_dir directive สาหรับการใช้งาน cache
storagetype ประเภทของระบบแฟมข้อมูลโดยปกติจะเป็ น ufs (unix file system)
้
targetdirectory ตาแหน่ งที่ตองการใช้ Squid ใช้ในการเก็บ cache
้
storagesize เนื้ อที่ที่จะใช้ในการเก็บ cache มีหน่ วยเป็ น MB
directorycount จานวนของ directory ที่จะเก็บใน cache
subdirectorycount จานวนของ subdirectory ที่จะเก็บภายใน directory
ตัวอย่าง cache_dir ufs /var/spool/squid 100 16 256
เมื่อมีการเปลี่ยนแปลง cache_dir จะต้องใช้คาสัง squid -z เพือทาการ clear
่ ่
cache แล้วจึงใช้คาสัง service squid restart เพื่อให้ squid อ่านค่า config
่
ใหม่
- 20. ACLs และ ACL-operators
Access Control List (ACL) เป็ น directive ที่ใช้สาหรับจากัดการ
ทางานของ Squid เช่น การอนุ ญาตหรือห้ามเครื่องบางเครื่องให้ใช้งาน
internet ได้
Squid จะปฎิเสธการเข้าถึง internet ของทุก host โดยปริยายหลังจาก
การติดตั้ง Squid เป็ นครั้งแรก
ดังนั้ นเป็ นหน้าที่ของผูดแลระบบที่จะต้องเพิ่มเครืองใน network
้ ู ่ ใน ACL ให้
สามารถใช้งาน internet ผ่าน Squid
- 21. ACL directive
การเขียน Directive ACL อยูในรูปแบบดังนี้
่
acl name type argument
name ชื่อที่เป็ น identity ของ ACL (ชื่ออะไรก็ได้)
type อาจจะเป็ น src (คุม IP ขาเข้า) หรือ password (เพื่อให้มีการ
ติดการใช้งาน password)
argument เป็ นค่า argument ที่ type ต้องการ
ตัวอย่าง
acl localhost src 127.0.0.1/32
การใช้งาน ACL directive จะใช้ควบคู่กบ ACL-Operation เสมอ
ั
- 22. ACL Operation
Squid จะทางานเกี่ยวกับ web เพราะฉนั้น ACL operation ที่เกี่ยวข้องกับ web คือ
http_access operation target
operation ที่ใช้กนคือ allow และ deny
ั
target คือชื่อของ ACL
ตัวอย่าง ACL-Operation
http_access allow localhost
ตัวอย่าง ถ้าต้องการให้ทุกเครื่องใน 192.168.1.0/24 และ 127.0.0.1 ใช้งาน internet ผ่าน
Squid ได้ ที่เหลือจะปฎิเสธการเข้าใช้งาน internet สามารถทาการแก้ไขใน
/etc/squid/squid.conf ได้ดงนี้ ั
acl localhost src 127.0.0.1/32
acl localnet src 192.168.1.0/24
http_access allow localhost
http_access allow localnet
http_access deny all
เมื่อมีการแก้ไขแฟ้ มข้อมูล config ของ Squid จะต้องใช้คาสัง service squid restart
่
Client จะต้อง set proxy มายัง port 3128 เป็ น port โดยปริยายของ squid
- 23. Log Server
ของแถมเตือนความจา การทางานหลายอย่างของ Linux จะมีการบันทึกการ
ทางานเรียกว่า log ซึ่งโปรแกรมที่ทางานในส่วนนี้ คือ syslog
ถ้าจาได้ syslog สามารถตั้งให้ส่ง log ข้ามเครือข่ายมาเก็บที่เครื่องอื่นได้ดวย
้
เครื่องหมาย @ชื่อserver ในส่วนของ action
การติดตั้งเครื่อง Log server จาเป็ นจะต้องเปิ ดบริการให้รบข้อมูลจากเครื่อง
ั
อื่นได้ก่อน
แก้ไขแฟ้ มข้อมูล /etc/sysconfig/syslog โดยการเพิ่ม “-r” ในตัวแปรชื่อ
SYSLOGD_OPTION
ใช้คาสัง service syslog restart เพื่อให้ syslog อ่าน config ใหม่
่
ถ้ามีการติดตั้ง firewall ในเครื่อง server จะต้องอนุ ญาต port ของ syslog
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.1.0/24 –p udp –m
udp --dport 514 -j ACCEPT
- 24. แบบฝึ กหัด
ถ้าเคย save การทา nat ใน iptables ไว้เอาออกให้หมด
ทาให้ client เก็บ log ของ facility : authpriv มาที่เครื่อง
server
ติดตั้ง squid ที่เครื่อง server อนุ ญาตให้ client สามารถใช้งาน web
ผ่าน squid ได้