Phân quyền files và thư mục cho WordPress

Tìm tất cả thư mục trong /home và phân quyền là 755

find /home/ -type d -exec chmod 755 {} \;

Tương tự, tìm tất cả files trong /home và phân quyền là 644

find /home/ -type f -exec chmod 644 {} \;

Sau đó mới chmod lại 2 file quan trọng wp-config.php và nginx.conf thành 444

chmod 444 nginx.conf

chmod 444 wp-config.php

Thay đổi user/group sở hưu files và thư mục bên trong /home

chown -R nginx:nginx /home/

Để bảo mật hơn khuyên dùng (chú ý sẽ không update, chỉnh sửa được plugin khi dùng cái này)

chown -R root:root /home/

Tôi đã hack báo Tuổi Trẻ như thế nào.

Làm cái tít cho giựt gân vậy chơi thôi, chứ thiệt ra chỉ có cái lỗi XSS nhỏ xíu à. và cũng không tự hào gì khi phát hiện ra lỗi của báo Tuổi Trẻ, vì trước mình đã có nhiều người phát hiện ra lỗi này.

Đến khi mình thông báo là: “Tôi phát hiện ra lỗi xss và tôi có thể tạo 1 trang báo giả mạo”. Thì gần như ngay lập tức sáng hôm sau có người gọi cho mình để nhờ hướng dẫn họ fix lỗi.

Dưới đây là Email làm việc giữa mình với 1 bạn bên Báo Tuổi Trẻ.

loi-xss-bao-tuoi-tre (4)

loi-xss-bao-tuoi-tre (1) loi-xss-bao-tuoi-tre (1) loi-xss-bao-tuoi-tre (2) loi-xss-bao-tuoi-tre (3)

 

Lỗi XSS là một lỗi rất phổ biến của các website trên thế giới, các chủ trang web lớn mặc dù đã biết lỗi này nhưng chủ quan không fix và Hacker thì chỉ chờ có vậy.

Chẳng hạn như website của Báo Tuổi Trẻ, bị lỗi XSS đơn giản trên thanh tìm kiếm điều này xem ra thì rất bình thường. Vì hầu hết các website đều như thế bị lỗi XSS trên thanh tìm kiếm. Nhưng với 1 trang báo lớn và uy tín thì hoàn toàn khác, một lỗi XSS thì có rất nhiều thứ hay ho để làm hãy xem nếu rơi vào tay kẻ xấu thì như thế nào nhé.

Nếu rơi vào tay kẻ xấu thì họ có thể làm những gì nhỉ:

  1. Tạo 1 bài báo giả mạo (Vâng rất đơn giản, vì XSS cho phép tiêm javascript nên có thể thay đổi hoàn toàn cấu trúc website HTML và viết 1 bài báo bằng HTML thì học sinh cấp 2 cũng làm được).
  2. Chuyển hướng đến 1 trang nào đó. (Vì dụ: Người nào đó share link cho bạn là đọc báo tuổi trẻ có tin giựt gân, nhưng khi bạn click vào thì ra 1 trang khác, web sex, trang có cài virus chẳng hạn)
  3. Yêu cầu người dùng cài phần mềm, ứng dụng, addon, plugin… độc hại (Cũng đơn giản nhỉ)
  4. Tạo một form nhờ quyên góp tiền làm từ thiện, quyên góp cho ai đó bị tai nạn chẳng hạn. Và hacker chỉ đưa STK ngân hàng nào đó rồi chờ rút tiền thôi.
  5. Chèn iFrame, Form để thu thập thông tin người dùng. (Yêu cầu người dùng đăng nhập Facebook để nhận 1 phần quà chẳng hạn… người ta sẽ chẳng nghi ngờ gì cả vì trang uy tín mà.)

Dưới đây là Video demo.

https://www.youtube.com/watch?v=XuW1p48JjqY

Làm thế nào mà Hacker có thể lấy tiền trong ngân hàng

Thế giới Internet không an toàn như chúng ta tưởng !

Ở đâu đó vẫn có con mắt luôn rìn mò chúng ta, dù đêm hay ngày, khi chúng ta ngủ, khi chúng ta chơi, chúng ta ở đâu, chúng ta làm gì, gọi điện cho ai, nhắn tin những gì… Tất cả mọi thứ không có gì là bí mật cả.

