Xây dựng hệ thống Firewall trên Linux

Tháng Mười Hai 27, 2006

Các bác thân mến! Dưới đây là cách cấu hình Firewall trên Linux mà Kiến vàng sưu tầm được. mọi các bác tham khảo và cho ý kiến:
Đầu tiên, các bác phải Install Linux theo cấu hình Server. Nếu bác nào
chưa Install theo cấu hình đó, có thể add thêm các tính năng Server cho
máy của mình. Sau đó, dùng tính năng Netfilter để cấu hình trên
Iptables như sau :
Giả sử Lan là 10.0.0.0/8, firewall có eth1 nối với Lan, eth0 nối với Internet.
1.Chống Syn Flooding:
Iptables –A FORWARD –p tcp –syn –m limit –limit 1/s –j ACCEPT
2.Chống Scan Port:
Iptables –A FORWARD –p tcp –tcp-flags SYN,ACK,FIN,RST RST –m limit –limit 1/s –j ACCEPT
3.Chống Ping of Death:
Iptables –A FORWARD –p icmp –icmp-type echo-request –m limit –limit 1/s –j ACCEPT
4.Cho các packet đã thiết lập kết nối tiếp tục đi qua firewall:
Iptables –A FORWARD –m state –state ESTABLISHED, RELATED –j ACCEPT
5.Chống giả mạo địa chỉ nội bộ từ bên ngoài để xâm nhập:
Iptables –t nat –A PREROUTING –I eth0 –s 10.0.0.0/8 –j DROP
6. Chống đổi địa chỉ từ trong LAN ra bên ngoài (SNAT):
Iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to 203.162.0.10
7.Chuyển đổi địa chỉ của web server từ bên ngoài vào trong mạng nội bộ (DNAT):
Iptables –t nat –A PREROUTING –d 203.162.0.9 –p tcp –dport 80 –j DNAT –to 10.0.0.10
8.Thiết lập Transparent proxy bằng cách chuyển hướng port 80 đến server squid proxy 10.0.0.9:
Iptables –t nat –A PREROUTING –p tcp –dport 80 –j DNAT –to 10.0.0.9:3128
9.Chỉ cho máy tính trong mạng nội bộ có địa chỉ card mạng 02-00-4C-4F-4F-50 đi ra:
Iptables –A FORWARD –m state –state NEW –m mac –mac-source 02:00:4C:4F:4F –j ACCEPT
10.Thực hiện chia tải trên hai hướng Inbound và outbound (load balancing):
Iptables –t nat –A POSTROUTING –o eth0 –m nth –counter 7 –every 3 –packet 0 -j SNAT –to-source10.0.0.5
Iptables –t nat –A POSTROUTING –o eth0 –m nth –counter 7 –every 3 –packet 1 -j SNAT –to-source10.0.0.6
Iptables –t nat –A POSTROUTING –o eth0 –m nth –counter 7 –every 3 –packet 2 -j SNAT –to-source10.0.0.7
11.Chức năng ưu tiên thông lượng trong việc truy cập web:
Iptables –A PREROUTING –t mangle -p tcp –sport 80 –j TOS –set-tos Maximize-Thoughput
12.Ngăn chặn sâu Nimda hay CodeRed:
Iptables –I INPUT -j DROP –m string –p tcp –s 0.0.0.0/0 –string “c+dir�?
Iptables –I INPUT -j DROP –m string –p tcp –s 0.0.0.0/0 –string “cmd.exe�?
Iptables –I INPUT -j DROP –m string –p tcp –s 0.0.0.0/0 –string “default.ida�?


Một số cách chạy dịch vụ tự động

Tháng Mười Hai 27, 2006

Các
server luôn có nhu cầu khởi động các dịch vụ mình đảm nhiệm lúc boot
máy, do đó khi cài một dịch vụ mới lên, bạn phải biết cách làm cho nó
tự động chạy. Sau đây là một số cách mà Abel đã làm.

1. Trên các hệ điều hành Debian like (Ubuntu, SuSE…): Dùng công cụ update-rc.d
Ví dụ sau khi cài xong bind (gói DNS Server), Abel muốn cho trình named (file exe của bind) phải tự động chạy khi máy khởi động. Vị trí của file named là: /usr/bin/named.

