Quản lý tài khoản đặc quyền với CyberArk

Hôm nay đối tác CyberArk giới thiệu và đào tạo công ty mình chuẩn bị sử dụng CyberArk để quản lý tài khoản đặc quyền. Theo mình hiểu CyberArk cung cấp một giải pháp quản lý và bảo mật hạ tầng CNTT của doanh nghiệp nói chung. Bao gồm các thiết bị phần cứng, hạ tầng mạng, các server (vật lý và ảo hóa), các data center, cơ sở dữ liệu…

Trước đây đối với các công ty mà mình từng làm việc quản lý server khá thủ công. Mặc dù một số nơi có sử LDAP để quản trị user nhưng đối với mỗi server thì đều phải tự cài đặt và quản trị riêng cho nó. Đội ngũ phần cứng nắm giữ một user admin có quyền cao nhất và riêng biệt. Sau đó trưởng mỗi server sẽ được cung cấp một user admin cũng có quyền cao nhất sau đó là các nhân viên khác có quyền thấp hơn. Như vậy đối với mỗi server việc quản lý sẽ độc lập, từng người dùng phải server và tài khoản của mình. Như mình một lúc quản lý dưới chục server đã rất hay bị quên và thường xuyên phải dùng chung một mật khẩu duy nhất. Biết là thiếu tính bảo mật nhưng không còn cách nào khác, lưu ra một nơi riêng cũng không an toàn. Lưu trạng thái đăng nhập thì lại càng không an toàn nữa. Nói chung là khá bất cập.

Hơn nữa với việc quản lý cũ việc tra lại lịch sử thao tác tới server là hoàn toàn bất khả thi. Việc truy xuất thời gian đăng nhập đã là khó khăn, việc xem người dùng làm những gì thì hầu như không thể nào biết được.

CyberArk là giải pháp hữu hiệu có thể đáp ứng hầu như hoàn toàn cách quản lý trên. CyberArk được cài đặt trên ít nhất 1 server để có thể quản lý các tài khoản đặc quyền riêng. Mặc dù mới chỉ được giới thiệu và đào tạo nhưng mình có thể thấy được một số ưu nhược điểm như sau:

  • CyberArk được cài đặt trên server riêng và bán licensen theo số lượng user của hệ thống để thực hiện thao các trên các server.
  • Người dùng CyberArk có thể được cung cấp tài khoản riêng biệt hoặc sử dụng LDAP để xác thực như xác thực email, xác thực vào máy tính cá nhân, xác thực wifi công ty…
  • Từ CyberArk người dùng không phải nhớ bất kỳ IP cũng như tài khoản server nào. Tất cả sẽ được hiển thị hết trong danh sách các server được phép sử dụng.
  • CyberArk không chỉ quản trị server mà còn quản trị được nhiều các phần mềm khác nhau. CyberArk có tác dụng như là một server trung gian, phần mềm trung gian. Người dùng qua đó xác thực và sử dụng như trên chính thiết bị của mình.
  • Ví dụ remote hoặc SSH vào server thì nó đứng ở trung gian xác thực mình. Mình chỉ cần bấm vào là remote được luôn, không cần gõ mật khẩu hoặc tài khoản gì cả.
  • Ví dụ connect phần mềm quản trị Database Oracle là Toad. Bình thường máy cá nhân mình phải cài Toad để kết nối tới Oracle. Khi dùng CyberArk thì trên server cài CyberArk cũng phải cài Toad. Khi mình đăng nhập vào CyberArk, tìm đến phần Toad thì mình chỉ cần chọn, CyberArk sẽ tự động mở Toad ở máy mình, xác thực qua đó là mình đã có thể sử dụng được.
  • CyberArk tiến hành quay lại màn hình toàn bộ các thao tác của người dùng tác động lên server. Vì là đi qua nó nên nó bắt được toàn bộ các sự kiện click, các cửa sổ được mở, các lệnh được gõ vào server. Nó lưu lại vừa dưới dạng file text vừa dưới dạng video để người quản trị cao hơn có thể xem lại.
  • Vì nó có thể ghi nhận được các thao tác nên nó hoàn toàn có thể can thiệp được những lệnh, thao tác nguy hiểm hoặc không được phép lên hệ thống. Nó có thể quyết định không thực thi hoặc kết thúc phiên làm việc ngay lập tức.
  • Đối với các server đặc biệt, nó còn có tính năng yêu cầu quyền truy cập để cấp trên có thể phê duyệt thời gian vào để làm việc. Việc này rất tốt để lên kế hoạch bảo trì hoặc nâng cấp hệ thống.
  • Mặc dù test qua nhưng có một số vấn đề mà nó chưa thể xử lý được ngay cần phải check lại:
    — Đối với Linux, công việc thường ngày khi SSH vào hệ thống thì thường xuyên phải thay đổi vai trò lúc thì user thường lúc thì user root. Hiện tại nó không cho phép sự thay đổi này. Nhưng họ nó có 1 add-on cho phép làm việc này nên để nó test trước và thông tin lại.
    — Đối với Window, mỗi user thường tạo ra các schedule thực hiện các công việc khác nhau. Việc đổi pass liên tục sau mỗi phiên sẽ gây các schedule không thực hiện được cũng như những người khác muốn sửa sẽ rất khó khăn. Nó sẽ check lại giải pháp.
    — Đối với cả Linux và Window, nếu người dùng run một bath hoặc crontab, schedule thực thi các lệnh nguy hiểm thì CyberArk cũng không phát hiện và ngăn chặn được. CyberArk chỉ phát hiện được khi người dùng gõ hoặc dùng chuột. Cái này thì là hạn chế, nó không thể có giải pháp được.

