Tag Archives: admin

Getting “A” from Qualy’s SSL

Qualys SSL Labs provides a SSL Server Test for awhile. You can rate your web site at https://www.ssllabs.com/ssltest

To get rating “A”, there are few straightforward tricks:

  1. Disable all versions of SSL protocol. Enable only TLS. e.g.,
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2
  2. Choose only strong ciphers, e.g., you’ll sacrifice some very old clients.
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
  3. Use HSTS, e.g.,
    add_header Strict-Transport-Security max-age=31536000;

Optionally,

ssl_dhparam /etc/ssl/private/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;

NGINX HTTP Basic Authentication with LDAP

First,  install libpam-ldap

# apt-get install libpam-ldap

Config ldap:// properly. This will add ldap backend to PAM.

Now, create a file /etc/pam.d/nginx

@include common-auth
@include common-account

This will add nginx service in PAM.

Then, config your nginx to enable HTTP basic authentication using auth_pam and PAM service name “nginx”

location /someplace {
  auth_pam "Restricted Area";
  auth_pam_service_name nginx;
}

Restart nginx. Done.

GRUB timeout options

There are many timeout configuration for grub2 that you can put in /etc/default/grub

GRUB_TIMEOUT
GRUB_HIDDEN_TIMEOUT
GRUB_RECORDFAIL_TIMEOUT

The last one may help to boot normally in case power loss.

Also try FSCKFIX in /etc/default/rcS :)

Zenoss 1.1 on Debian

ขั้นตอนอย่างง่ายๆ

สร้าง user สำหรับ zenoss

# adduser --system --shell /bin/bash --home /opt/zenoss --ingroup src --disabled-password zenoss

ถ้า adduser ไม่สร้าง directory และตั้ง permission ให้ก็ดำเนินการตามนี้

# mkdir /opt/zenoss
# chown zenoss /opt/zenoss

su เป็น zenoss แล้วก็สร้างไฟล์ ~/.bashrc ตามนี้

export ZENHOME=/opt/zenoss
export PYTHONPATH=$ZENHOME/lib/python
export PATH=$ZENHOME/bin:$PATH

เพิ่ม user zenoss ใน /etc/sudoers ตามนี้

Defaults    env_reset
Defaults    env_keep = "PYTHONPATH ZENHOME"
zenoss ALL=(ALL) NOPASSWD: /opt/zenoss/bin/python,/usr/bin/kill

ลงแพ็คเกจที่จำเป็นอื่นๆ

# aptitude install mysql-server-5.0 python-dev libmysqlclient-dev g++ make patch bzip2 autoconf swig

โหลด & untar & ติดตั้ง zenoss

$ tar xzf zenoss-1.1.2.tar.gz
$ cd zenoss-1.1.2
$./install.sh

รอ รอ ….

และแล้ว

เย้ .. จริงๆ แล้วจะติดตั้ง zenoss โดยใช้ไลบรารีต่างๆ ที่มีอยู่แล้วในเดเบียนก็ได้ แต่ขั้นตอนจะยุ่งยากกว่านี้โข .. อีกหน่อย zenoss คงจะออก .deb ให้ติดตั้งง่ายๆ ล่ะน่า

Zenoss on Debian

เพิ่งมีโอกาสได้ลง Zenoss บน Debian เพราะเครื่องที่ลง Cacti ไว้ดิสก์มันเจ๊งไปแล้ว .. อ่าน doc แล้วเหมือนจะยาก จริงๆ แล้วลงไม่ยากนะ เขียนแปะไว้ในห้องทดลองสักหน่อย

Zenoss 1.1 on Debian

ATA over Ethernet again

วันนี้ลอง ATA over Ethernet อีกรอบ เครื่องเซ็ตเดิม แต่อัปเกรดจาก Edgy Eft เป็น Feisty Fawn

# hdparm -tT /dev/etherd/e0.0 

/dev/etherd/e0.0:
 Timing cached reads:   502 MB in  2.00 seconds = 250.51 MB/sec
 Timing buffered disk reads:   24 MB in  3.23 seconds =   7.42 MB/sec

อะฮะ .. 7.42 MB/s … เร็วกว่า การทดสอบครั้งก่อน ประมาณเท่าตัว :)

apt-cacher