1.1 Đầu tiên Abel viết một đoạn shell script nho nhỏ với ba nhiệm vụ chính sau đây:
-Kiểm tra xem file /usr/bin/named có thể thực thi được hay không
-Kiểm tra file cấu hình /etc/named có tồn tại hay không
-Nếu hai điều kiện trên thỏa thì xuất ra dòng “Starting named” và chạy file /usr/bin/named

Cụ thể nó thế này:

Code:
#!/bin/sh#file khoi dong named luc boot may

if test −x /usr/bin/named −a −f /etc/named.confthenecho "Starting named"/usr/bin/namedFi

(Với những dịch vụ khác cách viết file script là hoàn toàn tương tự)
1.2 Lưu nó lại với cái tên gì đó, ví dụ bootnamed, rồi nhét nó vô thư mục /etc/init.d
1.3 “Biến” nó thành file exe: chmod 755 /etc/init.d/bootnamed
1.4 Dùng lệnh

Code:
update-rc.d bootnamed defaults

Để cập nhật bootnamed vào các thư mục rc.d, các thư mục mà khi
boot hệ thống sẽ vào kiểm tra để lôi dịch vụ ra chạy. Tham số defaults
cho biết bootnamed sẽ được boot tự động ở init-mode default của hệ
thống (ví dụ trong file inittab bạn để init default là 3 thì cứ vào 3
là nó chạy named!)
1.5 Reboot lại máy để kiểm tra

2. Trên các hệ điều hành Redhat like (Redhat, CentOS, Fedora…): Dùng công cụ chkconfig
Đây là một công cụ quản lí service at boottime rất mạnh của Redhat. Ví
dụ để xem các service nào được auto run ở level 3, ta dùng lệnh:

Code:
[root@centos init.d]# chkconfig --list | grep  3:on atd             0:off   1:off   2:off   3:on    4:on    5:on    6:offsyslog          0:off   1:off   2:on    3:on    4:on    5:on    6:offsendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:offautofs          0:off   1:off   2:off   3:on    4:on    5:on    6:offnetwork         0:off   1:off   2:on    3:on    4:on    5:on    6:off...

Để enable một service ở level được định trước:

Code:
[root@centos init.d]# chkconfig  wine on [root@centos init.d]# chkconfig --list wine        wine            0:off   1:off   2:on    3:on    4:off   5:off   6:off

Disable nó ở tất cả các level:

Code:
root@centos init.d]# chkconfig wine off[root@centos init.d]# chkconfig --list winewine            0:off   1:off   2:off   3:off   4:off   5:off   6:off

Đặc điểm của chkconfig là ta không cần tạo script như với
update-rc.d, mà chkconfig sẽ đọc một số dòng đầu của file thực thi của
dịch vụ (hay còn gọi là file rc) để xác định file thực thi đó sẽ chạy ở
các level nào và độ ưu tiên như thế nào. Ví dụ với dịch vụ sshd ta xem
thử file thực thi nó có cái gì

Code:
[root@centos init.d]# head -8 sshd #!/bin/bash## Init file for OpenSSH server daemon## chkconfig: 2345 55 25# description: OpenSSH server daemon#

Ý nghĩa các tham số:

Code:
# chkconfig: 2345 55 25                       |     |   |                       |     |   độ ưu tiên của kill scripts                       |     |                       |     độ ưu tiên của start scripts                       |                       các level mà service được start (2, 3, 4, 5)

Giờ ta sẽ đưa named vào các dịch vụ được boot khi khởi động máy
2.1 Kiểm tra named đã được autorun ở level nào chưa:

Code:
[root@centos init.d]# chkconfig --list namednamed            0:off   1:off   2:off   3:off   4:off   5:off   6:off

2.2 Sửa file rc của named lại để cho nó auto run ở level
3. Ban đầu do không autorun ở level nào hết nên 8 dòng đầu của named rc
file có dạng:

Code:
[root@cent init.d]# head -8 named#!/bin/bash## named           This shell script takes care of starting and stopping#                 named (BIND DNS server).## chkconfig: _ 55 45# description: named (BIND) is a Domain Name Server (DNS) \# that is used to resolve host names to IP addresses.

Ta sửa dòng chkconfig thành:

Code:
#chkconfig: 3 55 45

2.3 Add named vào trình quản lí chkconfig

Code:
[root@centos init.d]# chkconfig named --add

2.4 Enable nó lên

Code:
[root@centos init.d]# chkconfig named on

2.5 Kiểm tra lại