Tất nhiên sâu, chi tiết và thực tế thì cần tìm hiểu và sử dụng thêm. Những cái này chỉ mà mới nhận định ban đầu sau một buổi nghe giới thiệu và đào tạo(chưa được thực hành).

Nhìn chung là khá tiên tiến, mặc dù nó lưu vết và quản trị rất khắt khe gây cảm giác khó chịu và luôn bị soi mói thao tác. Nhưng buộc phải chấp nhận thôi nhất là đối với các server product cần phải làm vậy để quy trách nhiệm cũng như đảm bảo an toàn hệ thống. Các công ty vừa và lớn nên mua và sử dụng vì nó cũng nằm một phần trong tiêu chuẩn ISO.

Tự động chuyển link qua index.html

Số là mình mua một tên miền và thuê một host của BKNS. Trên đó mình tạo khá nhiều website. Mặc định khi truy cập vào tên miền thì nó sẽ vào file index.html ở thư mục gốc.

Với mỗi thời điểm mình thích lên thì để file index.html chuyển đến các website khác nhau của mình. Mình cũng không muốn đặt subdomain để chuyển tiếp mà muốn trỏ trực tiếp vào các thư mục khác nhau chứa các website hoặc tính năng khác nhau. Nhưng đối với tên miền khác mình thì mình đặt luôn website ở thư mục gốc nên mình sẽ luôn mặc định vào website này.

Lan man đủ rồi. Để chuyển tự động sang một website qua file index.html mình sử dụng code sau:

 

<html>
<head>
<meta http-equiv="refresh" content="0;url=https://trituenhantao.info/posts">
</head>
<body>
Trí tuệ nhân tạo
</body>
</html>

Như vậy mình đang cấu hình khi truy cập tên miền trituenhantao.info sẽ tự động chuyển tiếp sang trang https://trituenhantao.info/posts

Tham số 0 kia là chuyển ngay, nếu mình muốn chờ một khoảng thời gian là t giây nào đó thì mình nhập vào.

Tất nhiên là có nhiều cách khác nhau nhưng mình lựa chọn cách Tự động chuyển link qua index.html cho đơn giản nhất.

Quản lý phiên bản database với LiquiBase

