Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

Hiển thị các bài đăng có nhãn hack. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn hack. Hiển thị tất cả bài đăng

13 tháng 5, 2014

DdoS – Distributed denial-of-service attack – Tấn công từ chối dịch vụ phân tán (P1)

Tấn công DdoS là hình thức nhiều máy tính (hệ thống) tổng tấn công vào một mục tiêu nào đó, từ đó gây hiện tượng quá tải cho mục tiêu dẫn tới mục tiêu không thể đáp ứng dịch vụ cho người dùng thông thường. Hay người đọc có thể hiểu nôm na như nhà bạn nằm trong một cái ngõ. Thông thường thì cái ngõ này có khả năng cho phép mười ông ra vào cùng lúc. Tuy nhiên có một nhóm kẻ xấu muốn phá hoại, không cho ai tới thăm nhà bạn cả. Và chung tập trung một nhóm người lại rồi thi nhau đi ra đi vào cái ngõ nhà bạn khiến cho cái ngõ chật cứng và dĩ nhiên lúc đó thì bạn chả còn ông khách chân chính nào đến thăm được nữa.
Vậy DdoS được thực hiện như thế nào?
Ban đầu, kẻ xấu sẽ tân dụng những lỗ hổng của một mạng máy tính nào đó để biến nó thành một “vật chủ chính”, DdoS master. Từ vật chủ này, hay còn được gọi là botmaster, nó sẽ tìm cách lây nhiễm sang cá hệ thống khác bằng cách lợi dụng các lỗ hổng bảo mật thông qua việc phát tán các malware. Bằng cách này, kẻ tấn công có thể ra lệnh cho các máy bị nhiễm tham gia vào cuộc tấn công vào một nạn nhân cụ thể.
Hiện có hai kiểu tấn công DdoS: tấn công mạng trung tâm – network-centric attack – là kiểu tấn công gây quá tải cho một dịch vụ bằng cách chiếm băng thông và kiểu tấn công lớp ứng dụng – application-layer attack – là kiểu tấn công gây quá tải cho một dịch vụ hoặc cơ sở dữ liệu mà ứng dụng của bạn cần sử dụng. Việc gây ngập lụt cho mục tiêu bằng các gói dữ liệu sẽ khiến cho mục tiêu mất đi khả năng đáp ứng. Thông thường, khi xảy ra một cuộc tấn công DdoS chúng ta chỉ tập trung vào nạn nhân trực  tiếp của cuộc tấn công nhưng thực tế nạn nhân của nó lại bao gồm cả hệ thống đang bị điều khiển, mà dân tình mạng gọi chúng bằng cái tên khá thú vị “zombie” hay “bot” và tập hợp này thường được gọi là một “botnet”
Thế bạn có biết Ddos hoạt động như nào hay không?
                Ý tưởng ở đây rất đơn giản. Kẻ tấn công sau khi xác định được mục tiêu sẽ ra lênh cho đội quân “zombie” của mình “liên hệ” với “nạn nhân” theo kiểu hỏi “Ê chủ quán, cho bọn anh làm vài cốc bia nhé?”, thực tế nó chỉ hỏi thế thôi nhưng không thèm mua đâu, chỉ khổ thân ông chủ quán tưởng thật chạy ra chạy vào phục vụ nhiệt tình. Với thao tác này, kẻ tấn công sẽ dần dần hoặc đột ngột gia tăng lượng truy cập vào hệ thống nạn nhân khiến nó bị giảm khả năng phục vụ hoặc thậm chí nghiêm trọng hơn là bị “gục” hoàn toàn. Đây được gọi là Ddos.
                Đôi khi, kẻ tấn công có thể lợi dụng cả các máy bình thường – ta tạm hiểu như một người đi đường ngây thơ không biết gì – tham gia vào cuộc tấn công. Việc này được thực hiện như sau: kẻ tấn công tiến hành gửi một lệnh khởi tạo tấn công tới đội quân zombie của mình; mỗi một tên zombie này sẽ bắt đầu gửi các yêu cầu tới một máy tính thông thường khác, được gọi là các máy “phản xạ”; khi các máy phản xạ này nhận được yêu cầu, chúng lại nghĩ rằng thực ra yêu cầu này là từ máy nạn nhân của cuộc tấn công gửi tới (do các zombie đã đánh lừa chúng) và chúng sẽ hồn nhiên gửi thông tin ngược lại cho nạn nhân. Với cách tấn công này, kẻ tấn công có thể lợi dụng sức mạnh của các máy phản xạ để gây ngập lụt cho mục tiêu của mình. Nếu đứng từ góc nhìn của nạn nhân, thì thực tế nó đang bị tấn công bởi chính các máy phản xạ chứ không phải từ đội quân zombie kia. Còn từ góc nhìn của các máy phản xạ, thì nó là nạn nhân của các truy gói tin truy vấn. Như thế, đội quân zombie kia gần như ẩn mình hoàn toàn trong cuộc tấn công.