Code:
[root@centos rc2.d]# chkconfig named --listsshd            0:off   1:off   2:off    3:on    4:off    5:off    6:off

Thế là xong!

Kết: Hãy chắc chắn là bạn hoàn toàn kiểm soát được những dịch vụ nào đang autorun trên hệ thống của bạn.


Tăng tốc cho quá trình khởi động linux

Tháng Mười Hai 27, 2006

Bài viết nhỏ này sẽ giúp các bạn tăng tốc quá trình khởi động cho Fedora Core 5 và các distro #.
Trước khi bắt đầu chúng ta hãy tìm hiểu sơ qua các process sẽ chạy trong quá trình khởi động.

Cơ bản

init process khởi động pc của chúng ta, nạp các dịch vụ (services ) và xác định thứ tự nạp các dịch vụ này.

chkconfig thiết lập giá trị boolean (true/false) enable/disable các service trong quá trình khởi động..

service điểu khiển các dịch vụ đang chạy như starting, stopping hoặc restarting .

Có 7 runlevels để init, mỗi level có cách cấu hình và nhiệm vụ khác nhau:
0 = shutdown
1 = single-user
2 = multi-user
3 = multi-user
4 = Xen kernel
5 = Runlevel 3 + X Windows (đầy đủ các chức năng ở chế độ đồ họa – graphic mode)
6 = reboot

Chú ý, init, chkconfig and service là các lệnh được thực thi bởi root
Open teminal, dùng lệnh su để login với tài khoảng root., sau đó gõ lệnh:

Code:

init [0-6]ví dụ:init 1

——————-

Code:

chkconfig [service name] [ on | off ]ví dụchkconfig sendmail offchkconfig sendmail on

——————-

Code:

service [service name] [ start | stop | restart ]examplesservice network restartservice wpa_supplicant startservice sendmail stop

Tiếp đến, mở file /etc/inittab:

Code:

# Default runlevel. The runlevels used by RHS are:... - snip - ...#id:3:initdefault:

Thay đổi giá trị id từ 3-5 để thay đổi runlevel mặc định của hệ thống..

Thay đổi các dịch vụ mặc định

Nếu các bạn sử dụng ở chế độ đồ họa, cài đặt công cụ cấu hình các dịch vụ để cấu hình được dễ dàng

Code:

su -yum install system-config-services

hoặc bạn có thể cài đặt từ đĩa FC5
Click [System menu] > Administration > Server Settings > Services hoặc gõ lệnh vào ô Run:

Code:

system-config-services

Nếu sử dụng terminal thì các bạn dùng lệnh chkconfig

Code:

chkconfig [serivice name] [on|off]

Hãy nghịch thỏa mái đến khi nào các bạn cảm thấy boot nhanh hơn thì thôi, không sợ gì cả, lở bị hư thì cùng lắm là cài lại.
Sau đây là các dịch vụ thường gặp, các bạn tham khảo thêm nhé.
Priorities:
L = Only laptops need this.
D = Only Desktops need this.
A = All need this! Keep it enabled.
HR = Highly Recommended! But not absolutely needed. Better to keep enabled.
R = Not needed at all but nice to have.
NN = Not needed, disable at will. Keep enabled if you’re using things itn it’s description, though.

[ service ] : [ Description ] : [ Priority ]

