Cách mở và đóng cổng (port) trên Amazon EC2

Nếu đợi mãi mà không kết nối được đến máy ảo EC2 (Elastic Computing Cloud), trước hết hãy kiểm tra cổng (port) và mở cổng! Sở dĩ vậy là vì…

Ngay từ khi tạo máy ảo (instance) EC2 mới, Amazon Web Services (AWS) đã áp dụng một thứ gọi là security group (“nhóm an ninh”) lên máy ảo này. Ban đầu, máy ảo EC2 hoàn toàn không được mở cổng kết nối nào với môi trường Internet bên ngoài. Security group được áp dụng lên nó chứa các luật mở cổng. Trong quá trình tạo máy ảo, AWS cho phép bạn xem và thực hiện các thay đổi cần thiết cho security group, nhưng có vẻ bạn đã bỏ qua việc đó mất rồi!

Đừng lo, bạn có thể thay đổi lại security group tương ứng với instance bạn đã tạo, để mở cổng trên máy ảo, cho phép bạn kết nối đến máy ảo đó, qua cổng bạn cần. Nếu ban đầu bạn không có thay đổi gì, thì security group được áp dụng cho instance EC2 bạn cần kết nối đã chứa sẵn luật mở cổng SSH (22) cho bất cứ địa chỉ IPv4 nào kết nối đến. Ví dụ, bây giờ bạn mới cài xong một phần mềm server, nó có trang quản trị riêng truy cập được bằng trình duyệt web qua cổng 8080, và bạn loay hoay không tìm được cách vào, trong khi phần mềm tường lửa thì bạn đã cài đâu…

Bạn hãy sử dụng trình duyệt, mở trang quản lý dịch vụ EC2 lên. Mở tiếp mục Instances, giao diện sẽ như trong hình dưới. Bạn ấn chọn máy ảo, rồi nhìn xuống tab Description phía dưới.

Trang Instances đầy đủ nằm trong trang quản lý dịch vụ EC2

Cuộn tab đó xuống, bạn sẽ nhìn thấy một dòng Security groups ghi kèm tên security group đang áp dụng cho riêng máy ảo được chọn, kèm theo một đường link View inbound rules để tiện xem các luật mở cổng cho từng địa chỉ IP nhất định chuyển yêu cầu và dữ liệu vào máy. Bạn ấn vào tên security group để chuyển đến mục Security Groups với group đó được chọn sẵn.

Trông giao diện sẽ như thế này. Chú ý hai tab InboundOutbound. Tab Inbound chứa các luật mở cổng như mình đã tả ở trên, tab Outbound thì chứa các luật mở cổng cho máy ảo gửi yêu cầu và dữ liệu ra ngoài, tới các địa chỉ IP nhất định.

Giao diện Security Groups của EC2, với security group được chọn. Chú ý hai tab Inbound và Outbound.

Bây giờ bạn muốn kết nối đến máy ảo qua cổng 8080, bạn hãy ấn chọn tab Inbound và ấn nút Edit để sửa luật tại đó. Một hộp thoại xuất hiện, trong đó là danh sách các luật trong tab đó.

Hộp thoại sửa luật mở cổng trong security group

Chi tiết về các cột:

  • Type: Loại luật. Có một số loại được định nghĩa sẵn ứng với một số loại kết nối như HTTP, HTTPS, SSH chẳng hạn. Có một số loại luật ứng với các phần mềm hay được sử dụng trên server. Các loại All mở rộng toàn bộ cổng cho một số loại kết nối, cá biệt có All traffic là mở toàn bộ cổng cho bất cứ kết nối nào và mình không khuyến khích chọn cái đó. Các loại Custom cho phép mở một hoặc một dãy cổng nhất định đối với một số loại kết nối, trong đó cá biệt là Custom Protocol dành cho kết nối sử dụng giao thức đặc biệt nào đó.
  • Protocol: Giao thức kết nối.
  • Port Range: Dãy cổng. Bạn có thể điền một số thứ tự cổng đơn lẻ, hoặc một dãy cổng dưới dạng x-y trong đó xy đều là số nguyên dương nằm trong đoạn từ 0 đến 65535, và x nhỏ hơn y.
  • Source: Nguồn, ý chỉ các IP gửi yêu cầu và dữ liệu đến. Ở tab Outbound thì cột này được thay tên bằng Destination, dùng để chỉ các IP mà máy ảo được phép gửi yêu cầu và dữ liệu đi. Có hai ô:
    • Ô bên trái cho phép bạn chọn một tuỳ chọn về dãy IP: Custom (tuỳ chọn), anywhere (từ bất cứ địa chỉ IP nào), my IP (địa chỉ IP của chính bạn).
    • Nếu bạn chọn Custom ở ô trái, thì ô bên phải cho phép bạn điền một địa chỉ IP đơn lẻ hoặc một dãy IP. Cách ghi IP đơn lẻ và dãy IP được quy định cụ thể tại trang này.
  • Description: Mô tả luật. Cái này không bắt buộc, nhưng nhờ cột này mà bạn có thể dễ dàng tìm lại luật để chỉnh sửa khi cần.

Để máy bạn có thể kết nối đến máy ảo bằng trình duyệt qua cổng 8080, bạn ấn nút Add Rule để bổ sung luật. Một dòng luật mới xuất hiện, bạn chọn và điền các thông số như sau:

  • Type: Custom TCP Rule. Trình duyệt luôn sử dụng giao thức TCP để vào trang web với giao diện đồ hoạ. Chọn như vậy, phần Protocol sẽ được cố định là TCP luôn.
  • Port Range: 8080
  • Source: Ô bên trái, bạn chọn My IP. Ô bên phải sẽ hiển thị luôn địa chỉ IP hiện tại của bạn được viết theo đúng quy định. Bạn cũng có thể chọn Anywhere để cho phép bất cứ IP nào kết nối sử dụng giao thức TCP qua cổng 8080.

Sau khi chỉnh sửa xong luật, bạn ấn nút Save để lưu lại danh sách luật. Luật mới được thêm vào sẽ được áp dụng gần như ngay lập tức, và bạn có thể sử dụng trình duyệt để vào trang quản trị của phần mềm server qua cổng 8080 rồi.

Sau khi thiết lập xong cho phần mềm server qua trang quản trị đó và thoát ra khỏi đó, bạn nên đóng lại cổng 8080 để tránh kẻ khác tò mò phá hoại lung tung. Bạn vào lại tab Inbound như mình đã hướng dẫn ở trên, ấn nút Edit để sửa, tìm đến dòng luật bạn mới thêm vào rồi ấn nút X ở cuối dòng để xoá luật đó. Ấn Save, và thế là cổng 8080 được đóng lại!

Hi vọng hướng dẫn trên sẽ có ích cho bất cứ ai mới tiếp xúc với dịch vụ EC2. Bài này cũng là một bài bổ sung cho hướng dẫn cài đặt OpenLiteSpeed trên EC2 mà sắp tới mình sẽ đăng.

Cảm ơn các bạn đã đọc bài này nhé! Giờ mình phải đi ngủ đây, mai mình sẽ hoàn thiện nốt bài hướng dẫn đó.

Trả lời