Chuyện một Hacker nào đó hack tài khoản ngân hàng và lấy vài trăm triệu nghe thì có vẻ lớn lao và phi thường như thực tế nó hoàn toàn có thể làm được qua những cách rất đơn giản.

I. Bạn bị hack tiền trong ngân hàng bằng cách nào.

Chắc mọi người thắc mắc làm thế nào mà Hacker có thể lấy tiền trong ngân hàng, với những hiểu biết hạn hẹp mình sẽ đưa ra một số giả thuyết và trình bày cách thức thực hiện.

Để hack một tài khoản ngân hàng và lấy tiền, loại bỏ nhưng thứ râu ria và cao siêu thì Hacker cần thực hiện được 2 việc:

  1. Lấy tài khoản user + password.
  2. Lấy được tin nhắn mã xác thực của ngân hàng gửi.

Để làm được 2 vấn đề trên thì chúng ta cần:

  1. Chiếm được user + pass tài khoản ngân hàng

    1. Đón password đơn giản là ngày tháng năm sinh, là số điện thoại, là sinh nhật vợ, người yêu…
    2. Dò password bằng các phần mềm bruce force
    3. Lấy pass từ các trang web đã bị hack trước đó như: Twice, Yahoo, LinkedIn, Myspace… hiện tại được share nhiều trên mạng
    4. Hack trực tiếp lên máy tính và cài đặt trojan để sniff các kí tự được gõ từ bàn phím.
    5. Xâm nhập vào mạng và Sniffer gói tin, lấy password.
    6. Hoặc đơn giản hơn là mua thông tin từ hacker khác.
  2. Lấy mã xác nhận của ngân hàng

    1. Nếu người dùng cài chương trình đồng bộ SMS của điện thoại với máy tính thì quá đơn giản. Chỉ cần làm 1 bước số 4 phía trên là đủ.
    2. Hack điện thoại của bạn để dump sms tin nhắn lấy mã xác thực.

Dưới đây là Video demo cách để hack một tài khoản ngân hàng và lấy mã xác thực đơn giản nhất.

  1. Tạo trojan.exe với Metaspoit để exploit máy tính widows
  2. Gửi trojan.exe cho victim.
  3. Victim cài đặt và máy tính bị chiếm quyền điều khiển (Bao gồm tất cả các quyền: như chụp ảnh màn hình, xem webcam, nghe micro, theo dõi phím bấm….)
  4. Sniffer user và password của ngân hàng
  5. Tạo trojan.apk mục đích là exploit điện thoại Android
  6. Gửi cho victim
  7. Victim cài đặt và điện thoại bị chiếm quyền điều khiển. (Bao gồm: điều khiển camera trước + sau, nghe mic, xem được danh bạ, tin nhắn, nhật ký cuộc gọi, hoặc cài đặt 1 ứng dụng khác…)
  8. Dump SMS tin nhắn xác thực của ngân hàng

Xong !

II. Phương pháp phòng chống và bảo mật.

  1. Không download và sử dụng các phần mềm lậu + crack (Đây là ổ virus) 99,9% crack + keygen có chứa virus.
  2. Sử dụng mật khẩu khó đoán, tránh sử dụng tên + ngày sinh + số điện thoại trong tài khoản.
  3. Sử dụng nhiều mật khẩu, không sử dụng ngân hàng chung với các website và ứng dụng khác.
  4. Mua và sử dụng chương trình diệt virus như: Kaspersky, Avast, Avira…
  5. Không lưu mật khẩu quan trọng vào trình duyệt.
  6. Không truy cập hoặc gửi thông tin tài khoản ngân hàng cho website lạ.

Hi vọng sau khi xem video này mọi người sẽ đề phòng hơn về cách để bảo vệ tài khoản của mình cũng như cẩn thận khi cài đặt các ứng dụng thiếu tin tưởng,

Backup và Restore giữa 2 VPS bằng lệnh Rsync

Chức năng: Tự backup Source code + Database và đẩy sang VPS thứ 2 theo định kì. Tại VPS thứ 2 chỉ cần 1 câu lệnh sẽ tự động Restore.

Chú ý: Demo được thực hiện trên VPS Centminmod.

Tạm gọi VPS chính là VPS A, VPS phụ nhận file backup là VPS B có IP là: 192.168.0.1

I. BASIC

Trên VPS A.

Cài đặt rsync.

yum install -y rsync

Gõ tiếp