NetworkManager : Best network selection : L
acpid : Power managment : HR
anacron : More Cron management : HR
apmd : For laptop’s battery monitoring : L
atd : Similar to Cron’s functions : NN
autofs : Auto-detect/mount filesystems : HR
ahavi-daemon : Zeroconf stuff : NN
avavi-dnsconfd : DNS Zeroconf stuff : NN
bluetooth : needed for bluetooth wireless devices to work : NN
btseed : BitTorrent Seeding : NN
bttrack : BitTorrent tracking : NN
cpuspeed : dynamic CPU speed daemon : L
crond : Automated tasks : A
cups : Central Unix Printing System : HR
cups-config-daemon: Central Unix Printing System through D-Bus : HR
dc_client : SSL session cache client proxy : NN
dc_server : SSL session server : NN
dhcdbd : D-BUS control of ISC DHCP client : NN
diskdump : Create Dump files if system crashes : NN
firstboot : First-boot configuration utility : NN after your first boot :p
gpm : Mouse support in terminals (runlevel 3) : NN
haldaemon : Hardware Abstraction Layer : A
hplip : HP Printer service : A for all that use HP Printers
httpd : Apache’s Web server : NN
iptables : Firewall. Plain & Simple. : A
isdn : Integrated Services Digital Network : NN
kudzu : hardware probe at startup, only if you’re changing hardware : NN
lirc : Infrared controls : NN
lisa : Similar to “Network Neighbourhood” : R
lm_sensors : System sensor monitoring : A that have CPU / fan sensors
mdnsresponder : Howl network : NN
messagebus : The system-messenger dbus : A
mysqld : MySQL’s database server : NN
named : BIND DNS server : NN
netdump : netconsole & netcrashdump utility : NN
netfs : Network filesystems : HR
netplugd : Dynamic network managment : NN
network : Network connectivity & services : A
nifd : Network interface monitor daemon : NN
nscd : Name service caching daemon : NN
ntpd: Network Time Protol : NN
nfs + nfslock : NFS servers : NN
portmap : RPC connections, like NFS / NIS : NN
pcmcia : Laptop PCMCIA : L
redahead & readahead_early : Caches boot services & therefore decreases boot time : A
rpcgssd : NFS v4 connection helper : NN
rpcidmapd : NFS v4 connection helper : NN
rpcsvcgssd : NFS v4 connection helper : NN
saslauthd : plaintext auth in cyrus-sasl : NN
sendmail : Mail server, although there are better ones out there I’d
disable this one and install something like squirrelmail. Either way,
it’s enabled by default and can be disabled. : NN
smb : The Samba or SMB server : NN
snmpd : Simple Network Management Protocol : NN
snmptrapd : Simple Network Management Protocol : NN
sshd: remote SSH server : NN
syslog : System & Kernel logger. VITAL!: A
wpa_supplicant : Wireless auth helper : A who use wireless
xfs : X font server. Vital to graphic functioning!: A
xinetd : the replacement for inted, xinetd is a internet superdaemon. HR

ati-fglrx / nvidia-glx : Livna graphics drivers services : HR