ใช้ apt-proxy มานาน เพิ่งจะเจอปัญหาหลังจากอัปเกรดเป็น edgy .. แก้ยังไงก็ไม่ดีขึ้น อาการก็แปลกๆ ที่โดน reset connection เกือบจะทุกครั้งที่มันพยายามจะโหลดข้อมูลจาก repositories .. ระยะนี้ก็เลยหาทางเลือกอื่นๆ ..

อันแรกคือ apt-move .. ลองใช้อยู่วันนึงก็พบว่ามันไม่ค่อยได้อย่างที่ต้องการ พยายามแยก dist แยก repo ก็ไม่สำเร็จ .. อันนี้ปัญหาใหญ่เลย เพราะที่ใช้อยู่มันมีทั้ง edgy, edgy-updates, edgy-security, wine, beryl, etc.. เลยโละทิ้งอีก

วันนี้ลอง apt-cacher .. เออ เข้าท่าแฮะ .. สวมรอย apt-proxy ได้เลย ว่าแล้วก็ aptitude purge apt-proxy ไปซะ .. คอนฟิก apt-cacher ก็ไม่ได้ยากอะไร แก้ไฟล์ /etc/apt-cacher/apt-cacher.conf ไม่กี่บรรทัด

daemon_port=9999

พอร์ต default เป็น 3142 .. ไม่จำเป็นต้องเปลี่ยนก็ได้ .. แต่ที่เปลี่ยนเป็น 9999 เพื่อจะสวมรอย apt-proxy ไปเลย ไม่ต้องตามแก้ sources.list เครื่อง clients เกือบๆ โหล .. แล้วก็ตั้ง mapping ตาม repo ที่จะcache ตามนี้

path_map = ubuntu th.archive.ubuntu.com/ubuntu ;
           ubuntu-security th.archive.ubuntu.com/security ;
           wine wine.budgetdedicated.com/apt ;
           beryl ubuntu.beryl-project.org/

สุดท้าย แก้ AUTOSTART ใน /etc/default/apt-cacher จะได้รัน apt-cacher อัตโนมัติตอนบูตเครื่่อง

AUTOSTART=1

ใครอยู่ใกล้ มข. อาจจะมาใช้ cache ด้วยกัน จะได้โหลด package ได้เร็วขึ้นโดยแก้หรือเพิ่มเติม /etc/apt/sources.list ตามนี้

# ubuntu
deb http://belldandy.kitty.in.th:9999/ubuntu/ edgy main restricted  ...
deb http://belldandy.kitty.in.th:9999/ubuntu/ edgy-updates main ...
deb http://belldandy.kitty.in.th:9999/ubuntu-security/ edgy-security main ...

# wine - from budgetdedicated.com
deb http://belldandy.kitty.in.th:9999/wine/ edgy main

# beryl - from beryl-project.org
deb http://belldandy.kitty.in.th:9999/beryl/ edgy main

/me ..

# aptitude --purge-unused purge apt-proxy apt-move

— edited — ลืมแก้ hostname (- -‘)

apt | aptitude : Ouch! Got SIGSEGV

จะลง kernel-package สักหน่อย

# aptitude install kernel-package
Ouch! Got SIGSEGV, dying..
Segmentation fault (core dumped)

เอ แปลกๆ … apt-get ดูซิ

# apt-get install kernel-package
Segmentation fault (core dumped)

เหวอๆๆ … เกิดไรขึ้นล่ะเนี่ยะ … ไม่ขำนะ .. T_T

