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à...

16 tháng 5, 2014

An toàn với các URL shortener



Ngày nay, việc sử dụng các liên kết dạng rút gọn đang trở nên phổ biến. Thay vì bạn phải cung cấp cho người dùng những url dài ngoằng và phức tạp thì thông qua dịch vụ url shortener này, bạn sẽ có những địa chỉ liên kết ngắn gọn và dễ nhớ. Tuy nhiên đây cũng trở thành công cụ cho kẻ xấu lợi dụng để lừa người dùng.
Với các url shortener, người dùng thông thường sẽ không có cách nào để kiểm tra xem liên kết này có thực sự an toàn hay không và thực sự biết là liên kết này đang dẫn tới đâu (có thể là một trang quảng cáo hoặc đưa bạn tới một liên kết tải phần mềm mã độc,...).
Trong bài viết này, tôi sẽ giúp bạn một số thủ thuật để nhanh chóng xem được thông tin các liên kết này trước khi quyết định có ghé thăm trang gốc thực sự của link hay không.
Dịch vụ bit.ly
Thông thường, các liên kết sử dụng dịch vụ của bit.ly sẽ có dạng http://bit.ly/RbQAC trong đó chuỗi RbQAC là do dịch vụ bit.ly sinh ra.
Để xem thông tin chi tiết và liên kết, bạn hãy copy địa chỉ này bằng cách bấm chuột phải vào liên kết và chọn “Copy link location” và dán lên trình duyệt. Sau đó trên thanh địa chỉ của trình duyệt, bạn thêm dấu “+” vào cuối link (khi đó link sẽ có dạng http://bit.ly/RbQAC+) và nhấn enter để xem.
Dịch vụ tinyurl.com
Thông thường, các liên kết sử dụng dịch vụ của tinyurl sẽ có dạng tinyurl.com/hmmmplay trong đó chuỗi hmmmplay là do dịch vụ tinyurl sinh ra.
Để xem thông tin chi tiết và liên kết, bạn hãy copy địa chỉ này bằng cách bấm chuột phải vào liên kết và chọn “Copy link location” và dán lên trình duyệt. Sau đó trên thanh địa chỉ của trình duyệt, bạn thêm cum “preview” vào đầu link (khi đó link sẽ có dạng http://preview.tinyurl.com/hmmmplay) và nhấn enter để xem.
Dịch vụ goo.gl
Thông thường, các liên kết sử dụng dịch vụ của goo.gl sẽ có dạng goo.gl/8wTc trong đó chuỗi 8wTc là do dịch vụ goo.gl sinh ra.
Để xem thông tin chi tiết và liên kết, bạn hãy copy địa chỉ này bằng cách bấm chuột phải vào liên kết và chọn “Copy link location” và dán lên trình duyệt. Sau đó trên thanh địa chỉ của trình duyệt, bạn thêm dấu “+” hoặc cụm “.info” vào cuối link (khi đó link sẽ có dạng goo.gl/8wTc+ hoặc goo.gl/8wTc.info) và nhấn enter để xem.

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 ]

07 tháng 5, 2014

Cơ bản về tường lửa trên Linux với Iptables

Bài viết này mình chỉ tập trung vào một số kiến thức cơ bản về tường lửa trên Linux với ứng dụng Iptables.
Trước khi đi vào bài viết, có một số note trước khi bắt đầu bạn cần lưu ý:
  • Nguyên tắc áp dụng luật trên Iptables: áp dụng theo thứ tự từ trên xuống, nếu không tìm thấy luật nào thì chuyển sang dòng tiếp theo, nếu khớp với một luật thì iptables sẽ áp dụng luật đó và ngừng kiểm tra dòng tiếp theo.
  • Để sao lưu các luật trong iptables ta dùng lệnh service iptables save, tập tin sao lưu mặc định sẽ nằm ở /etc/sysconfig/iptables.
  • Để khôi phục các luật trong iptables ta dùng lệnh  iptables-restore < /etc/sysconfig/iptables.
Bây giờ ta bắt đầu đi vào tìm hiểu.
Iptables bao gồm 3 tập tin là:
  • /etc/init.d/iptables – là kịch bản điều kiển bao gồm start|stop|restart và save.
  • /etc/sysconfig/iptables – Vị trí sao lưu luật.
  • /sbin/iptables – ứng dụng chạy.
Iptables bao gồm 3 bảng:
  • Filter
  • NAT
  • Mangle
Hiện tại, iptables bao gồm 4 chain:
  • INPUT: dành cho các luồng đi vào hệ thống
  • OUTPUT: dành cho các luồng đi ra từ hệ thống
  • FORWARD: dành cho các luồng đi qua hệ thống từ các giao diện khác (?)
  • RH-Firewall-1-INPUT: luồng do người dùng tự định nghĩa.
Lưu ý: Các thông tin ở trên có thể hơi khác biệt trên các phiên bản hệ điều hành khác nhau.
Để bật, tắt hoặc khởi động lại iptables ta dùng các lệnh như sau:
# /etc/init.d/iptables start 
# /etc/init.d/iptables stop
# /etc/init.d/iptables restart
Để yêu cầu mỗi khi khởi động lại hệ điều hành, iptables tự động được bật ta chạy lệnh sau:
#chkconfig --level 345 iptables on
Để sao lưu các luật trong iptables ta dùng lệnh sau:
#service iptables save
Mặc định dữ liệu sau lưu sẽ nằm tại /etc/sysconfig/iptables. Dữ liệu này có thể dùng để phục hồi lại cho iptables sau này.
Để kiểm tra trạng thái của iptables ta dùng lệnh sau, với -L là liệt kê danh sách luật, -n là hiển thị dưới dạng số, -v là hiển thị chi tiết:
[root@tecmint ~]# iptables -L -n -v

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    6   396 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 5 packets, 588 bytes)
 pkts bytes target     prot opt in     out     source               destination
Để thêm các đánh dấu dòng khi hiển thị trạng thái của iptables ta dùng thêm tùy chọn --line-numbers. Với tham số này ta có thể sử dụng số dòng để thêm, bớt hoặc xoá các luật chỉ định.
[root@tecmint ~]# iptables -n -L -v --line-numbers

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       51  4080 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 45 packets, 5384 bytes)
num   pkts bytes target     prot opt in     out     source               destination
Để xóa toàn bộ luật trong iptables ta dùng lệnh sau:
[root@tecmint ~]# iptables -F
 Xóa hoặc chèn thêm một luật. Trước tiên ta cần phải hiểu sơ qua các luật trong iptables. Lênh dưới đây sẽ hiển thị tất cả các luật trong INPUT, OUTPUT của iptables, các thông số này sẽ giúp ta có thể dễ dàng xóa hoặc thêm các luật mới:
[root@tecmint ~]# iptables -L INPUT -n --line-numbers

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

[root@tecmint ~]# iptables -L OUTPUT -n --line-numbers
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Giả sử ta muốn xóa luật thứ 5 trong INPUT, ta phải nhập lệnh sau:
[root@tecmint ~]# iptables -D INPUT 5

Giả sử ta muốn thêm một luật vào giữa luật số 4 và 5 của INPUT ta dùng lệnh sau:
[root@tecmint ~]# iptables -I INPUT 5 -s ipaddress -j DROP
Trên đây là những kiến thức cơ bản với iptables. Để có thể hiểu thêm chi tiết về Iptables tôi sẽ mạn phép trình bày ở một bài viết khác.