Nếu định nghĩa quá trình khởi động Linux là thời điểm từ khi power-on
hệ thống đến khi các dịch vụ đã sẵn sàng cho người sử dụng thì các hệ
thống khác nhau sẽ có yêu cầu về thời gian khởi động khác nhau. Ví dụ
như trên một server hay máy trạm, thời gian khởi động khoảng vài phút
là chấp nhận được. Tuy nhiên, trên thiết bị nhỏ như điện thoại di động,
PDA, khoảng thời gian tương tự là không thể chấp nhận.
Tùy nhu cầu và mức độ ảnh hưởng của thời gian khởi động, chúng ta cần
có những cách tiếp cận toàn diện hơn. Xét một cách tổng quát, quá trình
khởi động của một hệ thống dựa trên Linux có thể được chia làm 3 giai
đoạn :
+ Bootloader :
Nhiệm vụ : thực hiện Power On-Self Test (POST), hiển thị màn hình tương
tác với user (như màn hình chọn HĐH của GRUB), tải Linux kernel vào bộ
nhớ (RAM) và bắt đầu quá trình khởi động kernel.
Thao tác tốn nhiều thời gian : POST, định vị kernel, chép kernel vào bộ nhớ, giải nén kernel.
+ Khởi động kernel :
Nhiệm vụ : công việc của kernel trong quá trình này là khởi tạo
hardware (đưa các thiết bị này vào trạng thái hoạt động), thiết lập
& cấu hình các subsystem và driver, mount root filesystem và cuối
cùng là chuyển điều khiển cho quá trình khởi động user space. Đứng từ
phía kernel, quá trình khởi động của kernel là hoàn tất khi kernel fork
process Init (Process ID = 1), đồng nghĩa với việc hệ thống đã vào user
space. Kể từ lúc này, công việc khởi tạo hệ thống do Init đảm nhiệm.
Thao tác tốn nhiều thời gian : Khởi tạo các driver, mount filesystem
+ Khởi động user-space :
Nhiệm vụ : Khởi động các dịch vụ cho hệ thống.
Thao tác tốn nhiều thời gian : các service được khởi động lần lượt và
có thường có sự phụ thuộc giữa chúng, load các kernel module
Chúng ta có thể giảm đáng kể thời gian khởi động bằng cách tác động đến cả 3 giai đoạn trên:
+ Bootloader :
- Quá trình POST có thể được thực hiện trong quá trình “cold boot”, còn
trong giai đoạn “warm boot” thì thao tác này có thể được bỏ qua vì
không cần thiết.
- Định vị, giải nén vào tải kernel vào bộ nhớ : phụ thuộc vào kích
thước kernel, thao tác này có thể chiếm khá nhiều thời gian. Kernel 2.6
có kích thước lớn hơn 30-40% so với kernel 2.4, thời gian để giải nén
kernel thường từ 0.5-2s (*). Kernel có thể được lưu trữ dưới dạng không
nén nhưng sẽ tốn nhiều không gian nhớ hơn (đối với các thiết bị nhỏ).
Ngoài ra, kỹ thuật XIP (eXecute In Place) cho phép thực thi kernel ngay
từ trong bộ nhớ flash của thiết bị mà không cần copy vào RAM, nhưng lại
có quá nhiều khuyết điểm như tốc độ, phức tạp (phải thay đổi một số
thành phần của kernel).
+ Kernel
- Disable kernel print : đây là một khoảng delay đáng kể vì kernel phải
thực hiện nhiều thao tác trên I/O – vốn là những thiết bị chậm, nhất là
đối với serial console. Để tránh điều này, thông số “quiet” cần được
đưa vào cho kernel. Các thông báo của kernel trong quá trình khởi động
có thể được xem sau đó bằng lệnh dmesg.
- Giảm thời gian khởi tạo của các driver : Các driver sẽ có thời gian
khởi tạo rất khác nhau. Điều này là do đặc điểm khác nhau của các thiết
bị. Ngoài ra, việc probe các thiết bị hardware trên một số bus cụ thể
như PCI cũng làm tăng thời gian khởi tạo. Trong trường hợp này, giải
pháp hiệu quả nhất là thiết lập tĩnh các thông số của thiết bị trong
lúc biên dịch kernel.
- Sử dụng hợp lý root filesystem : Việc mount một filesystem thông qua
NFS (Network FileSystem) sẽ tạo thời gian delay đáng kể, nhưng bù lại
hệ thống không cần filesystem của riêng nó. Các filesystem dạng
read-only như CRAMFS và ROMFS có thời gian khởi tạo rất ngắn so với
EXT3 hay JFFS2 (Journaling Flash File System Version 2).
+ User-Space
- Giảm thời gian load module : càng ít module, thời gian khởi động càng
ngắn. Việc cấu hình kernel hợp lý để bỏ đi những module không cần thiết
thường là công việc đầu tiên mỗi khi nghĩ đến việc giảm thời gian khởi
động kernel. Xem thêm về cách cấu hình, biên dịch và cài đặt kernel.
- Chạy các dịch vụ đồng thời : các đoạn script rcX.d (X = runlevel)
được sử dụng để chạy các dịch vụ hệ thống một cách tuần tự. Thời gian
khởi động sẽ giảm đáng kể nếu các dịch vụ này được khởi động song song.
Tuy nhiên khi đó cần quan tâm đặc biệt đến mối quan hệ phụ thuộc giữa
các service.
- Tắt những dịch vụ không cần thiết
Kết luận : tùy nhu cầu và khả năng, chúng ta có thể làm thay đổi đáng
kể thời gian khởi động của một hệ thống sử dụng Linux. Trên một số hệ
thống, khoảng thời gian tiết kiệm có thể tính bằng phút!!
(*) : các giá trị chỉ mang tính tham khảo, vì còn phụ thuộc rất nhiều yếu tố khác.
THAM KHAO :
+ Comparing Linux 2.4 and Linux 2.6 Kernels – http://www.denx.de/wiki/Know/Linux24vs26
+ Inside the Linux boot process – http://www.ibm.com/developerworks/li…y/l-linuxboot/
+ William Gatliff, The Linux Kernel Boot Process
+ Book :
- Matthias Kalle Dalheimer, Matt Welsh – Running Linux, 5th Edition
- P. Raghavan, Amol Lad, Sriram Neelakandan – Embedded Linux System Design and Development
- Karim Yaghmour – Building Embedded Linux System

powered by performancing firefox


Những đại gia trong làng Mã nguồn mở thế giới

Tháng Mười Hai 27, 2006


1. Mozilla :
http://www.mozilla.org
- Mục tiêu : Chuyên về các ý tưởng sáng tạo trên Internet
- Các sản phẩm tiêu biểu
o Firefox : Trình duyệt web
o Thunderbird : Trình xem email tương tự Outlook
o Bugzilla : Quản lý việc phát triển phần mềm