Ddos không chừa một ai.
Các nạn nhân của Ddos cũng có xuất hiện một số ông lớn. Ví dụ Microsoft cũng đã từng đón nhận một cuộc tấn công Ddos có tên gọi là MyDoom. Kẻ tấn công thường nhắm tới những hệ thống lớn như Amazone, CNN, Yahoo và eBay. Ddos gây ra những hậu quả từ rất nhẹ cho tới cực kì khủng khiếp:
  • ·         Ping of Death: các máy tấn công sẽ tạo ra một lượng khổng lồ các gói tin và gửi tới nạn nhân.
  • ·         Mailbomb: các máy tấn công gửi một lượng lớn thư điện tử gây nghẽn máy chủ thư.
  • ·         Smurf Attack: các máy tấn công gửi các thông điệp ICMP (Internet Control Message Protocol – Giao thức tin nhắn điều khiển mạng) tới máy chủ phản xạ - reflector.
  • ·         Teardrop: các máy tấn công gử các mảnh dữ liệu bất hợp pháp – hay gọi là dữ liệu lộn xộn, và hệ thống nạn nhân sẽ cố gắng ghép các mảnh này lại thành một gói tin có nghĩa và dẫn tới bị crash – chắc là ghép mãi mà không được nên bị xì troét.
      Một khi đã bị tấn công Ddos, người quản trị chỉ có thể làm một số việc để giảm thiểu hậu quả, ví dụ như giới hạn lưu lượng cho phép đi vào máy chủ của mình, nhưng điều này cũng đồng nghĩa giới hạn cả các kết nối hợp pháp. Nếu người quản trị có thể xác định chính xác nguồn gốc của các máy tấn công cũng có thể tiến hành lọc luồng kết nối từ đó. Thật không may, các máy zombie có thể nằm khắp nơi trên thế giới, do đó không dễ dàng gì để thực hiện việc này.
Vậy kẻ tấn công đã tạo ra các zombie như thế nào? 
      Kẻ tấn công tiến hành biến các máy tính thành các zombie bằng cách sử dụng một chương trình nhỏ để lây nhiễm vào các máy này thông qua các lỗ hổng của hệ điều hành. Thực tế, những tên này không hẳn là những siêu nhân về máy tính mà thường chỉ là những kẻ không có kiến thức và kinh nghiệm lập trình ( thường được gọi là “script kiddies” do đây là những đối tượng có kĩ năng code rất tồi). Một số chuyên gia giám sát các botnet nói rằng đa phần các chương trình do các kiddies này tạo nên thường được làm rất cẩu thả.

     Để lây nhiễm, kẻ tấn công đầu tiên phải cài đặt được ứng dụng của mình vào máy nạn nhân. Các con đường lây nhiễm có thể là qua email, chia sẻ mạng ngang hàng hoặc thậm chí thông qua một website bình thường nào đó đã bị chúng kiểm soát. Phần lớn, kẻ tấn công sẽ tìm cách lừa nạn nhân tự nguyện cài các ứng dụng này lên máy. Ví dụ, bạn đã bao giờ thấy một cửa sổ hiện lên có một nút ghi là “No thanks” chưa? Hi vọng bạn đừng có bấm vào nó nhé – thường các nút này là một cách lừa đấy – Tôi đã từng có một anh bạn nghịch ngợm viết một ứng dụng, khi cài đặt, anh ta ghi rõ ràng lên màn hình một đoạn dài thông báo cho người dùng đây là một ứng dụng virus và người dùng có đồng ý cài không, thế mà nhiều bác vẫn nhắm mắt bấm Yes mới ghê. Như vậy thay vì tắt pop-up này thì bạn đang trực tiếp tải về một phần mềm độc hại.

        Một khi nạn nhân đã tải về ứng dụng, anh ta sẽ kích hoạt nó. Trong phần lớn trường hợp, người ta sẽ nghĩ đây là một ứng dụng gì đó. Có thể nó hiện ra là một tập tin ảnh, một clip hoặc một tập tin gì đó (do cái extension gây ra thôi). Khi nạn nhân mở tập tin này, sẽ chả có gì xảy ra cả. Nếu nạn nhân có cài ứng dụng diệt virus,… thì có thể sẽ nhận được cảnh báo. Không may là, một số người lại nghĩ đây có thể làm một tập tin hỏng nên không cài được và bỏ qua nó.

        Thực tế, chương trình đã tự đính nó vào một nơi nào đó của hệ điều hành để có thể khởi động cùng máy tính mỗi khi nạn nhân bật máy. Để tránh bị phát hiện, kẻ tấn công sẽ không sử dụng cùng một vị trí đặt ứng dụng của mình.

        Ứng dụng này có thể chứa một số câu lệnh để thực hiện một số công việc nào đó vào một thời điểm định trước hoặc cho phép kẻ tấn công điều khiển máy tính nạn nhân. Rất nhiều các ứng dụng dạng này sử dụng IRC (Internet Relay Chat), và thực tế có các cộng đồng botnet sử dụng mạng IRC để hỗ trợ nhau hoặc để chiếm các botnet của nhau.
                Và một khi đã bị nhiễm, các máy nạn nhân sẽ được kẻ tấn công mặc sức dày vò – tự do làm bất cứ điều gì hắn muốn. Đa phần kẻ tấn công sẽ chờ đợi khi người dùng bất cẩn nếu không hắn sẽ khiến người dùng phát hiện và hắn sẽ mất đi một chiến binh trong đội quân của mình.
