openssh + basic network security
DESCRIPTION
OpenSSH + Basic Network Security. 357362 – Special Problems in Electronics Asst. Prof. Dr. Choopan Rattanapoka. Network Service. การทำงานที่เกี่ยวข้องกับระบบเครือข่ายเป็นจุดแข็งของ Linux เนื่องจาก Linux ได้ถูกออกแบบมาเพื่อรองรับการทำงานบนระบบเครือข่ายโดยเฉพาะ เช่น - PowerPoint PPT PresentationTRANSCRIPT
OPENSSH + BASIC NETWORK SECURITY
357362 – Special Problems in Electronics Asst. Prof. Dr. 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 [email protected] ssh ect.cit.kmutnb.ac.th ( บญชชอเดยวกนทง 2 เครอง)
การ copy แฟมขอมลระหวางเครองแบบปลอดภย ในการโอนถายแฟมขอมลจากเครองหนงไปยงอกเครองหนง
สามารถทำาผานชองทางปลอดภยได โดยใชคำาสง scpscp [-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 กอนถงจะเชอมตอกนได
Introduction Network Security ตามทฤษฏแลวเครอง Server ทตดตง CentOS จะมความปลอดภยตอผบกรกทมาจากระบบเครอขาย ถาเครองนนไมไดตดตงบรการ นอกเหนอจากบรการทมมากบ
CentOS แตในความเปนจรง มหลายบรการทผดแลระบบจะตองมาตดตงเพมเตมเอง
ความปลอดภยทางระบบเครอขาย (Network Security) คอ การอนญาต (authorize) ใหผมสทธเขาถงบรการ และ
ปฎเสธ (deny) การใหบรการสำาหรบผทไมมสทธ ภยอนตรายของเครองคอมพวเตอรทตอกบระบบเครอขาย
(intranet, internet) คอ Cracker
Hacker VS Cracker คำาศพททเหนบอยครงเกยวของกบการเจาะระบบคอ
Hacker Cracker
2 คำานคนปกตจะใชกนผด ทำาใหคดวา Hacker กคอCracker
Hacker บคคลทมความสนใจกบระบบเปนพเศษ ตองการเรยนร
เกยวกบระบบ สวนใหญจะเปนพวก programmer Cracker
บคคลทเจาะเขาสระบบ เพอหากำาไร หรอทำาลายระบบ
Firewall เปนสงทสามารถปรบแตงเพอกำาจดการเขาใชบรการ
ตางๆ ในเครองแมขาย Firewall มหลายประเภท
Hardware-based Software-based
ในCentOS จะม software-based firewall มาใหใชงานเรยกวา netfilter
เครองมอหลกทใชปรบแตงการทำางานของ netfilter เรยกวา iptables
ทำาใหสวนใหญผใชจะเรยก firewall นวา iptables แทน netfilter
Closed Firewall VS Opened Firewall
Mostly closed firewall เปน firewall ทปกตจะปดกนการทำางานของทกบรการ ผดแลระบบจะตองเปดการใหบรการทละรายการ
Mostly opened firewal เปน firewall ทปกตจะไมมการปดกนการทำางานของทกบรการ ผดแลระบบจะตองปดการใหบรการทละรายการ
ปกตการใชงานของ firewall ผดแลระบบนยมใชแบบ Mostly closed เนองดวยบรการทตองการจะเปดใหบรการจะนอยกวาบรการทตองการจะปดกน
CentOS เปน software-based firewall ชนด mostly closed
Firewall GUI System Administrator Firewall
ตวอยาง : แฟมขอมล /etc/sysconfig/iptables
การปรบแตง firewall ผดแลระบบสามารถปรบแตง firewall ในระบบสงขน
สามารถทำาได 3 วธ พมพคำาสงปรบแตงใน shell ซง firewall จะปรบรการเปลยนแปลงโดยทนทแตจะการปรบแตงจะหายไปเมอม
การ reboot ใชบรการของ iptables เพอปรบแตงคา firewall และ
คาทปรบแตงจะถกบนทกลงในแฟมขอมล ทำาใหเมอมการreboot กยงคงคาเดมอย
แกไขแฟมขอมล iptables โดยตรง
Netfilter Netfilter จะทำางานในสวนของ Kernel เพอตรวจจบขอความของ
network ทเขา- ออก เครอง ซงแบงเปนจดตรวจสอบขอมล 5 จด INPUT ขอมลขาเขา OUTPUT ขอมลขาออก FORWARD การสงตอขอมล PREROUTING, POSTROUTING สำาหรบเปลยนขอมลของ packet
การตรวจสอบขอมลจะแบงออกเปน 3 ตารางคอ filter (INPUT, OUTPUT, FORWARD) nat (PREROUTING, POSTROUTING, OUTPUT) mangle (ทกจดตรวจสอบ) ทำา traffic classification, shaping
Chain (กฎ) แตละตารางจะประกอบดวย chain (รายการของกฎตางๆ)
Chain ใชในการอนญาต(allow) หรอทง(drop) ขอมลทง หรอจะสงขอมลตอไปยง chain อนๆ
Chain ในตารางจะถกใชงานตามลำาดบตงแต chain แรกถง chain สดทาย แตถาพบ Chain ทตรงกบ
ลกษณะของขอมลจะหยดการทำางาน chain ตอไป
ดสถานะปจจบนของ Firewall ใชคำาสง iptables –L -n
-L ด chain ( สามารถเขยนชอ chain ทตองการดโดยเฉพาะตอหลงได)
-n ขามการทำางานของ DNS เพอแสดงหมายเลข IP
ดรายละเอยดใหมากขน ใช option –v เพมในคำาสง iptables เพอดรายละเอยดทมากขน
ตวอยาง : iptables –L –n -v
การเขยนกฎใน Netfilter (1) สวนใหญการปรบแตง firewall พนฐานจะเปนการกำาหนด
source IP (-s) และ destination IP (-d)
ตวอยาง -s 192.168.3.20 เปนการกำาหนดขอมลทมาจาก IP เดยว -s 192.168.3.0/24 เปนการกำาหนดขอมลทมาจาก subnet -s ! 10.0.0.0/8 เปนการกำาหนดทก IP ยกเวน subnet
10.0.0.0 แตในบางครงการกำาหนดกฎดวยหมายเลข IP ยงไมพอตอความ
ตองการ เราสามารถจะกำาหนด protocol ทตองการจะกรองไดดวย
การเขยนกฎใน Netfilter (2) Protocol สวนใหญทใชในระบบเครอขายคอ TCP
และ UDP การสรางกฎเพอกรอง protocol นนจะใชoption -p
การกรอง port ดวย Netfiler จะตองใชควบคกบmodule ซงจะใชชอเดยวกบ protocol ดวยoption –m
เมอมการโหลด module แลวเราสามารถกรอง ละเอยดถงหมายเลข port ไดดวย --sport (port
ผสง) --dport (port ผรบ) หมายเลข port ทเปน parameter จะเปนเลขตวเดยว
เชน 22 หรอ เปนชวง portตำา:port สง ได หรอใช ! แทนหมายเลข port ทไมตองการ
การเขยนกฎใน Netfilter (3) ถาตองการจบถง สถานะ การทำางานของ protocol
จะตองโหลด module state ( ดวย option -m state)
จากนนจะสามารถกรอง สถานะไดดวย option --state NEW เมอมการ request ขอการเชอมตอ ESTABLISHED สถาปนาการเชอมตอ RELATED กรณทการเชอมตอใหมเกยวของกบการเชอมตอทตออยแลว
ใชไดเฉพาะกบ TCP เทานน
ตวอยาง กฎ ของ netfilter ตวอยาง
-m state --state NEW –m tcp –p tcp --dport 80 -m state --state NEW –m tcp –p tcp --dport 5900:5999 -m udp –p udp --dport 514 -m udp –p udp --sport 123 --dport 123 -m tcp –p tcp ! 22
ความรพนฐาน TCP/Port 80 http TCP/Port 5900:5999 VNC UDP/Port 514 syslog UDP/Port 123 ntp TCP/Port 22 ssh
ขนตอนสดทายของการกำาหนดกฎ ขนตอนสดทายของการกำาหนดกฎกคอการเลอก
target (เปาหมาย) Target กคอจะให netfilter ทำาอยางไรกบ packet
ทตรงกบกฎทสรางไว ( กำาหนด target ดวย option –j) ACCEPT ยอมรบ packet น DROP ทง packet น ผสงจะไมไดรบการตอบรบใดๆ
แตจะ timeout หลด REJECT ปฎเสธการตอบรบ แตผสงจะไดรบคำาตอบทนท
การตงกฎจะม default target ซงเอาไวดกpacket ทไมตรงกบกฎใดๆเลยวาจะใหทำาอยางไร ดวย(option –P)
ทำาให iptables รบรถงกฎ ในการใสกฎจำาเปนตองกำาหนด Chain ทจะใสกฎ ยำาอกรอบ การอานกฎใน Chain จะอานจากกฎบนมาลาง เมอ
packet ตรงกบกฎไหน การทำางานจะหยดลงแลวจะทำาตาม target ของกฎนน
คำาสง iptables –A chain กฎ จะเปนการเพมกฎทขอสดทายของ chain แตสวนใหญจะใช iptables –I chain หมายเลขกฎ กฎ เพอใสกฎลง
ตำาแหนงหมายเลขกฎ (ถาไมระบหมายเลขกฎจะแทรกทขอแรก) iptables –R chain หมายเลขกฎ กฎ เปนการทบกฎทหมายเลขกฎนนๆ
iptables –D chain หมายเลขกฎ เปนการลบกฎทหมายเลขกฎนน
วธท 1 : ทดลอง iptables –I INPUT –s 192.168.3.20 –j
ACCEPT เปนการเพมกฎวาอนญาตให 192.168.3.20 สามารถใชบรการไดทกอยางในเครองแมขายน
iptables –L INPUT –n ตรวจสอบกฎของ firewall
iptables –D INPUT 1 เอากฎทเพมเขาไปออก
สรางกฎเพอกน (REJECT) การเชอมตอ ssh ของ IP ของ Client
แบบฝกหด จงเขยนคำาสงเพอ ACCEPT การเชอมตอมายง web server
iptables –I INPUT –m state --state NEW –m tcp –p tcp --dport 80 –j ACCEPT
จงเขยนคำาสงเพอ ACCEPT การเชอมตอผาน ssh (tcp/22) สำาหรบเครองทม IP : 192.168.5.10
จงเขยนคำาสงเพอ ACCEPT การทำางานของ DNS (udp/53) สำาหรบเครองทอยใน subnet
192.168.100.0/255.255.255.0 จงเขยนคำาสงเพอ DROP การทำางานทกอยางทมาจาก
IP:10.10.5.5 จงเขยนคำาสงเพอ REJECT การเขาใชงาน ssh ของเครองทอยใน
subnet 202.44.0.0/255.255.0.0
วธท 2: การบนทกกฎของ iptables เมอตงกฎตางๆ เรยบรอยแลว เพอจะมนใจวากฎเหลานนจะยงคงอยเมอมการ
reboot เครอง ใชใหคำาสง service iptables save
ปกตแลวบรการของ iptables จะถกเรยกขนมาตงแตตอน boot เครอง แตเราสามารถปรบแตการทำางานนไดทแฟมขอมล
/etc/sysconfig/iptables-config ในแฟมขอมล /etc/sysconfig/iptables-config จะมตวแปรทสำาคญคอ
IPTABLES_SAVE_ON_STOP “ถาตงเปน yes” เมอมการใชคำาสง service iptables stop, หรอ
shutdown,reboot เครอง กฎจะถกบนทกลงใน /etc/sysconfig/iptables ทนท IPTABLES_SAVE_ON_RESTART
“ถาตงเปน yes” เมอมการใชคำาสง service iptables restart กฎจะถกบนทกลงใน/etc/sysconfig/iptables ทนท
วธท 3 : การปรบแตงแฟมขอมล iptables โดยตรง
การใช iptables วธท 1 และ วธท 2 สงทหายไปกคอ comment เราไมสามารถแทรก comment เอาไวไดทำาใหเมอมกฎเยอะๆจะสบสน
เมอใชวธท 3 นควรตง IPTABLES_SAVE_ON_STOP และIPTABLES_SAVE_ON_RESTART “เปน no”
การแกไขแฟมขอมลโดยตรงคอเขาไปแกไขทแฟมขอมล /etc/sysconfig/iptables
การแทรก comment ในแฟมขอมล iptables ทำาไดโดยการใส‘#’ ไวทบรรทดทตองการจะ comment
เมอแกไขแฟมขอมลเรยบรอยแลวตองใชคำาสง service iptables start
แฟมขอมล/etc/sysconfig/iptables
ตวอยางการเขยน comment
การใชงาน CentOS เปน Router เครองแมขายทม network interface มากกวา 1 บางครงจะ
เรยกวา multihomed Network interface ปกตกคอ network card เชน
Ethernet card ใน Linux จะมองเปน devices ชอ eth0, eth1,...
การตงคาสำาหรบ multihomed มหลายแบบ วธทงายทสดคอ การกำาหนด IP ใหกบ interface แตละตวเปน IP ทอยคนละวง
กน การให CentOS เปน router ทำาได 2 วธ
เพมความสามารถในการ forward ขอมลจาก subnet หนงไปยงอกsubnet หนงได
ทำา IP masquerading (NAT) ให private IP ออกไปวงนอกดวย หมายเลข IP เดยว
เพอใหสามารถ forward packet ไดจะตองแกทแฟมขอมล/etc/sysctl.conf แก net.ipv4.ip_forward = 1
ใชคำาสง sysctl –p เพอใหอาน config ใหม
iptables บน multihomed ถามหลาย interface คำาสง iptables สามารถระบ
interface สำาหรบกฎไดดวย option -i ชอinterface สำาหรบ interface ทรบขอมลเขา -o ชอinterface สำาหรบ interface ทเปน output
iptables –I FORWARD –i eth0 –s 202.44.36.0/24 –o eth1 –d 192.168.10.0/24 –j ACCEPT
iptables –I FORWARD –i eth1 –s 192.168.10.0/24 –o eth0 –d 202.44.36.0/24 –j ACCEPT
IP masquerading การเพมกฎ 2 ขอใหกบ iptables เพอทำาการ forward ขอมลจะ
ทำางานไดเฉพาะ ถา IP ของทง 2 วงทเชอมตอเปน IP จรงเทานน ถาเรามเครองทเชอมตอกนดวย private IP แลวตองการจะใช
งาน Internet จำาเปนตองมการทำา IP masquerading ดวย IP masquerading สวนใหญจะถกเรยกวา NAT
แตตางกบ NAT ตรงท ทงเครอขายภายในใช IP เพยง IP เดยว ตางจากการ forward packet ธรรมดาคอมการเปลยนขอมลใน
packet การจะใชงาน IP masquerading จะตองใช target คอ
MASQUERADE ซงสามารถจะใชไดกบ POSTROUTING chain, ในตาราง nat เทานน
การตงคา IP masquerading การจะใช iptables ใสกฎในตาราง nat จะใช option –t ชอ
ตาราง (-t nat) เมอม target เปน masquerade จะตองม output
interface กำาหนดดวยเสมอ IP ทอยบน output interface จะเปน IP ททำา masquerade ตวอยาง
iptables -t nat -A POSTROUTING –o eth0 –j MASQUERADE
แบบฝกหด จาก VM ใน VirtualBox ทเคยใหสราง
ปรบแตง iptables ใหเครอง Client สามารถใชงานinternet ใหได
ตรวจสอบดวย การเขา web