[272] | 1 | <?xml version="1.0" encoding="iso-8859-1"?>
|
---|
| 2 | <!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
|
---|
| 3 | <chapter id="kerberos">
|
---|
| 4 | <title>Active Directory, Kerberos, and Security</title>
|
---|
| 5 |
|
---|
| 6 | <para><indexterm>
|
---|
| 7 | <primary>experiment</primary>
|
---|
| 8 | </indexterm>
|
---|
| 9 | By this point in the book, you have been exposed to many Samba-3 features and capabilities.
|
---|
| 10 | More importantly, if you have implemented the examples given, you are well on your way to becoming
|
---|
| 11 | a Samba-3 networking guru who knows a lot about Microsoft Windows. If you have taken the time to
|
---|
| 12 | practice, you likely have thought of improvements and scenarios with which you can experiment. You
|
---|
| 13 | are rather well plugged in to the many flexible ways Samba can be used.
|
---|
| 14 | </para>
|
---|
| 15 |
|
---|
| 16 | <para><indexterm>
|
---|
| 17 | <primary>criticism</primary>
|
---|
| 18 | </indexterm>
|
---|
| 19 | This is a book about Samba-3. Understandably, its intent is to present it in a positive light.
|
---|
| 20 | The casual observer might conclude that this book is one-eyed about Samba. It is &smbmdash; what
|
---|
| 21 | would you expect? This chapter exposes some criticisms that have been raised concerning
|
---|
| 22 | the use of Samba. For each criticism, there are good answers and appropriate solutions.
|
---|
| 23 | </para>
|
---|
| 24 |
|
---|
| 25 | <para>
|
---|
| 26 | Some criticism always comes from deep inside ranks that one would expect to be supportive of a particular
|
---|
| 27 | decision. Criticism can be expected from the outside. Let's see how the interesting dynamic of
|
---|
| 28 | criticism develops with respect to Abmas.
|
---|
| 29 | </para>
|
---|
| 30 |
|
---|
| 31 | <para><indexterm>
|
---|
| 32 | <primary>straw-man</primary>
|
---|
| 33 | </indexterm>
|
---|
| 34 | This chapter provides a shameless self-promotion of Samba-3. The objections raised were not pulled
|
---|
| 35 | out of thin air. They were drawn from comments made by Samba users and from criticism during
|
---|
| 36 | discussions with Windows network administrators. The tone of the objections reflects as closely
|
---|
| 37 | as possible that of the original. The case presented is a straw-man example that is designed to
|
---|
| 38 | permit each objection to be answered as it might occur in real life.
|
---|
| 39 | </para>
|
---|
| 40 |
|
---|
| 41 | <sect1>
|
---|
| 42 | <title>Introduction</title>
|
---|
| 43 |
|
---|
| 44 | <para><indexterm>
|
---|
| 45 | <primary>acquisitions</primary>
|
---|
| 46 | </indexterm><indexterm>
|
---|
| 47 | <primary>risk</primary>
|
---|
| 48 | </indexterm><indexterm>
|
---|
| 49 | <primary>assessment</primary>
|
---|
| 50 | </indexterm><indexterm>
|
---|
| 51 | <primary>Active Directory</primary>
|
---|
| 52 | </indexterm><indexterm>
|
---|
| 53 | <primary>Windows 2003 Serve</primary>
|
---|
| 54 | </indexterm>
|
---|
| 55 | Abmas is continuing its meteoric growth with yet further acquisitions. The investment community took
|
---|
| 56 | note of the spectacular projection of Abmas onto the global business stage. Abmas is building an
|
---|
| 57 | interesting portfolio of companies that includes accounting services, financial advice, investment
|
---|
| 58 | portfolio management, property insurance, risk assessment, and the recent addition of a a video rental
|
---|
| 59 | business. The pieces do not always appear to fit together, but Mr. Meany is certainly executing an
|
---|
| 60 | interesting business growth and development plan. Abmas Video Rentals was recently acquired.
|
---|
| 61 | During the time that the acquisition was closing, the Video Rentals business upgraded its Windows
|
---|
| 62 | NT4-based network to Windows 2003 Server and Active Directory.
|
---|
| 63 | </para>
|
---|
| 64 |
|
---|
| 65 | <para><indexterm>
|
---|
| 66 | <primary>Active Directory</primary>
|
---|
| 67 | </indexterm>
|
---|
| 68 | You have accepted the fact that Abmas Video Rentals will use Microsoft Active Directory.
|
---|
| 69 | The IT team, led by Stan Soroka, is committed to Samba-3 and to maintaining a uniform technology platform.
|
---|
| 70 | Stan Soroka's team voiced its disapproval over the decision to permit this business to continue to
|
---|
| 71 | operate with a solution that is viewed by Christine and her group as <quote>an island of broken
|
---|
| 72 | technologies.</quote> This comment was made by one of Christine's staff as they were installing a new
|
---|
| 73 | Samba-3 server at the new business.
|
---|
| 74 | </para>
|
---|
| 75 |
|
---|
| 76 |
|
---|
| 77 | <para><indexterm>
|
---|
| 78 | <primary>consultant</primary>
|
---|
| 79 | </indexterm><indexterm>
|
---|
| 80 | <primary>hypothetical</primary>
|
---|
| 81 | </indexterm>
|
---|
| 82 | Abmas Video Rentals' head of IT heard of this criticism. He was offended that a junior engineer
|
---|
| 83 | should make such a comment. He felt that he had to prepare in case he might be criticized for his
|
---|
| 84 | decision to use Active Directory. He decided he would defend his decision by hiring the services
|
---|
| 85 | of an outside security systems consultant to report<footnote>This report is entirely fictitious.
|
---|
| 86 | Any resemblance to a factual report is purely coincidental.</footnote> on his unit's operations
|
---|
| 87 | and to investigate the role of Samba at his site. Here are key extracts from this hypothetical
|
---|
| 88 | report:
|
---|
| 89 | </para>
|
---|
| 90 |
|
---|
| 91 | <blockquote><para><indexterm>
|
---|
| 92 | <primary>vulnerabilities</primary>
|
---|
| 93 | </indexterm><indexterm>
|
---|
| 94 | <primary>integrity</primary>
|
---|
| 95 | </indexterm><indexterm>
|
---|
| 96 | <primary>practices</primary>
|
---|
| 97 | </indexterm><indexterm>
|
---|
| 98 | <primary>Active Directory</primary>
|
---|
| 99 | </indexterm>
|
---|
| 100 | ... the implementation of Microsoft Active Directory at the Abmas Video Rentals, Bamingsham site,
|
---|
| 101 | has been examined. We find no evidence to support a notion that vulnerabilities exist at your site.
|
---|
| 102 | ... we took additional steps to validate the integrity of the installation and operation of Active
|
---|
| 103 | Directory and are pleased that your staff are following sound practices.
|
---|
| 104 | </para>
|
---|
| 105 |
|
---|
| 106 | <para>
|
---|
| 107 | ...
|
---|
| 108 | </para>
|
---|
| 109 |
|
---|
| 110 | <para><indexterm>
|
---|
| 111 | <primary>accounts</primary>
|
---|
| 112 | <secondary>user</secondary>
|
---|
| 113 | </indexterm><indexterm>
|
---|
| 114 | <primary>accounts</primary>
|
---|
| 115 | <secondary>group</secondary>
|
---|
| 116 | </indexterm><indexterm>
|
---|
| 117 | <primary>Backup</primary>
|
---|
| 118 | </indexterm><indexterm>
|
---|
| 119 | <primary>disaster recovery</primary>
|
---|
| 120 | </indexterm><indexterm>
|
---|
| 121 | <primary>validated</primary>
|
---|
| 122 | </indexterm><indexterm>
|
---|
| 123 | <primary>off-site storage</primary>
|
---|
| 124 | </indexterm>
|
---|
| 125 | User and group accounts, and respective privileges, have been well thought out. File system shares are
|
---|
| 126 | appropriately secured. Backup and disaster recovery plans are well managed and validated regularly, and
|
---|
| 127 | effective off-site storage practices are considered to exceed industry norms.
|
---|
| 128 | </para>
|
---|
| 129 |
|
---|
| 130 | <para><indexterm>
|
---|
| 131 | <primary>compromise</primary>
|
---|
| 132 | </indexterm><indexterm>
|
---|
| 133 | <primary>secure</primary>
|
---|
| 134 | </indexterm><indexterm>
|
---|
| 135 | <primary>network</primary>
|
---|
| 136 | <secondary>secure</secondary>
|
---|
| 137 | </indexterm>
|
---|
| 138 | Your staff are justifiably concerned that the use of Samba may compromise their good efforts to maintain
|
---|
| 139 | a secure network.
|
---|
| 140 | </para>
|
---|
| 141 |
|
---|
| 142 | <para><indexterm>
|
---|
| 143 | <primary>winbind</primary>
|
---|
| 144 | </indexterm><indexterm>
|
---|
| 145 | <primary>security</primary>
|
---|
| 146 | </indexterm><indexterm>
|
---|
| 147 | <primary>secure</primary>
|
---|
| 148 | </indexterm><indexterm>
|
---|
| 149 | <primary>network</primary>
|
---|
| 150 | <secondary>management</secondary>
|
---|
| 151 | </indexterm>
|
---|
| 152 | The recently installed Linux file and application server uses a tool called <command>winbind</command>
|
---|
| 153 | that is indiscriminate about security. All user accounts in Active Directory can be used to access data
|
---|
| 154 | stored on the Linux system. We are alarmed that secure information is accessible to staff who should
|
---|
| 155 | not even be aware that it exists. We share the concerns of your network management staff who have gone
|
---|
| 156 | to great lengths to set fine-grained controls that limit information access to those who need access.
|
---|
| 157 | It seems incongruous to us that Samba winbind should be permitted to be used considering that it voids this fine work.
|
---|
| 158 | </para>
|
---|
| 159 |
|
---|
| 160 | <para><indexterm>
|
---|
| 161 | <primary>isolated</primary>
|
---|
| 162 | </indexterm><indexterm>
|
---|
| 163 | <primary>firewall</primary>
|
---|
| 164 | </indexterm><indexterm>
|
---|
| 165 | <primary>best practices</primary>
|
---|
| 166 | </indexterm>
|
---|
| 167 | Graham Judd [head of network administration] has locked down the security of all systems and is following
|
---|
| 168 | the latest Microsoft guidelines. ... null session connections have been disabled ... the internal network
|
---|
| 169 | is isolated from the outside world, the [product name removed] firewall is under current contract
|
---|
| 170 | maintenance support from [the manufacturer]. ... our attempts to penetrate security of your systems
|
---|
| 171 | failed to find problems common to Windows networking sites. We commend your staff on their attention to
|
---|
| 172 | detail and for following Microsoft recommended best practices.
|
---|
| 173 | </para>
|
---|
| 174 |
|
---|
| 175 | <para>
|
---|
| 176 | ...
|
---|
| 177 | </para>
|
---|
| 178 |
|
---|
| 179 | <para><indexterm>
|
---|
| 180 | <primary>security</primary>
|
---|
| 181 | </indexterm><indexterm>
|
---|
| 182 | <primary>disable</primary>
|
---|
| 183 | </indexterm><indexterm>
|
---|
| 184 | <primary>essential</primary>
|
---|
| 185 | </indexterm><indexterm>
|
---|
| 186 | <primary>trusted computing</primary>
|
---|
| 187 | </indexterm>
|
---|
| 188 | Regarding the use of Samba, we offer the following comments: Samba is in use in nearly half of
|
---|
| 189 | all sites we have surveyed. ... It is our opinion that Samba offers no better security than Microsoft
|
---|
| 190 | ... what worries us regarding Samba is the need to disable essential Windows security features such as
|
---|
| 191 | secure channel support, digital sign'n'seal on all communication traffic, and running Active Directory in
|
---|
| 192 | mixed mode so that Samba clients and servers can authenticate all of it. Additionally, we are concerned that
|
---|
| 193 | Samba is not at the full capabilities of Microsoft Windows NT4 server. Microsoft has moved well beyond that
|
---|
| 194 | with trusted computing initiatives that the Samba developers do not participate in.
|
---|
| 195 | </para>
|
---|
| 196 |
|
---|
| 197 | <para><indexterm>
|
---|
| 198 | <primary>integrity</primary>
|
---|
| 199 | </indexterm><indexterm>
|
---|
| 200 | <primary>hackers</primary>
|
---|
| 201 | </indexterm><indexterm>
|
---|
| 202 | <primary>accountable</primary>
|
---|
| 203 | </indexterm><indexterm>
|
---|
| 204 | <primary>flaws</primary>
|
---|
| 205 | </indexterm><indexterm>
|
---|
| 206 | <primary>updates</primary>
|
---|
| 207 | </indexterm><indexterm>
|
---|
| 208 | <primary>bug fixes</primary>
|
---|
| 209 | </indexterm><indexterm>
|
---|
| 210 | <primary>alarm</primary>
|
---|
| 211 | </indexterm>
|
---|
| 212 | One wonders about the integrity of an open source program that is developed by a team of hackers
|
---|
| 213 | who cannot be held accountable for the flaws in their code. The sheer number of updates and bug
|
---|
| 214 | fixes they have released should ring alarm bells in any business.
|
---|
| 215 | </para>
|
---|
| 216 |
|
---|
| 217 | <para><indexterm>
|
---|
| 218 | <primary>employment</primary>
|
---|
| 219 | </indexterm><indexterm>
|
---|
| 220 | <primary>jobs</primary>
|
---|
| 221 | </indexterm><indexterm>
|
---|
| 222 | <primary>risk</primary>
|
---|
| 223 | </indexterm>
|
---|
| 224 | Another factor that should be considered is that buying Microsoft products and services helps to
|
---|
| 225 | provide employment in the IT industry. Samba and Open Source software place those jobs at risk.
|
---|
| 226 | </para></blockquote>
|
---|
| 227 |
|
---|
| 228 | <para><indexterm>
|
---|
| 229 | <primary>Active Directory</primary>
|
---|
| 230 | </indexterm><indexterm>
|
---|
| 231 | <primary>independent expert</primary>
|
---|
| 232 | </indexterm>
|
---|
| 233 | This is also a challenge to rise above the trouble spot. You call Stan's team together for a simple
|
---|
| 234 | discussion, but it gets further out of hand. When you return to your office, you find the following
|
---|
| 235 | email in your in-box:
|
---|
| 236 | </para>
|
---|
| 237 |
|
---|
| 238 | <para>
|
---|
| 239 | Good afternoon,
|
---|
| 240 | </para>
|
---|
| 241 |
|
---|
| 242 | <blockquote><attribution>Stan</attribution><para>
|
---|
| 243 | I apologize for the leak of internal discussions to the new business. It reflects poorly on our
|
---|
| 244 | professionalism and has put you in an unpleasant position. I regret the incident.
|
---|
| 245 | </para>
|
---|
| 246 |
|
---|
| 247 | <para>
|
---|
| 248 | I also wish to advise that two of the recent recruits want to implement Kerberos authentication
|
---|
| 249 | across all systems. I concur with the desire to improve security. One of the new guys who is championing
|
---|
| 250 | the move to Kerberos was responsible for the comment that caused the embarrassment.
|
---|
| 251 | </para>
|
---|
| 252 |
|
---|
| 253 | <para><indexterm>
|
---|
| 254 | <primary>Kerberos</primary>
|
---|
| 255 | </indexterm><indexterm>
|
---|
| 256 | <primary>OpenLDAP</primary>
|
---|
| 257 | </indexterm><indexterm>
|
---|
| 258 | <primary>Active Directory</primary>
|
---|
| 259 | </indexterm><indexterm>
|
---|
| 260 | <primary>consultant</primary>
|
---|
| 261 | </indexterm>
|
---|
| 262 | I am experiencing difficulty in handling the sharp push for Kerberos. He claims that Kerberos, OpenLDAP,
|
---|
| 263 | plus Samba-3 will seamlessly replace Microsoft Active Directory. I am a little out of my depth with respect
|
---|
| 264 | to the feasibility of such a move, but have taken steps to pull both of them into line. With your consent,
|
---|
| 265 | I would like to hire the services of a well-known Samba consultant to set the record straight.
|
---|
| 266 | </para>
|
---|
| 267 |
|
---|
| 268 | <para><indexterm>
|
---|
| 269 | <primary>criticism</primary>
|
---|
| 270 | </indexterm><indexterm>
|
---|
| 271 | <primary>policy</primary>
|
---|
| 272 | </indexterm><indexterm>
|
---|
| 273 | <primary>Windows Servers</primary>
|
---|
| 274 | </indexterm><indexterm>
|
---|
| 275 | <primary>Active Directory</primary>
|
---|
| 276 | </indexterm><indexterm>
|
---|
| 277 | <primary>budgetted</primary>
|
---|
| 278 | </indexterm><indexterm>
|
---|
| 279 | <primary>financial responsibility</primary>
|
---|
| 280 | </indexterm>
|
---|
| 281 | I intend to use this report to answer the criticism raised and would like to establish a policy that we
|
---|
| 282 | will approve the use of Microsoft Windows Servers (and Active Directory) subject to all costs being covered
|
---|
| 283 | out of the budget of the division that wishes to go its own way. I propose that dissenters will still remain
|
---|
| 284 | responsible to meet the budgeted contribution to IT operations as a whole. I believe we should not coerce
|
---|
| 285 | use of any centrally proposed standards, but make all noncompliance the financial responsibility of the
|
---|
| 286 | out-of-step division. Hopefully, this will encourage all divisions to walk with us and not alone.
|
---|
| 287 | </para></blockquote>
|
---|
| 288 |
|
---|
| 289 | <sect2>
|
---|
| 290 | <title>Assignment Tasks</title>
|
---|
| 291 |
|
---|
| 292 | <para>
|
---|
| 293 | You agreed with Stan's recommendations and hired a consultant to help defuse the powder
|
---|
| 294 | keg. The consultant's task is to provide a tractable answer to each of the issues raised. The consultant must be able
|
---|
| 295 | to support his or her claims, keep emotions to the side, and answer technically.
|
---|
| 296 | </para>
|
---|
| 297 |
|
---|
| 298 | </sect2>
|
---|
| 299 | </sect1>
|
---|
| 300 |
|
---|
| 301 | <sect1>
|
---|
| 302 | <title>Dissection and Discussion</title>
|
---|
| 303 |
|
---|
| 304 | <para><indexterm>
|
---|
| 305 | <primary>tool</primary>
|
---|
| 306 | </indexterm><indexterm>
|
---|
| 307 | <primary>benefit</primary>
|
---|
| 308 | </indexterm><indexterm>
|
---|
| 309 | <primary>choice</primary>
|
---|
| 310 | </indexterm><indexterm>
|
---|
| 311 | <primary>consultant</primary>
|
---|
| 312 | </indexterm><indexterm>
|
---|
| 313 | <primary>installation</primary>
|
---|
| 314 | </indexterm><indexterm>
|
---|
| 315 | <primary>income</primary>
|
---|
| 316 | </indexterm><indexterm>
|
---|
| 317 | <primary>employment</primary>
|
---|
| 318 | </indexterm>
|
---|
| 319 | Samba-3 is a tool. No one is pounding your door to make you use Samba. That is a choice that you are free to
|
---|
| 320 | make or reject. It is likely that your decision to use Samba can greatly benefit your company.
|
---|
| 321 | The Samba Team obviously believes that the Samba software is a worthy choice.
|
---|
| 322 | If you hire a consultant to assist with the installation and/or deployment of Samba, or if you hire
|
---|
| 323 | someone to help manage your Samba installation, you can create income and employment. Alternately,
|
---|
| 324 | money saved by not spending in the IT area can be spent elsewhere in the business. All money saved
|
---|
| 325 | or spent creates employment.
|
---|
| 326 | </para>
|
---|
| 327 |
|
---|
| 328 | <para><indexterm>
|
---|
| 329 | <primary>economically sustainable</primary>
|
---|
| 330 | </indexterm><indexterm>
|
---|
| 331 | <primary>inter-operability</primary>
|
---|
| 332 | </indexterm><indexterm>
|
---|
| 333 | <primary>file and print service</primary>
|
---|
| 334 | </indexterm><indexterm>
|
---|
| 335 | <primary>cost</primary>
|
---|
| 336 | </indexterm><indexterm>
|
---|
| 337 | <primary>alternative</primary>
|
---|
| 338 | </indexterm>
|
---|
| 339 | In the long term, the use of Samba must be economically sustainable. In some situations, Samba is adopted
|
---|
| 340 | purely to provide file and print service interoperability on platforms that otherwise cannot provide
|
---|
| 341 | access to data and to printers for Microsoft Windows clients. Samba is used by some businesses to
|
---|
| 342 | effect a reduction in the cost of providing IT services. Obviously, it is also used by some as an
|
---|
| 343 | alternative to the use of a Microsoft file and print serving platforms with no consideration of costs.
|
---|
| 344 | </para>
|
---|
| 345 |
|
---|
| 346 | <para><indexterm>
|
---|
| 347 | <primary>documentation</primary>
|
---|
| 348 | </indexterm><indexterm>
|
---|
| 349 | <primary>responsibility</primary>
|
---|
| 350 | </indexterm><indexterm>
|
---|
| 351 | <primary>fix</primary>
|
---|
| 352 | </indexterm><indexterm>
|
---|
| 353 | <primary>broken</primary>
|
---|
| 354 | </indexterm>
|
---|
| 355 | It would be foolish to adopt a technology that might put any data or users at risk. Security affects
|
---|
| 356 | everyone. The Samba-Team is fully cognizant of the responsibility they have to their users.
|
---|
| 357 | The Samba documentation clearly reveals that full responsibility is accepted to fix anything
|
---|
| 358 | that is broken.
|
---|
| 359 | </para>
|
---|
| 360 |
|
---|
| 361 | <para><indexterm>
|
---|
| 362 | <primary>commercial</primary>
|
---|
| 363 | </indexterm><indexterm>
|
---|
| 364 | <primary>software</primary>
|
---|
| 365 | </indexterm><indexterm>
|
---|
| 366 | <primary>commercial software</primary>
|
---|
| 367 | </indexterm><indexterm>
|
---|
| 368 | <primary>End User License Agreement</primary>
|
---|
| 369 | <see>EULA</see>
|
---|
| 370 | </indexterm><indexterm>
|
---|
| 371 | <primary>accountable</primary>
|
---|
| 372 | </indexterm><indexterm>
|
---|
| 373 | <secondary>liability</secondary>
|
---|
| 374 | </indexterm><indexterm>
|
---|
| 375 | <primary>accepts liability</primary>
|
---|
| 376 | </indexterm><indexterm>
|
---|
| 377 | <primary>price paid</primary>
|
---|
| 378 | </indexterm><indexterm>
|
---|
| 379 | <primary>product defects</primary>
|
---|
| 380 | </indexterm><indexterm>
|
---|
| 381 | <primary>reimburse</primary>
|
---|
| 382 | </indexterm><indexterm>
|
---|
| 383 | <primary>extent</primary>
|
---|
| 384 | </indexterm>
|
---|
| 385 | There is a mistaken perception in the IT industry that commercial software providers are fully
|
---|
| 386 | accountable for the defects in products. Open Source software comes with no warranty, so it is
|
---|
| 387 | often assumed that its use confers a higher degree of risk. Everyone should read commercial software
|
---|
| 388 | End User License Agreements (EULAs). You should determine what real warranty is offered and the
|
---|
| 389 | extent of liability that is accepted. Doing so soon dispels the popular notion that
|
---|
| 390 | commercial software vendors are willingly accountable for product defects. In many cases, the
|
---|
| 391 | commercial vendor accepts liability only to reimburse the price paid for the software.
|
---|
| 392 | </para>
|
---|
| 393 |
|
---|
| 394 | <para><indexterm>
|
---|
| 395 | <primary>consumer</primary>
|
---|
| 396 | </indexterm><indexterm>
|
---|
| 397 | <primary>EULA</primary>
|
---|
| 398 | </indexterm><indexterm>
|
---|
| 399 | <primary>track record</primary>
|
---|
| 400 | </indexterm><indexterm>
|
---|
| 401 | <primary>commercial software</primary>
|
---|
| 402 | </indexterm><indexterm>
|
---|
| 403 | <primary>support</primary>
|
---|
| 404 | </indexterm><indexterm>
|
---|
| 405 | <primary>vendor</primary>
|
---|
| 406 | </indexterm>
|
---|
| 407 | The real issues that a consumer (like you) needs answered are What is the way of escape from technical
|
---|
| 408 | problems, and how long will it take? The average problem turnaround time in the Open Source community is
|
---|
| 409 | approximately 48 hours. What does the EULA offer? What is the track record in the commercial software
|
---|
| 410 | industry? What happens when your commercial vendor decides to cease providing support?
|
---|
| 411 | </para>
|
---|
| 412 |
|
---|
| 413 | <para><indexterm>
|
---|
| 414 | <primary>source code</primary>
|
---|
| 415 | </indexterm><indexterm>
|
---|
| 416 | <primary>Open Source</primary>
|
---|
| 417 | </indexterm><indexterm>
|
---|
| 418 | <primary>hire</primary>
|
---|
| 419 | </indexterm><indexterm>
|
---|
| 420 | <primary>programmer</primary>
|
---|
| 421 | </indexterm><indexterm>
|
---|
| 422 | <primary>solve</primary>
|
---|
| 423 | </indexterm><indexterm>
|
---|
| 424 | <primary>fix</primary>
|
---|
| 425 | </indexterm><indexterm>
|
---|
| 426 | <secondary>problem</secondary>
|
---|
| 427 | </indexterm>
|
---|
| 428 | Open Source software at least puts you in possession of the source code. This means that when
|
---|
| 429 | all else fails, you can hire a programmer to solve the problem.
|
---|
| 430 | </para>
|
---|
| 431 |
|
---|
| 432 | <sect2>
|
---|
| 433 | <title>Technical Issues</title>
|
---|
| 434 |
|
---|
| 435 | <para>
|
---|
| 436 | Each issue is now discussed and, where appropriate, example implementation steps are
|
---|
| 437 | provided.
|
---|
| 438 | </para>
|
---|
| 439 |
|
---|
| 440 | <variablelist>
|
---|
| 441 | <varlistentry>
|
---|
| 442 | <term>Winbind and Security</term>
|
---|
| 443 | <listitem><para><indexterm>
|
---|
| 444 | <primary>Winbind</primary>
|
---|
| 445 | </indexterm><indexterm>
|
---|
| 446 | <primary>Security</primary>
|
---|
| 447 | </indexterm><indexterm>
|
---|
| 448 | <primary>network</primary>
|
---|
| 449 | <secondary>administrators</secondary>
|
---|
| 450 | </indexterm><indexterm>
|
---|
| 451 | <primary>Domain users</primary>
|
---|
| 452 | </indexterm><indexterm>
|
---|
| 453 | <secondary>Domain account</secondary>
|
---|
| 454 | </indexterm><indexterm>
|
---|
| 455 | <primary>credentials</primary>
|
---|
| 456 | </indexterm><indexterm>
|
---|
| 457 | <primary>Network Neighborhood</primary>
|
---|
| 458 | </indexterm><indexterm>
|
---|
| 459 | <primary>UNIX/Linux server</primary>
|
---|
| 460 | </indexterm><indexterm>
|
---|
| 461 | <primary>browse</primary>
|
---|
| 462 | </indexterm><indexterm>
|
---|
| 463 | <primary>shares</primary>
|
---|
| 464 | </indexterm>
|
---|
| 465 | Windows network administrators may be dismayed to find that <command>winbind</command>
|
---|
| 466 | exposes all domain users so that they may use their domain account credentials to
|
---|
| 467 | log on to a UNIX/Linux system. The fact that all users in the domain can see the
|
---|
| 468 | UNIX/Linux server in their Network Neighborhood and can browse the shares on the
|
---|
| 469 | server seems to excite them further.
|
---|
| 470 | </para>
|
---|
| 471 |
|
---|
| 472 | <para><indexterm>
|
---|
| 473 | <primary>Domain Member server</primary>
|
---|
| 474 | </indexterm><indexterm>
|
---|
| 475 | <primary>familiar</primary>
|
---|
| 476 | </indexterm><indexterm>
|
---|
| 477 | <primary>fear</primary>
|
---|
| 478 | </indexterm><indexterm>
|
---|
| 479 | <primary>unknown</primary>
|
---|
| 480 | </indexterm>
|
---|
| 481 | <command>winbind</command> provides for the UNIX/Linux domain member server or
|
---|
| 482 | client, the same as one would obtain by adding a Microsoft Windows server or
|
---|
| 483 | client to the domain. The real objection is the fact that Samba is not MS Windows
|
---|
| 484 | and therefore requires handling a little differently from the familiar Windows systems.
|
---|
| 485 | One must recognize fear of the unknown.
|
---|
| 486 | </para>
|
---|
| 487 |
|
---|
| 488 | <para><indexterm>
|
---|
| 489 | <primary>network administrators</primary>
|
---|
| 490 | </indexterm><indexterm>
|
---|
| 491 | <primary>recognize</primary>
|
---|
| 492 | </indexterm><indexterm>
|
---|
| 493 | <primary>winbind</primary>
|
---|
| 494 | </indexterm><indexterm>
|
---|
| 495 | <primary>over-ride</primary>
|
---|
| 496 | </indexterm><indexterm>
|
---|
| 497 | <primary>Active Directory</primary>
|
---|
| 498 | <secondary>management tools</secondary>
|
---|
| 499 | </indexterm><indexterm>
|
---|
| 500 | <primary>fears</primary>
|
---|
| 501 | </indexterm>
|
---|
| 502 | Windows network administrators need to recognize that <command>winbind</command> does
|
---|
| 503 | not, and cannot, override account controls set using the Active Directory management
|
---|
| 504 | tools. The control is the same. Have no fear.
|
---|
| 505 | </para>
|
---|
| 506 |
|
---|
| 507 | <para><indexterm>
|
---|
| 508 | <primary>ADS Domain</primary>
|
---|
| 509 | </indexterm><indexterm>
|
---|
| 510 | <primary>account</primary>
|
---|
| 511 | <secondary>ADS Domain</secondary>
|
---|
| 512 | </indexterm><indexterm>
|
---|
| 513 | <primary>winbind</primary>
|
---|
| 514 | </indexterm><indexterm>
|
---|
| 515 | <primary>browsing</primary>
|
---|
| 516 | </indexterm><indexterm>
|
---|
| 517 | <primary>permits</primary>
|
---|
| 518 | </indexterm><indexterm>
|
---|
| 519 | <primary>access</primary>
|
---|
| 520 | </indexterm><indexterm>
|
---|
| 521 | <primary>drive mapping</primary>
|
---|
| 522 | </indexterm><indexterm>
|
---|
| 523 | <primary>protected</primary>
|
---|
| 524 | </indexterm><indexterm>
|
---|
| 525 | <primary>security controls</primary>
|
---|
| 526 | </indexterm><indexterm>
|
---|
| 527 | <primary>access controls</primary>
|
---|
| 528 | </indexterm>
|
---|
| 529 | Where Samba and the ADS domain account information obtained through the use of
|
---|
| 530 | <command>winbind</command> permits access, by browsing or by the drive mapping to
|
---|
| 531 | a share, to data that should be better protected. This can only happen when security
|
---|
| 532 | controls have not been properly implemented. Samba permits access controls to be set
|
---|
| 533 | on:
|
---|
| 534 | </para>
|
---|
| 535 |
|
---|
| 536 | <itemizedlist>
|
---|
| 537 | <listitem><para>Shares themselves (i.e., the logical share itself)</para></listitem>
|
---|
| 538 | <listitem><para>The share definition in &smb.conf;</para></listitem>
|
---|
| 539 | <listitem><para>The shared directories and files using UNIX permissions</para></listitem>
|
---|
| 540 | <listitem><para>Using Windows 2000 ACLs &smbmdash; if the file system is POSIX enabled</para></listitem>
|
---|
| 541 | </itemizedlist>
|
---|
| 542 |
|
---|
| 543 | <para>
|
---|
| 544 | Examples of each are given in <link linkend="ch10expl"/>.
|
---|
| 545 | </para>
|
---|
| 546 | </listitem>
|
---|
| 547 | </varlistentry>
|
---|
| 548 |
|
---|
| 549 | <varlistentry>
|
---|
| 550 | <term>User and Group Controls</term>
|
---|
| 551 | <listitem><para><indexterm>
|
---|
| 552 | <primary>User and Group Controls</primary>
|
---|
| 553 | </indexterm><indexterm>
|
---|
| 554 | <primary>management</primary>
|
---|
| 555 | <secondary>User</secondary>
|
---|
| 556 | </indexterm><indexterm>
|
---|
| 557 | <primary>management</primary>
|
---|
| 558 | <secondary>group</secondary>
|
---|
| 559 | </indexterm><indexterm>
|
---|
| 560 | <primary>ADS</primary>
|
---|
| 561 | </indexterm><indexterm>
|
---|
| 562 | <primary>permissions</primary>
|
---|
| 563 | </indexterm><indexterm>
|
---|
| 564 | <primary>privileges</primary>
|
---|
| 565 | </indexterm><indexterm>
|
---|
| 566 | <primary>flexibility</primary>
|
---|
| 567 | </indexterm><indexterm>
|
---|
| 568 | <primary>access controls</primary>
|
---|
| 569 | </indexterm><indexterm>
|
---|
| 570 | <primary>share definition</primary>
|
---|
| 571 | </indexterm>
|
---|
| 572 | User and group management facilities as known in the Windows ADS environment may be
|
---|
| 573 | used to provide equivalent access control constraints or to provide equivalent
|
---|
| 574 | permissions and privileges on Samba servers. Samba offers greater flexibility in the
|
---|
| 575 | use of user and group controls because it has additional layers of control compared to
|
---|
| 576 | Windows 200x/XP. For example, access controls on a Samba server may be set within
|
---|
| 577 | the share definition in a manner for which Windows has no equivalent.
|
---|
| 578 | </para>
|
---|
| 579 |
|
---|
| 580 | <para><indexterm>
|
---|
| 581 | <primary>analysis</primary>
|
---|
| 582 | </indexterm><indexterm>
|
---|
| 583 | <primary>system security</primary>
|
---|
| 584 | </indexterm><indexterm>
|
---|
| 585 | <primary>safe-guards</primary>
|
---|
| 586 | </indexterm><indexterm>
|
---|
| 587 | <primary>permissions</primary>
|
---|
| 588 | <secondary>excessive</secondary>
|
---|
| 589 | </indexterm><indexterm>
|
---|
| 590 | <primary>file system</primary>
|
---|
| 591 | </indexterm><indexterm>
|
---|
| 592 | <primary>shared resource</primary>
|
---|
| 593 | </indexterm><indexterm>
|
---|
| 594 | <primary>share definition</primary>
|
---|
| 595 | </indexterm>
|
---|
| 596 | In any serious analysis of system security, it is important to examine the safeguards
|
---|
| 597 | that remain when all other protective measures fail. An administrator may inadvertently
|
---|
| 598 | set excessive permissions on the file system of a shared resource, or he may set excessive
|
---|
| 599 | privileges on the share itself. If that were to happen in a Windows 2003 Server environment,
|
---|
| 600 | the data would indeed be laid bare to abuse. Yet, within a Samba share definition, it is
|
---|
| 601 | possible to guard against that by enforcing controls on the share definition itself. You
|
---|
| 602 | see a practical example of this a little later in this chapter.
|
---|
| 603 | </para>
|
---|
| 604 |
|
---|
| 605 | <para><indexterm>
|
---|
| 606 | <primary>diligence</primary>
|
---|
| 607 | </indexterm><indexterm>
|
---|
| 608 | <primary>weakness</primary>
|
---|
| 609 | </indexterm>
|
---|
| 610 | The report that is critical of Samba really ought to have exercised greater due
|
---|
| 611 | diligence: the real weakness is on the side of a Microsoft Windows environment.
|
---|
| 612 | </para></listitem>
|
---|
| 613 | </varlistentry>
|
---|
| 614 |
|
---|
| 615 | <varlistentry>
|
---|
| 616 | <term>Security Overall</term>
|
---|
| 617 | <listitem><para><indexterm>
|
---|
| 618 | <primary>defects</primary>
|
---|
| 619 | </indexterm>
|
---|
| 620 | Samba is designed in such a manner that weaknesses inherent in the design of
|
---|
| 621 | Microsoft Windows networking ought not to expose the underlying UNIX/Linux file
|
---|
| 622 | system in any way. All software has potential defects, and Samba is no exception.
|
---|
| 623 | What matters more is how defects that are discovered get dealt with.
|
---|
| 624 | </para>
|
---|
| 625 |
|
---|
| 626 | <para><indexterm>
|
---|
| 627 | <primary>security</primary>
|
---|
| 628 | </indexterm><indexterm>
|
---|
| 629 | <primary>protection</primary>
|
---|
| 630 | </indexterm><indexterm>
|
---|
| 631 | <primary>compromise</primary>
|
---|
| 632 | </indexterm><indexterm>
|
---|
| 633 | <primary>consequential risk</primary>
|
---|
| 634 | </indexterm>
|
---|
| 635 | The Samba Team totally agrees with the necessity to observe and fully implement
|
---|
| 636 | every security facility to provide a level of protection and security that is necessary
|
---|
| 637 | and that the end user (or network administrator) needs. Never would the Samba Team
|
---|
| 638 | recommend a compromise to system security, nor would deliberate defoliation of
|
---|
| 639 | security be publicly condoned; yet this is the practice by many Windows network
|
---|
| 640 | administrators just to make happy users who have no notion of consequential risk.
|
---|
| 641 | </para>
|
---|
| 642 |
|
---|
| 643 | <para><indexterm>
|
---|
| 644 | <primary>condemns</primary>
|
---|
| 645 | </indexterm><indexterm>
|
---|
| 646 | <primary>security fixes</primary>
|
---|
| 647 | </indexterm><indexterm>
|
---|
| 648 | <primary>updates</primary>
|
---|
| 649 | </indexterm><indexterm>
|
---|
| 650 | <primary>development</primary>
|
---|
| 651 | </indexterm><indexterm>
|
---|
| 652 | <primary>documentation</primary>
|
---|
| 653 | </indexterm><indexterm>
|
---|
| 654 | <primary>security updates</primary>
|
---|
| 655 | </indexterm><indexterm>
|
---|
| 656 | <primary>turn-around time</primary>
|
---|
| 657 | </indexterm>
|
---|
| 658 | The report condemns Samba for releasing updates and security fixes, yet Microsoft
|
---|
| 659 | online updates need to be applied almost weekly. The answer to the criticism
|
---|
| 660 | lies in the fact that Samba development is continuing, documentation is improving,
|
---|
| 661 | user needs are being increasingly met or exceeded, and security updates are issued
|
---|
| 662 | with a short turnaround time.
|
---|
| 663 | </para>
|
---|
| 664 |
|
---|
| 665 | <para><indexterm>
|
---|
| 666 | <primary>modularization</primary>
|
---|
| 667 | </indexterm><indexterm>
|
---|
| 668 | <primary>next generation</primary>
|
---|
| 669 | </indexterm><indexterm>
|
---|
| 670 | <primary>responsible</primary>
|
---|
| 671 | </indexterm><indexterm>
|
---|
| 672 | <primary>dependability</primary>
|
---|
| 673 | </indexterm><indexterm>
|
---|
| 674 | <primary>road-map</primary>
|
---|
| 675 | <secondary>published</secondary>
|
---|
| 676 | </indexterm>
|
---|
| 677 | The release of Samba-4 is expected around late 2004 to early 2005 and involves a near
|
---|
| 678 | complete rewrite to permit extensive modularization and to prepare Samba for new
|
---|
| 679 | functionality planned for addition during the next-generation series. The Samba Team
|
---|
| 680 | is responsible and can be depended upon; the history to date suggests a high
|
---|
| 681 | degree of dependability and on charter development consistent with published
|
---|
| 682 | roadmap projections.
|
---|
| 683 | </para>
|
---|
| 684 |
|
---|
| 685 | <para><indexterm>
|
---|
| 686 | <primary>foundation members</primary>
|
---|
| 687 | </indexterm><indexterm>
|
---|
| 688 | <primary>Common Internet File System</primary>
|
---|
| 689 | <see>CIFS</see>
|
---|
| 690 | </indexterm><indexterm>
|
---|
| 691 | <primary>network attached storage</primary>
|
---|
| 692 | <see>NAS</see>
|
---|
| 693 | </indexterm><indexterm>
|
---|
| 694 | <primary>conferences</primary>
|
---|
| 695 | </indexterm><indexterm>
|
---|
| 696 | <primary>presence and leadership</primary>
|
---|
| 697 | </indexterm><indexterm>
|
---|
| 698 | <primary>leadership</primary>
|
---|
| 699 | </indexterm><indexterm>
|
---|
| 700 | <primary>inter-operability</primary>
|
---|
| 701 | </indexterm>
|
---|
| 702 | Not well published is the fact that Microsoft was a foundation member of
|
---|
| 703 | the Common Internet File System (CIFS) initiative, together with the participation
|
---|
| 704 | of the network attached storage (NAS) industry. Unfortunately, for the past few years,
|
---|
| 705 | Microsoft has been absent from active involvement at CIFS conferences and has
|
---|
| 706 | not exercised the leadership expected of a major force in the networking technology
|
---|
| 707 | space. The Samba Team has maintained consistent presence and leadership at all
|
---|
| 708 | CIFS conferences and at the interoperability laboratories run concurrently with
|
---|
| 709 | them.
|
---|
| 710 | </para></listitem>
|
---|
| 711 | </varlistentry>
|
---|
| 712 |
|
---|
| 713 | <varlistentry>
|
---|
| 714 | <term>Cryptographic Controls (schannel, sign'n'seal)</term>
|
---|
| 715 | <listitem><para><indexterm>
|
---|
| 716 | <primary>Cryptographic</primary>
|
---|
| 717 | </indexterm><indexterm>
|
---|
| 718 | <primary>schannel</primary>
|
---|
| 719 | </indexterm><indexterm>
|
---|
| 720 | <primary>digital sign'n'seal</primary>
|
---|
| 721 | </indexterm>
|
---|
| 722 | The report correctly mentions that Samba did not support the most recent
|
---|
| 723 | <constant>schannel</constant> and <constant>digital sign'n'seal</constant> features
|
---|
| 724 | of Microsoft Windows NT/200x/XPPro products. This is one of the key features
|
---|
| 725 | of the Samba-3 release. Market research reports take so long to generate that they are
|
---|
| 726 | seldom a reflection of current practice, and in many respects reports are like a
|
---|
| 727 | pathology report &smbmdash; they reflect accurately (at best) status at a snapshot in time.
|
---|
| 728 | Meanwhile, the world moves on.
|
---|
| 729 | </para>
|
---|
| 730 |
|
---|
| 731 | <para><indexterm>
|
---|
| 732 | <primary>public specifications</primary>
|
---|
| 733 | </indexterm><indexterm>
|
---|
| 734 | <primary>protocols</primary>
|
---|
| 735 | </indexterm><indexterm>
|
---|
| 736 | <primary>algorithm</primary>
|
---|
| 737 | </indexterm><indexterm>
|
---|
| 738 | <primary>compatible</primary>
|
---|
| 739 | </indexterm><indexterm>
|
---|
| 740 | <primary>network</primary>
|
---|
| 741 | <secondary>traffic</secondary>
|
---|
| 742 | <tertiary>observation</tertiary>
|
---|
| 743 | </indexterm><indexterm>
|
---|
| 744 | <primary>defensible standards</primary>
|
---|
| 745 | </indexterm><indexterm>
|
---|
| 746 | <primary>secure networking</primary>
|
---|
| 747 | </indexterm>
|
---|
| 748 | It should be pointed out that had clear public specifications for the protocols
|
---|
| 749 | been published, it would have been much easier to implement these features and would have
|
---|
| 750 | taken less time to do. The sole mechanism used to find an algorithm that is compatible
|
---|
| 751 | with the methods used by Microsoft has been based on observation of network traffic
|
---|
| 752 | and trial-and-error implementation of potential techniques. The real value of public
|
---|
| 753 | and defensible standards is obvious to all and would have enabled more secure networking
|
---|
| 754 | for everyone.
|
---|
| 755 | </para>
|
---|
| 756 |
|
---|
| 757 | <para><indexterm>
|
---|
| 758 | <primary>Critics</primary>
|
---|
| 759 | </indexterm><indexterm>
|
---|
| 760 | <primary>digital sign'n'seal</primary>
|
---|
| 761 | </indexterm>
|
---|
| 762 | Critics of Samba often ignore fundamental problems that may plague (or may have plagued)
|
---|
| 763 | the users of Microsoft's products also. Those who are first to criticize Samba
|
---|
| 764 | for not rushing into release of <constant>digital sign'n'seal</constant> support
|
---|
| 765 | often dismiss the problems that Microsoft has
|
---|
| 766 | <ulink url="http://support.microsoft.com/default.aspx?kbid=321733">acknowledged</ulink>
|
---|
| 767 | and for which a fix was provided. In fact,
|
---|
| 768 | <ulink url="http://www.tangent-systems.com/support/delayedwrite.html">Tangent Systems</ulink>
|
---|
| 769 | have documented a significant problem with delays writes that can be connected with the
|
---|
| 770 | implementation of sign'n'seal. They provide a work-around that is not trivial for many
|
---|
| 771 | Windows networking sites. From notes such as this it is clear that there are benefits
|
---|
| 772 | from not rushing new technology out of the door too soon.
|
---|
| 773 | </para>
|
---|
| 774 |
|
---|
| 775 | <para><indexterm>
|
---|
| 776 | <primary>secure networking protocols</primary>
|
---|
| 777 | </indexterm><indexterm>
|
---|
| 778 | <primary>refereed standards</primary>
|
---|
| 779 | </indexterm><indexterm>
|
---|
| 780 | <primary>proprietary</primary>
|
---|
| 781 | </indexterm><indexterm>
|
---|
| 782 | <primary>digital rights</primary>
|
---|
| 783 | </indexterm><indexterm>
|
---|
| 784 | <primary>protection</primary>
|
---|
| 785 | </indexterm><indexterm>
|
---|
| 786 | <primary>networking protocols</primary>
|
---|
| 787 | </indexterm><indexterm>
|
---|
| 788 | <primary>diffusion</primary>
|
---|
| 789 | </indexterm><indexterm>
|
---|
| 790 | <primary>consumer</primary>
|
---|
| 791 | </indexterm><indexterm>
|
---|
| 792 | <primary>choice</primary>
|
---|
| 793 | </indexterm>
|
---|
| 794 | One final comment is warranted. If companies want more secure networking protocols,
|
---|
| 795 | the most effective method by which this can be achieved is by users seeking
|
---|
| 796 | and working together to help define open and publicly refereed standards. The
|
---|
| 797 | development of closed source, proprietary methods that are developed in a
|
---|
| 798 | clandestine framework of secrecy, under claims of digital rights protection, does
|
---|
| 799 | not favor the diffusion of safe networking protocols and certainly does not
|
---|
| 800 | help the consumer to make a better choice.
|
---|
| 801 | </para></listitem>
|
---|
| 802 | </varlistentry>
|
---|
| 803 |
|
---|
| 804 | <varlistentry>
|
---|
| 805 | <term>Active Directory Replacement with Kerberos, LDAP, and Samba</term>
|
---|
| 806 | <indexterm>
|
---|
| 807 | <primary>Active Directory</primary>
|
---|
| 808 | <secondary>Replacement</secondary>
|
---|
| 809 | </indexterm><indexterm>
|
---|
| 810 | <primary>Kerberos</primary>
|
---|
| 811 | </indexterm><indexterm>
|
---|
| 812 | <primary>LDAP</primary>
|
---|
| 813 | </indexterm><indexterm>
|
---|
| 814 | <primary>remote procedure call</primary>
|
---|
| 815 | <see>RPC</see>
|
---|
| 816 | </indexterm>
|
---|
| 817 | <listitem><para>
|
---|
| 818 | <literallayout> </literallayout>
|
---|
| 819 | The Microsoft networking protocols extensively make use of remote procedure call (RPC)
|
---|
| 820 | technology. Active Directory is not a simple mixture of LDAP and Kerberos together
|
---|
| 821 | with file and print services, but rather is a complex, intertwined implementation
|
---|
| 822 | of them that uses RPCs that are not supported by any of these component technologies
|
---|
| 823 | and yet by which they are made to interoperate in ways that the components do not
|
---|
| 824 | support.
|
---|
| 825 | </para>
|
---|
| 826 |
|
---|
| 827 | <para><indexterm>
|
---|
| 828 | <primary>Active Directory</primary>
|
---|
| 829 | <secondary>Server</secondary>
|
---|
| 830 | </indexterm><indexterm>
|
---|
| 831 | <primary>OpenLDAP</primary>
|
---|
| 832 | </indexterm><indexterm>
|
---|
| 833 | <primary>Kerberos</primary>
|
---|
| 834 | </indexterm><indexterm>
|
---|
| 835 | <primary>project maintainers</primary>
|
---|
| 836 | </indexterm><indexterm>
|
---|
| 837 | <primary>LDAP</primary>
|
---|
| 838 | </indexterm>
|
---|
| 839 | In order to make the popular request for Samba to be an Active Directory Server a
|
---|
| 840 | reality, it is necessary to add to OpenLDAP, Kerberos, as well as Samba, RPC calls
|
---|
| 841 | that are not presently supported. The Samba Team has not been able to gain critical
|
---|
| 842 | overall support for all project maintainers to work together on the complex
|
---|
| 843 | challenge of developing and integrating the necessary technologies. Therefore, if
|
---|
| 844 | the Samba Team does not make it a priority to absorb Kerberos and LDAP functionality
|
---|
| 845 | into the Samba project, this dream request cannot become a reality.
|
---|
| 846 | </para>
|
---|
| 847 |
|
---|
| 848 | <para><indexterm>
|
---|
| 849 | <primary>missing RPC's</primary>
|
---|
| 850 | </indexterm><indexterm>
|
---|
| 851 | <primary>road-map</primary>
|
---|
| 852 | </indexterm><indexterm>
|
---|
| 853 | <primary>ADS</primary>
|
---|
| 854 | <secondary>server</secondary>
|
---|
| 855 | </indexterm><indexterm>
|
---|
| 856 | <primary>MMC</primary>
|
---|
| 857 | </indexterm><indexterm>
|
---|
| 858 | <primary>managed</primary>
|
---|
| 859 | </indexterm>
|
---|
| 860 | At this time, the integration of LDAP, Kerberos, and the missing RPCs is not on the
|
---|
| 861 | Samba development roadmap. If it is not on the published roadmap, it cannot be delivered
|
---|
| 862 | anytime soon. Ergo, ADS server support is not a current goal for Samba development.
|
---|
| 863 | The Samba Team is most committed to permitting Samba to be a full ADS domain member
|
---|
| 864 | that is increasingly capable of being managed using Microsoft Windows MMC tools.
|
---|
| 865 | </para></listitem>
|
---|
| 866 | </varlistentry>
|
---|
| 867 | </variablelist>
|
---|
| 868 |
|
---|
| 869 | <sect3>
|
---|
| 870 | <title>Kerberos Exposed</title>
|
---|
| 871 |
|
---|
| 872 | <para><indexterm>
|
---|
| 873 | <primary>kerberos</primary>
|
---|
| 874 | </indexterm><indexterm>
|
---|
| 875 | <primary>unauthorized activities</primary>
|
---|
| 876 | </indexterm><indexterm>
|
---|
| 877 | <primary>authorized location</primary>
|
---|
| 878 | </indexterm>
|
---|
| 879 | Kerberos is a network authentication protocol that provides secure authentication for
|
---|
| 880 | client-server applications by using secret-key cryptography. Firewalls are an insufficient
|
---|
| 881 | barrier mechanism in today's networking world; at best they only restrict incoming network
|
---|
| 882 | traffic but cannot prevent network traffic that comes from authorized locations from
|
---|
| 883 | performing unauthorized activities.
|
---|
| 884 | </para>
|
---|
| 885 |
|
---|
| 886 | <para><indexterm>
|
---|
| 887 | <primary>strong cryptography</primary>
|
---|
| 888 | </indexterm><indexterm>
|
---|
| 889 | <primary>identity</primary>
|
---|
| 890 | </indexterm><indexterm>
|
---|
| 891 | <primary>integrity</primary>
|
---|
| 892 | </indexterm>
|
---|
| 893 | Kerberos was created by MIT as a solution to network security problems. The Kerberos protocol uses
|
---|
| 894 | strong cryptography so that a client can prove its identity to a server (and vice versa) across an
|
---|
| 895 | insecure network connection. After a client and server has used Kerberos to prove their identity,
|
---|
| 896 | they can also encrypt all of their communications to assure privacy and data integrity as they go
|
---|
| 897 | about their business.
|
---|
| 898 | </para>
|
---|
| 899 |
|
---|
| 900 | <para><indexterm>
|
---|
| 901 | <primary>trusted third-party</primary>
|
---|
| 902 | </indexterm><indexterm>
|
---|
| 903 | <primary>principals</primary>
|
---|
| 904 | </indexterm><indexterm>
|
---|
| 905 | <primary>trusting</primary>
|
---|
| 906 | </indexterm><indexterm>
|
---|
| 907 | <primary>kerberos</primary>
|
---|
| 908 | <secondary>server</secondary>
|
---|
| 909 | </indexterm><indexterm>
|
---|
| 910 | <primary>secret</primary>
|
---|
| 911 | </indexterm>
|
---|
| 912 | Kerberos is a trusted third-party service. That means that there is a third party (the kerberos
|
---|
| 913 | server) that is trusted by all the entities on the network (users and services, usually called
|
---|
| 914 | principals). All principals share a secret password (or key) with the kerberos server and this
|
---|
| 915 | enables principals to verify that the messages from the kerberos server are authentic. Therefore,
|
---|
| 916 | trusting the kerberos server, users and services can authenticate each other.
|
---|
| 917 | </para>
|
---|
| 918 |
|
---|
| 919 | <para>
|
---|
| 920 | <indexterm><primary>restricted export</primary></indexterm>
|
---|
| 921 | <indexterm><primary>MIT Kerberos</primary></indexterm>
|
---|
| 922 | <indexterm><primary>Heimdal Kerberos</primary></indexterm>
|
---|
| 923 | Kerberos was, until recently, a technology that was restricted from being exported from the United States.
|
---|
| 924 | For many years that hindered global adoption of more secure networking technologies both within the United States
|
---|
| 925 | and abroad. A free and unencumbered implementation of MIT Kerberos has been produced in Europe
|
---|
| 926 | and is available from the <ulink url="http://www.pdc.kth.se/heimdal/">Royal Institute</ulink> of
|
---|
| 927 | Technology (KTH), Sweden. It is known as the Heimdal Kerberos project. In recent times the U.S. government
|
---|
| 928 | has removed sanctions affecting the global distribution of MIT Kerberos. It is likely that there will be a
|
---|
| 929 | significant surge forward in the development of Kerberos-enabled applications and in the general deployment
|
---|
| 930 | and use of Kerberos across the spectrum of the information technology industry.
|
---|
| 931 | </para>
|
---|
| 932 |
|
---|
| 933 | <para>
|
---|
| 934 | <indexterm><primary>Kerberos</primary><secondary>interoperability</secondary></indexterm>
|
---|
| 935 | A storm has broken out concerning interoperability between MIT Kerberos and Microsofts' implementation
|
---|
| 936 | of it. For example, a 2002
|
---|
| 937 | <ulink url="http://www.idg.com.sg/idgwww.nsf/0/5DDA8D153A7505A748256BAB000D992A?OpenDocument">IDG</ulink>
|
---|
| 938 | report<footnote>Note: This link is no longer active. The same article is still
|
---|
| 939 | available from <ulink url="http://199.105.191.226/Man/2699/020430msdoj/">ITWorld.com</ulink> (July 5, 2005)</footnote> by
|
---|
| 940 | states:
|
---|
| 941 | </para>
|
---|
| 942 |
|
---|
| 943 | <blockquote><para>
|
---|
| 944 | A Microsoft Corp. executive testified at the software giant's remedy hearing that the company goes to
|
---|
| 945 | great lengths to disclose interfaces and protocols that allow third-party software products to interact
|
---|
| 946 | with Windows. But a lawyer with the states suing Microsoft pointed out that when it comes to the company's
|
---|
| 947 | use of the Kerberos authentication specification, not everyone agrees.
|
---|
| 948 | </para>
|
---|
| 949 |
|
---|
| 950 | <para>
|
---|
| 951 | <indexterm><primary>Kerberos</primary><secondary>unspecified fields</secondary></indexterm>
|
---|
| 952 | Robert Short, vice president of Windows core technology at Microsoft, wrote in his direct testimony prepared
|
---|
| 953 | before his appearance that non-Microsoft operating systems can disregard the portion of the Kerberos version
|
---|
| 954 | 5 specification that Windows clients use for proprietary purposes and still achieve interoperability with
|
---|
| 955 | the Microsoft OS. Microsoft takes advantage of unspecified fields in the Kerberos specification for storing
|
---|
| 956 | Windows-specific authorization data, Short wrote. The designers of Kerberos left these fields undefined so
|
---|
| 957 | that software developers could add their own authorization information, he said.
|
---|
| 958 | </para></blockquote>
|
---|
| 959 |
|
---|
| 960 | <para>
|
---|
| 961 | <indexterm><primary>DCE</primary></indexterm>
|
---|
| 962 | <indexterm><primary>RPC</primary></indexterm>
|
---|
| 963 | It so happens that Microsoft Windows clients depend on and expect the contents of the <emphasis>unspecified
|
---|
| 964 | fields</emphasis> in the Kerberos 5 communications data stream for their Windows interoperability,
|
---|
| 965 | particularly when Samba is expected to emulate a Windows Server 200x domain controller. But the interoperability
|
---|
| 966 | issue goes far deeper than this. In the domain control protocols that are used by MS Windows XP Professional,
|
---|
| 967 | there is a tight interdependency between the Kerberos protocols and the Microsoft distributed computing environment
|
---|
| 968 | (DCE) RPCs that themselves are an integral part of the SMB/CIFS protocols as used by
|
---|
| 969 | Microsoft.
|
---|
| 970 | </para>
|
---|
| 971 |
|
---|
| 972 | <para>
|
---|
| 973 | Microsoft makes the following comment in a reference in a
|
---|
| 974 | <ulink url="http://www.microsoft.com/technet/itsolutions/interop/mgmt/kerberos.asp">
|
---|
| 975 | technet</ulink> article:
|
---|
| 976 | </para>
|
---|
| 977 |
|
---|
| 978 | <blockquote><para><indexterm>
|
---|
| 979 | <primary>Privilege Attribute Certificates</primary>
|
---|
| 980 | <see>PAC</see>
|
---|
| 981 | </indexterm><indexterm>
|
---|
| 982 | <primary>access control</primary>
|
---|
| 983 | </indexterm>
|
---|
| 984 | The DCE Security Services are also layered on the Kerberos protocol. DCE authentication services use RPC
|
---|
| 985 | representation of Kerberos protocol messages. In addition, DCE uses the authorization data field in Kerberos
|
---|
| 986 | tickets to convey Privilege Attribute Certificates (PACs) that define user identity and group membership.
|
---|
| 987 | The DCE PAC is used in a similar manner as Windows NT Security IDs for user authorization and access control.
|
---|
| 988 | Windows NT services will not be able to translate DCE PACs into Windows NT user and group identifiers. This
|
---|
| 989 | is not an issue with Kerberos interoperability, but rather an issue of interoperability between DCE and
|
---|
| 990 | Windows NT access control information.
|
---|
| 991 | </para></blockquote>
|
---|
| 992 |
|
---|
| 993 | </sect3>
|
---|
| 994 |
|
---|
| 995 | </sect2>
|
---|
| 996 |
|
---|
| 997 | </sect1>
|
---|
| 998 |
|
---|
| 999 | <sect1 id="ch10expl">
|
---|
| 1000 | <title>Implementation</title>
|
---|
| 1001 |
|
---|
| 1002 | <para>
|
---|
| 1003 | The following procedures outline the implementation of the security measures discussed so far.
|
---|
| 1004 | </para>
|
---|
| 1005 |
|
---|
| 1006 | <sect2>
|
---|
| 1007 | <title>Share Access Controls</title>
|
---|
| 1008 |
|
---|
| 1009 | <para><indexterm>
|
---|
| 1010 | <primary>Share Access Controls</primary>
|
---|
| 1011 | </indexterm><indexterm>
|
---|
| 1012 | <primary>filter</primary>
|
---|
| 1013 | </indexterm><indexterm>
|
---|
| 1014 | <primary>connection</primary>
|
---|
| 1015 | </indexterm>
|
---|
| 1016 | Access control entries placed on the share itself act as a filter at the time a when CIFS/SMB client (such as
|
---|
| 1017 | Windows XP Pro) attempts to make a connection to the Samba server.
|
---|
| 1018 | </para>
|
---|
| 1019 |
|
---|
| 1020 | <procedure>
|
---|
| 1021 | <title>Create/Edit/Delete Share ACLs</title>
|
---|
| 1022 | <step><para><indexterm>
|
---|
| 1023 | <primary>Domain Administrator</primary>
|
---|
| 1024 | </indexterm><indexterm>
|
---|
| 1025 | <primary>account</primary>
|
---|
| 1026 | </indexterm>
|
---|
| 1027 | From a Windows 200x/XP Professional workstation, log on to the domain using the Domain Administrator
|
---|
| 1028 | account (on Samba domains, this is usually the account called <constant>root</constant>).
|
---|
| 1029 | </para></step>
|
---|
| 1030 |
|
---|
| 1031 | <step><para>
|
---|
| 1032 | Click
|
---|
| 1033 | <menuchoice>
|
---|
| 1034 | <guimenu>Start</guimenu>
|
---|
| 1035 | <guimenuitem>Settings</guimenuitem>
|
---|
| 1036 | <guimenuitem>Control Panel</guimenuitem>
|
---|
| 1037 | <guimenuitem>Administrative Tools</guimenuitem>
|
---|
| 1038 | <guimenuitem>Computer Management</guimenuitem>
|
---|
| 1039 | </menuchoice>.
|
---|
| 1040 | </para></step>
|
---|
| 1041 |
|
---|
| 1042 | <step><para>
|
---|
| 1043 | In the left panel,
|
---|
| 1044 | <menuchoice>
|
---|
| 1045 | <guimenu>[Right mouse menu item] Computer Management (Local)</guimenu>
|
---|
| 1046 | <guimenuitem>Connect to another computer ...</guimenuitem>
|
---|
| 1047 | <guimenuitem>Browse...</guimenuitem>
|
---|
| 1048 | <guimenuitem>Advanced</guimenuitem>
|
---|
| 1049 | <guimenuitem>Find Now</guimenuitem>
|
---|
| 1050 | </menuchoice>. In the lower panel, click on the name of the server you wish to
|
---|
| 1051 | administer. Click <menuchoice>
|
---|
| 1052 | <guimenu>OK</guimenu>
|
---|
| 1053 | <guimenuitem>OK</guimenuitem>
|
---|
| 1054 | <guimenuitem>OK</guimenuitem>
|
---|
| 1055 | </menuchoice>.<indexterm>
|
---|
| 1056 | <primary>Computer Management</primary>
|
---|
| 1057 | </indexterm>
|
---|
| 1058 | In the left panel, the entry <guimenu>Computer Management (Local)</guimenu> should now reflect
|
---|
| 1059 | the change made. For example, if the server you are administering is called <constant>FRODO</constant>,
|
---|
| 1060 | the Computer Management entry should now say <guimenu>Computer Management (FRODO)</guimenu>.
|
---|
| 1061 | </para></step>
|
---|
| 1062 |
|
---|
| 1063 | <step><para>
|
---|
| 1064 | In the left panel, click <menuchoice>
|
---|
| 1065 | <guimenu>Computer Management (FRODO)</guimenu>
|
---|
| 1066 | <guimenuitem>[+] Shared Folders</guimenuitem>
|
---|
| 1067 | <guimenuitem>Shares</guimenuitem>
|
---|
| 1068 | </menuchoice>.
|
---|
| 1069 | </para></step>
|
---|
| 1070 |
|
---|
| 1071 | <step><para><indexterm>
|
---|
| 1072 | <primary>ACLs</primary>
|
---|
| 1073 | </indexterm><indexterm>
|
---|
| 1074 | <primary>Share Permissions</primary>
|
---|
| 1075 | </indexterm>
|
---|
| 1076 | In the right panel, double-click on the share on which you wish to set/edit ACLs. This
|
---|
| 1077 | will bring up the Properties panel. Click the <guimenu>Share Permissions</guimenu> tab.
|
---|
| 1078 | </para></step>
|
---|
| 1079 |
|
---|
| 1080 | <step><para><indexterm>
|
---|
| 1081 | <primary>access control settings</primary>
|
---|
| 1082 | </indexterm><indexterm>
|
---|
| 1083 | <primary>Everyone</primary>
|
---|
| 1084 | </indexterm><indexterm>
|
---|
| 1085 | <primary>full control</primary>
|
---|
| 1086 | </indexterm><indexterm>
|
---|
| 1087 | <primary>over-rule</primary>
|
---|
| 1088 | </indexterm><indexterm>
|
---|
| 1089 | <primary>permissions</primary>
|
---|
| 1090 | </indexterm><indexterm>
|
---|
| 1091 | <primary>rejected</primary>
|
---|
| 1092 | </indexterm>
|
---|
| 1093 | You may now edit/add/remove access control settings. Be very careful. Many problems have been
|
---|
| 1094 | created by people who decided that everyone should be rejected but one particular group should
|
---|
| 1095 | have full control. This is a catch-22 situation because members of that particular group also
|
---|
| 1096 | belong to the group <constant>Everyone</constant>, which therefore overrules any permissions
|
---|
| 1097 | set for the permitted group.
|
---|
| 1098 | </para></step>
|
---|
| 1099 |
|
---|
| 1100 | <step><para>
|
---|
| 1101 | When you are done with editing, close all panels by clicking through the <guimenu>OK</guimenu>
|
---|
| 1102 | buttons.
|
---|
| 1103 | </para></step>
|
---|
| 1104 | </procedure>
|
---|
| 1105 |
|
---|
| 1106 | </sect2>
|
---|
| 1107 |
|
---|
| 1108 | <sect2>
|
---|
| 1109 | <title>Share Definition Controls</title>
|
---|
| 1110 |
|
---|
| 1111 | <para><indexterm>
|
---|
| 1112 | <primary>Share Definition</primary>
|
---|
| 1113 | <secondary>Controls</secondary>
|
---|
| 1114 | </indexterm><indexterm>
|
---|
| 1115 | <primary>check-point</primary>
|
---|
| 1116 | </indexterm><indexterm>
|
---|
| 1117 | <primary>pile-driver</primary>
|
---|
| 1118 | </indexterm><indexterm>
|
---|
| 1119 | <primary>credential</primary>
|
---|
| 1120 | </indexterm><indexterm>
|
---|
| 1121 | <primary>powers</primary>
|
---|
| 1122 | </indexterm><indexterm>
|
---|
| 1123 | <primary>privileges</primary>
|
---|
| 1124 | </indexterm>
|
---|
| 1125 | Share-definition-based access controls can be used like a checkpoint or like a pile-driver. Just as a
|
---|
| 1126 | checkpoint can be used to require someone who wants to get through to meet certain requirements, so
|
---|
| 1127 | it is possible to require the user (or group the user belongs to) to meet specified credential-related
|
---|
| 1128 | objectives. It can be likened to a pile-driver by overriding default controls in that having met the
|
---|
| 1129 | credential-related objectives, the user can be granted powers and privileges that would not normally be
|
---|
| 1130 | available under default settings.
|
---|
| 1131 | </para>
|
---|
| 1132 |
|
---|
| 1133 | <para><indexterm>
|
---|
| 1134 | <primary>access controls</primary>
|
---|
| 1135 | </indexterm><indexterm>
|
---|
| 1136 | <primary>ACLs</primary>
|
---|
| 1137 | </indexterm><indexterm>
|
---|
| 1138 | <primary>share definition controls</primary>
|
---|
| 1139 | </indexterm><indexterm>
|
---|
| 1140 | <primary>hierarchy of control</primary>
|
---|
| 1141 | </indexterm>
|
---|
| 1142 | It must be emphasized that the controls discussed here can act as a filter or give rights of passage
|
---|
| 1143 | that act as a superstructure over normal directory and file access controls. However, share-level
|
---|
| 1144 | ACLs act at a higher level than do share definition controls because the user must filter through the
|
---|
| 1145 | share-level controls to get to the share-definition controls. The proper hierarchy of controls implemented
|
---|
| 1146 | by Samba and Windows networking consists of:
|
---|
| 1147 | </para>
|
---|
| 1148 |
|
---|
| 1149 | <orderedlist>
|
---|
| 1150 | <listitem><para>Share-level ACLs</para></listitem>
|
---|
| 1151 | <listitem><para>Share-definition controls</para></listitem>
|
---|
| 1152 | <listitem><para>Directory and file permissions</para></listitem>
|
---|
| 1153 | <listitem><para>Directory and file POSIX ACLs</para></listitem>
|
---|
| 1154 | </orderedlist>
|
---|
| 1155 |
|
---|
| 1156 | <sect3>
|
---|
| 1157 | <title>Checkpoint Controls</title>
|
---|
| 1158 |
|
---|
| 1159 | <para><indexterm>
|
---|
| 1160 | <primary>Checkpoint Controls</primary>
|
---|
| 1161 | </indexterm>
|
---|
| 1162 | Consider the following extract from a &smb.conf; file defining the share called <constant>Apps</constant>:
|
---|
| 1163 | <screen>
|
---|
| 1164 | [Apps]
|
---|
| 1165 | comment = Application Share
|
---|
| 1166 | path = /data/apps
|
---|
| 1167 | read only = Yes
|
---|
| 1168 | valid users = @Employees
|
---|
| 1169 | </screen>
|
---|
| 1170 | This definition permits only those who are members of the group called <constant>Employees</constant> to
|
---|
| 1171 | access the share.
|
---|
| 1172 | </para>
|
---|
| 1173 |
|
---|
| 1174 | <note><para><indexterm>
|
---|
| 1175 | <primary>Domain Member</primary>
|
---|
| 1176 | <secondary>servers</secondary>
|
---|
| 1177 | </indexterm><indexterm>
|
---|
| 1178 | <primary>winbind use default domain</primary>
|
---|
| 1179 | </indexterm><indexterm>
|
---|
| 1180 | <primary>fully qualified</primary>
|
---|
| 1181 | </indexterm><indexterm>
|
---|
| 1182 | <primary>valid users</primary>
|
---|
| 1183 | </indexterm><indexterm>
|
---|
| 1184 | <primary>delimiter</primary>
|
---|
| 1185 | </indexterm>
|
---|
| 1186 | On domain member servers and clients, even when the <parameter>winbind use default domain</parameter> has
|
---|
| 1187 | been specified, the use of domain accounts in security controls requires fully qualified domain specification,
|
---|
| 1188 | for example, <smbconfoption name="valid users">@"MEGANET\Northern Engineers"</smbconfoption>.
|
---|
| 1189 | Note the necessity to use the double quotes to avoid having the space in the Windows group name interpreted as a
|
---|
| 1190 | delimiter.
|
---|
| 1191 | </para></note>
|
---|
| 1192 |
|
---|
| 1193 | <para><indexterm>
|
---|
| 1194 | <primary>ACL</primary>
|
---|
| 1195 | </indexterm><indexterm>
|
---|
| 1196 | <primary>access</primary>
|
---|
| 1197 | </indexterm><indexterm>
|
---|
| 1198 | <primary>validate</primary>
|
---|
| 1199 | </indexterm>
|
---|
| 1200 | If there is an ACL on the share itself to permit read/write access for all <constant>Employees</constant>
|
---|
| 1201 | as well as read/write for the group <constant>Doctors</constant>, both groups are permitted through
|
---|
| 1202 | to the share. However, at the moment an attempt is made to set up a connection to the share, a member of
|
---|
| 1203 | the group <constant>Doctors</constant>, who is not also a member of the group <constant>Employees</constant>,
|
---|
| 1204 | would immediately fail to validate.
|
---|
| 1205 | </para>
|
---|
| 1206 |
|
---|
| 1207 | <para><indexterm>
|
---|
| 1208 | <primary>share definition controls</primary>
|
---|
| 1209 | </indexterm>
|
---|
| 1210 | Consider another example. In this case, you want to permit all members of the group <constant>Employees</constant>
|
---|
| 1211 | except the user <constant>patrickj</constant> to access the <constant>Apps</constant> share. This can be
|
---|
| 1212 | easily achieved by setting a share-level ACL permitting only <constant>Employees</constant> to access the share,
|
---|
| 1213 | and then in the share definition controls excluding just <constant>patrickj</constant>. Here is how that might
|
---|
| 1214 | be done:
|
---|
| 1215 | <screen>
|
---|
| 1216 | [Apps]
|
---|
| 1217 | comment = Application Share
|
---|
| 1218 | path = /data/apps
|
---|
| 1219 | read only = Yes
|
---|
| 1220 | invalid users = patrickj
|
---|
| 1221 | </screen>
|
---|
| 1222 | <indexterm>
|
---|
| 1223 | <primary>permissions</primary>
|
---|
| 1224 | </indexterm>
|
---|
| 1225 | Let us assume that you want to permit the user <constant>gbshaw</constant> to manage any file in the
|
---|
| 1226 | UNIX/Linux file system directory <filename>/data/apps</filename>, but you do not want to grant any write
|
---|
| 1227 | permissions beyond that directory tree. Here is one way this can be done:
|
---|
| 1228 | <screen>
|
---|
| 1229 | [Apps]
|
---|
| 1230 | comment = Application Share
|
---|
| 1231 | path = /data/apps
|
---|
| 1232 | read only = Yes
|
---|
| 1233 | invalid users = patrickj
|
---|
| 1234 | admin users = gbshaw
|
---|
| 1235 | </screen>
|
---|
| 1236 | <indexterm>
|
---|
| 1237 | <primary>administrative rights</primary>
|
---|
| 1238 | </indexterm>
|
---|
| 1239 | Now we have a set of controls that permits only <constant>Employees</constant> who are also members of
|
---|
| 1240 | the group <constant>Doctors</constant>, excluding the user <constant>patrickj</constant>, to have
|
---|
| 1241 | read-only privilege, but the user <constant>gbshaw</constant> is granted administrative rights.
|
---|
| 1242 | The administrative rights conferred upon the user <constant>gbshaw</constant> permit operation as
|
---|
| 1243 | if that user has logged in as the user <constant>root</constant> on the UNIX/Linux system and thus,
|
---|
| 1244 | for access to the directory tree that has been shared (exported), permit the user to override controls
|
---|
| 1245 | that apply to all other users on that resource.
|
---|
| 1246 | </para>
|
---|
| 1247 |
|
---|
| 1248 | <para>
|
---|
| 1249 | There are additional checkpoint controls that may be used. For example, if for the same share we now
|
---|
| 1250 | want to provide the user <constant>peters</constant> with the ability to write to one directory to
|
---|
| 1251 | which he has write privilege in the UNIX file system, you can specifically permit that with the
|
---|
| 1252 | following settings:
|
---|
| 1253 | <screen>
|
---|
| 1254 | [Apps]
|
---|
| 1255 | comment = Application Share
|
---|
| 1256 | path = /data/apps
|
---|
| 1257 | read only = Yes
|
---|
| 1258 | invalid users = patrickj
|
---|
| 1259 | admin users = gbshaw
|
---|
| 1260 | write list = peters
|
---|
| 1261 | </screen>
|
---|
| 1262 | <indexterm>
|
---|
| 1263 | <primary>check-point controls</primary>
|
---|
| 1264 | </indexterm>
|
---|
| 1265 | This is a particularly complex example at this point, but it begins to demonstrate the possibilities.
|
---|
| 1266 | You should refer to the online manual page for the &smb.conf; file for more information regarding
|
---|
| 1267 | the checkpoint controls that Samba implements.
|
---|
| 1268 | </para>
|
---|
| 1269 |
|
---|
| 1270 | </sect3>
|
---|
| 1271 |
|
---|
| 1272 | <sect3>
|
---|
| 1273 | <title>Override Controls</title>
|
---|
| 1274 |
|
---|
| 1275 | <para><indexterm>
|
---|
| 1276 | <primary>over-ride controls</primary>
|
---|
| 1277 | </indexterm>
|
---|
| 1278 | Override controls implemented by Samba permit actions like the adoption of a different identity
|
---|
| 1279 | during file system operations, the forced overwriting of normal file and directory permissions,
|
---|
| 1280 | and so on. You should refer to the online manual page for the &smb.conf; file for more information regarding
|
---|
| 1281 | the override controls that Samba implements.
|
---|
| 1282 | </para>
|
---|
| 1283 |
|
---|
| 1284 | <para>
|
---|
| 1285 | In the following example, you want to create a Windows networking share that any user can access.
|
---|
| 1286 | However, you want all read and write operations to be performed as if the user <constant>billc</constant>
|
---|
| 1287 | and member of the group <constant>Mentors</constant> read/write the files. Here is one way this
|
---|
| 1288 | can be done:
|
---|
| 1289 | <screen>
|
---|
| 1290 | [someshare]
|
---|
| 1291 | comment = Some Files Everyone May Overwrite
|
---|
| 1292 | path = /data/somestuff
|
---|
| 1293 | read only = No
|
---|
| 1294 | force user = billc
|
---|
| 1295 | force group = Mentors
|
---|
| 1296 | </screen>
|
---|
| 1297 | <indexterm>
|
---|
| 1298 | <primary>forced settings</primary>
|
---|
| 1299 | </indexterm><indexterm>
|
---|
| 1300 | <primary>overheads</primary>
|
---|
| 1301 | </indexterm>
|
---|
| 1302 | That is all there is to it. Well, it is almost that simple. The downside of this method is that
|
---|
| 1303 | users are logged onto the Windows client as themselves, and then immediately before accessing the
|
---|
| 1304 | file, Samba makes system calls to change the effective user and group to the forced settings
|
---|
| 1305 | specified, completes the file transaction, and then reverts to the actually logged-on identity.
|
---|
| 1306 | This imposes significant overhead on Samba. The alternative way to effectively achieve the same result
|
---|
| 1307 | (but with lower system CPU overheads) is described next.
|
---|
| 1308 | </para>
|
---|
| 1309 |
|
---|
| 1310 | <para><indexterm>
|
---|
| 1311 | <primary>force user</primary>
|
---|
| 1312 | </indexterm><indexterm>
|
---|
| 1313 | <primary>force group</primary>
|
---|
| 1314 | </indexterm><indexterm>
|
---|
| 1315 | <primary>opportunistic</primary>
|
---|
| 1316 | <secondary>locking</secondary>
|
---|
| 1317 | </indexterm><indexterm>
|
---|
| 1318 | <primary>oplock break</primary>
|
---|
| 1319 | </indexterm><indexterm>
|
---|
| 1320 | <primary>performance degradation</primary>
|
---|
| 1321 | </indexterm>
|
---|
| 1322 | The use of the <parameter>force user</parameter> or the <parameter>force group</parameter> may
|
---|
| 1323 | also have a severe impact on system (particularly on Windows client) performance. If opportunistic
|
---|
| 1324 | locking is enabled on the share (the default), it causes an <constant>oplock break</constant> to be
|
---|
| 1325 | sent to the client even if the client has not opened the file. On networks that have high traffic
|
---|
| 1326 | density, or on links that are routed to a remote network segment, <constant>oplock breaks</constant>
|
---|
| 1327 | can be lost. This results in possible retransmission of the request, or the client may time-out while
|
---|
| 1328 | waiting for the file system transaction (read or write) to complete. The result can be a profound
|
---|
| 1329 | apparent performance degradation as the client continually attempts to reconnect to overcome the
|
---|
| 1330 | effect of the lost <constant>oplock break</constant>, or time-out.
|
---|
| 1331 | </para>
|
---|
| 1332 |
|
---|
| 1333 | </sect3>
|
---|
| 1334 |
|
---|
| 1335 | </sect2>
|
---|
| 1336 |
|
---|
| 1337 | <sect2>
|
---|
| 1338 | <title>Share Point Directory and File Permissions</title>
|
---|
| 1339 |
|
---|
| 1340 | <para><indexterm>
|
---|
| 1341 | <primary>security</primary>
|
---|
| 1342 | </indexterm><indexterm>
|
---|
| 1343 | <primary>privilege controls</primary>
|
---|
| 1344 | </indexterm><indexterm>
|
---|
| 1345 | <primary>permission</primary>
|
---|
| 1346 | </indexterm><indexterm>
|
---|
| 1347 | <primary>share definition controls</primary>
|
---|
| 1348 | </indexterm>
|
---|
| 1349 | Samba has been designed and implemented so that it respects as far as is feasible the security and
|
---|
| 1350 | user privilege controls that are built into the UNIX/Linux operating system. Samba does nothing
|
---|
| 1351 | with respect to file system access that violates file system permission settings, unless it is
|
---|
| 1352 | explicitly instructed to do otherwise through share definition controls. Given that Samba obeys
|
---|
| 1353 | UNIX file system controls, this chapter does not document simple information that can be obtained
|
---|
| 1354 | from a basic UNIX training guide. Instead, one common example of a typical problem is used
|
---|
| 1355 | to demonstrate the most effective solution referred to in the immediately preceding paragraph.
|
---|
| 1356 | </para>
|
---|
| 1357 |
|
---|
| 1358 | <para><indexterm>
|
---|
| 1359 | <primary>Microsoft Office</primary>
|
---|
| 1360 | </indexterm><indexterm>
|
---|
| 1361 | <primary>Word</primary>
|
---|
| 1362 | </indexterm><indexterm>
|
---|
| 1363 | <primary>Excel</primary>
|
---|
| 1364 | </indexterm>
|
---|
| 1365 | One of the common issues that repeatedly pops up on the Samba mailing lists involves the saving of
|
---|
| 1366 | Microsoft Office files (Word and Excel) to a network drive. Here is the typical sequence:
|
---|
| 1367 | </para>
|
---|
| 1368 |
|
---|
| 1369 | <orderedlist>
|
---|
| 1370 | <listitem><para>
|
---|
| 1371 | A user opens a Word document from a network drive. The file was owned by user <constant>janetp</constant>
|
---|
| 1372 | and <group>users</group>, and was set read/write-enabled for everyone.
|
---|
| 1373 | A user opens a Word document from a network drive. The file was owned by user <constant>janetp</constant>
|
---|
| 1374 | and <constant>users</constant>, and was set read/write-enabled for everyone.
|
---|
| 1375 | </para></listitem>
|
---|
| 1376 |
|
---|
| 1377 | <listitem><para>
|
---|
| 1378 | File changes and edits are made.
|
---|
| 1379 | </para></listitem>
|
---|
| 1380 |
|
---|
| 1381 | <listitem><para>
|
---|
| 1382 | The file is saved, and MS Word is closed.
|
---|
| 1383 | </para></listitem>
|
---|
| 1384 |
|
---|
| 1385 | <listitem><para>
|
---|
| 1386 | The file is now owned by the user <constant>billc</constant> and group <constant>doctors</constant>,
|
---|
| 1387 | and is set read/write by <constant>billc</constant>, read-only by <constant>doctors</constant>, and
|
---|
| 1388 | no access by everyone.
|
---|
| 1389 | </para></listitem>
|
---|
| 1390 |
|
---|
| 1391 | <listitem><para>
|
---|
| 1392 | The original owner cannot now access her own file and is <quote>justifiably</quote> upset.
|
---|
| 1393 | </para></listitem>
|
---|
| 1394 | </orderedlist>
|
---|
| 1395 |
|
---|
| 1396 | <para>
|
---|
| 1397 | There have been many postings over the years that report the same basic problem. Frequently Samba users
|
---|
| 1398 | want to know when this <quote>bug</quote> will be fixed. The fact is, this is not a bug in Samba at all.
|
---|
| 1399 | Here is the real sequence of what happens in this case.
|
---|
| 1400 | </para>
|
---|
| 1401 |
|
---|
| 1402 | <para><indexterm>
|
---|
| 1403 | <primary>MS Word</primary>
|
---|
| 1404 | </indexterm><indexterm>
|
---|
| 1405 | <primary>ownership</primary>
|
---|
| 1406 | </indexterm><indexterm>
|
---|
| 1407 | <primary>permissions</primary>
|
---|
| 1408 | </indexterm>
|
---|
| 1409 | When the user saves a file, MS Word creates a new (temporary) file. This file is naturally owned
|
---|
| 1410 | by the user who creates the file (<constant>billc</constant>) and has the permissions that follow
|
---|
| 1411 | that user's default settings within the operating system (UNIX/Linux). When MS Word has finished writing
|
---|
| 1412 | the file to disk, it then renames the new (temporary) file to the name of the old one. MS Word does not
|
---|
| 1413 | change the ownership or permissions to what they were on the original file. The file is thus a totally
|
---|
| 1414 | new file, and the old one has been deleted in the process.
|
---|
| 1415 | </para>
|
---|
| 1416 |
|
---|
| 1417 | <para>
|
---|
| 1418 | Samba received a request to create a new file, and then to rename the file to a new name. The old file that
|
---|
| 1419 | has the same name is now automatically deleted. Samba has no way of knowing that the new file should
|
---|
| 1420 | perhaps have the same ownership and permissions as the old file. To Samba, these are entirely independent
|
---|
| 1421 | operations.
|
---|
| 1422 | </para>
|
---|
| 1423 |
|
---|
| 1424 | <para>
|
---|
| 1425 | The question is, <quote>How can we solve the problem?</quote>
|
---|
| 1426 | </para>
|
---|
| 1427 |
|
---|
| 1428 | <para>
|
---|
| 1429 | The solution is simple. Use UNIX file system permissions and controls to your advantage. Follow these
|
---|
| 1430 | simple steps to create a share in which all files will consistently be owned by the same user and the
|
---|
| 1431 | same group:
|
---|
| 1432 | </para>
|
---|
| 1433 |
|
---|
| 1434 |
|
---|
| 1435 | <procedure>
|
---|
| 1436 | <title>Using Directory Permissions to Force File User and Group Ownership</title>
|
---|
| 1437 | <step><para>
|
---|
| 1438 | Change your share definition so that it matches this pattern:
|
---|
| 1439 | <screen>
|
---|
| 1440 | [finance]
|
---|
| 1441 | path = /usr/data/finance
|
---|
| 1442 | browseable = Yes
|
---|
| 1443 | read only = No
|
---|
| 1444 | </screen>
|
---|
| 1445 | </para></step>
|
---|
| 1446 |
|
---|
| 1447 | <step><para><indexterm>
|
---|
| 1448 | <primary>permissions</primary>
|
---|
| 1449 | <secondary>user</secondary>
|
---|
| 1450 | </indexterm><indexterm>
|
---|
| 1451 | <primary>permissions</primary>
|
---|
| 1452 | <secondary>group</secondary>
|
---|
| 1453 | </indexterm>
|
---|
| 1454 | Set consistent user and group permissions recursively down the directory tree as shown here:
|
---|
| 1455 | <screen>
|
---|
| 1456 | &rootprompt; chown -R janetp.users /usr/data/finance
|
---|
| 1457 | </screen>
|
---|
| 1458 | </para></step>
|
---|
| 1459 |
|
---|
| 1460 | <step><para><indexterm>
|
---|
| 1461 | <primary>accessible</primary>
|
---|
| 1462 | </indexterm>
|
---|
| 1463 | Set the files and directory permissions to be read/write for owner and group, and not accessible
|
---|
| 1464 | to others (everyone), using the following command:
|
---|
| 1465 | <screen>
|
---|
| 1466 | &rootprompt; chmod ug+rwx,o-rwx /usr/data/finance
|
---|
| 1467 | </screen>
|
---|
| 1468 | </para></step>
|
---|
| 1469 |
|
---|
| 1470 | <step><para><indexterm>
|
---|
| 1471 | <primary>SGID</primary>
|
---|
| 1472 | </indexterm>
|
---|
| 1473 | Set the SGID (supergroup) bit on all directories from the top down. This means all files
|
---|
| 1474 | can be created with the permissions of the group set on the directory. It means all users
|
---|
| 1475 | who are members of the group <constant>finance</constant> can read and write all files in
|
---|
| 1476 | the directory. The directory is not readable or writable by anyone who is not in the
|
---|
| 1477 | <constant>finance</constant> group. Simply follow this example:
|
---|
| 1478 | <screen>
|
---|
| 1479 | &rootprompt; find /usr/data/finance -type d -exec chmod ug+s {}\;
|
---|
| 1480 | </screen>
|
---|
| 1481 |
|
---|
| 1482 | </para></step>
|
---|
| 1483 |
|
---|
| 1484 | <step><para><indexterm>
|
---|
| 1485 | <primary>group membership</primary>
|
---|
| 1486 | </indexterm><indexterm>
|
---|
| 1487 | <primary>primary group</primary>
|
---|
| 1488 | </indexterm><indexterm>
|
---|
| 1489 | <primary>/etc/passwd</primary>
|
---|
| 1490 | </indexterm>
|
---|
| 1491 | Make sure all users that must have read/write access to the directory have
|
---|
| 1492 | <constant>finance</constant> group membership as their primary group,
|
---|
| 1493 | for example, the group they belong to in <filename>/etc/passwd</filename>.
|
---|
| 1494 | </para></step>
|
---|
| 1495 | </procedure>
|
---|
| 1496 |
|
---|
| 1497 | </sect2>
|
---|
| 1498 |
|
---|
| 1499 | <sect2>
|
---|
| 1500 | <title>Managing Windows 200x ACLs</title>
|
---|
| 1501 |
|
---|
| 1502 | <para><indexterm>
|
---|
| 1503 | <primary>translate</primary>
|
---|
| 1504 | </indexterm><indexterm>
|
---|
| 1505 | <primary>Windows 2000 ACLs</primary>
|
---|
| 1506 | </indexterm><indexterm>
|
---|
| 1507 | <primary>Posix ACLs</primary>
|
---|
| 1508 | </indexterm><indexterm>
|
---|
| 1509 | <primary>side effects</primary>
|
---|
| 1510 | </indexterm>
|
---|
| 1511 | Samba must translate Windows 2000 ACLs to UNIX POSIX ACLs. This has some interesting side effects because
|
---|
| 1512 | there is not a one-to-one equivalence between them. The as-close-as-possible ACLs match means
|
---|
| 1513 | that some transactions are not possible from MS Windows clients. One of these is to reset the ownership
|
---|
| 1514 | of directories and files. If you want to reset ownership, this must be done from a UNIX/Linux login.
|
---|
| 1515 | </para>
|
---|
| 1516 |
|
---|
| 1517 | <para>
|
---|
| 1518 | There are two possible ways to set ACLs on UNIX/Linux file systems from a Windows network workstation,
|
---|
| 1519 | either via File Manager or via the Microsoft Management Console (MMC) Computer Management interface.
|
---|
| 1520 | </para>
|
---|
| 1521 |
|
---|
| 1522 | <sect3>
|
---|
| 1523 | <title>Using the MMC Computer Management Interface</title>
|
---|
| 1524 |
|
---|
| 1525 | <procedure>
|
---|
| 1526 | <step><para>
|
---|
| 1527 | From a Windows 200x/XP Professional workstation, log on to the domain using the Domain Administrator
|
---|
| 1528 | account (on Samba domains, this is usually the account called <constant>root</constant>).
|
---|
| 1529 | </para></step>
|
---|
| 1530 |
|
---|
| 1531 | <step><para>
|
---|
| 1532 | Click
|
---|
| 1533 | <menuchoice>
|
---|
| 1534 | <guimenu>Start</guimenu>
|
---|
| 1535 | <guimenuitem>Settings</guimenuitem>
|
---|
| 1536 | <guimenuitem>Control Panel</guimenuitem>
|
---|
| 1537 | <guimenuitem>Administrative Tools</guimenuitem>
|
---|
| 1538 | <guimenuitem>Computer Management</guimenuitem>
|
---|
| 1539 | </menuchoice>.
|
---|
| 1540 | </para></step>
|
---|
| 1541 |
|
---|
| 1542 | <step><para>
|
---|
| 1543 | In the left panel,
|
---|
| 1544 | <menuchoice>
|
---|
| 1545 | <guimenu>[Right mouse menu item] Computer Management (Local)</guimenu>
|
---|
| 1546 | <guimenuitem>Connect to another computer ...</guimenuitem>
|
---|
| 1547 | <guimenuitem>Browse...</guimenuitem>
|
---|
| 1548 | <guimenuitem>Advanced</guimenuitem>
|
---|
| 1549 | <guimenuitem>Find Now</guimenuitem>
|
---|
| 1550 | </menuchoice>. In the lower panel, click on the name of the server you wish to
|
---|
| 1551 | administer. Click <menuchoice>
|
---|
| 1552 | <guimenu>OK</guimenu>
|
---|
| 1553 | <guimenuitem>OK</guimenuitem>
|
---|
| 1554 | <guimenuitem>OK</guimenuitem>
|
---|
| 1555 | </menuchoice>.
|
---|
| 1556 | In the left panel, the entry <guimenu>Computer Management (Local)</guimenu> should now reflect
|
---|
| 1557 | the change made. For example, if the server you are administering is called <constant>FRODO</constant>,
|
---|
| 1558 | the Computer Management entry should now say: <guimenu>Computer Management (FRODO)</guimenu>.
|
---|
| 1559 | </para></step>
|
---|
| 1560 |
|
---|
| 1561 | <step><para>
|
---|
| 1562 | In the left panel, click <menuchoice>
|
---|
| 1563 | <guimenu>Computer Management (FRODO)</guimenu>
|
---|
| 1564 | <guimenuitem>[+] Shared Folders</guimenuitem>
|
---|
| 1565 | <guimenuitem>Shares</guimenuitem>
|
---|
| 1566 | </menuchoice>.
|
---|
| 1567 | </para></step>
|
---|
| 1568 |
|
---|
| 1569 | <step><para><indexterm>
|
---|
| 1570 | <primary>Security</primary>
|
---|
| 1571 | </indexterm><indexterm>
|
---|
| 1572 | <primary>Properties</primary>
|
---|
| 1573 | </indexterm><indexterm>
|
---|
| 1574 | <primary>Permissions</primary>
|
---|
| 1575 | </indexterm><indexterm>
|
---|
| 1576 | <primary>Samba Domain server</primary>
|
---|
| 1577 | </indexterm>
|
---|
| 1578 | In the right panel, double-click on the share on which you wish to set/edit ACLs. This
|
---|
| 1579 | brings up the Properties panel. Click the <guimenu>Security</guimenu> tab. It is best
|
---|
| 1580 | to edit ACLs using the <constant>Advanced</constant> editing features. Click the
|
---|
| 1581 | <guimenu>Advanced</guimenu> button. This opens a panel that has four tabs. Only the
|
---|
| 1582 | functionality under the <constant>Permissions</constant> tab can be utilized with respect
|
---|
| 1583 | to a Samba domain server.
|
---|
| 1584 | </para></step>
|
---|
| 1585 |
|
---|
| 1586 | <step><para><indexterm>
|
---|
| 1587 | <primary>access control</primary>
|
---|
| 1588 | </indexterm><indexterm>
|
---|
| 1589 | <primary>permitted group</primary>
|
---|
| 1590 | </indexterm>
|
---|
| 1591 | You may now edit/add/remove access control settings. Be very careful. Many problems have been
|
---|
| 1592 | created by people who decided that everyone should be rejected but one particular group should
|
---|
| 1593 | have full control. This is a catch-22 situation because members of that particular group also
|
---|
| 1594 | belong to the group <constant>Everyone</constant>, which therefore overrules any permissions
|
---|
| 1595 | set for the permitted group.
|
---|
| 1596 | </para></step>
|
---|
| 1597 |
|
---|
| 1598 | <step><para>
|
---|
| 1599 | When you are done with editing, close all panels by clicking through the <guimenu>OK</guimenu>
|
---|
| 1600 | buttons until the last panel closes.
|
---|
| 1601 | </para></step>
|
---|
| 1602 | </procedure>
|
---|
| 1603 |
|
---|
| 1604 | </sect3>
|
---|
| 1605 |
|
---|
| 1606 | <sect3>
|
---|
| 1607 | <title>Using MS Windows Explorer (File Manager)</title>
|
---|
| 1608 |
|
---|
| 1609 | <para>
|
---|
| 1610 | The following alternative method may be used from a Windows workstation. In this example we work
|
---|
| 1611 | with a domain called <constant>MEGANET</constant>, a server called <constant>MASSIVE</constant>, and a
|
---|
| 1612 | share called <constant>Apps</constant>. The underlying UNIX/Linux share point for this share is
|
---|
| 1613 | <filename>/data/apps</filename>.
|
---|
| 1614 | </para>
|
---|
| 1615 |
|
---|
| 1616 | <procedure>
|
---|
| 1617 | <step><para>
|
---|
| 1618 | Click <menuchoice>
|
---|
| 1619 | <guimenu>Start</guimenu>
|
---|
| 1620 | <guimenuitem>[right-click] My Computer</guimenuitem>
|
---|
| 1621 | <guimenuitem>Explore</guimenuitem>
|
---|
| 1622 | <guimenuitem>[left panel] [+] My Network Places</guimenuitem>
|
---|
| 1623 | <guimenuitem>[+] Entire Network</guimenuitem>
|
---|
| 1624 | <guimenuitem>[+] Microsoft Windows Network</guimenuitem>
|
---|
| 1625 | <guimenuitem>[+] Meganet</guimenuitem>
|
---|
| 1626 | <guimenuitem>[+] Massive</guimenuitem>
|
---|
| 1627 | <guimenuitem>[right-click] Apps</guimenuitem>
|
---|
| 1628 | <guimenuitem>Properties</guimenuitem>
|
---|
| 1629 | <guimenuitem>Security</guimenuitem>
|
---|
| 1630 | <guimenuitem>Advanced</guimenuitem>
|
---|
| 1631 | </menuchoice>. This opens a panel that has four tabs. Only the functionality under the
|
---|
| 1632 | <constant>Permissions</constant> tab can be utilized for a Samba domain server.
|
---|
| 1633 | </para></step>
|
---|
| 1634 |
|
---|
| 1635 | <step><para><indexterm>
|
---|
| 1636 | <primary>full control</primary>
|
---|
| 1637 | </indexterm><indexterm>
|
---|
| 1638 | <primary>over-rule</primary>
|
---|
| 1639 | </indexterm>
|
---|
| 1640 | You may now edit/add/remove access control settings. Be very careful. Many problems have been
|
---|
| 1641 | created by people who decided that everyone should be rejected but one particular group should
|
---|
| 1642 | have full control. This is a catch-22 situation because members of that particular group also
|
---|
| 1643 | belong to the group <constant>Everyone</constant>, which therefore overrules any permissions
|
---|
| 1644 | set for the permitted group.
|
---|
| 1645 | </para></step>
|
---|
| 1646 |
|
---|
| 1647 | <step><para>
|
---|
| 1648 | When you are done with editing, close all panels by clicking through the <guimenu>OK</guimenu>
|
---|
| 1649 | buttons until the last panel closes.
|
---|
| 1650 | </para></step>
|
---|
| 1651 | </procedure>
|
---|
| 1652 |
|
---|
| 1653 | </sect3>
|
---|
| 1654 |
|
---|
| 1655 | <sect3>
|
---|
| 1656 | <title>Setting Posix ACLs in UNIX/Linux</title>
|
---|
| 1657 |
|
---|
| 1658 | <para><indexterm>
|
---|
| 1659 | <primary>desired security setting</primary>
|
---|
| 1660 | </indexterm><indexterm>
|
---|
| 1661 | <primary>shared resource</primary>
|
---|
| 1662 | </indexterm>
|
---|
| 1663 | Yet another alternative method for setting desired security settings on the shared resource files and
|
---|
| 1664 | directories can be achieved by logging into UNIX/Linux and setting POSIX ACLs directly using command-line
|
---|
| 1665 | tools. Here is an example session on the same resource as in the immediately preceding example on a SUSE 9
|
---|
| 1666 | Linux system:
|
---|
| 1667 | </para>
|
---|
| 1668 |
|
---|
| 1669 | <procedure>
|
---|
| 1670 | <step><para>
|
---|
| 1671 | Log into the Linux system as the user <constant>root</constant>.
|
---|
| 1672 | </para></step>
|
---|
| 1673 |
|
---|
| 1674 | <step><para>
|
---|
| 1675 | Change directory to the location of the exported (shared) Windows file share (Apps), which is in
|
---|
| 1676 | the directory <filename>/data</filename>. Execute the following:
|
---|
| 1677 | <screen>
|
---|
| 1678 | &rootprompt; cd /data
|
---|
| 1679 | </screen>
|
---|
| 1680 | Retrieve the existing POSIX ACLs entry by executing:
|
---|
| 1681 | <screen>
|
---|
| 1682 | &rootprompt; getfacl apps
|
---|
| 1683 | # file: apps
|
---|
| 1684 | # owner: root
|
---|
| 1685 | # group: root
|
---|
| 1686 | user::rwx
|
---|
| 1687 | group::rwx
|
---|
| 1688 | other::r-x
|
---|
| 1689 | </screen>
|
---|
| 1690 | </para></step>
|
---|
| 1691 |
|
---|
| 1692 | <step><para><indexterm>
|
---|
| 1693 | <primary>recursively</primary>
|
---|
| 1694 | </indexterm>
|
---|
| 1695 | You want to add permission for <constant>AppsMgrs</constant> to enable them to
|
---|
| 1696 | manage the applications (apps) share. It is important to set the ACL recursively
|
---|
| 1697 | so that the AppsMgrs have this capability throughout the directory tree that is
|
---|
| 1698 | being shared. This is done using the <constant>-R</constant> option as shown.
|
---|
| 1699 | Execute the following:
|
---|
| 1700 | <screen>
|
---|
| 1701 | &rootprompt; setfacl -m -R group:AppsMgrs:rwx /data/apps
|
---|
| 1702 | </screen>
|
---|
| 1703 | Because setting an ACL does not provide a response, you immediately validate the command executed
|
---|
| 1704 | as follows:
|
---|
| 1705 | <screen>
|
---|
| 1706 | &rootprompt; getfacl /data/apps
|
---|
| 1707 | # file: apps
|
---|
| 1708 | # owner: root
|
---|
| 1709 | # group: root
|
---|
| 1710 | user::rwx
|
---|
| 1711 | group::rwx
|
---|
| 1712 | group:AppsMgrs:rwx
|
---|
| 1713 | mask::rwx
|
---|
| 1714 | other::r-x
|
---|
| 1715 | </screen>
|
---|
| 1716 | This confirms that the change of POSIX ACL permissions has been effective.
|
---|
| 1717 | </para></step>
|
---|
| 1718 |
|
---|
| 1719 | <step><para><indexterm>
|
---|
| 1720 | <primary>setfacl</primary>
|
---|
| 1721 | </indexterm><indexterm>
|
---|
| 1722 | <primary>getfacl</primary>
|
---|
| 1723 | </indexterm><indexterm>
|
---|
| 1724 | <primary>directory tree</primary>
|
---|
| 1725 | </indexterm><indexterm>
|
---|
| 1726 | <primary>Windows ACLs</primary>
|
---|
| 1727 | </indexterm><indexterm>
|
---|
| 1728 | <primary>inheritance</primary>
|
---|
| 1729 | </indexterm>
|
---|
| 1730 | It is highly recommended that you read the online manual page for the <command>setfacl</command>
|
---|
| 1731 | and <command>getfacl</command> commands. This provides information regarding how to set/read the default
|
---|
| 1732 | ACLs and how that may be propagated through the directory tree. In Windows ACLs terms, this is the equivalent
|
---|
| 1733 | of setting <constant>inheritance</constant> properties.
|
---|
| 1734 | </para></step>
|
---|
| 1735 | </procedure>
|
---|
| 1736 |
|
---|
| 1737 | </sect3>
|
---|
| 1738 |
|
---|
| 1739 | </sect2>
|
---|
| 1740 |
|
---|
| 1741 | <sect2>
|
---|
| 1742 | <title>Key Points Learned</title>
|
---|
| 1743 |
|
---|
| 1744 | <para>
|
---|
| 1745 | The mish-mash of issues were thrown together into one chapter because it seemed like a good idea.
|
---|
| 1746 | Looking back, this chapter could be broken into two, but it's too late now. It has been done.
|
---|
| 1747 | The highlights covered are as follows:
|
---|
| 1748 | </para>
|
---|
| 1749 |
|
---|
| 1750 | <itemizedlist>
|
---|
| 1751 | <listitem><para><indexterm>
|
---|
| 1752 | <primary>Winbind</primary>
|
---|
| 1753 | </indexterm><indexterm>
|
---|
| 1754 | <primary>Active Directory</primary>
|
---|
| 1755 | </indexterm><indexterm>
|
---|
| 1756 | <primary>password change</primary>
|
---|
| 1757 | </indexterm><indexterm>
|
---|
| 1758 | <primary>logon hours</primary>
|
---|
| 1759 | </indexterm>
|
---|
| 1760 | Winbind honors and does not override account controls set in Active Directory.
|
---|
| 1761 | This means that password change, logon hours, and so on, are (or soon will be) enforced
|
---|
| 1762 | by Samba winbind. At this time, an out-of-hours login is denied and password
|
---|
| 1763 | change is enforced. At this time, if logon hours expire, the user is not forcibly
|
---|
| 1764 | logged off. That may be implemented at some later date.
|
---|
| 1765 | </para></listitem>
|
---|
| 1766 |
|
---|
| 1767 | <listitem><para><indexterm>
|
---|
| 1768 | <primary>Sign'n'seal</primary>
|
---|
| 1769 | </indexterm><indexterm>
|
---|
| 1770 | <primary>schannel</primary>
|
---|
| 1771 | </indexterm>
|
---|
| 1772 | Sign'n'seal (plus schannel support) has been implemented in Samba-3. Beware of potential
|
---|
| 1773 | problems acknowledged by Microsoft as having been fixed but reported by some as still
|
---|
| 1774 | possibly an open issue.
|
---|
| 1775 | </para></listitem>
|
---|
| 1776 |
|
---|
| 1777 | <listitem><para><indexterm>
|
---|
| 1778 | <primary>Kerberos</primary>
|
---|
| 1779 | </indexterm><indexterm>
|
---|
| 1780 | <primary>OpenLDAP</primary>
|
---|
| 1781 | </indexterm><indexterm>
|
---|
| 1782 | <primary>Active Directory</primary>
|
---|
| 1783 | </indexterm><indexterm>
|
---|
| 1784 | <primary>inter-operability</primary>
|
---|
| 1785 | </indexterm>
|
---|
| 1786 | The combination of Kerberos 5, plus OpenLDAP, plus Samba, cannot replace Microsoft
|
---|
| 1787 | Active Directory. The possibility to do this is not planned in the current Samba-3
|
---|
| 1788 | roadmap. Samba-3 does aim to provide further improvements in interoperability so that
|
---|
| 1789 | UNIX/Linux systems may be fully integrated into Active Directory domains.
|
---|
| 1790 | </para></listitem>
|
---|
| 1791 |
|
---|
| 1792 | <listitem><para>
|
---|
| 1793 | This chapter reviewed mechanisms by which Samba servers may be kept secure. Each of
|
---|
| 1794 | the four key methodologies was reviewed with specific reference to example deployment
|
---|
| 1795 | techniques.
|
---|
| 1796 | </para></listitem>
|
---|
| 1797 | </itemizedlist>
|
---|
| 1798 |
|
---|
| 1799 | </sect2>
|
---|
| 1800 |
|
---|
| 1801 | </sect1>
|
---|
| 1802 |
|
---|
| 1803 | <sect1>
|
---|
| 1804 | <title>Questions and Answers</title>
|
---|
| 1805 |
|
---|
| 1806 | <para>
|
---|
| 1807 | </para>
|
---|
| 1808 |
|
---|
| 1809 | <qandaset defaultlabel="chap10qa" type="number">
|
---|
| 1810 | <qandaentry>
|
---|
| 1811 | <question>
|
---|
| 1812 |
|
---|
| 1813 | <para><indexterm>
|
---|
| 1814 | <primary>Sign'n'seal</primary>
|
---|
| 1815 | </indexterm><indexterm>
|
---|
| 1816 | <primary>registry hacks</primary>
|
---|
| 1817 | </indexterm>
|
---|
| 1818 | Does Samba-3 require the <constant>Sign'n'seal</constant> registry hacks needed by Samba-2?
|
---|
| 1819 | </para>
|
---|
| 1820 |
|
---|
| 1821 | </question>
|
---|
| 1822 | <answer>
|
---|
| 1823 |
|
---|
| 1824 | <para><indexterm>
|
---|
| 1825 | <primary>schannel</primary>
|
---|
| 1826 | </indexterm><indexterm>
|
---|
| 1827 | <primary>Sign'n'seal</primary>
|
---|
| 1828 | </indexterm><indexterm>
|
---|
| 1829 | <primary>registry change</primary>
|
---|
| 1830 | </indexterm>
|
---|
| 1831 | No. Samba-3 fully supports <constant>Sign'n'seal</constant> as well as <constant>schannel</constant>
|
---|
| 1832 | operation. The registry change should not be applied when Samba-3 is used as a domain controller.
|
---|
| 1833 | </para>
|
---|
| 1834 |
|
---|
| 1835 | </answer>
|
---|
| 1836 | </qandaentry>
|
---|
| 1837 |
|
---|
| 1838 | <qandaentry>
|
---|
| 1839 | <question>
|
---|
| 1840 |
|
---|
| 1841 | <para>
|
---|
| 1842 | Does Samba-3 support Active Directory?
|
---|
| 1843 | </para>
|
---|
| 1844 |
|
---|
| 1845 | </question>
|
---|
| 1846 | <answer>
|
---|
| 1847 |
|
---|
| 1848 | <para><indexterm>
|
---|
| 1849 | <primary>Active Directory</primary>
|
---|
| 1850 | </indexterm>
|
---|
| 1851 | Yes. Samba-3 can be a fully participating native mode Active Directory client. Samba-3 does not
|
---|
| 1852 | provide Active Directory services. It cannot be used to replace a Microsoft Active Directory
|
---|
| 1853 | server implementation. Samba-3 can function as an Active Directory client (workstation) toolkit,
|
---|
| 1854 | and it can function as an Active Directory domain member server.
|
---|
| 1855 | </para>
|
---|
| 1856 |
|
---|
| 1857 | </answer>
|
---|
| 1858 | </qandaentry>
|
---|
| 1859 |
|
---|
| 1860 | <qandaentry>
|
---|
| 1861 | <question>
|
---|
| 1862 |
|
---|
| 1863 | <para><indexterm>
|
---|
| 1864 | <primary>mixed-mode</primary>
|
---|
| 1865 | </indexterm>
|
---|
| 1866 | When Samba-3 is used with Active Directory, is it necessary to run mixed-mode operation, as was
|
---|
| 1867 | necessary with Samba-2?
|
---|
| 1868 | </para>
|
---|
| 1869 |
|
---|
| 1870 | </question>
|
---|
| 1871 | <answer>
|
---|
| 1872 |
|
---|
| 1873 | <para><indexterm>
|
---|
| 1874 | <primary>native</primary>
|
---|
| 1875 | </indexterm>
|
---|
| 1876 | No. Samba-3 can be used with NetBIOS over TCP/IP disabled, just as can be done with Windows 200x
|
---|
| 1877 | Server and 200x/XPPro client products. It is no longer necessary to run mixed-mode operation,
|
---|
| 1878 | because Samba-3 can join a native Windows 2003 Server ADS domain.
|
---|
| 1879 | </para>
|
---|
| 1880 |
|
---|
| 1881 | </answer>
|
---|
| 1882 | </qandaentry>
|
---|
| 1883 |
|
---|
| 1884 | <qandaentry>
|
---|
| 1885 | <question>
|
---|
| 1886 |
|
---|
| 1887 | <para><indexterm>
|
---|
| 1888 | <primary>share level access controls</primary>
|
---|
| 1889 | </indexterm>
|
---|
| 1890 | Is it safe to set share-level access controls in Samba?
|
---|
| 1891 | </para>
|
---|
| 1892 |
|
---|
| 1893 | </question>
|
---|
| 1894 | <answer>
|
---|
| 1895 |
|
---|
| 1896 | <para>
|
---|
| 1897 | Yes. Share-level access controls have been supported since early versions of Samba-2. This is
|
---|
| 1898 | very mature technology. Not enough sites make use of this powerful capability, neither on
|
---|
| 1899 | Windows server or with Samba servers.
|
---|
| 1900 | </para>
|
---|
| 1901 |
|
---|
| 1902 | </answer>
|
---|
| 1903 | </qandaentry>
|
---|
| 1904 |
|
---|
| 1905 | <qandaentry>
|
---|
| 1906 | <question>
|
---|
| 1907 |
|
---|
| 1908 | <para><indexterm>
|
---|
| 1909 | <primary>share ACLs</primary>
|
---|
| 1910 | </indexterm>
|
---|
| 1911 | Is it mandatory to set share ACLs to get a secure Samba-3 server?
|
---|
| 1912 | </para>
|
---|
| 1913 |
|
---|
| 1914 | </question>
|
---|
| 1915 | <answer>
|
---|
| 1916 |
|
---|
| 1917 | <para><indexterm>
|
---|
| 1918 | <primary>file system security</primary>
|
---|
| 1919 | </indexterm><indexterm>
|
---|
| 1920 | <primary>Windows 200x ACLs</primary>
|
---|
| 1921 | </indexterm><indexterm>
|
---|
| 1922 | <primary>share definition controls</primary>
|
---|
| 1923 | </indexterm><indexterm>
|
---|
| 1924 | <primary>share level ACL</primary>
|
---|
| 1925 | </indexterm><indexterm>
|
---|
| 1926 | <primary>security</primary>
|
---|
| 1927 | </indexterm>
|
---|
| 1928 | No. Samba-3 honors UNIX/Linux file system security, supports Windows 200x ACLs, and provides
|
---|
| 1929 | means of securing shares through share definition controls in the &smb.conf; file. The additional
|
---|
| 1930 | support for share-level ACLs is like frosting on the cake. It adds to security but is not essential
|
---|
| 1931 | to it.
|
---|
| 1932 | </para>
|
---|
| 1933 |
|
---|
| 1934 | </answer>
|
---|
| 1935 | </qandaentry>
|
---|
| 1936 |
|
---|
| 1937 | <qandaentry>
|
---|
| 1938 | <question>
|
---|
| 1939 |
|
---|
| 1940 | <para><indexterm>
|
---|
| 1941 | <primary>valid users</primary>
|
---|
| 1942 | </indexterm>
|
---|
| 1943 | The <parameter>valid users</parameter> did not work on the <smbconfsection name="[homes]"/>.
|
---|
| 1944 | Has this functionality been restored yet?
|
---|
| 1945 | </para>
|
---|
| 1946 |
|
---|
| 1947 | </question>
|
---|
| 1948 | <answer>
|
---|
| 1949 |
|
---|
| 1950 | <para><indexterm>
|
---|
| 1951 | <primary>meta-service</primary>
|
---|
| 1952 | </indexterm>
|
---|
| 1953 | Yes. This was fixed in Samba-3.0.2. The use of this parameter is strongly recommended as a safeguard
|
---|
| 1954 | on the <smbconfsection name="[homes]"/> meta-service. The correct way to specify this is:
|
---|
| 1955 | <smbconfoption name="valid users">%S</smbconfoption>.
|
---|
| 1956 | </para>
|
---|
| 1957 |
|
---|
| 1958 | </answer>
|
---|
| 1959 | </qandaentry>
|
---|
| 1960 |
|
---|
| 1961 | <qandaentry>
|
---|
| 1962 | <question>
|
---|
| 1963 |
|
---|
| 1964 | <para><indexterm>
|
---|
| 1965 | <primary>force user</primary>
|
---|
| 1966 | </indexterm><indexterm>
|
---|
| 1967 | <primary>force group</primary>
|
---|
| 1968 | </indexterm><indexterm>
|
---|
| 1969 | <primary>bias</primary>
|
---|
| 1970 | </indexterm>
|
---|
| 1971 | Is the bias against use of the <parameter>force user</parameter> and <parameter>force group</parameter>
|
---|
| 1972 | really warranted?
|
---|
| 1973 | </para>
|
---|
| 1974 |
|
---|
| 1975 | </question>
|
---|
| 1976 | <answer>
|
---|
| 1977 |
|
---|
| 1978 | <para><indexterm>
|
---|
| 1979 | <primary>performance</primary>
|
---|
| 1980 | </indexterm>
|
---|
| 1981 | There is no bias. There is a determination to recommend the right tool for the task at hand.
|
---|
| 1982 | After all, it is better than putting users through performance problems, isn't it?
|
---|
| 1983 | </para>
|
---|
| 1984 |
|
---|
| 1985 | </answer>
|
---|
| 1986 | </qandaentry>
|
---|
| 1987 |
|
---|
| 1988 | <qandaentry>
|
---|
| 1989 | <question>
|
---|
| 1990 |
|
---|
| 1991 | <para>
|
---|
| 1992 | The example given for file and directory access control forces all files to be owned by one
|
---|
| 1993 | particular user. I do not like that. Is there any way I can see who created the file?
|
---|
| 1994 | </para>
|
---|
| 1995 |
|
---|
| 1996 | </question>
|
---|
| 1997 | <answer>
|
---|
| 1998 |
|
---|
| 1999 | <para><indexterm>
|
---|
| 2000 | <primary>SUID</primary>
|
---|
| 2001 | </indexterm>
|
---|
| 2002 | Sure. You do not have to set the SUID bit on the directory. Simply execute the following command
|
---|
| 2003 | to permit file ownership to be retained by the user who created it:
|
---|
| 2004 | <screen>
|
---|
| 2005 | &rootprompt; find /usr/data/finance -type d -exec chmod g+s {}\;
|
---|
| 2006 | </screen>
|
---|
| 2007 | Note that this required no more than removing the <constant>u</constant> argument so that the
|
---|
| 2008 | SUID bit is not set for the owner.
|
---|
| 2009 | </para>
|
---|
| 2010 |
|
---|
| 2011 | </answer>
|
---|
| 2012 | </qandaentry>
|
---|
| 2013 |
|
---|
| 2014 | <qandaentry>
|
---|
| 2015 | <question>
|
---|
| 2016 |
|
---|
| 2017 | <para><indexterm>
|
---|
| 2018 | <primary>Computer Management</primary>
|
---|
| 2019 | </indexterm>
|
---|
| 2020 | In the book, <quote>The Official Samba-3 HOWTO and Reference Guide</quote>, you recommended use
|
---|
| 2021 | of the Windows NT4 Server Manager (part of the <filename>SRVTOOLS.EXE</filename>) utility. Why
|
---|
| 2022 | have you mentioned only the use of the Windows 200x/XP MMC Computer Management utility?
|
---|
| 2023 | </para>
|
---|
| 2024 |
|
---|
| 2025 | </question>
|
---|
| 2026 | <answer>
|
---|
| 2027 |
|
---|
| 2028 | <para><indexterm>
|
---|
| 2029 | <primary>MMC</primary>
|
---|
| 2030 | </indexterm><indexterm>
|
---|
| 2031 | <primary>SRVTOOLS.EXE</primary>
|
---|
| 2032 | </indexterm>
|
---|
| 2033 | Either tool can be used with equal effect. There is no benefit of one over the other, except that
|
---|
| 2034 | the MMC utility is present on all Windows 200x/XP systems and does not require additional software
|
---|
| 2035 | to be downloaded and installed. Note that if you want to manage user and group accounts in your
|
---|
| 2036 | Samba-controlled domain, the only tool that permits that is the NT4 Domain User Manager, which
|
---|
| 2037 | is provided as part of the <filename>SRVTOOLS.EXE</filename> utility.
|
---|
| 2038 | </para>
|
---|
| 2039 |
|
---|
| 2040 | </answer>
|
---|
| 2041 | </qandaentry>
|
---|
| 2042 |
|
---|
| 2043 | <qandaentry>
|
---|
| 2044 | <question>
|
---|
| 2045 |
|
---|
| 2046 | <para><indexterm>
|
---|
| 2047 | <primary>valid users</primary>
|
---|
| 2048 | </indexterm><indexterm>
|
---|
| 2049 | <primary>Active Directory</primary>
|
---|
| 2050 | </indexterm><indexterm>
|
---|
| 2051 | <primary>Domain Member server</primary>
|
---|
| 2052 | </indexterm>
|
---|
| 2053 | I tried to set <parameter>valid users = @Engineers</parameter>, but it does not work. My Samba
|
---|
| 2054 | server is an Active Directory domain member server. Has this been fixed now?
|
---|
| 2055 | </para>
|
---|
| 2056 |
|
---|
| 2057 | </question>
|
---|
| 2058 | <answer>
|
---|
| 2059 |
|
---|
| 2060 | <para>
|
---|
| 2061 | The use of this parameter has always required the full specification of the domain account, for
|
---|
| 2062 | example, <parameter>valid users = @"MEGANET2\Domain Admins"</parameter>.
|
---|
| 2063 | </para>
|
---|
| 2064 |
|
---|
| 2065 | </answer>
|
---|
| 2066 | </qandaentry>
|
---|
| 2067 |
|
---|
| 2068 | </qandaset>
|
---|
| 2069 |
|
---|
| 2070 | </sect1>
|
---|
| 2071 |
|
---|
| 2072 | </chapter>
|
---|
| 2073 |
|
---|