2. Apache : http://www.apache.org
- Mục tiêu : Chuyên các ứng dụng phía server-side
- Các sản phẩm tiêu biểu
o HTTP Server : máy chủ Apache
o Jakarta : Tập hợp các dự án viết bằng Java
o Lucene : Search engine
o Tomcat : Xử lí các trang JSP/Servlet

3. Sourceforge.net :
http://sourceforge.net
- Mục tiêu : Trang web cung cấp các dịch vụ mã nguồn mở lớn nhất thế giới
- Các sản phẩm tiêu biểu
o Số dự án: 123. 659
o http://sourceforge.net/awards/cca/

4. IBM :
http://www-128.ibm.com/developerworks/
- Mục tiêu : Trở thành công ty dẫn đầu trong việc cung cấp các dịch vụ nguồn mở
- Các sản phẩm tiêu biểu
o Eclipse : Môi trường phát triển cho mọi loại ngôn ngữ lập trình
o DB2 : Cơ sở dữ liệu

5. SUN :
http://www.sun.com/software/opensource/
- Mục tiêu : Các ứng dụng cross-platform trên nhiều hệ máy khác nhau
- Các sản phẩm tiêu biểu
o Solaris : Hệ điều hành
o NetBeans : môi trường phát triển
o OpenOffice : bộ ứng dụng văn phòng

6. Cộng đồng mã nguồn mở

- PHP : http://www.php.net/
- MySQL : http://www.mysql.com/
- PostgreSQL : http://www.postgresql.org/
……………………………………..

7. Xu hướng các công ty

a. Công ty cung cấp sản phẩm mã nguồn mở
Khởi tạo từ một sản phẩm mã nguồn mở, khi đã có nhiều khách hang sẽ ra
mắt nhiều phiên bản. Tất nhiên phiên bản OSS là cấp thấp nhất, nếu
người dùng cần các chức năng mạnh hơn sẽ phải mua các phiên bản Pro,
Enterprise
VD: IBM, Sun… và rất nhiều công ty nhỏ khác

b. Công ty kiếm tiền bằng cách cung cấp các dịch vụ mã nguồn mở
Không có một sản phẩm nào chủ lực. Doanh thu chủ yếu đến từ việc kinh
doanh từ các sản phẩm mã nguồn mở có sẵn, cung cấp các dịch vụ bảo trì,
hỗ trợ…
VD: Các công ty thiết kế web, các ứng dụng CSDL như : cổng thong tin, ERP…

c. Công ty sử dụng mã nguồn mở
Sử dụng, kết hợp các công vụ mã nguồn mở để tạo ra được các dự án hữu
ích khác cho người sử dụng. Tuy nhiên các dự án này lại là dự án đóng.
VD: Google, Microsoft cũng từng dung Apache trong dự án IIS của mình…

powered by performancing firefox


Dò tìm dấu vết chỉnh sửa được thực hiện trên hệ thống Linux

Tháng Mười Hai 27, 2006

Hoạt động xâm phạm có thể đến từ cả hai phía: người dùng đã biết (nội bộ) và
người dùng không xác định (từ bên ngoài). Kinh nghiệm cá nhân của tôi
chỉ ra rằng những người không hạnh phúc hay không bằng lòng với cuộc
sống thường gây nguy hiểm cho hệ thống của bạn, nhất là khi họ có lớp
vỏ bọc truy cập hợp pháp.
Một số người khá thông minh, loại bỏ file history (như: ~/.bash_history) hòng tránh bị phát hiện. Nhưng bạn vẫn hoàn toàn có thể giám sát tất cả lệnh thực thi của người dùng.

Lời khuyên ở đây là bạn nên kiểm soát hoạt động người dùng bằng cách sử
dụng chương trình xử lý accounting. Chương trình xử lý accounting cho
phép bạn xem xét mọi lệnh do người dùng thực thi với thời gian sử dụng
CPU và bộ nhớ. Nhờ chương trình này, người quản trị sẽ luôn tìm ra được
mọi lệnh thực thi ở bất kỳ thời gian nào.

Góixử lý accounting gồm một số tiện ích giám sát các hoạt động chương trình như ac, lastcomm, acctonsa.