Việc quản lý phiên bản đối với code đã xuất hiện từ rất lâu và đã có rất nhiều các phần mềm dành cho nó. Theo mình biết và đã từng sử dụng đó là

  • SVN (tiếp cận khá nhiều, coi như đầu tiên, khá cũ và có một số nhược điểm nhưng dễ dùng, phù hợp với các dự án về C#)
  • GIT (cái này khá tiên tiến, mạnh mẽ, càng ngày càng nhiều người dùng, Gitlab, GitHub…)
  • Source Safe (Visual Source Safe) được mua và tiếp tục phát triển bới Microsoft. Cái này mình mới nghe qua chứ chưa dùng bao giờ.

Đó là với code, thế với database thì như thế nào? Trước đây đúng là thuộc dạng 5 mức ngu dốt luôn. Đồng nghiệp hỏi làm mình đứng hình vì còn chưa bao giờ nghĩ đến nó cơ. Tìm hiểu thêm thì biết đúng là nó có tồn tại nhưng còn rất sơ khai. Mặc dù rất quan trọng nhưng lại rất sơ khai do tính đặc thù và khó khăn của nó.

Đại loại là trong quá trình phát triển phần mềm, nhiều phiên bản được nâng cấp và cải thiện, những thay đổi nhỏ thì chỉ cần sửa code nhưng với những thay đổi lớn thì có thể phải sửa cả việc thiết kế cơ sở dữ liệu. Để quản lý việc sửa đổi này thì ta cũng phải có công cụ tương đương như việc quản lý version của code.

Trước đây công ty cũ mình mua phần mềm nước ngoài thì khi nâng cấp nó sẽ gửi cho mình bản code nó đã build. Còn về phần mềm nó sẽ vứt do một loại các kettel Pentaho để chạy theo tuần tự để nâng cấp version cho Database, gọi với cái tên mỹ miều là Migrate dữ liệu.

Tìm hiểu qua thì mình thấy 3 cái tên được nhắc đến nhiều là:

  • SQL Server Data Tools: Cái này của Microsoft, mới nghe qua tên thôi, chắc chỉ support cho SQL Server
  • Flyway: Mới nghe đến tên
  • Liquibase: Thằng này hiện công ty mình đang dùng và được nghe nói đến nhiều nhất. Đang dùng nó để thay đổi với Oracle đi kèm là code ứng dụng bằng Java.

Đối với mình thì hiện tại chưa phải dùng đến nó nhưng chắc chắc sẽ tìm hiểu kỹ hơn về vấn đề này. Đặc biệt là đối với Liquibase để xem cách sử dụng với các trường hợp sử dụng nó như thế nào.

Hiện tại đối với mình quản lý thủ công bằng SVN hoặc GIT đó là viết ra các script thay đổi về DB để lưu trữ lại thôi. Phức tạp và cả team, nhiều team dùng thì chưa nghĩ đến.

Sự cố về proxy đối với hệ thống

Hệ thống bên mình trao đổi dữ liệu với đối tác thông qua webservice. Ngoài việc sử dụng VPN site to site với đối tác, Virtual IP và tường lửa để bảo mật thông tin. Vì bên mình sử dụng chính Database Oracle để gọi webservice của đối tác nên để tránh rủi ro thì giữa Database và đối tác sẽ sử dụng một con server khác cài Proxy để làm trung gian.

Con database trước khi gọi webservice thì phải tiến hành gọi hàm set proxy tới địa chỉ server proxy kia. Con Proxy có nhiệm vụ làm trung gian gửi thông tin đi và đón nhận từ webservice đối tác trả về rồi đưa ngược trở lại database.

“Câu hỏi: Không rõ nếu mình không dùng database để gọi trực tiếp webservice đối tác nữa mà dùng một server khác (như con proxy) có code xử lý việc lấy thông tin từ webservice để cập nhật vào DB của mình thì liệu có an toàn không?”

Sự cố: Sự cố xảy ra do mình suy nghĩ, đặt vai trò máy tính của mình như là con Database, tiến hành set proxy cho máy tính của mình là địa chỉ IP của con proxy sau đó gọi webservice để kiểm tra. Bởi vì máy tính của mình cũng như database không được trực tiếp truy cập webservice mà phải thông qua con Proxy. Do máy tính của mình có nhiều các kết nối – ứng dụng khác nhau (thư điện tử, skype, trình duyệt…) gây sập con Proxy kia.

Một anh team đội mình nói làm thế không an toàn, không ai làm thế mà không nêu rõ lý do. Còn anh bên mạng thì nói không được làm thế nhưng về nguyên tắc không thể chết Proxy được. Bởi các request ngoài webservice đối tác sẽ không có kết quả phản hồi vì Proxy không trả lời những thứ nó không biết là gì. Mình ậm từ sẽ không làm vậy nữa nhưng cũng không thỏa mãn về cách trả lời như vậy. Mình muốn nghe giải thích nhưng có vẻ mọi người không muốn chia sẻ kiến thức???

Mình cần phải đọc thêm về phần này, thử nghiệm và hiểu rõ nhất có thể.

Giới hạn địa chỉ IP dùng MaxMind

Dịch vụ của website của mình chủ yếu dành cho người dùng ở Việt Nam và một số cộng đồng lớn người Việt ở nước ngoài. Do vậy website mình phải public ra internet.

Nhưng gần đây website của mình bị một số lượng lớn truy cập ở tận đẩu tận đâu mà chắc chắn rất ít có người Việt tại đó truy cập. Các truy cập đáng ngờ này đều dò quét lỗ hổng của website hoặc thực hiện việc tấn công từ chối dịch vụ DDOS. Mình đã chặn những IP này nhưng thấy nó đổi liên tục mà chặn không xuể.

Tra IP với MaxMind
Tra IP với MaxMind

Được mọi người giới thiệu sử dụng MaxMind để tiến hành giới hạn các IP theo khu vực địa lý. MaxMind là một công ty hàng đầu trên thế giới cung cấp thông tin về địa chỉ IP. MaxMind có lượng data lớn nhất về IP trên thế giới và được cập nhật liên tục. Nó có 2 phiên bản, miễn phí thì ta cần host riêng data về server của mình và hàng tháng sẽ có bản cập nhật data, bản trả phí thì sẽ sử dụng chính IP của MaxMind được cập nhật dữ liệu liên tục và mới nhất.

Mình cũng chưa tìm hiểu kỹ về thằng MaxMind này nhưng cứ lưu lại để dần tìm hiểu sau. Từ phần này website của mình cũng có thể sử dụng nó để nâng cao trải nghiệm của người dùng. Ta thu thập thông tin IP của người truy cập website, từ đó phân tích lượng người dùng của từng vùng, từng khu vực. Để có thể cân đối, đánh giá hành vi cũng như hướng tập trung đối tượng sử dụng cho tốt. Cũng như nếu cần làm cân bằng tải (Load Balancer) thì cũng lựa chọn các địa điểm để đặt server sao cho hợp lý để người sử dụng dịch vụ web được nhanh nhất.