24
NETWORK SERVICE OPENSSH + NTP + SQUID 357362 Special Problems in Electronics Choopan Rattanapoka

NETWORK SERVICEOPENSSH + NTP + SQUID

Embed Size (px)

DESCRIPTION

ข้อมูลหามาจากบนอินเตอร์เน็ตค่ะ เก็บไว้แชร์ไว้อ่าน

Citation preview

Page 1: NETWORK SERVICEOPENSSH + NTP + SQUID

NETWORK SERVICE

OPENSSH + NTP + SQUID

357362 – Special Problems in Electronics

Choopan Rattanapoka

Page 2: NETWORK SERVICEOPENSSH + NTP + SQUID

Network Service

การท างานท่ีเกี่ยวขอ้งกบัระบบเครือข่ายเป็นจุดแข็งของ Linux

เน่ืองจาก Linux ไดถ้กูออกแบบมาเพ่ือรองรบัการท างานบนระบบเครือข่ายโดยเฉพาะ เช่น

การเขา้ถึงเครื่องแมข่า่ยผ่านระบบเครือข่ายดว้ยช่องทางท่ีปลอดภยั (SSH)

NTP

Proxy server, web caching server

Remote file sharing

DNS

DHCP

..etc..

Page 3: NETWORK SERVICEOPENSSH + NTP + SQUID

OpenSSH

SSH เป็น 1 ในวธีิท่ีผูด้แูลระบบจะใชใ้นการติดต่อกบัเคร่ืองแมข่า่ยเมื่อไม่

สามารถเขา้ถึงเครื่องแมข่า่ยไดโ้ดยตรง

SSH ไดเ้ขา้มาแทนท่ีการใชง้าน telnet เน่ืองจาก telnet ไมม่ีการ

เขา้รหสัขอ้มลูในการรบั-ส่ง ท าใหเ้ส่ียงต่อความปลอดภยั

OpenSSH configuration File

แฟ้มขอ้มลูในการปรบัแต่งบริการ ssh คือแฟ้มขอ้มลูชื่อ sshd_config

อยูท่ี่ต าแหน่ง /etc/ssh

รปูแบบของการปรบัแต่ง คือ directive_name value

หลงัจากแกไ้ขคา่ต่างๆแลว้ ตอ้งพิมพ ์ service sshd restart

Page 4: NETWORK SERVICEOPENSSH + NTP + SQUID

การเชื่อมต่อกบั OpenSSH Server

ค าสัง่ใน Linux เพื่อเชื่อมต่อกบั OpenSSH server คือ

ssh user@remote_machine [-p port_number]

ssh เป็นค าสัง่ท่ีใชเ้ชื่อมต่อกบั OpenSSH server

user ชื่อบญัชีท่ีมีอยูใ่นเครื่องท่ีตอ้งการเชื่อมต่อ

remote_machine ชื่อเครื่องปลายทาง

ตวัอยา่ง

ssh root@localhost

ssh [email protected]

ssh ect.cit.kmutnb.ac.th (บญัชีชื่อเดียวกนัทั้ง 2 เครื่อง)

Page 5: NETWORK SERVICEOPENSSH + NTP + SQUID

การ 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 .

Page 6: NETWORK SERVICEOPENSSH + NTP + SQUID

ทดลอง

สรา้งแฟ้มขอ้มลูเป็นรหสันักศึกษาขึ้ นมา 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 มายงัเครื่องนักศึกษา

Page 7: NETWORK SERVICEOPENSSH + NTP + SQUID

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

Page 8: NETWORK SERVICEOPENSSH + NTP + SQUID

OpenSSH Fingerprints

เมื่อมีการเชื่อมต่อครั้งแรกของเครื่องเราสูเ่ครื่องคอมพิวเตอรแ์มข่า่ยผ่าน

SSH

ตวั client จะถกูถามถึงการยอมรบัหรือปฎิเสธ fingerprint ของเครื่องแมข่า่ย เน่ืองจาก fingerprint น้ีไมเ่คยรูจ้กัมาก่อน

Fingerprint จริงๆแลว้ก็คือ public key ท่ีใชใ้นการติดต่อ

Fingerprint จะถกูเก็บใน directory .ssh ใน home ในแฟ้มขอ้มลูท่ีชื่อ known_hosts

Page 9: NETWORK SERVICEOPENSSH + NTP + SQUID

แฟ้มขอ้มลู ~/.ssh/known_hosts

เมื่อมีการเชื่อมต่อกนัดว้ย ssh แลว้ fingerprint ของเคร่ืองท่ีท าการ

เชื่อมต่อดว้ยจะถกูเก็บไวใ้นแฟ้มขอ้มลู known_hosts

จากน้ันครั้งต่อไปเมื่อมีการเชื่อมต่อกนัอีกจะไมม่ีการถามถึง fingerprint

อีกต่อไป

ยกเวน้กรณีเคร่ืองท่ีเราเคยติดต่อไป ไดล้งระบบปฎิบติัการใหม ่ท าให ้

