Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts
Some index files failed to download. They have been ignored, or old ones used instead after apt-get update
Open a terminal (CTRL+ALT+T) and issue the following commands in order.
SOLUTION:
sudo cp /etc/apt/sources.list ~/
sudo wget "http://pastebin.com/raw.php?i=uzhrtg5M" -O /etc/apt/sources.list
sudo apt-get update
sudo rm /etc/apt/sources.list.d/ubuntu-extras.list
sudo apt-get update
This solution is not general. It is specific to the sources.list file of the Original Poster.
The second command which starts with wget downloads and replaces the sources.list file with a specific for Precise (Ubuntu 12.04) sources.list file. See the file in raw format by visiting this page.
The fourth command removes the ubuntu-extras.list file which had an impact/conflict with another file of the same, so we removed it to avoid the error
How to find the biggest installed packages on Kali Linux or Ubuntu
$ dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr
Install volatily on ubuntu
Because it is available via PPA, installing Volatility 2.3.1 on Ubuntu, Linux Mint, Pear OS and Elementary OS is easy. All you have to do is add the ppa, update the local repository index and install the volatility package. Like this:
$ sudo add-apt-repository ppa:pi-rho/security
$ sudo apt-get update
$ sudo apt-get install volatilityUbuntu và Firewall UFW
UFW trên terminal
UFW là một giao diện cấu hình tường lửa chạy trên dòng lệnh cho phép người dùng Ubuntu điều khiển traffic ra vào máy mình một cách đơn giản trên nền tảng tường lửa truyền thống iptables. Sau đây là cách sử dụng UFW.
Đầu tiên, ufw cần được kích hoạt: sudo ufw enable
|
Để tắt ufw dùng lệnh sau: sudo ufw disable
Ban đầu khi bật tường lửa lên, UFW sẽ chạy ở chế độ ACCEPT, chấp nhận mọi traffic vào/ra cho đến khi chúng ta thiết lập các luật cho nó.
Xem các ứng dụng được cài đặt: sudo ufw list
Để kiểm tra trạng thái của ufw cũng như các rule đã thiết lập, dùng lệnh sau: sudo ufw status
Cú pháp đơn giản để cho phép một kết nối vào/ra trên một cổng nào đó đến bất kỳ host nào như sau: sudo ufw allow 53
Để xác định protocol cụ thể cho cổng, thêm “/protocol” phía sau số cổng:
sudo ufw allow 53/tcp
sudo ufw allow 53/tcp
Ví dụ: Chặn truy cập vào google.com (74.125.128.94):
Chặn một subnet kết nối đến máy mình:
sudo ufw deny from 192.168.0.0/16 |
v Ufw framework cấu hình trong file text:
/etc/default/ufw: cấu hình ở mức cao, ví dụ như các chính sách mặc định, cung cấp ipv6...
/etc/ufw/before[6].rules:các luật trong file này được xác định trước khi bất kì luật nào được thêm vào bởi ufw
/etc/ufw/after[6].rules: các luật trong file này được xác định sau khi bất kì luật nào được thêm vào bởi ufw
/var/lib/ufw/user[6].rules or /lib/ufw/user[6].rules : những luật được thêm vào bởi ufw
v Logs
Firewall logs cần thiết cho nhận diện các tấn công, sửa chữa các luật trong firewall và nhận biết hoạt động không bình thường của mạng. Bạn phải thêm ghi lại các luật trong firewall để chúng được thực thi và việc ghi lại các luật phải trước bất kì luật xử lí gói tin vào ra nào của mạng.
Nếu sử dụng ufw, có thể bật ghi bằng dòng lệnh sau:
sudo ufw logging on
Để tắt việc ghi trong ufw, thay on bằng off
v Sử dụng giao diện Gufw:
Gufw là một lối đồ họa để quản lý một bức tường lửa iptables trên một máy tính. Nó được dựa trên ufw và cho phép bạn để cho phép hoặc chặn cấu hình định trước, p2p hay cổng cá nhân.
Cài đặt:
|
Quá trình cài đặt đang diễn ra
|
“Y” để tiếp tục cài đặt
Đã cài đặt xong
|
Giao diện firewall của ufw. Firewall bị vô hiệu hoá khi bạn mở lần đầu tiên, “Unlock”:
Xác thực người dùng, điền password
|
Nơi bạn có thể cấu hình các qui tắc của firewall là: Simple, Preconfigured và Advanced. Cấu hình chặn truy cập vào google.com(74.125.128.94)
|
Đã thêm luật chặn vào
|
Firewall thực thi nên không thể truy cập vào google.com
|
Trên đây là sơ lược về việc sử dụng firewall UFW. Hy vọng với những vấn đề đề cập trên đây sẽ giúp ích ít nhiều cho các bạn. Nếu thời gian cho phép, tôi sẽ đi sâu hơn vào phần iptables của Linux!
analysis log file
Grep log log analysis collate finishing
1 . Analyze log files to access the page next 2012-05-04 The top 20 URL and sorting
cat access.log | grep '04 / May/2012 '| awk' {print $ 11} '| sort | uniq-c | sort-nr | head -20
Query the URL address to access the page URL contains the IP address of www.abc.com
cat access_log | awk '($ 11 ~ / \ www.abc.com/) {print $ 1}' | sort | uniq-c | sort-nr
(2) to gain access to up to 10 IP addresses can also be queried by time
cat linewow-access.log | awk '{print $ 1}' | sort | uniq-c | sort-nr | head -10
1 to gain access to the ip address before 10
cat access.log | awk '{print $ 1}' | sort | uniq-c | sort-nr | head -10
cat access.log | awk '{counts [$ (11)] + = 1}; END {for (url in counts) print counts [url], url}'
2 Most Visited file or page , take the top 20 and all access to IP Statistics
cat access.log | awk '{print $ 11}' | sort | uniq-c | sort-nr | head -20
awk '{print $ 1}' access.log | sort-n-r | uniq-c | wc-l
cat wangsu.log | egrep '06 / Sep/2012: 14:35 | 06/Sep/2012: 15:05 '| awk' {print $ 1} '| sort | uniq-c | sort-nr | head -10 query log period of time the situation
3 lists some of the largest transfer exe file ( download station when analyzing common )
cat access.log | awk '($ 7 ~ / \. exe /) {print $ 10 "" $ 1 "" $ 4 "" $ 7}' | sort-nr | head -20
4 lists the output is greater than 200000byte ( about 200kb) an exe file and the number of occurrences of the corresponding file
cat access.log | awk '($ 10> 200000 && $ 7 ~ / \. exe /) {print $ 7}' | sort-n | uniq-c | sort-nr | head -100
5 If the log records the last one is the page file transfer time , there are lists to the client the most time-consuming page
cat access.log | awk '($ 7 ~ / \. php /) {print $ NF "" $ 1 "" $ 4 "" $ 7}' | sort-nr | head -100
6 lists the most time-consuming page ( more than 60 seconds ) as well as the corresponding page number of occurrences
cat access.log | awk '($ NF> 60 && $ 7 ~ / \. php /) {print $ 7}' | sort-n | uniq-c | sort-nr | head -100
7 lists the transmission of documents longer than 30 seconds
cat access.log | awk '($ NF> 30) {print $ 7}' | sort-n | uniq-c | sort-nr | head -20
8 Statistics website traffic (G)
cat access.log | awk '{sum + = $ 10} END {print sum/1024/1024/1024}'
9 Statistics 404 connection
awk '($ 9 ~ / 404 /)' access.log | awk '{print $ 9, $ 7}' | sort
10 Statistical http status.
cat access.log | awk '{counts [$ (9)] + = 1}; END {for (code in counts) print code, counts [code]}'
cat access.log | awk '{print $ 9}' | sort | uniq-c | sort-rn
11 sec Concurrency :
awk '{if ($ 9 ~ / 200 | 30 | 404 /) COUNT [$ 4] + +} END {for (a in COUNT) print a, COUNT [a]}' | sort-k 2-nr | head-n10
12 . Bandwidth statistics
cat apache.log | awk '{if ($ 7 ~ / GET /) count + +} END {print "client_request =" count}'
cat apache.log | awk '{BYTE + = $ 11} END {print "client_kbyte_out =" BYTE/1024 "KB"}'
One day out of the 10 most visited IP
cat / tmp / access.log | grep "20/Mar/2011" | awk '{print $ 3}' | sort | uniq-c | sort-nr | head
Maximum number of connections that day ip ip are doing :
cat access.log | grep "10.0.21.17" | awk '{print $ 8}' | sort | uniq-c | sort-nr | head-n 10
Find out the most visited several minutes
awk '{print $ 1}' access.log | grep "20/Mar/2011" | cut-c 14-18 | sort | uniq-c | sort-nr | head
Attachment: View tcp connection status
netstat-nat | awk '{print $ 6}' | sort | uniq-c | sort-rn
netstat-n | awk '/ ^ tcp / {+ + S [$ NF]}; END {for (a in S) print a, S [a]}'
netstat-n | awk '/ ^ tcp / {+ + state [$ NF]}; END {for (key in state) print key, "\ t", state [key]}'
netstat-n | awk '/ ^ tcp / {+ + arr [$ NF]}; END {for (k in arr) print k, "\ t", arr [k]}'
netstat-n | awk '/ ^ tcp / {print $ NF}' | sort | uniq-c | sort-rn
netstat-ant | awk '{print $ NF}' | grep-v '[az]' | sort | uniq-c
netstat-ant | awk '/ ip: 80 / {split ($ 5, ip, ":"); + + S [ip [1]]} END {for (a in S) print S [a], a}' | sort-n
netstat-ant | awk '/: 80 / {split ($ 5, ip, ":"); + + S [ip [1]]} END {for (a in S) print S [a], a}' | sort-rn | head-n 10
awk 'BEGIN {printf ("http_code \ tcount_num \ n")} {COUNT [$ 10] + +} END {for (a in COUNT) printf a "\ t \ t" COUNT [a] "\ n"}'
(2) Find requests please 20 IP ( commonly used in the attack source lookup ) :
netstat-anlp | grep 80 | grep tcp | awk '{print $ 5}' | awk-F: '{print $ 1}' | sort | uniq-c | sort-nr | head-n20
netstat-ant | awk '/: 80 / {split ($ 5, ip, ":"); + + A [ip [1]]} END {for (i in A) print A [i], i}' | sort-rn | head-n20
3 with a sniffer tcpdump port 80 access to see who the highest
tcpdump-i eth0-tnn dst port 80-c 1000 | awk-F "." '{print $ 1 "." $ 2 "." $ 3 "." $ 4}' | sort | uniq-c | sort-nr | head - 20
4 Find more time_wait connection
netstat-n | grep TIME_WAIT | awk '{print $ 5}' | sort | uniq-c | sort-rn | head-n20
5 more investigation to find SYN connections
netstat-an | grep SYN | awk '{print $ 5}' | awk-F: '{print $ 1}' | sort | uniq-c | sort-nr | more
6 According to port out process
netstat-ntlp | grep 80 | awk '{print $ 7}' | cut-d /-f1
LINUX - Binwalk - firmware analyzer
INSTALLING BINWALK
##################
* Firmware Analyzer, looks for header signatures...
* GET LATEST TAR.GZ AT https://code.google.com/p/binwalk/, I RENAMED MINE TO .TGZ BUT IT DOESNT MATTER AT ALL SINCE TAR.GZ AND TGZ ARE THE SAME FORMAT. THE TAR TOOL WILL STILL EXTRACT IT WITH THE SAME OPTIONS
* NOTE: ITS JUST PYTHON PROGRAM AND ALSO A PYTHON LIBRARY (THAT GETS INSTALLED WITH THE python setup.py install COMMAND)
* THE MAIN PROGRAM THAT STARTS IT IS JUST A PYTHON SCRIPT THAT CAN BE PUT ANYWHERE
* PREQS. Do one by one (do not paste in whole block, literally do one by one)
apt-get update
apt-get -y install subversion
apt-get -y install build-essential
apt-get -y install mtd-utils
apt-get -y install zlib1g-dev
apt-get -y install liblzma-dev
apt-get -y install gzip
apt-get -y install bzip2
apt-get -y install tar
apt-get -y install unrar
apt-get -y install arj
apt-get -y install p7zip
apt-get -y install openjdk-6-jdk
apt-get -y install python-magic
apt-get -y install python-matplotlib
mkdir /opt/firmware-mod-kit && chmod a+rwx /opt/firmware-mod-kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk /opt/firmware-mod-kit/trunk
cd /opt/firmware-mod-kit/trunk/src
./configure
make
cd -
* TO INSTALL EXTRACT TAR.GZ
mkdir ~/programs
cd ~/programs
wget https://binwalk.googlecode.com/files/binwalk-1.2.1.tar.gz (note get latest @ https://code.google.com/p/binwalk/ -> download link)
tar -xzvf binwalk-1.2.1.tar.gz
cd binwalk-1.2.1/src
sudo python setup.py install
* NOW TO TEST IT TYPE
binwalk
* IF YOU GET HELP OUT YOU WIN
RUNNING THE BINWALK
###################
* Showing just some main features
* There are lots of ways to extract, so I combine all of the ways into a script
GET PROGRESS WHILE ITS RUNNING
===============================
* Press Enter while its running and it will output progress. You can hold the enter if you want to, but I wouldnt thats just an interruption that slows things down
GET INFORMATION ABOUT HEADERS FROM BINWALK
===========================================
binwalk firmware
binwalk --verbose firmware
ANOTHER INTERSTING OUTPUT
==========================
* Similar to running "strings file" or "od -S file" we can run:
binwalk -S file
EXTRACT OUT THE FILES
===========================================
binwalk -e firmware
binwalk --verbose firmware
* IT MAKES FOLDER: _firmware.extract
HERE ARE ALL THE EXTRACTION OPTIONS
=====================================
* For M, e,r and d You must supply the "e" always
Extraction Options:
-D, --dd=<type:ext[:cmd]> Extract <type> signatures, give the files an extension of <ext>, and execute <cmd>
-e, --extract=[file] Automatically extract known file types; load rules from file, if specified
-M, --matryoshka Recursively scan extracted files, up to 8 levels deep
-r, --rm Cleanup extracted files and zero-size files
-d, --delay Delay file extraction for files with known footers
EXTRACT AND EXTRACT DEEPER AND DEEPER
======================================
* M repeats the options next to it, and it has to come together with at least e
binwalk -Me firmware
* IT MAKES FOLDER: _firmware.extract
MY FAVORITE:
============
binwalk -Me firmware
* IT MAKES FOLDER: _firmware.extract
* AND
binwalk -Mer firmware
* IT MAKES FOLDER: _firmware.extract
HOW TO RUN ALL 7 EXTRACTIONS METHODS
=====================================
* The 7 combos are -Me, -Med, -Mer, -Merd, -e, -ed, -er, -erd in no particular order (remember -e has to be included as its the one that means extraction)
METHOD1: NEW FOLDER NAMES KEEP THE SAME NAME
---------------------------------------------
(FWNAME="random_firmware_file";
binwalk -Me ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-Me;
binwalk -Med ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-Med;
binwalk -Mer ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-Mer;
binwalk -Merd ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-Merd;
binwalk -e ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-e;
binwalk -ed ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-ed;
binwalk -er ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-er;
binwalk -erd ${FWNAME}; mv _${FWNAME}*extract* _${FWNAME}-erd;)
METHOD2 (BETTER W/ EXAMPLE) NEW FOLDER NAMES WITH DIFFERENT NAMES
-----------------------------------------------------------------
(FWNAME="random_firmware_file";
NEWNAME="rfw1";
binwalk -Me ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-Me;
binwalk -Med ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-Med;
binwalk -Mer ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-Mer;
binwalk -Merd ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-Merd;
binwalk -e ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-e;
binwalk -ed ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-ed;
binwalk -er ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-er;
binwalk -erd ${FWNAME}; mv _${FWNAME}*extract* _${NEWNAME}-erd;)
---EXAMPLE---
* Extracting Firmware firmware1 using all 7 methods, but renaming new folders to have the name R4223 instead
* THE BEFORE:
cd /somefolder/
ls -lish
* THE BEFORE OUTPUT OF ls -lish:
* total 53M
* 1310776 53M -rw-r--r-- 1 root root 53M Jun 18 09:57 random_firmware_file
du -sh *
* THE BEFORE OUTPUT OF du -sh *:
* 53M random_firmware_file
THEN RAN THE ABOVE SCRIPT (COPY PASTE IT IN AND HIT ENTER, THE PARENTHESIS ARE GOOD THEY TELL BASH THIS IS ONE GIANT COMMAND, THE ABOVE CAN BE RAN WITHOUT THE PARENTHESIS AS WELL)
* AFTER:
ls -lish
* OUTPUT OF ls -lish:
* total 53M
* 1310776 53M -rw-r--r-- 1 root root 53M Jun 18 09:57 random_firmware_file
* 1310795 4.0K drwxr-xr-x 2 root root 4.0K Jun 18 10:12 _rfw1-e
* 1310814 4.0K drwxr-xr-x 2 root root 4.0K Jun 18 10:13 _rfw1-ed
* 1310833 4.0K drwxr-xr-x 2 root root 4.0K Jun 18 10:13 _rfw1-er
* 1310834 4.0K drwxr-xr-x 2 root root 4.0K Jun 18 10:14 _rfw1-erd
* 1310728 4.0K drwxr-xr-x 4 root root 4.0K Jun 18 10:07 _rfw1-Me
* 1310749 4.0K drwxr-xr-x 4 root root 4.0K Jun 18 10:09 _rfw1-Med
* 1310770 4.0K drwxr-xr-x 4 root root 4.0K Jun 18 10:10 _rfw1-Mer
* 1310783 4.0K drwxr-xr-x 4 root root 4.0K Jun 18 10:11 _rfw1-Merd
du -sh *
* OUTPUT OF du -sh *:
* 53M random_firmware_file
* 347M _rfw1-e
* 347M _rfw1-ed
* 53M _rfw1-er
* 53M _rfw1-erd
* 347M _rfw1-Me
* 347M _rfw1-Med
* 53M _rfw1-Mer
* 53M _rfw1-Merd
SIDE NOTE:
===========
* For the above two examples dont run the scripts or binwalk extractions at the same time on the same firmware name (FWNAME) because they all make the _firmware.extracted folder, so you dont want overwrites happening.
* If your extracting the same firmware using different types of arguments at the same time, make sure your in a different directory, copy the firmware to a different directory. My script doesnt do them at the same time.
Install network miner on ubuntu with mono
# sudo apt-get install libmono-winforms2.0-cil
# wget sourceforge.net/projects/networkminer/files/latest -O /tmp/networkminer.zip
# sudo unzip /tmp/networkminer.zip -d /opt/
# cd /opt/NetworkMiner_1-4-1
# sudo chmod +x NetworkMiner.exe
# sudo chmod -R go+w AssembledFiles/
# sudo chmod -R go+w Captures/
# mono /opt/NetworkMiner 1-4-1/NetworkMiner.exe
Dò tìm dấu vết chỉnh sửa được thực hiện trên hệ thống Linux
[INDENT] 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ói xử 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, accton và sa.
• 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
- S và X: 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).
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ói xử 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, accton và sa.
• 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
- S và X: 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).
Lệnh Init trong linux
- Run level 0 (init 0): chế độ tắt máy.
- Run level 1 (init 1): chế độ này chỉ sử dụng được 1 người dùng.
- Run level 2 (init 2): chế độ đa người dùng nhưng không có dịch vụ NFS.
- Run level 3 (linit 3): chế độ dang text
- Run level 4 (linit 4): chưa được sử dụng.
- Run level 5 (linit 5): chế độ đồ họa.
- Run level 6 (linit 6): khởi động lại máy.
- Cú pháp: # init
- Ví dụ:
+ Dùng lệnh init 0 để tắt máy:
# init 0
+ Để khởi động lại máy tính ta dùng lệnh:
# init 6
+ Khi đang ở chế độ đồ họa ta có thể chuyển sang chế độ dòng lệnh (text mode) bằng cách dùng lệnh:
# init 3
+ Ngược lại, khi đang ở chế độ dòng lệnh ta có thể chuyển sang chế độ đồ họa bằng cách dùng lệnh:
# init 5
- Tập tin cấu hình: /etc/inittab
Khi khởi động máy tính, Linux sẽ đọc trong tập tin /etc/inittab để chọn chế độ khởi động. Cụ thể là dòng id::initdefault:
- Do đó, ta có thể chỉnh sửa chế độ khởi động bằng cách thay đổi run level ngay dòng này.
- Ví dụ: mặc định cho Linux khởi động vào chế độ dòng lệnh ta thay dòng trên thành:
id:3:initdefault
- Lưu ý: không được set dòng này ở hai run level là 0 và 6.
- Run level 1 (init 1): chế độ này chỉ sử dụng được 1 người dùng.
- Run level 2 (init 2): chế độ đa người dùng nhưng không có dịch vụ NFS.
- Run level 3 (linit 3): chế độ dang text
- Run level 4 (linit 4): chưa được sử dụng.
- Run level 5 (linit 5): chế độ đồ họa.
- Run level 6 (linit 6): khởi động lại máy.
- Cú pháp: # init
- Ví dụ:
+ Dùng lệnh init 0 để tắt máy:
# init 0
+ Để khởi động lại máy tính ta dùng lệnh:
# init 6
+ Khi đang ở chế độ đồ họa ta có thể chuyển sang chế độ dòng lệnh (text mode) bằng cách dùng lệnh:
# init 3
+ Ngược lại, khi đang ở chế độ dòng lệnh ta có thể chuyển sang chế độ đồ họa bằng cách dùng lệnh:
# init 5
- Tập tin cấu hình: /etc/inittab
Khi khởi động máy tính, Linux sẽ đọc trong tập tin /etc/inittab để chọn chế độ khởi động. Cụ thể là dòng id::initdefault:
- Do đó, ta có thể chỉnh sửa chế độ khởi động bằng cách thay đổi run level ngay dòng này.
- Ví dụ: mặc định cho Linux khởi động vào chế độ dòng lệnh ta thay dòng trên thành:
id:3:initdefault
- Lưu ý: không được set dòng này ở hai run level là 0 và 6.
Subscribe to:
Posts (Atom)