ssh-keygen -t dsa

Tới bước:  “Enter file in which to save the key (/root/.ssh/id_dsa):”

/root/.ssh/id_dsa_vps_a

Khi được hỏi

“Enter passphrase (empty for no passphrase):”
“Enter same passphrase again:”

Nhấn Enter

Copy Key vừa tạo sang VPS B bằng lệnh

scp /root/.ssh/id_dsa_vps_a.pub [email protected]:/root/

Tại VPS B

mkdir -p /root/.ssh/
touch -f /root/.ssh/authorized_keys
cat /root/id_dsa_vps_a.pub >> /root/.ssh/authorized_keys
chmod 644 /root/.ssh/authorized_keys

Tại VPS A

Đồng bộ hóa 2 thư mục /home/nginx/domains

rsync -aurzW -e "ssh -i /root/.ssh/id_dsa_vps_a" /home/nginx/domains [email protected]:/home/nginx/domains

Hẹn giờ đồng bộ hóa

crontab -e

Nhập (tự chạy đồng bộ hóa lúc 2h30 hàng ngày)

30 2 * * * rsync -aurzW -e "ssh -i /root/.ssh/id_dsa_vps_a" /home/nginx/domains [email protected]:/home/nginx/domains

Lưu và thoát

Ctrl + X --> Y --> Enter

II. Advanced

Nhiệm vụ là Backup toàn bộ Source và Database của Tất cả website bên VPS A, Đẩy sang VPS B và sau đó VPS B tự động Restore.

Chú ý: Tất cả đều thực hiện trên VPS nginx cài Centminmod, nên nếu bạn cài Apache hoặc gì gì đó thì tùy chỉnh thêm nhé.

Trên VPS A

Tạo 1 file backup.sh trong /root/ với nội dung như sau:

#!/bin/bash
{
printf "subject:Backup for VPS My_IP\nfrom:[email protected]\n\n"
echo "Deleting file Old Backups..."
rm -rf /var/backups
mkdir /var/backups/
chmod -R 777 /var/backups/
mkdir /var/backups/$(date +"%d-%m-%Y")/
mkdir /var/backups/$(date +"%d-%m-%Y")/websitecuaban.com/

echo "Starting backup database for websitecuaban.com..."
mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u usercuasql -h 127.0.0.1 -p'matkhau' tendatabase | gzip > /var/backups/$(date +"%d-%m-%Y")/websitecuaban.com/websitecuaban_$(date +"%d-%m-%Y")_database.sql.gz
echo "Starting backup files for websitecuaban.com..."
cd /home/nginx/domains/websitecuaban.com
zip -r /var/backups/$(date +"%d-%m-%Y")/websitecuaban.com/websitecuaban_$(date +"%d-%m-%Y")_source.zip public/ -q -x /public/wp-content/cache/**\*

echo "Starting backup database for All..."
passdata=`grep -oP "(?<=password=).*" ~/.my.cnf`
mysqldump -u root -p$passdata --all-databases | gzip > /var/backups/$(date +"%d-%m-%Y")/$(date +"%d-%m-%Y")_My_IP_database.sql.gz

echo "Starting Rsync to VPS Backup..."
rsync -aurzW -e "ssh -i /root/.ssh/id_dsa_vps_a" /usr/local/nginx/conf /var/backups/$(date +"%d-%m-%Y") [email protected]192.168.0.1:/var/backups

} | /usr/sbin/sendmail "[email protected]"

Bạn thay đổi phần màu đỏ cho phù hợp với VPS của bạn.

Trên VPS B

Tạo 1 file restore.sh trong /root/ với nội dung như sau:

#!/bin/bash
{
printf "subject:Restore for VPS\nfrom:[email protected]\n\n"
echo "Starting Restore source for All..."
day=22-12-2015
cd /var/backups/$day
find . -name "*.zip" | grep -oP "(?<=.).*/" | while read filename; do mkdir "/var/backups/"$day$filename"log/"; done;
yes | cp -rf /var/backups/$day/* /home/nginx/domains/
yes | cp -rf /var/backups/conf/* /usr/local/nginx/conf/
cd /home/nginx/domains
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
find . -name *source.zip -exec rm -rf {} \;

echo "Starting Restore database for All..."
gunzip *.sql.gz
passdata=`grep -oP "(?<=password=).*" ~/.my.cnf`
mysql -u root -p$passdata < *.sql
find . -name "*database.sql" -exec rm -rf {} \;
find . -name "*database.sql.gz" -exec rm -rf {} \;
service nginx restart
} | /usr/sbin/sendmail "[email protected]"

Bạn thay đổi phần màu đỏ cho phù hợp với VPS của bạn.

Cấu hình Crontab cho chạy tự động, trong trường hợp VPS A có vấn đề là 1-2 phút sau mình đã có VPS B để dự phòng rồi.

Done!

Cách phát hiện và hạn chế một cuộc tấn công DDoS

Xin nói trước là chỉ hạn chế thôi chứ không thể chống lại một cuộc tấn công DDoS nhé. Với lại tôi cũng không phải chuyên gia về bảo mật hay phòng chống DDoS, bởi vì web công ty bị phá riết, chống chọi với DDoS riết nên có tí kinh nghiệm và viết bài này. Cũng xin nói thêm trong loại tấn công website thì DDoS là nguy hiểm nhất và cũng hạ đẳng nhất. Còn tại vì sao thì phải tìm hiểu nhiều.

tan-cong-ddos

I. Check

Bằng netstat

Cái này mà > 500 tức là Server của bạn đã có vấn đề

netstat -n | grep :80 |wc -l

Cái này > 100 có thể là tấn công syn

netstat -n | grep :80 | grep SYN |wc -l

Kiểm tra kết nối của tất cả các cổng, xem IP nào có nhiều connect nhất

netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -n

Kiểm tra kết nối của port 80 và xem IP có nhiều kết nối nhất.

netstat -ntu | grep ':80' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -n

Kiểm tra các kết nối bằng giao thức tcp hoặc udp

netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Kiểm tra IP nào thực hiện nhiều gói SYN nhất

netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

Phân tích file Log

Xuất ra màn hình tất cả IP > 10 connect, trong 1 giờ qua (15 giờ 8/12/2015)

grep -w '08/Dec/2015:15' /file_log_server_access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -cd | sort -nr | grep -v '^ *[1-9] '

Xem thêm: Phân tích Log VPS từ cơ bản đến nâng cao

II. Filter

Bằng Route

route add ipaddress reject

vd:

route add 111.111.111.1111 reject

Kiểm tra các IP đã bị Block bằng route

route -n |grep IPaddress

vd:

route -n |grep 111.111.111.1111

Bằng iptables

iptables -A INPUT 1 -s IPADRESS -j DROP/REJECT
service iptables restart
service iptables save

Xóa tất cả các kết nối

killall -KILL httpd
service httpd restart

Bằng csf

csf -d IPaddress

vd:

csf -d 111.111.111.111

Sau đó khởi động lại csf

csf -r

III. Service

Đơn giản nhất là dùng các dịch vụ chống DDoS, tất nhiên là tốn phí.

Nổi tiếng nhất và hiệu quả nhất là Cloudflare để chống được DDoS thì ít nhất phải dùng gói Business 200$/m, gói Free và 20$/m chỉ có chức năng tối ưu cho website thôi nhé, không có chức năng chống DDoS.

Tiếp đến là Incapsula  với gói Small Businesses 299$/m cũng là một sự lựa chọn hoàn hảo.

…còn nữa

Tham khảo: eukhost.com, sinhvienit.net

Đặt mật khẩu bảo vệ File và Folder trong Nginx

Với WordPress thông thường chúng ta hay bảo vệ thư mực wp-admin và file wp-login.php

mat-khau-file-folder-wordpress

Bước 1: Tạo file chứa user và mật khẩu được mã hóa.

htpasswd -c /home/nginx/domains/websitecuaban.com/public/.htpasswd username password

với câu lệnh trên hệ thống sẽ tạo 1 file .htpasswd trong thư mục gốc /home/nginx/domains/websitecuaban.com/public/

Hoặc bạn cũng có thể vào: http://www.htaccesstools.com/htpasswd-generator/ để tạo thủ công.

Bước 2: Liên kết file cấu hình domain với user, mật khẩu vừa tạo.

Edit file:

/usr/local/nginx/conf/conf.d/websitecuaban.com.conf

Thêm dòng này để bảo vệ thư mục wp-admin

location /wp-admin {
 auth_basic "Administrator Login";
 auth_basic_user_file /home/nginx/domains/websitecuaban.com/public/.htpasswd;
 }

Thêm dòng này để bảo vệ file wp-login.php

location ~ ^/(wp-login.php) {
 include /usr/local/nginx/conf/php.conf;
 auth_basic "Administrator Login";
 auth_basic_user_file /home/nginx/domains/websitecuaban.com/public/.htpasswd;
 }

Chú ý: các dòng code phải nằm trong thẻ đóng:

server {
...code ở trong này...
}

Xong rồi khởi động lại nginx

service nginx restart

 

Cách backup Website từ VPS CentOS lên Google Drive

Hôm trước đã hướng dẫn cách làm sao để tự động backup Source code và DataBase rồi. Nhưng backup xong vẫn nằm trên VPS đó, trong trường hợp VPS có chuyện thì rất nguy hiểm, mà get về thủ công thì rất lâu với những ai quản trị nhiều site.

Xem bài viết: Tự động backup Database và Source code bằng Crontab

Hôm nay sẽ giải quyết vấn đề là làm thế nào để quẵng tất cả các file backup đó lên Google drive.

I. Tạo google project

1.Vào đây: https://console.developers.google.com/project

Tạo 1 Project mới.

click "Create Project" ->  Project name "Nhập tên tùy ý ví dụ: saoluu"

2.Vào đây: https://console.developers.google.com/apis/library

Chọn project vừa tạo -> Overview -> và Enabled: Drive API, Admin SDK, Google Apps Marketplace SDK

3.Tiếp tục chọn tab Credentials.

Add Credentials -> Service account -> Check P12 -> Create

4.Xong thì nhận được 1 file có tên dạng saoluu-5e923c74024b.p12 lưu vào 1 nơi cẩn thận sau này dùng.

Và cài mail: xxxxxxxxxxxx[email protected]

II. Tạo 1 thư mục trên Google Drive và chia sẻ với mail trên.

Bước này đơn giản là tạo 1 thư mục mới trên Google Drive

Chú ý:

  • Chia sẻ với mail đã nhận ở trên: xxxxxxxxxxxx[email protected] và phát quyền được phép chỉnh sửa.
  • Link của thư mục có dạng: https://drive.google.com/drive/u/0/folders/0B18aFuiEcupjNVoxSVloY2mwMJU nhớ đoạn đánh dấu màu đỏ, xíu nữa dùng.

III. Thao tác trên VPS.

1.Cài đặt một số Pack cần thiết, mình dùng CentMinMod thấy 2 cái này là đủ

yum -y install python-pip
pip install --upgrade google-api-python-client

2.Tải file này về: configs

Giải nén ra được thư mục: configs -> copy file saoluu-5e923c74024b.p12 đã làm ở bước I.4 bỏ vô và edit file config.json với nội dung như sau:

{
 "service_account":"[email protected]account.com",
 "private_key12_path":"saoluu-5e923c74024b.p12",
 "backup_folder_id":"0B18aFuiEcupjNVoxSVloY2mwMJU",
 "description" : "Backup VPS to Google Drive",
 "max_file_in_folder": 100
}

Giải thích:

  • “service_account”: là cái email đã nhận ở bước 1.4
  • “private_key12_path”: đường dẫn cái file đã nhận ở bước 1.4 (mới copy vô)
  • “backup_folder_id”: là cái đuôi phía sau của url thư mục Google drive đã nhận ở bước II
  • “max_file_in_folder”: là số file tối đa của thư mục trên google, ở đây là 100 trong trường hợp nhiều hơn sẽ xóa file cũ nhất.

3. Upload thư mục configs lên /root/ của VPS

Set quyền cho file backup.py trong /root/configs là 755, tức là có quyền thực thi.

Chạy thử:

python /root/configs/backup.py /root/configs/config.json /var/backups/source.zip

Giải thích:

  • “/root/configs/backup.py”: nơi chứa file thực thi python
  • “/root/configs/config.json”: nơi chứa file cấu hình
  • “/var/backups/source.zip”: file muốn đưa lên Google drive

Nếu quá trình chạy hoàn tất và không báo lỗi, kiểm tra trên google drive có file source.zip thì xin chúc mừng.

Trong trường hợp bị lỗi thì thêm mấy anh này vô.

yum update
yum groupinstall "Additional Development" "Development tools" 
yum install libffi-devel
pip install pycrypto
easy_install pyopenssl

Nếu bị lỗi: No crypto library available thì chạy dòng này:

sudo pip2 install --upgrade --force pip
pip install PyOpenSSL

 

IV: Nâng cao (Hẹn giờ tự động backup, đẩy lên Google drive từ A – Z)

Bài tự động backup thì đã hướng dẫn ở đây: http://tangduongtrieu.com/tu-backup-database-va-source-code-bang-crontab-trong-centminmod/

Nhưng giờ có chỉnh sửa xíu:

1. Tạo file backup.sh trong /root/ và chmod quyền thực thi 755 với nội dung như sau:

#!/bin/bash
{
 printf "subject:Backup for VPS\nfrom:mail_nguoi_gui\n\n"
 echo "Deleting file Old Backups..."
 rm -rf /var/backups
 mkdir /var/backups
 chmod -R 777 /var/backups
 mkdir /var/backups/$(date +"%Y-%m-%d")/
 mkdir /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/
 
 echo "Starting backup database for websitecuaban.com..."
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u username_cuaban -h 127.0.0.1 -p'matkhau' database_cuaban | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 echo "Starting backup files for websitecuaban.com..."
 zip -r /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip /home/nginx/domains/websitecuaban.com/public
 
 echo "Upload To Google Drive"
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip
 } | /usr/sbin/sendmail "[email protected]"

Thay phần nội dung màu đỏ cho phù hợp với Website của bạn.

Sau khi chạy nếu kiểm tra oke hết thì chuyển đến bước tiếp theo là tự động chạy backup vào 1 ngày định trước.

2. Crontab cho backup.sh

Gõ lệnh

crontab -e

Nhập

@weekly /root/backup.sh

Lưu và thoát

Ctrl + X --> Y --> Enter

Để chắc chắn crontag luôn chạy thì gõ thêm 3 lệnh này nữa.

service crond start
service crond restart
chkconfig crond on

Done!

Tham khảo và chỉnh sửa từ: https://dethoima.info/tu-dong-backup-du-lieu-len-google-drive/

Gốc của Source thì nằm ở đây: https://github.com/bachvtuan/Backup-To-Google-Drive

Các dòng lệnh bỏ túi khi sử dụng VPS

Tham khảo thêm: Phân tích log của VPS từ cơ bản đến nâng cao

I. VỚI NỘI DUNG FILE.

Xem 10 dòng đầu tiên

head -10 file-input.txt

Xem 10 dòng cuối

tail -10 file-input.txt

Xem từ dòng 10 đến dòng 20

awk 'NR >= 10 && NR <= 20' file-input.txt

Xóa dòng 10 đến dòng 20, sau đó tạo file mới

sed '1,20d' file-input.txt > file-output.txt

Xóa các dòng có nội dung là “error”, sau đó tạo file mới

sed '/^error/d' file-input.txt > file-output.txt

Tìm các dòng có nội dung là error, xuất ra màn hình là dòng nào.

grep -n error file-input.txt
grep -w "error" file-input.txt

Xem file-input.txt có bao nhiêu dòng

wc -l file-input.txt

Cắt file-input.txt ra nhiều file-output mỗi file 1000 dòng.

split -d -l 1000 file-input.txt file-output.txt

Xóa các dòng trùng nhau

sort file-input.txt | uniq > file-output.txt #sắp xếp và xóa dòng trùng nhau
uniq file-input.txt > file-output.txt # chỉ xóa dòng trùng

II. VỚI FILE VÀ THƯ MỤC

Copy một file

cp ten_file.txt ten_file_new.txt

 Xóa toàn bộ file trong thư mục

rm -rf *

Tìm file có chứa nội dung “error”

find /home -type f -exec grep -l 'error' {} \;

Tìm kiếm tên file + folder

find . error.log #tìm file có tên
find / -type d -name error #tìm thư muc có tên error

Tìm các file mới được chỉnh sửa

find / -mtime 50 #được chỉnh sửa trong 50 ngày
find / -mtime +50 –mtime -100 #được chỉnh sửa trong vòng 50 - 100 ngày
find ./ -cmin -60 #được tạo ra trong vòng 1 giờ

Tìm các file được phân quyền 444

find . -type f -perm 444

Gọp chung các file lại thành 1 file duy nhất

cat file_input1.txt file_input2.txt file_input3.txt > combined-file-output.txt

hoặc

cat *.txt > combined-file-output.txt

Phân tích Log của VPS từ cơ bản đến nâng cao

Chú ý: Demo được thực hiện trên CentMinMod những VPS khác thì thay được dẫn File log nhé

Tham khảo thêm: Các dòng lệnh bỏ túi trong Linux

Lệnh tail để liệt kê các dòng cuối cùng trong file, ở đây ví dụ là 10 bạn có thể thay đổi thành 100, 1000… tùy theo muốn xem nhiều hay ít.

log

I. Đơn giản

Check log chung của Server

tail -10 /usr/local/nginx/logs/access.log
tail -10 /usr/local/nginx/logs/error.log

Check log từng Domain:

tail -10 /home/nginx/domains/domainname.com/log/access.log
tail -10 /home/nginx/domains/domainname.com/log/error.log

Kiểm tra trong /var/log

ls -lhrt /var/log

Check PHP-FPM

tail -10 /var/log/php-fpm/www-error.log
/var/log/php-fpm/www-php.error.log

Kiểm tra log trong cơ sơ dữ liệu MySQL / MariaDB

tail -10 /var/log/mysqld.log

Kiểm tra log trong CSF firewall

tail -10 /var/log/lfd.log

Kiểm tra log trong Mail

tail -10 /var/log/maillog

For Cron job

tail -10 /var/log/cron

II. Nâng cao

Lấy tất cả các log trong 1 ngày

Ví dụ mình lấy các log trong ngày 5/12/2015

grep -w '05/Dec/2015' /home/nginx/domains/domain.com/log/access.log

Lấy log trong nhiều ngày bất kỳ

Lấy tất cả các log trong ngày 5/12/2015 ngày 4/12/2015

grep -w '05/Dec/2015\|04/Dec/2015' /home/nginx/domains/domain.com/log/access.log

Lấy tất cả IP trong file log

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /home/nginx/domains/domain.com/log/access.log

Lấy log trong ngày được và chuyển hướng google

Chỉ lấy các dòng có chuổi là “05/Dec/2015”  “google” (Được hiểu là Log của ngày 5/12/2015 và được chuyển hướng từ google)

grep -w '05/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log

Xuất ra log trong ngày và điều kiện “hoặc”

Chỉ lấy các dòng có chuổi là “05/Dec/2015” và “google”  HOẶC có chuổi là “04/Dec/2015” và “google”

grep -w '05/Dec/2015.*google\|04/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log

Xuất ra tất cả IP với điều kiện

Xuất tất cả các IP được chuyển hướng từ Google được ghi nhận từ ngày 4 và 5/12/2015

grep -w '05/Dec/2015.*google\|04/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

Xuất số kết nối của IP đến server trong ngày

Đếm xem số lần kết nối của một IP được chuyển hướng từ Google trong ngày 5/12/2015

grep -w '05/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | soft | uniq -cd | sort -nr

Xuất ra tất cả các IP có >10 kết nối trong ngày

Kiểm tra tất cả các IP có > 10 kết nối trong ngày 5/12/2015

grep -w '05/Dec/2015' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -cd | sort -nr | grep -v '^ *[1-9] '

Xem toàn bộ chuyển hướng từ google trong 1 tháng

Xuất ra màn hình toàn bộ log được chuyển hướng từ google tháng 12/2015 nhưng không chứa bot.html

grep -w 'Dec/2015.*google.com' /home/nginx/domains/domain.com/log/access.log | grep -v 'bot.html'

Xem link có nhiều lượt truy cập nhất trong tháng

Link có nhiều lượt truy cập nhất từ google trong tháng 12/2015, không tính bot

grep -w 'Dec/2015.*google.com' /home/nginx/domains/domain.com/log/access.log | grep -v 'bot.html' | grep -oP '(?<=GET ).*/ ' | sort | uniq -cd | sort -nr | grep -v '^ *1 '

Làm thế nào để bật và tắt tường lửa trong CentOS 7

Khi cần setup csf hoặc một số mod khác có yêu cầu Start and Enable – Stop and Disable Firewalld.

firewall

Sau đây là một số lệnh cơ bản.

Enable Firewalld

systemctl enable firewalld

Start Firewalld

systemctl start firewalld

Check the Status of Firewalld

systemctl status firewalld

Disable Firewalld

systemctl disable firewalld

Stop Firewalld

systemctl stop firewalld

Check the Status of Firewalld

systemctl status firewalld