Thebasics of secure admin privilege use with Unix
ByChadPerrin, TechRepublic | 2009/06/30 09:57:00
Đôikhi đáng giá để đi ngược về với những điều cơbản, và hôm nay chúng ta nhìn vào những điều cơ bảncủa việc sử dụng quyền ưu tiên quản trị an ninh trêncác hệ thống dạng Unix.
Sometimes,it’s worthwhile to get back to basics, and today we look at thebasics of secure administrative privilege use on Unix-like systems.
Bài được đưa lênInternet ngày: 30/06/2009
Lờingười dịch: Hầu hết các fan hâm mộ Microsoft Windows chorằng sở dĩ hệ điều hành GNU/Linux an ninh hơn Windows làvì Windows chiếm đa số thị phần. Lý lẽ đó chỉ làthứ ngớ ngẩn. Bản chất vấn đề nằm ở chỗ làtrong hệ điều hành GNU/Linux, người sử dụng thườnglàm những công việc hàng ngày bằng việc đăng nhập hệthống với một tài khoản bình thường, chứ không phảitài khoản của root (của người quản trị). Mà:
Với một tài khoản người sử dụng mà không có các quyền ưu tiên quản trị, thì tài khoản người sử dụng của bạn có thể bị tổn thương – nhưng kẻ phá hoại an ninh với sự truy cập tới nó thông qua cửa hậu được cài đặt này sẽ chỉ có thể truy cập chính xác tới được những gì mà tài khoản người sử dụng này có thể truy cập được.
Nếu bạn đăng nhập vào như một người sử dụng ở gốc (root) trong khi sử dụng Firefox, thì kẻ phá hoại an ninh với sự truy cập tới tài khoản này thông qua cửa hậu được cài đặt bây giờ có thể có được sự truy cập tới toàn bộ hệ thống, vì người sử dụng gốc có các quyền ưu tiên quản trị với bất kỳ thứ gì.
Nội dung bài
Một vài độc giảcó thể thấy điều này một bài viết hết sức cơ bản,trình bày các thông tin mà chúng đã được biết như làmặt trái của bàn tay của chúng vậy. Thường với nhữnggì tôi thấy mọi người – và ngay cả toàn bộ các độiphát triển hệ điều hành (OS) – vi phạm ý nghĩa cơbản, an ninh chung xét về việc sử dụng quyền ưu tiênquản trị an ninh trên các hệ thống như Unix nhắc nhởtôi giải thích những điều cơ bản đó ở đây. Điềuđó không có nghĩa là họ là những người ngu dốt, tấtnhiên; một số “những điều cơ bản” sẽ không phảitất cả là rõ ràng.
Tài khoản gốc (root)có lẽ là nơi tốt nhất để bắt đầu.
Sửdụng tài khoản gốc (root)
Tài khoản của siêungười sử dụng (super-user) quản trị theo tiêu chuẩntrên Microsoft Windows được gọi là quản trị viên –Administrator. Không giống như trêncác hệ thống như Unix, nó được gọi là root.Thường thì một ý tưởng tồi để sử dụng một tàikhoản quản trị cho bất kỳ điều gì mà bạn có thểlàm được với một tài khoản có ít quyền ưu tiên hơn,vì bất kỳ lúc nào bạn sử dụng bất kỳ tài khoảngngười sử dụng nào thì bạn sẽ phô bày tài khoản cụthể đó cho những mối đe doạ tiềm tàng nếu phần mềmchạy dưới các quyền ưu tiến của tài khoản đó cómột sự dễ bị tổn thương khi nó có thể cho phép ai đógây tổn thương cho tài khoản người sử dụng này.
Nếu bạn sử dụngFirefox để duyệt web, và bỗng nhiên Firefox có vài dạngscripting có thể bị tổn thương mà chúng cho phép mộtscript độc hại trên một website cài đặt một cửa hậuvào hệ thống của bạn, bạn sẽ bị tổn thương nhưthế nào phụ thuộc vào một vài mức độ trong đó tàikhoản người sử dụng mà bạn sử dụng:
Với một tài khoản người sử dụng mà không có các quyền ưu tiên quản trị, thì tài khoản người sử dụng của bạn có thể bị tổn thương – nhưng kẻ phá hoại an ninh với sự truy cập tới nó thông qua cửa hậu được cài đặt này sẽ chỉ có thể truy cập chính xác tới được những gì mà tài khoản người sử dụng này có thể truy cập được.
Nếu bạn đăng nhập vào như một người sử dụng ở gốc (root) trong khi sử dụng Firefox, thì kẻ phá hoại an ninh với sự truy cập tới tài khoản này thông qua cửa hậu được cài đặt bây giờ có thể có được sự truy cập tới toàn bộ hệ thống, vì người sử dụng gốc có các quyền ưu tiên quản trị với bất kỳ thứ gì.
Rõ ràng, bạn phảitruy cập tới tài khoản người quản trị lúc nào đókhi bạn là quản trị hệ thống. Điểm mấu chốt là sửdụng các quyền ưu tiên cao cả này chỉ cho các nhiệm vụđặc biệt đòi hỏi phải có chúng, và đăng xuất rakhỏi tài khoản gốc (root) ngay sau đó. Trên một máy chủ,điều này thường có nghĩa là việc đăng nhập như gốctại một bàn điều khiển TTY, làm bất kỳ thứ gì bạncần để hoàn thành ở gốc, rồi gõ đi ra hoặc đăngxuất khỏi tài khoản gốc một lần nữa.
Someof my readers may find this a very basic article, presentinginformation that they already know like the backs of their hands. Thefrequency with which I see people — and even entire OS developmentteams — violating basic, common security sense with regard tosecure administrative privilege use on Unix-like systems prompts meto explain those basics here, though. That does not necessarily meanthey are stupid, of course; some of the “basics” are not at allobvious.
Theroot account is probably the best place to start.
Usingthe root account
Thestandard administrative super-user account on Microsoft Windows iscalled Administrator
.On Unix-like systems, it is called root
instead. It’s normally a bad idea to use an administrative accountfor anything that you can do with a less privileged account, becauseany time you use any user account at all you expose that particularaccount to potential threats if the software run under that account’sprivileges has a vulnerability that can allow someone to compromisethe user account.
Ifyou use Firefox to browse the web, and it turns out Firefox has somekind of scripting vulnerability that allows a malicious script on awebsite to install a back door on your system, how vulnerable you aredepends to some degree on what user account you use:
With a user account that has no administrative privileges, your user account may be compromised — but the security cracker with access to it via the installed back door will only be able to access exactly what that user account can access.
If you are logged in as the root user while using Firefox, the security cracker with access to the account via the installed back door may now have access to the entire system, because the root user has administrative privileges over everything.
Obviously,you have to access the administrative account f-rom time to time whenyou are the system administrator. The key is to use those elevatedprivileges only for the specific tasks that require them, and signback out of the root account immediately after that. On a server,this usually means logging in as root at a virtual TTY console, doingwhatever you need to get done as root, then typing exit or to log outof the root account again.
Sửdụng su
Lệnh “thay thếngười sử dụng” hoặc “chuyển người sử dụng”(đôi khi cũng được xác định như là “siêu người sửdụng”), su, cho phép sự truy cậpan ninh và thuận tiện tới tài khoản gốc mà không phảiđăng xuất khỏi tài khoản của người sử dụng đãđăng nhập trên các hệ thống như Unix. Nó cũng đượcsử dụng một cách phổ biến để truy cập các môitrường bình thường của tài khoản của người sử dụngkhông có quyền ưu tiên từ bên trong một phiên của tàikhoản gốc bằng việc chỉ định tài khoản mà môitrường của người sử dụng của nó muốn truy cập.
Có thể việc sửdụng phổ biến nhất của sunhững ngày này là là một phương tiện để truy cập tàikhoản gốc để thực hiện các nhiệm vụ của ngườiquản trị mà không phải rời bỏ một phiên làm việccủa hệ thống X Windows. Một người có thể chỉ mở mộttrình mô phỏng đầu cuối và gõ su,gõ vào mật khẩu khi được nhắc, và bắt đầu làm việcvới các quyền ưu tiên của gốc.
Điều này có thểcũng cung cấp an ninh bổ sung cho các kết nối từ xa;người quản trị có thể thiết lập cấu hình cho mộthệ thống để không cho phép truy cập SSH như gốc, đòihỏi một người sử dụng kết nối như một vài tàikhoản người sử dụng khác và sử dụng suđể nâng cao các quyền ưu tiên. Đây là một cách nhanhchóng và dễ dàng để dừng các cuộc tấn công sức mạnhhung ác chống lại mật khẩu tài khoản gốc. Một số hệthống, như FreeBSD, thực sự cài đặt SSH được thiếtlập cấu hình theo cách đó một cách mặc định.
Sự tiện lợi củaviệc có khả năng đơn giản và an toàn đạt được cácquyền ưu tiên của gốc trong một cửa sổ của trình môphỏng đầu cuối – mà không phải đăng xuất ra khỏiphiên làm việc của hệ thống X Windows, hoặc ngay cảchuyển sang một bàn điều khiển TTY nơi mà bạn khôngthể cắt dán theo cách mà bạn có thể trong X – là mộtví dụ tuyệt vời của việc thiết kế giao diện làthiết kế an ninh như thế nào. Với giao diện công cụ anninh đúng đắn hiện diện, thì người sử dụng thực sựđược khuyến khích để làm những thứ đúng đắn;trong trường hợp này, người sử dụng được khuyếnkhích để đăng nhập như một người sử dụng không cóquyền ưu tiên cho các nhiệm vụ hàng ngày, hơn là việcđăng nhập như gốc và nằm lại ở đó mà một lỗ hổngcủa việc nhảy qua cái vòng đó không phải tiếp tụctrước khi anh/chị ta có thể thực hiện một vài nhiệmvụ thông thường của người quản trị.
Usingsu
The"substitute user" or "switch user" command (alsosometimes identified as "superuser"), su
,allows convenient and secure access to the root account withouthaving to log out of the current logged in user account on Unix-likesystems. It is also commonly used to access normal, unprivileged useraccount environments f-rom within a root account session by specifyingthe account whose user environment one wants to access.
Probablythe most common use of su
these days is as a means of accessing the root account to performadministrative tasks without leaving an X Window System session. Onecan just open a terminal emulator and type su
,enter the password when prompted, and start working with rootprivileges.
Thiscan provide additional security for remote connections too; theadministrator can configure a system to disallow SSH log-ins as root,requiring a user to connect as some other user account and use su
to elevate privileges. This is a quick and easy way to stop remotebrute force attacks against the root account’s password. Somesystems, such as FreeBSD, actually install SSH configured that way bydefault.
Theconvenience of being able to simply and securely achieve rootprivileges in a terminal emulator window — without having to logout of your X Window System session, or even switch to a TTY consolewhe-re you can’t cut-and-paste the way you can in X — is a greatexample of how interface design is security design. With the rightsecurity tool interface in place, the user is actually encouraged todo The Right Thing; in this case, the user is encouraged to log in asan unprivileged user for everyday tasks, rather than log in as rootand stay there so a bunch of jumping through hoops doesn’t have togo on before he or she can perform some trivial administrative task.
Sửdụng sudo
Có một công cụtuyệt vời cho việc đảm bảo an ninh và ghi lại cáchhành xử của người sử dụng mà cần thực hiện nhữngnhiệm vụ quản trị hạn chế nào đó được gọi làsudo. Khá nhiều thứ có thể đượcthực hiện với công cụ này, và khá nhiều thứ có thểđược nói về nó. Nó có thể, còn có tranh luận, đảmbảo cho một cuốn sách viết riêng về nó.
Nó được sử dụngtốt nhất để cho phép những người sử dụng cụ thểnào đó với những nhu cầu quyền ưu tiên quản trị đặcbiệt, được xác định tốt, để làm những gì mà họcần làm, và chỉ những thứ đó; nó cũng làm cho việcghi lại các hoạt động của những người sử dụng nhưvậy nhẹ nhàng. Nếu một người sử dụng cần phải cókhả năng sử dụng công cụ kiểm tra cổng, thì anh/chịta có thể có được sự truy cập tới chức năng của nómà chức năng này đòi hỏi các quyền ưu tiên mà khôngđể lộ phần còn lại của các khả năng được giữlại cho người sử dụng gốc đối với cùng người sửdụng trong quá trình này. Công cụ sudothực sự là một công cụ tuyệt vời cho việc uỷ tháccác nhiệm vụ quản trị theo một cách có hạn chế, anninh và được ghi lại (và vì thế có thể kiểm trađược), nên bạn không phải bắt đầu trao mật khẩugốc cho từng người mà muốn có khả năng ánh xạ mộthệ thống tệp vào một thư mục /mount.
Những gì điều nàykhông thật tốt là việc thay thế tài khoản người sửdụng gốc một cách hoàn toàn. Trong khi thực tế là nócho phép dễ dàng việc ghi tất cả hoạt động quản trịđược tách biệt bởi người sử dụng thực tế, hơn làviệc nhóm tất cả việc ghi các nhiệm vụ quản trịdưới đầu đề duy nhất của người sử dụng gốc, thứy như vậy có thể được hành thành bằng việc tạo racác tài khoản của siêu người sử dụng một cách táchbiệt; người sử dụng toor củaFreeBSD phục vụ như một ví dụ tuyệt vời của điềunày.
Usingsudo
Thereis a great tool for securing and logging the behaviour of users whoneed to perform limited administrative tasks called sudo
.Quite a lot can be done with this tool, and as such quite a lot canbe said about it. It could, arguably, warrant a book of its own.
Itis best used to allow specific users with specific, well-definedadministrative privilege needs to do what they need to do, and onlythat; it also makes logging the activities of such users a breeze. Ifa user needs to be able to use the portaudit tool, he or she can begiven access to its functionality that requires administrativeprivileges without exposing the rest of the capabilities reserved forthe root user to the same user in the process. The sudo tool isessentially an excellent tool for delegating administrative tasks ina limited, secure and logged (and therefore auditable) manner, so youdon’t have to start handing out the root password to everybody whowants to be able to mount a filesystem in the /mount directory.
Whatit is not as good at is replacing the root user account entirely.While the fact it allows easy logging of all administrative activityseparated by actual user, rather than grouping all administrativetask logging under the single heading of the root user, the same canbe accomplished by creating separate super-user accounts; FreeBSD’stoor
user serves as an excellent example of this.
Mối quan tâm đặcbiệt là thực tế rằng nếu ai đó định làm tổn thươngtài khoản người sử dụng không có quyền ưu tiên củabạn mà tài khoản này có sự truy cập không hạn chếtới các quyền ưu tiên của người quản trị thông quasudo, thì kẻ phá hoại an ninh độchại đó có thể sau đó cũng thấy dễ dàng hơn một cáchđáng kể để truy cập các quyền ưu tiên đó. Đây thựcsự là một vấn đề tồi tệ cho các hệ thống nơi màsudo được thiết lập để chophép sử dụng ít mật khẩu, tất nhiên.
Tuy nhiên, vấn đềđáng lo ngại nhất với việc sử dụng nó như một sựthay thế gốc, là sự phức tạp của nó. Như được chỉra trong cuốn An ninh, sự phức tạp và môi trường giaodiện đồ hoạ GUI (xem đường liên kết bên dưới), thìsự phức tạp là kẻ thù của an ninh: Mỗi lần bạn làmgia tăng tính phức tạp của một hệ thống, thì bạn làmgia tăng khả năng cho thứ gì đó hoạt động không đúngtheo thiết kế của nó. Càng nhiều dòng mã lệnh trong hệthống của bạn, thì càng có nhiều cơ hội có nhiều lỗihơn khi phát triển hệ thống; càng nhiều lỗi hơn ở đó,thì càng nhiều cơ hội mà bạn có cho các lỗi mà chúngthể hiện những thứ có thể bị tổn thương về anninh.
Vì sudođược thiết kế để là quá nhiều hơn là chỉ trao chobạn sự truy cập một cách dễ dàng tới các khả năngquản trị – để cung cấp sự uỷ nhiệm tốt của cácquyền ưu tiên quản trị cho những người sử dụng khôngcó quyền ưu tiên khác. Ngay cả việc thiết lập cấuhình cho nó phù hợp có thể biến thành một sự thựcthi tạm thời trong việc qua lại một cách an toàn trong sựphức tạp, phụ thuộc vào việc các nhu cầu của bạn cótham vọng tới mức nào; nhiều chương trình có thể đượcsử dụng để chạy các lệnh bổ sung hoặc bên ngoài, vànếu một người sử dụng như vậy được trao cho sựtruy cập mức gốc tới một chương trình như vậy thôngqua sudo mà không có các hạn chếmà nó ngăn trở sự hoạt động tuỳ ý của các lệnh từbên ngoài, thì các lệnh đó có thể được thực hiệnvới các quyền ưu tiên của gốc.
Như Razvan Stoica giảithích trong Sudo được xem là vô hại (xem đường link bêndưới), ngay cả một quản trị hệ thống hiểu rõ vềan ninh mà thường làm những việc “đúng” đối vớimột hệ thống nào đó có thể chạy đâm bổ vào sựphức tạp gây hại về an ninh của việc áp dụng sudoquá rộng rãi đối với vấn đề làm cho sự quản trịhệ thống trở nên dễ dàng.
Ofspecial concern is the fact that if someone manages to compromiseyour unprivileged user account that has unlimited access toadministrative privileges via sudo
,that malicious security cracker may then find it significantly easierto access those privileges as well. This is an especially bad problemfor systems whe-re sudo
is configured to allow password-less use, of course.
Themost worrisome problem with using it as a root replacement, however,is its complexity. As pointed out in Security,complexity, and the GUI environment, complexity is the enemy ofsecurity:
Everytime you increase the complexity of a system, you increase theopportunity for something to go wrong in its design. The more linesof code in your system, the more opportunities there are to introducebugs when developing the system; the more bugs there are, the moreopportunities you have for bugs that introduce securityvulnerabilities.
Becausesudo
is designed to do so much more than just give you easy access toadministrative capabilities — to provide fine-grained delegation ofadministrative privileges to otherwise unprivileged users. Evenconfiguring it properly can turn into a precarious exercise in safelynavigating complexity, depending on how ambitious your needs get;many programs can be used to execute additional or external commands,and if such a user is given root-level access to such a program viasudo
without restrictions that prevent arbitrary execution of externalcommands, those commands could be executed with root privileges.
AsRazvan Stoica explained in Sudoconsidered harmful, even a security conscious sysadmin whogenerally does things "right" for a given system can runafoul of the security damaging complexity of applying sudo
too broadly to the problem of making system administration easy.
Còngì nữa?
Đây chỉ là mộtđiểm khởi đầu. Phần quan trọng nhất của an ninh làphải là một người suy nghĩ tích cực, lưu ý về anninh, và “những điều cơ bản” về việc sử dụngquyền ưu tiên quản trị về an ninh phải trao cho bạn mộtnền tảng trong đó để xây dựng một sự hiểu biếtsâu sắc hơn về các khía cạnh khác của việc quản trịhệ thống an ninh. Các vấn đề quan tâm, mà không đượcgiải quyết ở trên, bao gồm một danh sách các công cụvà kỹ thuật như lựa chọn thiết lập cấu hìnhPermitRootLogin của deamon OpenSSH,những việc xem xét thiết kế hệ thống như những thứgiễu cợt của một chút trong các quyền của các tệp,và một sự thiếu hiểu biết mở rộng về các chủ đềđã được đề cập tới ở trên, được minh hoạbởisự quản trị phù hợp về nhóm cầm lái (quản trị).
Những chủ đề nhưvậy là quan trọng không thể tin nổi đối với các quảntrị viên hệ thống, chắc chắn như vậy. Cho dù, ngay cảnhững người sử dụng đầu cuối, việc hiểu đượccác chủ đề như thế này có thể sẽ rất đáng giá.Bạn càng hiểu tốt về hệ thống của bạn bao nhiêu,thì bạn có thể đảm bảo tốt hơn là bạn sẽ không làmột phần của vấn đề với an ninh hệ thống.
Whatelse?
Thisis just a starting point. The most important part of security isbeing an active, security-minded thinker, and the "basics"of secure administrative privilege use should give you a foundationon which to build a deeper understanding of other aspects of securesystem administration. Subjects of interest, that have not beenaddressed above, include an open-ended list of tools and techniqueslike the OpenSSH daemon's PermitRootLogin
configuration option, system design considerations such as the quirksof the suid bit in file permissions, and an expanded understanding ofthe topics already covered above, exemplified by the propermanagement of the wheel group.
Suchtopics are incredibly important for system administrators, obviously.Even for end users, though, understanding topics like these can beinvaluable. The better you understand your system, the better you canensure you will not be part of the problem with system security.
Dịch tài liệu: LêTrung Nghĩa
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Blog này được chuyển đổi từ http://blog.yahoo.com/letrungnghia trên Yahoo Blog sang sử dụng NukeViet sau khi Yahoo Blog đóng cửa tại Việt Nam ngày 17/01/2013.Kể từ ngày 07/02/2013, thông tin trên Blog được cập nhật tiếp tục trở lại với sự hỗ trợ kỹ thuật và đặt chỗ hosting của nhóm phát triển...