[Trong phần tiếp theo tôi sẽ đề cập tới mối quan hệ giữa máy zombie và việc phát tán rác ]

26 tháng 3, 2012

Những lệnh Linux người quản trị cần biết (update 10-08-2021)

Phần này mình chỉ đề cập đến những câu lệnh cần thiết mà một người quản trị hệ thống Linux cần biết và nắm rõ. Nội dung diễn giải cho các lệnh được viết theo ý hiểu của tác giả thế nên các bạn không nên thắc mắc tại sao nó lại thế nhé. Các lệnh sẽ được sắp xếp theo thứ tự abc và sẽ được update dần theo thời gian.
A
1. Adduser command
  • Chức năng: Thêm user vào quyền sudo
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: adduser user_name sudo
B
C
1 - Chage command
  • Chức năng: Xem thông tin user trong hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: Có.
  •  Cấu trúc lệnh: 
    • chage -l user
    • chage -E yyyy-mm-dd user: Thay đổi thông tin hết hạn của user.
D
1 - Dig command
  • Chức năng: truy vấn các bản ghi trên DNS
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: dig [option] domain.com
    Trong đó:
    dig: tên lệnh
    domain.com: tên miền cần truy vấn
    Option: tùy chọn
  • Option bao gồm:
    mx: truy vấn bản ghi MX
    a: truy vấn bản ghi A
2 - dpkg-reconfigure:

  • Chức năng: cấu hình lại tham số một số biến môi trường.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: dpkg-reconfigure tên_tham_số
    Trong đó:
    dpkg-reconfigure: tên lệnh
    Tên tham số: có thể là tzdata(nếu muốn đổi timezone của máy), java (nếu muốn đổi các thông số liên quan tới java),....
 3 - date
  • Chức năng: xem thông tin thời gian trên hệ thống + chỉnh lại thông tin thời gian trên hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: date tham_số
    Trong đó:
    date: tên lệnh
    Tham số: 04 (Month) 12 (Day) 1600 (Time in 24hour) 2011 (Year). Ví dụ: 041216002011 sẽ đổi giờ hệ thống thành ngày 12 tháng 4 năm 2011 lúc 16h00 
4 - dpkg -l
  •  Chức năng: xem thông tin các gói đã cài đặt trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
5 - df:
  • Chức năng: Xem thông tin về dung lượng ổ đĩa trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
E
F
1 - fg command
  • Chức năng: đưa một tiến trình đang chạy từ chế độ background sang foreground
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: fg [process number]
    Trong đó:
    fg: tên lệnh.
    process number: số thứ tự của background process, xem thông qua lệnh jobs.
2 - fping command:
  • Chức năng: một kiểu ping nâng cao
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: không, phải cài thêm.
  • Cấu trúc lệnh: fping domain.com
    Trong đó:
    fping: tên lệnh
    domain.com: địa chỉ remote server