fingerprint เปล่ียนไป ซ่ึงเมื่อเราไปเชื่อมต่อจะเกิด warning ขึ้ น

ดงัน้ันเราจึงตอ้งไปลบ fingerprint เก่าออกจากแฟ้มขอ้มลู

known_hosts ก่อนถึงจะเชือ่มต่อกนัได้

Page 10: NETWORK SERVICEOPENSSH + NTP + SQUID

NTP Server

เวลาบนเคร่ือง server เป็นส่ิงท่ีส าคญัมาก

เวลาท่ีเก็บ log เพื่อคน้หาผูก้ระท าผิด หรอื ผูบุ้กรุกระบบ

เวลาท่ีสัง่ให ้crontab ท างาน

โดยเฉพาะอยา่งยิง่เมื่อมีเคร่ืองแมข่า่ยหลายตวัและตอ้งการใชเ้วลาของเคร่ือง

แมข่า่ยทุกตวั มเีวลาท่ีตรงกนั หรือใกลก้นัมากท่ีสุด

ปัญหาเร่ืองเวลาสามารถแกไ้ขไดด้ว้ย Network Time Protocol (NTP)

NTP มีกลไลในการ synchronize เวลาในเคร่ืองเรากบัเคร่ืองแมข่า่ยเวลา

และมีการใช ้time scale คือ Coordinated Universal Time (UTC)

Page 11: NETWORK SERVICEOPENSSH + NTP + SQUID

โครงสรา้ง NTP

โครงสรา้งของ NTP จะแบ่งในลกัษณะล าดบัชั้นเรียกวา่ strata

Strata ท่ีอยูช่ั้นบนสุดคือแหล่งก าเนิดของเวลาท่ีใชใ้นการ synchronize

Page 12: NETWORK SERVICEOPENSSH + NTP + SQUID

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

Page 13: NETWORK SERVICEOPENSSH + NTP + SQUID

ติดตั้ง 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

Page 14: NETWORK SERVICEOPENSSH + NTP + SQUID

NTP: Symmetric Active/Passive Mode

ท าไดโ้ดยการเพิ่มขอ้ความขา้งล่างลงในแฟ้มขอ้มลู /etc/ntp.conf

บรรทดัล่างสุด

peer ip ของเครื่องท่ีจะแลกเปล่ียนเวลากนั

โดยทัว่ไปจะมีการปรบัแต่งต่อทา้ย Client/Server mode

Peer จะแลกเปล่ียนเวลากนัเมื่อไม่สามารถติดต่อกบั NTP server

เมื่อปรบัแต่งเสร็จเรียบรอ้ยแลว้จะตอ้ง

service ntpd restart

Page 15: NETWORK SERVICEOPENSSH + NTP + SQUID

NTP : Broadcast Mode

จะตอ้งไมใ่ชร้่วมกบั Active/Passive mode

เพิ่มบรรทดัใหก้บัตวัท่ีตอ้งการจะ broadcast เวลา

broadcast ip

disable auth

ตวัอยา่ง

broadcast 192.168.1.255

disable auth

ส าหรบัเคร่ืองท่ีตอ้งการจะรบัเวลาจากเคร่ืองท่ี broadcast ใหใ้ส่

broadcastclient

disable auth

Page 16: NETWORK SERVICEOPENSSH + NTP + SQUID

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

Page 17: NETWORK SERVICEOPENSSH + NTP + 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 ]

Page 18: NETWORK SERVICEOPENSSH + NTP + SQUID

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

Page 19: NETWORK SERVICEOPENSSH + NTP + SQUID

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ใหม่

Page 20: NETWORK SERVICEOPENSSH + NTP + SQUID

ACLs และ ACL-operators

Access Control List (ACL) เป็น directive ท่ีใชส้ าหรบัจ ากดัการ

ท างานของ Squid เชน่ การอนุญาตหรือหา้มเคร่ืองบางเครื่องใหใ้ชง้าน

internet ได้

Squid จะปฎิเสธการเขา้ถึง internet ของทุก host โดยปริยายหลงัจาก

การติดตั้ง Squid เป็นครั้งแรก

ดงัน้ันเป็นหน้าท่ีของผูด้แูลระบบท่ีจะตอ้งเพิ่มเครือ่งใน network ใน ACL ให้

สามารถใชง้าน internet ผ่าน Squid

Page 21: NETWORK SERVICEOPENSSH + NTP + 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 เสมอ

Page 22: NETWORK SERVICEOPENSSH + NTP + SQUID

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

Page 23: NETWORK SERVICEOPENSSH + NTP + 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

Page 24: NETWORK SERVICEOPENSSH + NTP + SQUID

แบบฝึกหดั

ถา้เคย save การท า nat ใน iptables ไวเ้อาออกใหห้มด

ท าให ้client เก็บ log ของ facility : authpriv มาท่ีเครื่อง

server

ติดตั้ง squid ท่ีเครื่อง server อนุญาตให ้client สามารถใชง้าน web

ผ่าน squid ได้