• Câu lệnh “ac” thể hiện lượng thời gian người dùng đăng nhập hệ thống.
• Câu lệnh “lastcomm” cho biết thông tin của các lệnh thực thi trước đó.
• Câu lệnh “accton” bật tắt chương trình xử lý accounting.
• Câu lệnh “sa” tóm tắt thông tin về các lệnh được thực thi trước đó.

Cài đặt gói psact hoặc acct

Dùng lệnh up2date nếu bạn đang dùng RHEL:

# up2date psacct

Dùng lệnh yum nếu bạn đang dùng nhân Linux CentOS/Fedora:

# yum install psacct

Dùng lệnh apt-get nếu bạn đang dùng Linux Ubuntu / Debian:

$ sudo apt-get install acct OR # apt-get install acct

Khởi động dịch vụ psacct/acct

Mặc định, dịch vụ này khởi động trên Ubuntu / Debian Linux bằng cách
tạo ra file “/var/account/pacct”. Nhưng ở hệ điều hành Red Hat /Fedora
Core/Cent OS, bạn cần tự khởi động “psacct“. Gõ hai lệnh sau để tạo file “/var/account/pacct” và khởi động các dịch vụ:

# chkconfig psacct on
# /etc/init.d/psacct start

Nếu bạn đang dùng Suse Linux, tên của dịch vụ là “acct“. Gõ các lệnh sau:

# chkconfig acct on
# /etc/init.d/acct start

Bây giờ chúng ta hãy xem cách khai thác các tiện ích này để giám sát lệnh và thời gian người dùng.

Hiển thị số liệu thời gian kết nối của người dùng

Câu lệnh “ac” đưa ra số liệu thời gian kết nối theo giờ dựa trên các lệnh login/logout. Số lượng tổng cộng cũng được đưa ra. Nếu bạn gõ lệnh “ac” không có bất kỳ tham số nào, nó sẽ đưa ra lượng thời gian kết nối tổng:

$ ac

Xuất ra:

total 95.08

Hiển thị lượng tổng cộng theo từng ngày tốt hơn là chỉ có một kết quả tổng lớn vào thời điểm cuối cùng:

$ ac -d

Xuất ra:

Nov 1 total 8.65
Nov 2 total 5.70
Nov 3 total 13.43
Nov 4 total 6.24
Nov 5 total 10.70
Nov 6 total 6.70
Nov 7 total 10.30
…..
..

Nov 12 total 3.42
Nov 13 total 4.55
Today total 0.52

Hiển thị thời gian tổng cộng của từng người dùng để thêm vào giá trị “mọi thứ trong một” thông thường:

$ ac -p

Xuất ra:

vivek 87.49
root 7.63
total 95.11

Tìm ra thông tin các lệnh người dùng thực thi trước đó

Sử dụng câu lệnh lastcomm để đưa ra thông tin các lệnh người dùng thực thi trước đó. Bạn có thể tìm kiếm lệnh bằng cách sử dụng username (tên người dùng), tty name, hoặc bằng tên của chính câu lệnh.

Ví dụ hiển thị lệnh do người dùng “vivek” sử dụng:

$ lastcomm vivek

Xuất ra:

userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58
userhelper S vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
gcc vivek pts/0 0.00 secs Mon Nov 13 23:45
which vivek pts/0 0.00 secs Mon Nov 13 23:44
bash F vivek pts/0 0.00 secs Mon Nov 13 23:44
ls vivek pts/0 0.00 secs Mon Nov 13 23:43
rm vivek pts/0 0.00 secs Mon Nov 13 23:43
vi vivek pts/0 0.00 secs Mon Nov 13 23:43
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
cat vivek pts/0 0.00 secs Mon Nov 13 23:42
netstat vivek pts/0 0.07 secs Mon Nov 13 23:42
su S vivek pts/0 0.00 secs Mon Nov 13 23:38

Thông tin được đưa ra theo từng dòng. Ví dụ với dòng đầu tiên:

userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58

Trong đó:

- userhelper: là tên lệnh chương trình

- SX: là các cờ, ghi lại bởi kiểu định tuyến tài khoản hệ thống. Ý nghĩa của các cờ gồm:

  • S – câu lệnh thực thi bởi siêu người dùng.
  • F – câu lệnh thực thi sau khi rẽ nhánh nhưng sau đó không làm gì nữa.
  • D – câu lệnh kết thúc bằng một file lõi chung.
  • X – câu lệnh được kết thúc bằng dấu hiệu SIGTERM.