3 - find command:
  • Chức năng: tìm kiếm một tập tin, thư mục chỉ định trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: find [path...] [expression]
    Trong đó:
    find : tên lệnh.
    path: đường dẫn cần thực hiện tìm kiếm.
    expression: yêu cầu tìm kiếm
  • Vui lòng xem thêm với lệnh find --help
  • Ví dụ: find /opt/ -name "test*" sẽ tìm kiếm trong thư mục opt tất cả các file có tên bắt đầu là test.
G
1 - Gzip command:
  • Chức năng: nén và giải nén cho định dạng gz.
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc lệnh: gzip [option] filesource [filedestination]
    Trong đó:
    gzip: tên lệnh.
    option: các tùy chọn.
    filesource: file gốc
    filedestination: file đích.
  • option:
    d: giải nén
H
1 - Hostname command
  •  Chức năng: xem hostname của máy
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: hostname [option]
    Trong đó:
    hostname: tên lệnh
    option: các tùy chọn
2 - Hwinfo command:
  •  Chức năng: xem thông tin phần cứng của máy.
  • Hệ điều hành: Linux
  • Có sẵn: không.
  • Câu trúc lệnh: hwinfo [option]
I
1 - ifconfig command
  • Chức năng: xem thông tin card mạng của máy.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: ifconfig [option] tên_card_mạng
    Trong đó:
    ifconfig: tên lệnh
    option: tùy chọn
    tên_card_mạng: có thể là eth0, eth1, wlan0,..
J
K
1 - ssh-keygen
  • Chức năng: unknow
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh:
  • Ví dụ: keygen-shh -r : loại bỏ key của một host đã lưu trong hệ thống.
L
1 - lastlog comman
  • Chức năng: liệt kê danh sách các tài khoản đã từng đăng nhập vào hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lênh: laslog.
2 - ls command
  • Chức năng: xem thông tin của tập tin, thư mục trong hệ điều hành.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh:
    ls [options]
  • Options:
    -i : xem thông tin inode
    -l : xem dạng thông tin file dài
3 - ldd command:
  • Chức năng: xem các thư viện được sử dụng cho một ứng dụng trên Linux
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh: ldd [OPTION]... FILE...
  • Options:
4. last

  • Chức năng: Xem người dùng truy cập gần nhất trên hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: có.
  • Cấu trúc lệnh: last.

M
N
1 - nmap command:
  • Chức năng: Hiện tại mình hay dùng lệnh này để xem một remote server đang mở những cổng gì (ngoài ra còn khá nhiều các chức năng khác nhưng mình ít dùng nên không nêu ra ở đây)
  • Hệ điều hành: Linux, *nix
  • Có sẵn: không, phải cài thêm.
  • Cấu trúc lệnh: nmap [option] domain.com
    Trong đó:
    nmap: tên lệnh
    option: các tùy chọn
    domain.com: địa chỉ của remote server.
  • Option bao gồm:
    -p: chỉ quét các cổng chỉ định, ví dụ: nmap -p143 10.2.10.123 --> chỉ quét cổng 143 máy có địa chỉ 10.2.10.123
2 - nload command:
  • Chức năng: xem lưu lượng vào ra trên một card mạng
  • Hệ điều hành: Linux, *nix
  • Có sẵn: không, phải cài thêm
  • Cấu trúc lệnh: nload [option] card_name
    Trong đó:
    nload: tên lệnh
    [option]: các tùy chọn
    card_name: tên card, ví dụ eth0, eth1, wlan0,...
  • option:
    K: xem lưu lượng ở dạng kilobyte
    M: xem lưu lượng ở dạng MB
    G: xem lưu lượng ở dạng GB
    H: auto
    u: thiết lập kiểu đơn vị vào ra cho từng thành phần
    U: thiết lập kiểu đơn vị vào ra cho phần tính tổng lưu lượng
3 - nmblookup command
  • Chức năng: xem thông tin của một máy từ xa.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: nmblookup [option] địa_chỉ_máy
    Trong đó:
    nmblookup: tên lệnh.
    option: các tùy chọn
    địa_chỉ_máy: địa chỉ máy cần xem
  • Option: bao gồm
    a : xem tất cả mọi thông tin
4 - nohup:
  • Chức năng: giữ cho một tiến trình chạy ngay cả khi terminal bị tắt.
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc lệnh: nohup lệnh [tùy chọn] &
    Trong đó:
    nohup: tên lệnh
    lệnh: lệnh cần giữ.
    tùy chọn: các tùy chọn của lệnh cần giữ.
    &: đẩy lệnh cần giữ xuống chạy nền.
  •  Sau khi chạy, gõ ctrl + D để thoát khỏi màn hình ssh.
  • Ví dụ: để chạy lệnh nohup ta làm như sau:
  • nohup command &   # create nohup.out
    nohup command >/dev/null 2>&1 &   # doesn't create nohup.out 
     
