Upload
ploy-plai
View
449
Download
7
Embed Size (px)
DESCRIPTION
ข้อมูลหามาจากบนอินเตอร์เน็ตค่ะ เก็บไว้แชร์ไว้อ่าน
Citation preview
NETWORK SERVICE
OPENSSH + NTP + SQUID
357362 – Special Problems in Electronics
Choopan Rattanapoka
Network Service
การท างานท่ีเกี่ยวขอ้งกบัระบบเครือข่ายเป็นจุดแข็งของ Linux
เน่ืองจาก Linux ไดถ้กูออกแบบมาเพ่ือรองรบัการท างานบนระบบเครือข่ายโดยเฉพาะ เช่น
การเขา้ถึงเครื่องแมข่า่ยผ่านระบบเครือข่ายดว้ยช่องทางท่ีปลอดภยั (SSH)
NTP
Proxy server, web caching server
Remote file sharing
DNS
DHCP
..etc..
OpenSSH
SSH เป็น 1 ในวธีิท่ีผูด้แูลระบบจะใชใ้นการติดต่อกบัเคร่ืองแมข่า่ยเมื่อไม่
สามารถเขา้ถึงเครื่องแมข่า่ยไดโ้ดยตรง
SSH ไดเ้ขา้มาแทนท่ีการใชง้าน telnet เน่ืองจาก telnet ไมม่ีการ
เขา้รหสัขอ้มลูในการรบั-ส่ง ท าใหเ้ส่ียงต่อความปลอดภยั
OpenSSH configuration File
แฟ้มขอ้มลูในการปรบัแต่งบริการ ssh คือแฟ้มขอ้มลูชื่อ sshd_config
อยูท่ี่ต าแหน่ง /etc/ssh
รปูแบบของการปรบัแต่ง คือ directive_name value
หลงัจากแกไ้ขคา่ต่างๆแลว้ ตอ้งพิมพ ์ service sshd restart
การเชื่อมต่อกบั OpenSSH Server
ค าสัง่ใน Linux เพื่อเชื่อมต่อกบั OpenSSH server คือ
ssh user@remote_machine [-p port_number]
ssh เป็นค าสัง่ท่ีใชเ้ชื่อมต่อกบั OpenSSH server
user ชื่อบญัชีท่ีมีอยูใ่นเครื่องท่ีตอ้งการเชื่อมต่อ
remote_machine ชื่อเครื่องปลายทาง
ตวัอยา่ง
ssh root@localhost
ssh ect.cit.kmutnb.ac.th (บญัชีชื่อเดียวกนัทั้ง 2 เครื่อง)
การ 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 [email protected]:/tmp
ถา้ตอ้งการ copy แฟ้มขอ้มลูชื่อ /root/myfile.txt ของบญัชี root จากเครื่อง cit.kmutnb.ac.th มายงัเครื่องและบญัชีท่ีเราใชง้านอยู่
scp [email protected]:/root/myfile.txt .
ทดลอง
สรา้งแฟ้มขอ้มลูเป็นรหสันักศึกษาขึ้ นมา 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 มายงัเครื่องนักศึกษา
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
OpenSSH Fingerprints
เมื่อมีการเชื่อมต่อครั้งแรกของเครื่องเราสูเ่ครื่องคอมพิวเตอรแ์มข่า่ยผ่าน
SSH
ตวั client จะถกูถามถึงการยอมรบัหรือปฎิเสธ fingerprint ของเครื่องแมข่า่ย เน่ืองจาก fingerprint น้ีไมเ่คยรูจ้กัมาก่อน
Fingerprint จริงๆแลว้ก็คือ public key ท่ีใชใ้นการติดต่อ
Fingerprint จะถกูเก็บใน directory .ssh ใน home ในแฟ้มขอ้มลูท่ีชื่อ known_hosts
แฟ้มขอ้มลู ~/.ssh/known_hosts
เมื่อมีการเชื่อมต่อกนัดว้ย ssh แลว้ fingerprint ของเคร่ืองท่ีท าการ
เชื่อมต่อดว้ยจะถกูเก็บไวใ้นแฟ้มขอ้มลู known_hosts
จากน้ันครั้งต่อไปเมื่อมีการเชื่อมต่อกนัอีกจะไมม่ีการถามถึง fingerprint
อีกต่อไป
ยกเวน้กรณีเคร่ืองท่ีเราเคยติดต่อไป ไดล้งระบบปฎิบติัการใหม ่ท าให ้
fingerprint เปล่ียนไป ซ่ึงเมื่อเราไปเชื่อมต่อจะเกิด warning ขึ้ น
ดงัน้ันเราจึงตอ้งไปลบ fingerprint เก่าออกจากแฟ้มขอ้มลู
known_hosts ก่อนถึงจะเชือ่มต่อกนัได้
NTP Server
เวลาบนเคร่ือง server เป็นส่ิงท่ีส าคญัมาก
เวลาท่ีเก็บ log เพื่อคน้หาผูก้ระท าผิด หรอื ผูบุ้กรุกระบบ
เวลาท่ีสัง่ให ้crontab ท างาน
โดยเฉพาะอยา่งยิง่เมื่อมีเคร่ืองแมข่า่ยหลายตวัและตอ้งการใชเ้วลาของเคร่ือง
แมข่า่ยทุกตวั มเีวลาท่ีตรงกนั หรือใกลก้นัมากท่ีสุด
ปัญหาเร่ืองเวลาสามารถแกไ้ขไดด้ว้ย Network Time Protocol (NTP)
NTP มีกลไลในการ synchronize เวลาในเคร่ืองเรากบัเคร่ืองแมข่า่ยเวลา
และมีการใช ้time scale คือ Coordinated Universal Time (UTC)
โครงสรา้ง NTP
โครงสรา้งของ NTP จะแบ่งในลกัษณะล าดบัชั้นเรียกวา่ strata
Strata ท่ีอยูช่ั้นบนสุดคือแหล่งก าเนิดของเวลาท่ีใชใ้นการ synchronize
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
ติดตั้ง 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
NTP: Symmetric Active/Passive Mode
ท าไดโ้ดยการเพิ่มขอ้ความขา้งล่างลงในแฟ้มขอ้มลู /etc/ntp.conf
บรรทดัล่างสุด
peer ip ของเครื่องท่ีจะแลกเปล่ียนเวลากนั
โดยทัว่ไปจะมีการปรบัแต่งต่อทา้ย Client/Server mode
Peer จะแลกเปล่ียนเวลากนัเมื่อไม่สามารถติดต่อกบั NTP server
เมื่อปรบัแต่งเสร็จเรียบรอ้ยแลว้จะตอ้ง
service ntpd restart
NTP : Broadcast Mode
จะตอ้งไมใ่ชร้่วมกบั Active/Passive mode
เพิ่มบรรทดัใหก้บัตวัท่ีตอ้งการจะ broadcast เวลา
broadcast ip
disable auth
ตวัอยา่ง
broadcast 192.168.1.255
disable auth
ส าหรบัเคร่ืองท่ีตอ้งการจะรบัเวลาจากเคร่ืองท่ี broadcast ใหใ้ส่
broadcastclient
disable auth
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
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 ]
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
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ใหม่
ACLs และ ACL-operators
Access Control List (ACL) เป็น directive ท่ีใชส้ าหรบัจ ากดัการ
ท างานของ Squid เชน่ การอนุญาตหรือหา้มเคร่ืองบางเครื่องใหใ้ชง้าน
internet ได้
Squid จะปฎิเสธการเขา้ถึง internet ของทุก host โดยปริยายหลงัจาก
การติดตั้ง Squid เป็นครั้งแรก
ดงัน้ันเป็นหน้าท่ีของผูด้แูลระบบท่ีจะตอ้งเพิ่มเครือ่งใน network ใน ACL ให้
สามารถใชง้าน internet ผ่าน Squid
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 เสมอ
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
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
แบบฝึกหดั
ถา้เคย save การท า nat ใน iptables ไวเ้อาออกใหห้มด
ท าให ้client เก็บ log ของ facility : authpriv มาท่ีเครื่อง
server
ติดตั้ง squid ท่ีเครื่อง server อนุญาตให ้client สามารถใชง้าน web
ผ่าน squid ได้