- vivek: tên người dùng chạy chương trình này.

- prts/0: tên mở rộng.

- 0.00 secx: thời gian thực thi chương trình.

Tìm kiếm các file log tính toán bằng tên lệnh:

$ lastcomm rm
$ lastcomm passwd

Xuất ra:

rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:38
rm S root pts/0 0.00 secs Tue Nov 14 00:38
rm S root pts/0 0.00 secs Tue Nov 14 00:36
rm S root pts/0 0.00 secs Tue Nov 14 00:36
rm S root pts/0 0.00 secs Tue Nov 14 00:35
rm S root pts/0 0.00 secs Tue Nov 14 00:35
rm vivek pts/0 0.00 secs Tue Nov 14 00:30
rm vivek pts/1 0.00 secs Tue Nov 14 00:30
rm vivek pts/1 0.00 secs Tue Nov 14 00:29
rm vivek pts/1 0.00 secs Tue Nov 14 00:29

Tìm kiếm các file log tính toán bằng tên mở rộng pts/1

$ lastcomm pts/1

Tóm tắt thông tin tính toán

Dùng lệnh sa
để đưa ra thông tin tóm tắt về các lệnh được thực thi trước đó. Hơn nữa
các thông tin này còn ép dữ liệu để đưa vào một file tóm tắt có tên “savacct“,
gồm thời gian lệnh được gọi và tài nguyên hệ thống được dùng. Thông tin
cũng có thể được tóm tắt theo từng người dùng cơ sở. “sa” sẽ ghi thông tin vào một file có tên “usracct“.

# sa

Xuất ra:

579 222.81re 0.16cp 7220k
4 0.36re 0.12cp 31156k up2date
8 0.02re 0.02cp 16976k rpmq
8 0.01re 0.01cp 2148k netstat
11 0.04re 0.00cp 8463k grep
18 100.71re 0.00cp 11111k ***other*
8 0.00re 0.00cp 14500k troff
5 12.32re 0.00cp 10696k smtpd
2 8.46re 0.00cp 13510k bash
8 9.52re 0.00cp 1018k less

Ví dụ với dòng đầu tiên:

4 0.36re 0.12cp 31156k up2date

Trong đó:

0.36re: “thời gian thực” (theo phút của đồng hồ treo tường).
0.12cp: tổng thời gian sử dụng CPU của hệ thống và người dùng (theo phút).
31156k: thời gian sử dụng CPU trung bình (theo đơn vị k).
up2date: tên lệnh.

Hiển thị thông tin với từng người dùng:

# sa -u

Xuất ra:

root 0.00 cpu 595k mem accton
root 0.00 cpu 12488k mem initlog
root 0.00 cpu 12488k mem initlog
root 0.00 cpu 12482k mem touch
root 0.00 cpu 13226k mem psacct
root 0.00 cpu 595k mem consoletype
root 0.00 cpu 13192k mem psacct *
root 0.00 cpu 13226k mem psacct
root 0.00 cpu 12492k mem chkconfig
postfix 0.02 cpu 10696k mem smtpd
vivek 0.00 cpu 19328k mem userhelper
vivek 0.00 cpu 13018k mem id
vivek 0.00 cpu 13460k mem bash *
lighttpd 0.00 cpu 48240k mem php *

Hiển thị số lượng chương trình và số phút sử dụng CPU ở từng người dùng cơ bản:

# sa -m

Xuất ra:

667 231.96re 0.17cp 7471k
root 544 51.61re 0.16cp 7174k
vivek 103 17.43re 0.01cp 8228k
postfix 18 162.92re 0.00cp 7529k
lighttpd 2 0.00re 0.00cp 48536k

Tìm ra ai là người đang chiếm lĩnh CPU

Bằng cách nhìn vào thành phần thời gian “re, k, cp/cpu
(xem phần giải thích ở trên), bạn có thể tìm ra hoạt động đáng ngờ hoặc
tên của người dùng, tên lệnh đang chiếm lĩnh toàn bộ CPU. Thời gian
cũng như dung lượng sử dụng CPU (hoặc bộ nhớ) tăng lên tức là có vấn đề
xuất hiện.

Hãy lưu ý các lệnh ở trên cũng như các gói ở nhiều hệ điều hành tựa UNIX khác (như Sun Solaris và *BSD chẳng hạn).

Theo quantrimang.com

powered by performancing firefox