O
P
1 - perldoc command
  • Chức năng: xem thông tin trợ giúp về các hàm, lớp trong ngôn ngữ Perl.
  • Hệ điều hành: Linux,*nix.
  • Có sẵn: không rõ.
  • Cấu trúc lệnh: perl Tên_hàm_lớp_cần_truy_vấn.
  • Ví dụ: perldoc File::Copy
2 - pidoff command
  • Chức năng: xem id của một tiến trình.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: pidof tên_chương_trình
3 - passwd
  • Chức năng: đổi mật khẩu của user.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: Có.
  • Cấu trúc lệnh: passwd
  • Trong đó option là:
    • l: loại bỏ password của người dùng.
Q
R
S
1 - ssh command
  • Chức năng: tạo một kết nối SSH tới một remote server
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc câu lệnh:
    ssh user@domain.com
    Trong đó:
    ssh: tên lệnh
    user: tên user cần kết nối trên remote server
    domain.com: địa chỉ ip hoặc domain của remote server
2 - stat command:
  • Chức năng: xem thông tin thống kê của một tập tin.
  • Hệ điều hành: Linux
  • Có sẵn: Có.
  • Cấu trúc câu lệnh:
    stat /đường/dẫn/tới/file.
3 - scp command:
  • Chức năng: Copy tập tin giữa hai máy tính
  • Hệ điều hành: Linux, Unix
  • Có sẵn: Có.
  • Cấu trúc câu lệnh:
    scp [option]  [[user@]host1:]file1 ... [[user@]host2:]file2
  • Trong đó:option là các tùy chọn
    • -P: Port sử dụng
T
1 - Top command
  • Chức năng: xem thông tin tiến trình và các tài nguyên hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: có
  • Cấu trúc lệnh: top
2 - Tail command:
  • Chức năng: xem nội dung một file.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: tail [option] path
    Trong đó:
    tail: tên lệnh
    option: các tùy chọn
    path: đường dẫn tới file cần xem.
  • Option bao gồm:
    f: xem nội dung file theo thời gian thực
    chữ số: xem số dòng cuối cùng của file đúng bằng số đã nhập vào.
3 - Traceroute command
  • Chức năng: rà tuyến đường của gói tin tới một địa chỉ đích
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: traceroute [option] địa_chỉ_đích
    Trong đó:
    traceroute: tên lệnh
    địa_chỉ_đích: địa chỉ máy đích cần tìm đường
    option: các tùy chọn của lệnh
4 - Tar command
  •  Chức năng: nén và giải nén tập tin, thư mục trong linux.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: tar [options] tên_file_nén tên_file_hoặc_thư_mục_cần_nén
    Trong đó:
    tar: tên lệnh
    options: các tùy chọn
  • ví dụ để nén một thư mục ta gõ lệnh tar -zcvf file.tar.gz /home/user/data
  • Để nén một thư mục ta dùng lệnh sau: tar -zcvf prog-1-jan-2005.tgz /home/jerry/prog
U
1 - uname command
  • Chức năng: xem thông tin  tổng quan về hệ điều hành
  • Hệ điều hành: dòng debian
  • Có sẵn: có
  • Cấu trúc lệnh: uname [option]
    Trong đó:
    uname: tên lệnh
    option là các tham số đầu vào.
  • Option có thể là:
    a : xem tất cả
2. Useradd command
  • Chức năng: tạo tài khoản mới cho hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh:  useradd [option] user_name
    Trong đó:
    user_name: là tên tài khoản cần thêm
    option là các tùy chọn
  • Ví dụ:
    useradd -e {yyyy-mm-dd} {username} - Thêm user và ngày user này sẽ bị hết hạn - useradd -e 2008-12-31 jerryuseradd -f {days} {username} - Thêm user và ngày hết hạn mật khẩu - useradd -e 2009-12-31 -f 30 jerry

V
W
1 - Whois command
  • Chức năng: tra cứu thông tin của một tên miền (thực ra theo đúng định nghĩa thì là tra cứu thông tin một đối tượng trong cơ sở dữ liệu RFC 3291)
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Không
  • Cấu trúc lệnh: whois [option] tên_miền
    Trong đó:
    whois: tên lệnh
    option: các tùy chọn
    tên_miền: tên miền cần tra cứu
X
Y
Z