# strace -o xxx aptitude
# less xxx
....
stat64("/var/cache/apt/pkgcache.bin", {st_mode=S_IFREG|0644, st_size=9454080, ...}) = 0
open("/var/cache/apt/pkgcache.bin", O_RDONLY) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=9454080, ...}) = 0
mmap2(NULL, 9454080, PROT_READ, MAP_SHARED, 4, 0) = 0xb7195000
stat64("/var/lib/apt/lists/belldandy:9999_ubuntu_dists_edgy_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=5491154, ...}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---

เหมือนจะเดี้ยงแถวๆ จังหวะอ่าน package จาก cache .. hmm.. cache น่าจะลบทิ้งได้ล่ะนะ ..

# cd /var/cache
# mv apt apt-saved
# mkdir -p apt/archives/partial
<code>
แล้วก็ลองรันอีกรอบ
<code>
# aptitude install kernel-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
...

ทำงานได้จริงๆ ด้วย ! .. เย้ .. :D :D … ใครเจอปัญหาประมาณนี้จะลองทำตามดูก็ได้ .. แต่ถ้าเดี้ยงจริงๆ ก็ตัวใครตัวมันนะ :P

BIND 9 on FreeBSD 4.x

BIND 9 ?

ที่จริงก็ไม่ได้อยากอัปเกรดเท่าไหร่ แต่ทางศูนย์คอมพิวเตอร์เขาขอมา เลยจัดให้ :P .. จะว่าไปแล้ว BIND 9 ก็น่าสนใจตรงที่มันใช้ rndc + chroot ได้ และมีความปลอดภัยสูงขึ้น .. ถ้าเป็น FreeBSD >= 5.3 เข้าใจว่ามี BIND 9 มาให้เลย ส่วน FreeBSD 4.x และ 5.x < 5.3 นี่ต้องติดตั้งจาก ports เอา

เริ่มติดตั้ง

# cd /usr/ports/dns/bind9
# make
# make install

เซ็ตอัป rndc

rndc ใช้ irq มาทำเป็น entropy pool ยิ่งอุปกรณ์มีข้อมูลเข้า/ออก random มากๆ ยิ่งดี เขาแนะนำให้ใช้ irq ของ keyboard, mouse, disk, หรือ network interface cards .. ผมไม่ค่อยแนะนำให้ใช้ keyboard/mouse เท่าไหร่ เพราะพวกเซิร์ฟเวอร์หลายๆ ตัวไม่ได้ต่อไว้ด้วยซ้ำ ข้อมูลอาจจะไม่ random อย่างที่ต้องการ .. เลือก disk หรือ network interface cards น่าจะดีกว่า

# grep -i irq /var/run/dmesg.boot

เพิ่ม irq เป็น entropy pool ของ rndc

# rndcontrol -s 12
# rndcontrol -s 14

ถ้าจะให้ใช้ได้ตั้งแต่ boot ก็แก้ /etc/rc.conf เพิ่ม

rand_irqs="12 14"

จากนั้นก็สร้าง config ของ rndc

cd /usr/local/etc
rndc-confgen > rndc.conf

แล้วก็สร้าง key

rndc-confgen -a

จะได้ไฟล์ rndc.key แล้วก็แก้ rndc.conf อีกนิดหน่อย เพื่อเอา key ใน rndc.key มาใส่

vi /usr/local/etc/rndc.conf

options {
     default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
};

server 127.0.0.1 {
    key "rndc-key";
}

ก๊อป key “rndc-key” {…} จาก /usr/local/etc/rndc.key มาใส่ใน /usr/local/etc/rndc.conf เป็นอันเสร็จเรื่องของ rndc

เซ็ตอัพ BIND 9

ถ้าใช้ BIND 8 มาก่อน เอา config และ zone files ของ BIND 8 มาแก้นิดๆ หน่อยๆ แล้วใช้กับ BIND 9 เลยก็ได้ ดังนั้น ก๊อปปี้ named.conf ของ BIND 8 มาไว้ที่ /usr/local/etc/named.conf แล้วก็แก้อีกนิด เพื่อเอา rndc มาใช้

include "/usr/local/etc/rndc.key";

controls {
    inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key" };
};

และใน options { … } เพิ่ม pid-file ” … ” กับ dump-file ” … ” เข้าไปด้วย

options {
    ...
    directory "/path/to/namedb"
    pid-file "/path/to/namedb/named.pid"
    dump-file "/var/tmp/named_dump.db"
    ...
};

เสร็จแล้ว อย่าลืมเช็ค zone {… } กับ zone file ให้ตรงกัน

แก้ไฟล์เสร็จก็ เปลี่ยน owner/groups ของไฟล์เป็น uid ที่จะรัน named .. ปกติจะใช้ user bind รัน named ก็

chown -R bind:bind /path/to/namedb
chmod 750 /path/to/namedb

เช็ค named.conf

named-checkconf /usr/local/etc/named.conf

ทดสอบ

/usr/local/sbin/named -c /usr/local/etc/named.conf -u bind -g

ถ้า named รันได้โดยไม่มี error/warning ก็เป็นอันเรียบร้อย … สุดท้ายก็แก้ /etc/rc.conf

vi /etc/rc.conf
named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-c /usr/local/etc/named.conf -u bind"

ทีนี้ตอน boot ก็จะรัน BIND 9 แทน BIND 8 .. เสร็จแล้ว :)