aboutsummaryrefslogtreecommitdiff
path: root/es_ES.ISO8859-1/books/handbook/mac/chapter.sgml
blob: ffd735ebb0e7ff942e1cc31dda0b2e3664dc79e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
<!--
     The FreeBSD Documentation Project
     $FreeBSD$
-->

<chapter id="mac">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Tom</firstname>
	<surname>Rhodes</surname>
	<contrib>Escrito por </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Mandatory Access Control</title>

  <sect1 id="mac-synopsis">
    <title>Sinopsis</title>

    <indexterm><primary>MAC</primary></indexterm>
    <indexterm>
      <primary>Mandatory Access Control</primary>
      <see>MAC</see>
    </indexterm>
    
    <para>&os;&nbsp;5.X introdujo nuevas extensiones de seguridad del
      proyecto TrustedBSD basado en el escrito &posix;.1e. Dos de los
      mecanismos de seguridad m&aacute;s significativos son las
      facilidades de Listas de control de acceso del sistema de archivos
      (Access Control Lists,<acronym>ACLs</acronym>) y control de acceso
      obligatorio (Mandatory Access Control, <acronym>MAC</acronym>).
      El control de acceso obligatorio permite que nuevos m&oacute;dulos
      de control de acceso sean cargados, implementando nuevas 
      pol&iacute;ticas de seguridad. Algunas brindan protecciones de un
      angosto subconjunto del sistema, endureciendo un servicio en
      particular, mientras otros proveen seguridad etiquetada comprensible 
      a trave&eacute;s de todos las &aacute;reas y objetos.
      La parte obligatoria de la definici&oacute;n proviene del hecho
      que la imposici&oacute;n de los controles es realizada por
      administradores y el sistema, y no es dejada a la discreci&oacute;n
      de los usuarios como se hace con el control de acceso discrecional
      (discretionary access control, <acronym>DAC</acronym>, los
      permisos de archivo y System V <acronym>IPC</acronym> est&aacute;ndares
      en &os;).</para> 

    <para>Este cap&iacute;tulo se enfocar&aacute; en la estructura
      del control de acceso obligatorio (MAC Framework), y un
      conjunto de m&oacute;dulos enchufables de pol&iacute;ticas de
      seguridad habilitando varios mecanismos de seguridad.</para>

    <para>Despues de leer este cap&iacute;tulo, usted sabr&aacute;:</para>

    <itemizedlist>
      <listitem>
        <para>Que son los m&oacute;dulos de pol&iacute;ticas de seguridad
	  <acronym>MAC</acronym> actualmente incluidos en &os; y sus
	  mecanismos asociados.</para>
      </listitem>

      <listitem>
        <para>Que implementan los m&oacute;dulos de pol&iacute;ticas de
	  seguridad <acronym>MAC</acronym> as&iacute; como la diferencia
	  entre una pol&iacute;tica etiquetada y no etiquetada.</para>
      </listitem>

      <listitem>
        <para>Como configurar eficientemente un sistema para
          utilizar la estructura <acronym>MAC</acronym>.</para>
      </listitem>

      <listitem>
        <para>Como configurar los diferentes m&oacute;dulos de 
	  pol&iacute;ticas de seguridad incluidos con la estructura
	  <acronym>MAC</acronym>.</para>
      </listitem>

      <listitem>
        <para>Como implementar un ambiente m&aacute;s seguro utilizando
          la estructura <acronym>MAC</acronym> y los ejemplos
          mostrados.</para>
      </listitem>

      <listitem>
        <para>Como probar la configuraci&oacute;n <acronym>MAC</acronym>
          para asegurar que la estructura ha sido implementada
          correctamente.</para>
      </listitem>
    </itemizedlist>

    <para>Antes de leer este cap&iacute;tulo, usted deber&iacute;a:</para>

    <itemizedlist>
      <listitem>
        <para>Entender las bases de &unix; y &os;
	  (<xref linkend="basics">).</para>
      </listitem>

      <listitem>
        <para>Estar familiarizado
          con lo basico de la configuraci&oacute;n/compilaci&oacute;n
          del kernel
	  (<xref linkend="kernelconfig">).</para>
      </listitem>

      <listitem>
        <para>Tener cierta familiaridad con seguridad y como
          se relaciona con &os; (<xref linkend="security">).</para>
      </listitem>
    </itemizedlist>

    <warning>
      <para>El uso inadecuado de la
        informaci&oacute;n en este cap&iacute;tulo puede provocar
        p&eacute;rdida de acceso al sistema, irritaci&oacute;n de
        los usuarios, o inhabilidad para accesar las caracter&iacute;sticas
        que brinda X11. A&uacute;n m&aacute;s importante, 
	<acronym>MAC</acronym> no debe confiarse para asegurar un sistema
	completamente. La estructura <acronym>MAC</acronym> solo aumenta 
	las pol&iacute;ticas de seguridad existentes; sin pr&aacute;cticas 
	de seguridad sonadas y revisiones de seguridad constantes el 
	sistema nunca ser&aacute; completamente seguro.</para>

      <para>Tambi&eacute;n debe notarse que los ejemplos contenidos
        dentro de este cap&iacute;tulo son solo eso, ejemplos. No
        se recomienda que estas configuraciones en particular sean
        desplegadas en un sistema en producci&oacute;n. Implementar
        los varios m&oacute;dulos de pol&iacute;ticas de seguridad
        toma un buen de pensamiento. Alguien que no entiende
        completamente como funciona todo puede encontrarse en la
        situaci&oacute;n de regresar a configurar muchos archivos
        y directorios a trav&eacute;s de todo el sistema.</para>
    </warning>

    <sect2>
      <title>Que es lo que no se cubrir&aacute;</title>

      <para>Este capitulo cubre un amplio rango de temas de seguridad
        relacionados a la estructura <acronym>MAC</acronym>; sin embargo,
        el desarrollo de nuevos m&oacute;dulos de pol&iacute;ticas de
	seguridad <acronym>MAC</acronym> no ser&aacute;n cubiertos. Un
	n&uacute;mero de m&oacute;dulos de pol&iacute;ticas de seguridad
	incluidos con la estructura <acronym>MAC</acronym> tienen
	caracter&iacute;sticas espec&iacute;ficas las cuales son provistas
	tanto para prueba como para desarrollo de nuevos m&oacute;dulos.
	Estos incluyen &man.mac.test.4;, &man.mac.stub.4; y &man.mac.none.4;.
        Para m&aacute;s informaci&oacute;n sobre estos  m&oacute;dulos de
	pol&iacute;ticas de seguridad y los varios mecanismos que brindan,
	por favor revise las p&aacute;ginas de manual.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-inline-glossary">
    <title>T&eacute;rminos clave en este cap&iacute;tulo</title>

    <para>Antes de leer este cap&iacute;tulo, se deben explicar
      algunos t&eacute;rminos clave. Esto tal vez borre cualquier
      confusi&oacute;n que pueda ocurrir y evite la indrocucci&oacute;n
      abrupta de nueva informaci&oacute;n y t&eacute;rminos.</para> 

    <itemizedlist>
      <listitem>
        <para><emphasis>compartimiento</emphasis>: Un compartimiento
          es un conjunto de programas y datos a ser particionados o
          separados, en donde a usuarios se les proporciona acceso
          expl&iacute;cito a componentes espec&iacute;fico de un sistema.
          Tambi&eacute;n, un compartimiento representa un agrupamiento,
          como un grupo de trabajo, departamento, proyecto o t&oacute;pico.
          Usando compartimientos es posible implementar una pol&iacute;tica
          de seguridad de necesita-saber.
      </listitem>

      <listitem>
        <para><emphasis>integridad</emphasis>: Integridad, como
          un concepto clave, es el nivel de confianza que puede
          ser puesto en un dato. Mientras el nivel de integridad
          del dato es elevado tambi&eacute;n lo hace la habilidad
          de confiar en ese dato.</para>
      </listitem>

      <listitem>
        <para><emphasis>etiqueta</emphasis>: Una etiqueta es un
          atributo de seguridad el cual puede ser aplicado a
          archivos, directorios o a otros componentes en el 
          sistema. Se puede considerar una estampilla de seguridad;
          cuando una etiqueta es colocada en un archivo describe
          las propiedades de seguridad para ese archivo espec&iacute;fico
          y solo permitir&aacute; acceso de archivos, usuarios,
          recursos, etc. con caracter&iacute;sticas de seguridad
          similares. El significado e interpretaci&oacute;n de valores
          de etiquetas depende de la configuraci&oacute;n de la
          pol&iacute;tica: mientras algunas pol&iacute;ticas pueden
          tratar una etiqueta como la representaci&oacute;n de
          la integridad o secreto de un objeto, otras pol&iacute;ticas
          pueden usar etiquetas para mantener reglas de acceso.</para>
      </listitem>

      <listitem>
        <para><emphasis>nivel</emphasis>: El aumento o disminuci&oacute;n
          de un atributo de seguridad. Si el nivel incrementa,
          su seguridad es considerada que se eleva tambi&eacute;n.</para>
      </listitem>

      <listitem>
        <para><emphasis>multietiqueta</emphasis>: La propiedad
          <option>multilabel</option> es una opci&oacute;n del
          sistema de archivos la cual puede ser activada en modo
          mono usuario usando la utilidad &man.tunefs.8; , durante
          el arranque usando el archivo &man.fstab.5; , o durante
          la creaci&oacute;n de un nuevo sistema de archivos.
          Esta opci&oacute;n le permitir&aacute; a un administrador
          aplicar diferentes etiquetas <acronym>MAC</acronym> en
          diferentes objetos. Esta opci&oacute;n
          solamente aplica a m&oacute;dulos de pol&iacute;ticas de
          seguridad que soporten etiquetamiento.</para>
      </listitem>

      <listitem>
        <para><emphasis>objeto</emphasis>: Un objeto o un
          objeto de sistema es una entidad a trav&eacute;s de
          la cual la informaci&oacute;n fluye bajo la direcci&oacute;n
          de un <emphasis>sujeto</emphasis>.
          Esto incluye directorios, archivos, campos, pantallas, 
          teclados, memoria, almacenamiento magn&eacute;tico,
          impresoras o cualquier otro dispositivo de
          almacenamiento/transporte. B&aacute;sicamente, un objeto
          es un contenedor de datos o un recurso del sistema;
          el acceso efectivo a un <emphasis>objeto</emphasis> significa
          acceso a los datos.</para>
      </listitem>

      <listitem>
        <para><emphasis>pol&iacute;tica</emphasis>: Una colecci&oacute;n
          de reglas que definen como se van a lograr los objetivos.
          Una <emphasis>pol&iacute;tica</emphasis> usualmente documenta
          como ciertos elementos deben ser manejados. Este cap&iacute;tulo
          considerar&aacute; el t&eacute;rmino 
	  <emphasis>pol&iacute;tica</emphasis> en este contexto como
	  <emphasis>pol&iacute;tica de seguridad</emphasis>; por ejemplo, 
	  una colecci&oacute;n de reglas que controlan el flujo de datos e
	  informaci&oacute;n y define qui&eacute;n tendr&aacute; acceso a
	  esos datos e informaci&oacute;n.</para>
      </listitem>

      <listitem>
        <para><emphasis>sensitividad</emphasis>: Usualmente utilizado
          al discutir <acronym>MLS</acronym>. Un nivel de sensitividad
          es un t&eacute;rmino usado para describir que tan importante
          o secreto debe ser el dato.
          Mientras el nivel de sensitividad
          del dato es incrementado tambi&eacute;n lo hace la
          importancia del secreto o confidencialidad del dato.</para>
      </listitem>

      <listitem>
        <para><emphasis>etiqueta &uacute;nica</emphasis>: Una etiqueta 
	  &uacute;nica es cuando todo el sistema de archivos
          utiliza una etiqueta para imponer control de acceso
          sobre el flujo de datos. Cuando un sistema de archivos
          tiene esto activado, lo cual es en cualquier momento
          que la opci&oacute;n <option>etiqueta m&uacute;ltiple</option>
          no est&aacute; activada, todos los archivos concordar&aacute;n
          a la misma configuraci&oacute;n de etiqueta.</para>
      </listitem>

      <listitem>
        <para><emphasis>sujeto</emphasis>: Un sujeto es cualquier
          entidad activa que provoca que la informaci&oacute;n
          fluya entre <emphasis>objetos</emphasis>; por ejemplo,
          un usuario, usuario procesador, proceso de sistema, etc.
          En &os;, esto es casi siempre un hilo actuando en un
          proceso en beneficio de un usuario..</para> 
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="mac-initial">
    <title>Explicaci&oacute;n de MAC</title>

    <para>Con todos estos nuevos terminos en mente, considere
      como la estructura <acronym>MAC</acronym> aumenta la
      seguridad de el sistema como un todo. Los varios m&oacute;dulos
      de pol&iacute;ticas de seguridad provistos por la estructura
      <acronym>MAC</acronym> pueden ser usados para proteger
      la red y los sistemas de archivos, bloquear usuarios de
      accesar ciertos puertos y sockets, y m&aacute;s. Quiz&aacute;s
      el mejor uso de los m&oacute;dulos de pol&iacute;ticas es el
      de mezclarlos juntos, por medio del cargado de varios m&oacute;dulos
      de pol&iacute;ticas de seguridad al mismo tiempo para un
      ambiente de seguridad multicapa. En un ambiente de seguridad
      multicapa, m&uacute;ltiples m&oacute;dulos de pol&iacute;ticas
      est&aacute;n en efecto para mantener la seguridad. Esto es diferente 
      a un pol&iacute;tica de endurecimiento, la cual tipicamente endurece
      elementos de un sistema que es utilizado solamente para propositos
      espec&iacute;ficos.  El &uacute;nico lado malo es la carga
      administrativa en casos de sistemas de archivos con etiquetas 
      m&uacute;ltiples, configuraciones de control de acceso a red 
      usuario por usuario, etc.</para>

    <para>Estas desventajas son m&iacute;nimas cuando se comparan
      con el efecto perdurable de la estructura; por ejemplo, la
      habilidad de seleccionar y elegir que pol&iacute;ticas son
      requeridas para una configuraci&oacute;n espec&iacute;fica mantiene
      la sobrecarga de ejecuci&oacute;n abajo. La reducci&oacute;n de
      soporte para pol&iacute;ticas innecesarias puede elevar la
      ejecuci&oacute;n total del sistema as&iacute; como tambi&eacute;n
      ofrecer flexibilidad de elecci&oacute;n. Una buena 
      implementaci&oacute;n podr&iacute;a considerar los requerimientos 
      de seguridad total e implementar efectivamente los varios 
      m&oacute;dulos de pol&iacute;ticas de seguridad ofrecidos por la
      estructura.</para>

    <para>As&iacute; un sistema utilizando una propiedad 
      <acronym>MAC</acronym> deber&iacute;a al menos garantizar que a un
      usuario no se le permitir&aacute; cambiar atributos de seguridad a 
      su antojo; todos las utilidades de usuario, programas y scrips deben
      trabajar dentro de las restricciones de las reglas de acceso
      provistas por el m&oacute;dulo de pol&iacute;ticas de seguridad
      seleccionado; y ese control total de las reglas de acceso
      <acronym>MAC</acronym> est&aacute;n en las manos del administrador
      del sistema.</para> 

    <para>Es deber solamente del administrador de sistema seleccionar
      cuidadosamente los m&oacute;dulos de pol&iacute;ticas de seguridad
      correctos. Algunos ambientes pueden necesitar limitar el control
      de acceso a trav&eacute;s de la red; en estos casos los
      m&oacute;dulos de pol&iacute;ticas &man.mac.portacl.4;, 
      &man.mac.ifoff.4; e incluso &man.mac.biba.4; pueden ser un buen 
      punto de inicio.  En otros casos, confidencialidad estricta de 
      objetos del sistema de archivos puede ser requerida. M&oacute;dulos 
      de pol&iacute;ticas como &man.mac.bsdextended.4; y &man.mac.mls.4;
      existen para este prop&oacute;sito.</para>

    <para>Desiciones de pol&iacute;tica pueden hacerse bas&aacute;ndose
      en la configuraci&oacute;n de red. Quiz&aacute;s solo
      a ciertos usuarios se les deber&iacute;a permitir acceso
      a facilidades proporcionadas por &man.ssh.1; para
      accesar la red o Internet. El m&oacute;dulo de pol&iacute;ticas
      &man.mac.portacl.4; podr&iacute;a ser la opci&oacute;n para estas
      situaciones. Pero, ¿que deber&iacute;a hacerse en el caso de sistemas
      de archivos?, ¿los accesos a ciertos directorios deber&iacute;an ser
      cortados de otros grupos o usuarios espec&iacute;ficos?, ¿o
      deber&iacute;amos limitar accesos a usuarios o utilidades a archivos
      espec&iacute;ficos poniendo ciertos objetos como clasificados?</para> 

    <para>En el caso de sistemas de archivo, el acceso a los
      objetos puede ser considerado confidencial a algunos
      usuarios, pero no a otros. Por ejemplo, un gran grupo de
      desarrolladores puede ser dividido en peque&ntilde;os grupos
      de individuos. Desarrolladores en el proyecto A no se les
      debe permitir accesar objetos escritos por desarrolladores
      del proyecto B. Pero pueden necesitar accesar objetos
      creados por desarrolladores del proyecto C; esa es una
      situaci&oacute;n complicada. Utilizando los diferentes
      m&oacute;dulos de pol&iacute;ticas de seguridad proporcionados
      por la estructura <acronym>MAC</acronym>; los usuarios pueden
      ser divididos en estos grupos y entonces otorgarles acceso
      a las &aacute;reas apropiadas sin temor de filtrado de
      informaci&oacute;n.</para>

    <para>As&iacute;, cada m&oacute;dulo de poli&iacute;ticas de seguridad
      tiene un modo &uacute;nico de tratar con la seguridad de un sistema en 
      general. La selecci&oacute;n de  m&oacute;dulo deber&iacute;a basarse
      en una poli&iacute;tica de seguridad bien planeada. En muchos casos,
      la poli&iacute;tica general tal vez necesite ser revisada y
      reimplementada en el sistema. Entender los diferentes m&oacute;dulos 
      de poli&iacute;ticas de seguridad ofrecidos por la estructura
      <acronym>MAC</acronym> le ayudar&aacute; a los administradores a 
      elegir las mejores poli&iacute;ticas para sus situaciones.</para>

    <para>El kernel por omisi&oacute;n de &os; no incluye la opci&oacute;n
      para la estructura <acronym>MAC</acronym>; as&iacute; que la
      siguiente opci&oacute;n del kernel debe ser agregada antes de
      usar cualquiera de los ejemplos o la informaci&oacute;n de
      este cap&iacute;tulo:</para>

    <programlisting>options	MAC</programlisting>

    <para>Y el kernel requerir&aacute; una recosntrucci&oacute;n y
      una reinstalaci&oacute;n.</para>

    <caution>
      <para>Mientras varias p&aacute;ginas de manual para m&oacute;dulos
        de pol&iacute;ticas <acronym>MAC</acronym> afirman que pueden
        ser construidos dentro del kernel, es posible cortar el acceso
        del sistema a la red y m&aacute;s. Implementar <acronym>MAC</acronym>
        es muy parecido a implementar un firewall, se debe tener
        cuidado en prevenir que el sistema quede bloqueado totalmente.
        La habilidad de retornar a una configuraci&oacute;n previa
        deber&iacute;a ser considerada durante la implementaci&oacute;n
        de <acronym>MAC</acronym>, remotamente debe realizarse con
        precauci&oacute;n extrema.</para>        
    </caution>
  </sect1>

  <sect1 id="mac-understandlabel">
    <title>Entendiendo etiquetas MAC</title>

    <para>Una etiqueta <acronym>MAC</acronym> es un atributo de
      seguridad el cual puede ser aplicado a sujetos y objetos
      a trav&eacute;s del sistema.</para>

    <para>Al aplicar una etiqueta, el usuario debe ser capaz de
      comprender, exactamente, lo que se est&aacute; haciendo.
      Los atributos dsponibles en un objeto dependen del m&oacute;dulo
      de pol&iacute;tica cargado, y esos m&oacute;dulos de pol&iacute;tica
      interpretan sus atributos de diferentes maneras. Si la
      configuraci&oacute;n es inapropiada debido a falta de 
      compresnsi&oacute;n, o inhabilidad de comprender las implicaciones, 
      el resultado puede ser lo inesperado y tal vez, la conducta no 
      deseada del sistema.</para>

    <para>La etiqueta de seguridad en un objeto es utilizada como
      parte de una desici&oacute;n de control de acceso de seguridad
      por una pol&iacute;tica. Con algunas pol&iacute;ticas, la
      etiqueta por si misma contiene toda la informaci&oacute;n
      necesaria para hacer una desici&oacute;n; en otros modelos,
      las etiquetas pueden ser procesadas como parte de un conjunto
      m&aacute;s grande de reglas, etc.</para>

    <para>Por ejemplo, activando la etiqueta de <literal>biba/low</literal>
      en un archivo representar&aacute; una etiqueta mantenida por el
      m&oacute;dulo de pol&iacute;ticas de seguridad Biba, con un valor 
      de <quote>low</quote>.</para>

    <para>Algunos m&oacute;dulos de pol&iacute;ticas que soportan la
      propiedad de etiquetado en &os; ofrecen tres etiquetas
      espec&iacute;ficas predefinidas. Estas son las etiquetas
      low, high, y equal. Aunque refuerzan el control de acceso de
      una manera diferente con cada m&oacute;dulo de pol&iacute;ticas,
      puede estar seguro que la etiqueta low ser&aacute; la
      configuraci&oacute;n m&aacute;s baja, la etiqueta equal
      provocar&aacute; que el sujeto o el objeto sea deshabilitado o no 
      sea afectado, y la etiqueta high impondr&aacute; la 
      configuraci&oacute;n m&aacute;s alta disponible en los 
      m&oacute;dulos de pol&iacute;ticas Biba y <acronym>MLS</acronym>.
      </para>

    <para>Dentro de ambientes de sistemas de archivos con etiqueta 
      &uacute;nica, solamente una etiqueta puede ser utilizada en objetos.
      Esto impondr&aacute; un conjunto de permisos de acceso a 
      trav&eacute;s del sistema entero y en muchos ambientes puede ser 
      todo lo que se requiera. Existen algunos casos donde etiquetas 
      m&uacute;ltiples pueden ser activadas en objetos o sujetos en el
      sistema de archivos. Para esos casos, la opci&oacute;n
      <option>multilabel</option> puede ser pasada a &man.tunefs.8;.</para>

    <para>en el caso de Biba y <acronym>MLS</acronym>, una etiqueta
      num&eacute;rica puede activarse para indicar el nivel preciso
      de control jer&aacute;rquico. Este nivel num&eacute;rico es
      utilizado para particionar o para ordenar informaci&oacute;n
      en difeentes grupos de digamos, clasificaci&oacute;n permitiendo
      acceso solamente a ese grupo o a un nivel de grupo superior.</para>
   
    <para>En la mayor&iacute;a de los casos el administrador solo
      estar&aacute; configurando una etiqueta &uacute;nica para
      utilizar a trav&eacute;s del sistema de archivos.</para>

    <para><emphasis>¡Un momento, esto es similar a <acronym>DAC</acronym>!
      Pens&eacute; que <acronym>MAC</acronym> daba control estrictamente
      al administrador.</emphasis> Esa declaraci&oacute;n todav&iacute;a
      se mantiene como verdadera, hasta cierto grado ya que 
      <username>root</username> es el &uacute;nico en control y el que
      configura las pol&iacute;ticas para que los usuarios sean colocados 
      en las categor&iacute;as/niveles apropiados. Desafortunadamente, 
      muchos m&oacute;dulos de pol&iacute;ticas pueden restringir al 
      usuario <username>root</username> tambi&eacute;n.  Control 
      b&aacute;sico sobre objetos ser&aacute;n entonces liberados al 
      grupo, pero <username>root</username> puede revocar o modificar
      las configuraciones en cualquier momento. Este es el modelo
      jer&aacute;rquico/aclaramiento cubierto por pol&iacute;ticas tales
      como Biba y <acronym>MLS</acronym>.</para>

    <sect2>
      <title>Configuraci&oacute;n de etiquetas</title>

      <para>Virtualmente todos los aspectos de configuraci&oacute;n de
        m&oacute;dulos de pol&iacute;ticas de etiquetas ser&aacute;n
        realizados usando utilidades del sistema base. Estos comandos
        brindan una interfaz simple para la configuraci&oacute;n de
        objetos o sujetos o para manipulaci&oacute;n y verificaci&oacute;n
        de la configuraci&oacute;n.</para>

      <para>Toda la configuraci&oacute;n puede hacerse usando
        las utilidades &man.setfmac.8; y &man.setpmac.8;.
        El comando <command>setfmac</command> es usado para
        activar etiquetas <acronym>MAC</acronym> en objetos del
        sistema mientras que el comando <command>setpmac</command>
        es usado para activar etiquetas en sujetos del sistema.
        Observe:</para>

      <screen>&prompt.root; <userinput>setfmac biba/high test</userinput></screen>

      <para>Si no ocurri&oacute; alg&uacute;n error con el comando de
        arriba, se nos regresar&aacute; el prompt. El &uacute;nico momento
        en que estos comandos no son silentes es cuando se produce
        un error; similarmente a los comandos
        &man.chmod.1; y &man.chown.8;. En algunos casos el error
        puede ser un <errorname>Permission denied</errorname> y es
        obtenido usualmente cuando la etiqueta est&aacute; siendo
        activada o modificada en un objeto el cual est&aacute;
        restringido.<footnote><para>Otras condiciones pueden producir
        fallas diferentes. Para ilustrar, el archivo puede no ser
        propiedad del usuario tratando de reetiquetar el objeto, el
        objeto puede que no exista o que sea de solo lectura. Una
        pol&iacute;tica obligatoria no permitir&aacute; al proceso
        reetiquetar el archivo, debido tal vez a una propiedad del
        archivo, una propiedad del proceso o una propiedad del
        valor de la nueva etiqueta propuesta. Por ejemplo: un usuario
        corriendo a integridad baja trata de cambiar una etiqueta
        de un archivo con integridad baja (low) a una etiqueta de 
        integridad alta (high).</para></footnote> El administrador
        puede usar los siguientes comandos para lograr esto:</para>

      <screen>&prompt.root; <userinput>setfmac biba/high test</userinput>
<errorname>Permission denied</errorname>
&prompt.root; <userinput>setpmac biba/low setfmac biba/high test</userinput>
&prompt.root; <userinput>getfmac test</userinput>
test: biba/high</screen>

      <para>Como vemos arriba, <command>setpmac</command>
        puede usarse para anular las configuraciones del m&oacute;dulo de
        pol&iacute;ticas asignando una etiqueta diferente al proceso
        invocado. La utilidad
        <command>getpmac</command> es utilizada generalmente con procesos
        en ejecuci&oacute;n, como <application>sendmail</application>:
        aunque toma un identificador de proceso en
        lugar de un comando la l&oacute;gica es extremadamente
        similar. Si usuarios tratan de manipular un archivo al
        que no est&aacute; a su acceso, dependiendo de las
        reglas del m&oacute;dulo de pol&iacute;ticas cargado,
        el error
        <errorname>Operation not permitted</errorname> ser&aacute;
        desplegado por la funci&oacute;n <function>mac_set_link</function>.
	</para>

      <sect3>
	<title>Tipos comunes de etiquetas</title>

        <para>Para los m&oacute;dulos &man.mac.biba.4;, &man.mac.mls.4;
          y &man.mac.lomac.4;, se tiene la posibilidad de asignar
          etiquetas simples. Estas toman la forma de high,
          equal y low, a continuaci&oacute;n una breve descripci&oacute;n
          de lo que estas etiquetas brindan:</para>

	<itemizedlist>
	  <listitem>
            <para>La etiqueta <literal>low</literal> es considerada
              la configuraci&oacute;n de etiqueta m&aacute;s baja que
              un objeto o sujeto puede tener. Activando esto en
              objetos o sujetos bloquear&aacute; su acceso a objetos
              o sujetos marcados como high.</para>
	  </listitem>

	  <listitem>
            <para>La etiqueta <literal>equal</literal> solo deber&iacute;a
              ponerse en objetos considerados excluidos de la
              pol&iacute;tica.</para>
	  </listitem>

	  <listitem>
            <para>La etiqueta <literal>high</literal> proporciona a un
              objeto o sujeto la configuraci&oacute;n m&aacute;s alta
              posible.</para>
	  </listitem>
	</itemizedlist>

        <para>Con respeto a cada m&oacute;dulo de pol&iacute;ticas, cada
          una de esas configuraciones establecer&aacute; una directiva
          de flujo de informaci&oacute;n diferente. Leyendo las p&aacute;ginas
          de manual pertinentes le explicar&aacute;n en mayor medida
          las cualidades de las configuraciones de estas etiquetas
          gen&eacute;ricas.</para>

        <sect4>
	  <title>Configuraci&oacute;n avanzada de etiquetas</title>

          <para>N&uacute;meros de grado num&eacute;rico usados por
            <literal>comparaci&oacute;n:compartimiento+compartimiento</literal>; as&iacute;
            lo siguiente:</para>

	  <programlisting>biba/10:2+3+6(5:2+3-20:2+3+4+5+6)</programlisting>

          <para>Puede ser interpretado como:</para>

          <para><quote>Etiqueta de pol&iacute;tica Biba</quote>/<quote>Grado 10</quote>
            :<quote>Compartimientos 2, 3 y 6</quote>:
            (<quote>grado 5 ...</quote>)</para>

          <para>En este ejemplo, el primer grado podr&iacute;a ser
            considerao el <quote>grado efectivo</quote> con
            <quote>compartimientos efectivos</quote>, el segundo
            grado es el grado bajo y el &uacute;ltimo es el grado
            alto. En la mayor&iacute;a de configuraciones estas
            opciones no ser&aacute;n utilizadas; de hecho se ofrecen
            para configuraciones m&aacute;s avanzadas.</para>

          <para>Cuando se aplica a objetos del sistema, solo tendr&aacute;n
            un grado/compartimiento actual tanto en oposici&oacute;n a sujetos
            del sistema como reflejen el rango de derechos disponibles
            en el sistema, e interfaces de red, donde sean utilizados
            para control de acceso.</para>

          <para>El grado y compartimientos en un par sujeto y objeto
            son usados para construir una relaci&oacute;n referida
            como <quote>dominante</quote>, en la cual un sujeto domina
            un objeto, el objeto domina al sujeto, ninguno domina al
            otro, o ambos se dominan. El caso <quote>ambos dominan</quote>
            ocurre cuando las dos etiquetas son iguales. Debido a la
            naturaleza de flujo de informaci&oacute;n de Biba, usted
            tiene derecho a un conjunto de compartimientos,
            <quote>necesita saber</quote>, que pueden corresponder
            a proyectos, pero los objetos tambi&eacute;n tiene un
            conjunto de compartimientos.
            Los usuarios deben de subactivar sus derechos usando
            <command>su</command> o <command>setpmac</command> para
            poder accesar objetos en un compartimiento desde el cual
            no est&eacute;n restringidos.</para> 
	</sect4>
      </sect3>

      <sect3>
	<title>Configuraciones de usuarios y etiquetas</title>

        <para>Los mismos usuarios requieren tener etiquetas para
          que sus archivos y procesos puedan interactuar
          adecuadamente con la pol&iacute;tica de seguridad
          definida en el sistema. Esto se configura a trav&eacute;s
          del archivo <filename>login.conf</filename> mediante el
          uso de clases de login. Cada m&oacute;dulo de pol&iacute;ticas
          que utiliza etiquetas implementar&aacute; las configuraciones
          de clases de usuario.</para>

        <para>Una entrada de ejemplo conteniendo cada configuraci&oacute;n 
	  de m&oacute;dulo de pol&iacute;ticas es desplegado abajo:</para>

	<programlisting>default:\
	:copyright=/etc/COPYRIGHT:\
	:welcome=/etc/motd:\
	:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
	:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
	:manpath=/usr/share/man /usr/local/man:\
	:nologin=/usr/sbin/nologin:\
	:cputime=1h30m:\
	:datasize=8M:\
	:vmemoryuse=100M:\
	:stacksize=2M:\
	:memorylocked=4M:\
	:memoryuse=8M:\
	:filesize=8M:\
	:coredumpsize=8M:\
	:openfiles=24:\
	:maxproc=32:\
	:priority=0:\
	:requirehome:\
	:passwordtime=91d:\
	:umask=022:\
	:ignoretime@:\
	:label=partition/13,mls/5,biba/10(5-15),lomac10[2]:</programlisting>

        <para>La opci&oacute;n <literal>label</literal> es usada para
          activar la etiqueta de clase de usuario por omisi&oacute;n
          la cual ser&aacute; impuesta por <acronym>MAC</acronym>.
          A los usuarios no se les permitir&aacute; nunca modificar
          este valor, as&iacute; pueda ser considerado no &oacute;ptimo
          para el caso del usuario. En un configuraci&oacute;n real,
          sin embargo, el administrador nunca desear&aacute; habilitar
          todos los m&oacute;dulos de pol&iacute;ticas.
          Se recomienda que el resto de este cap&iacute;tulo sea revisado
          antes de que cualquiera de estas configuraciones sea implementada.
	  </para>

	<note>
          <para>Los usuarios pueden cambiar su etiqueta despues del
            login inicial; sin embargo, este cambio est&aacute; sujeto
            a la restricci&oacute;n de la pol&iacute;tica.
            El ejemplo de arriba le dice a la pol&iacute;tica Biba
            que la integridad m&iacute;nima de un proceso es 5, su
            m&aacute;ximo es 15, pero la etiqueta por omisi&oacute;n
            efectiva es 10. El proceso correr&aacute; a 10 hasta que
            elija cambiar de etiqueta, quiz&aacute;s el usuario
            utilice el comando setpmac, el cual ser&aacute; restringido
            por Biba a el rango activado al momento de login.</para>
	</note>

        <para>En todos los casos, despues de
          un cambio a <filename>login.conf</filename>, la
          base de datos de capacidades de clases de login debe
          ser reconstruida usando <command>cap_mkdb</command>
          y esto ser&aacute; reflejado a lo largo de cada
          ejemplo y discusi&oacute;n futura.</para>

        <para>Es &uacute;til notar que muchos sitios pueden
          tener un gr&aacute;n n&uacute;mero de usuarios en
          particular que requieren varias clases de usuarios
          diferentes. La planeaci&oacute;n profunda se requiere
          ya que esto puede tornarse extremadamente dif&iacute;cil
          de administrar.</para>

        <para>Versiones futuras de &os; incluir&aacute;n una nueva
          manera de tratar con el mapeo de usuarios a etiquetas;
          de todas maneras, esto no estar&aacute; disponible hasta
          despues de &os;&nbsp;5.3.</para>
      </sect3>

      <sect3>
	<title>Interfaces de red y configuraci&oacute;n de etiquetas</title>

        <para>Se pueden colocar etiquetas en interfaces de red tambi&eacute;n
          para ayudar a controlar el flujo de datos a trav&eacute;s de
          la red. En todos los casos &eacute;stas funcionan de la misma
          manera que las pol&iacute;ticas funcionan con respecto
          a objetos. Los usuarios con configuraciones altas en
          <literal>biba</literal>, por ejemplo, no se les permitir&aacute;
          accesar interfaces de red con una etiqueta de low.</para>

        <para>La <option>maclabel</option> puede ser pasada a
          <command>ifconfig</command> al activar la etiqueta
          <acronym>MAC</acronym> en interfaces de red. Por
          ejemplo:</para>

	<screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal</userinput></screen>

        <para>activar&aacute; la etiqueta <acronym>MAC</acronym> de
          <literal>biba/equal</literal> en la interfaz &man.bge.4;.
          Cuando se est&aacute; utilizando una configuraci&oacute;n
          similar a
          <literal>biba/high(low-high)</literal> la etiqueta entera
          deber&iacute;a ser entrecomillada; de otra manera se
          retornar&aacute; un error.</para>

        <para>Cada m&oacute;dulo de pol&iacute;ticas que soporta
          etiquetamiento posee un sintonizable el cual puede ser
          usado para deshabilitar la etiqueta <acronym>MAC</acronym>
          en interfaces de red. Configurando la etiqueta a
          <option>equal</option> tendr&aacute; un efecto similar.
          Revise la salida de <command>sysctl</command>, las p&aacute;ginas
          de manual de pol&iacute;ticas, o incluso la informaci&oacute;n
          encontrada m&aacute; adelante en este cap&iacute;tulo para
          esos sintonizables.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>¿Etiqueta &uacute;nica o miltietiqueta?</title>
<!-- Stopped here with my edits -->
      <para>Por omisi&oacute;n el sistema usar&aacute; la
        opci&oacute;n <option>singlelabel</option>. Pero, ¿que
        significa esto para el administrador?, existen varias
        diferencias las cuales, por su propio derecho, ofrecen
        pros y contras a la flexibilidad en el modelo de
        seguridad de los sistemas.</para>
         
      <para>La opci&oacute;n <option>singlelabel</option> solo
        permite una etiqueta, para ilustrar, <literal>biba/high</literal>
        para ser usado para cada objeto o sujeto. Brinda una menor
        carga de administraci&oacute;n pero decrementa la flexibilidad
        de pol&iacute;ticas que soportan etiquetado. Muchos administradores
        pueden querer utilizar la opci&oacute;n <option>multilabel</option>
        en sus pol&iacute;ticas de seguridad.</para>

      <para>La opci&oacute;n <option>multilabel</option> le permitir&aacute;
        a cada objeto o sujeto tener su propia etiqueta <acronym>MAC</acronym>
        independiente en lugar de la opci&oacute;n 
	<option>singlelabel</option> est&aacute;ndar la cual solo
	permitir&aacute; una etiqueta en toda la partici&oacute;n.  La
	opciones de etiqueta  <option>multilabel</option> y 
	<option>single</option> solo se requieren para las 
	pol&iacute;ticas que implementan la propiedad de etiquetado,
	incluyendo las pol&iacute;ticas Biba, Lomac, <acronym>MLS</acronym> 
	y <acronym>SEBSD</acronym>.</para>
    
      <para>En muchos casos, la <option>multilabel</option> puede que no
        se necesite activar. Considere la siguiente situaci&oacute;n y
        el siguiente modelo de seguridad:</para>

      <itemizedlist>
	<listitem>
          <para>servidor de Web &os; usando la estructura
            <acronym>MAC</acronym> y una mezcla de las
            diferentes pol&iacute;ticas.</para>
	</listitem>

	<listitem>
          <para>Esta m&aacute;quina solo requiere una etiqueta,
            <literal>biba/high</literal>, para todo en el sistema.
            Aqu&iacute; el sistema de archivos no requerir&aacute;
            la opci&oacute;n <option>multilabel</option> ya que
            una etiqueta &uacute;nica estar&aacute; siempre en
            efecto unicamente.</para>
	</listitem>

	<listitem>
          <para>Pero, esta m&aacute;quina ser&aacute; un servidor web
            y deber&iacute;a ejecutar el servidor web en 
	    <literal>biba/low</literal> para prevenir capacidades de
	    escritura. La pol&iacute;tica Biba y su funcionamiento
	    ser&aacute;n discutidos m&aacute;s adelante, por eso si el
	    comentario anterior fue dificil de interpretar solo continue
	    leyendo y regrese despues.  El servidor podr&iacute;a utilizar
	    una partici&oacute;n separada activada a 
	    <literal>biba/low</literal> para la mayor&iacute;a o para todo 
	    su estado de ejecuci&oacute;n. Faltan muchas cosas en este
	    ejemplo, como las restricciones en datos, configuraci&oacute;n 
	    y propiedades de usuarios; de todas maneras, este es solo un
	    ejemplo r&aacute;pido para probar el punto mencionado.</para>
	</listitem>
      </itemizedlist>

      <para>Si alguna de las pol&iacute;ticas de no etiquetado
        se van a utilizar, entonces la opci&oacute;n 
	<option>multilabel</option> nunca ser&iacute;a requerida. Esto
	incluye las pol&iacute;ticas <literal>seeotheruids</literal>,
	<literal>portacl</literal> y <literal>partition</literal>.</para>

      <para>Deber&iacute;a notarse tambi&eacute;n que usando
        <option>multilabel</option> con una partici&oacute;n y
        estableciendo un modelo de seguridad basado en la
        funcionalidad <option>multilabel</option> puede abrir las
        puertas para una carga administrativa mayor ya que todo
        en el sistema de archivos tendr&iacute;a una etiqueta.
        Esto incluye directorios, archivos e incluso nodos de
        dispositivo.</para>

      <para>El siguiente comando activar&aacute; <option>multilabel</option>
        en el sistema de archivos para tener etiquetas m&uacute;ltiples.
        Esto solo puede hacerse en modo mono usuario:</para>

      <screen>&prompt.root; <userinput>tunefs -l enable /</userinput></screen>

      <para>Esto no es un requerimiento para el sistema de
        archivos swap.</para>

      <note>
        <para>Algunos usuarios han experimentado problemas 
          activando la bandera <option>multilabel</option> en la
          partici&oacute;n ra&iacute;z.
          Si este es el caso, por favor revise la
          <xref linkend="mac-troubleshoot"> de este cap&iacute;tulo.</para>
      </note>
    </sect2>

    <sect2>
      <title>Controlando MAC con sintonizables</title>

      <para>Sin ning&uacute;n m&oacute;dulo cargado, hay todav&iacute;a
        algunas partes de <acronym>MAC</acronym> las cuales pueden
        ser configuradas utilizando la interfaz <command>sysctl</command>.
        Estos sintonizables son descritos abajo y en todos los
        casos el n&uacute;mero uno (1) significa habilitado
        mientras que el n&uacute;mero cero (0) significa
        deshabilitado:</para>

      <itemizedlist>
	<listitem>
          <para><literal>security.mac.enforce_fs</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> del sistema de archivos en el sistema 
	    de archivos.</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_kld</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> de enlazado de kernel en el enlazador
	    din&aacute;mico del kernel (ver &man.kld.4;).</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_network</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> de red.</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_pipe</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> en pipes.</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_process</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> en procesos que utilizan 
	    comunicaci&oacute;n inter-procesos.</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_socket</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> en sockets (ver la p&acute;gina de manual
	    &man.socket.2;).</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_system</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> en actividades del sistema tales como
	    contabilidad y reinicio.</para>
	</listitem>

	<listitem>
          <para><literal>security.mac.enforce_vm</literal> tiene el valor
            uno (1) por omisi&oacute;n e impone pol&iacute;ticas
	    <acronym>MAC</acronym> en la memoria virtual del sistema.</para>
	</listitem>
      </itemizedlist>

      <note>
        <para>Cada pol&iacute;tica u opci&oacute;n <acronym>MAC</acronym>
          soporta sintonizables. Estas usualmente cuelgan del
          &aacute;rbol
          <literal>security.mac.&lt;policyname&gt;</literal>.
          Para visualizar todos los sintonizables de <acronym>MAC</acronym>
          utilice el siguiente comando:</para>

	<screen>&prompt.root; <userinput>sysctl -da | grep mac</userinput></screen>
      </note>

      <para>Esto debe ser interpretado como si todas las
        pol&iacute;ticas b&aacute;sicas <acronym>MAC</acronym>
        est&aacute;n impuestas por omisi&oacute;n.
        Si los m&oacute;dulos fueron construidos en el kernel
        el sistema podr&iacute;a estar extremadamente cerrado
        y muy probablemente sin poder comunicarse con la red
        local o conectar a Internet, etc. Debido a esto la
        construcci&oacute;n de los m&oacute;dulos dentro del
        kernel no es completamente recomendable. No porque
        limite la habilidad de deshabilitar funciones al vuelo
        con <command>sysctl</command>, pero le permite al
        administrador cambiar instantaneamente las pol&iacute;ticas
        de un sistema sin el requerimiento de recosntruir y
        reinstalar un nuevo sistema.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-modules">
    <title>Configuraci&oacute;n de m&oacute;dulo</title>

    <para>Cada m&oacute;dulo incluido con la estructura <acronym>MAC</acronym>
      puede ser ya sea compilado en el kernel como se not&oacute; arriba
      o cargado como un m&oacute;dulo ejecutable del kernel.
      El m&eacute;todo recomendado es agregar el nombre del
      m&oacute;dulo al archivo
      <filename>/boot/loader.conf</filename> para que se cargue
      durante la operaci&oacute;n inicial de arranque.</para> 

    <para>Las siguientes secciones discutir&aacute;n los
      varios m&oacute;dulos <acronym>MAC</acronym> y cubrir&aacute;n
      sus propiedades.
      Implementarlos en un ambiente espec&iacute;fico tambi&eacute;n
      ser&aacute; una consideraci&oacute;n de este cap&iacute;tulo.
      Algunos m&oacute;dulos soportan el uso de etiquetamiento,
      el cual controla accesos mediante la imposici&oacute;n de
      una etiqueta como <quote>esto es permitido y esto no</quote>.
      Un archivo de configuraci&oacute;n de etiqueta puede controlar
      como se pueden accesar archivos, se dan las comunicaciones 
      de red y m&aacute;s. La secci&oacute;n previa mostr&oacute; como
      la bandera <option>multilabel</option> pod&iacute;a activarse
      en sistemas de archivos para habilitar control de acceso
      por archivo o por partici&oacute;n.</para>

    <para>Una configuraci&oacute;n de etiqueta &uacute;nica impondr&iacute;a
      solamente una etiqueta a trav&eacute;s del sistema, es por eso
      que la opci&oacute;n <command>tunefs</command> es llamada
      <option>multilabel</option>.</para>

    <sect2 id="mac-seeotheruids">
      <title>El m&oacute;dulo MAC seeotheruids</title>

      <indexterm>
        <primary>MAC See Other UIDs Policy</primary>
      </indexterm>
      <para>Nombre de m&oacute;dulo: 
        <filename>mac_seeotheruids.ko</filename></para>

      <para>L&iacute;nea de configuraci&oacute;n de Kernel:
        <literal>options MAC_SEEOTHERUIDS</literal></para>

      <para>Opci&oacute;n de arranque:
	<literal>mac_seeotheruids_load="YES"</literal></para>

      <para>El m&oacute;dulo &man.mac.seeotheruids.4; imita los
        sintonizables de <command>sysctl</command> 
        <literal>security.bsd.see_other_uids</literal>
        y <literal>security.bsd.see_other_gids</literal>.
        Esta opci&oacute;n no requiere activar ninguna etiqueta
        antes de la configuraci&oacute;n y puede operar de
        manera transparente con los otros m&oacute;dulos.</para>

      <para>Despues de cargar el m&oacute;dulo, los
        siguientes sintonizables de <command>sysctl</command>
        pueden utilizarse para controlar las opciones:</para>

      <itemizedlist>
	<listitem>
          <para><literal>security.mac.seeotheruids.enabled</literal>
            habilitar&aacute; las opciones del m&oacute;dulo, con
            las opciones por omisi&oacute;n. Estas opciones por
            omisi&oacute;n le negar&aacute;n a los usuarios la
            habilidad de ver procesos y sockets propiedad de
            otros usuarios.</para>
	</listitem>

	<listitem>
	  <para>
	    <literal>security.mac.seeotheruids.specificgid_enabled</literal>
            permitir&aacute; a un cierto grupo ser exentados de esta
            pol&iacute;tica. Para exentar grupos espec&iacute;ficos de
            esta pol&iacute;tica, utilice el sintonizable de 
	    <command>sysctl</command> <literal>security.mac.seeotheruids.specificgid=<replaceable>XXX</replaceable></literal>.
            En el ejemplo de arriba, <replaceable>XXX</replaceable>
	    deber&iacute;a ser reemplazado con el ID num&eacute;rico a ser
	    exentado.</para>
	</listitem>

	<listitem>
	  <para>
	    <literal>security.mac.seeotheruids.primarygroup_enabled</literal>
            es usado para exentar grupos primarios espec&iacute;ficos de
            esta pol&iacute;tica. Cuando utilice este sintonizable no
            se debe activar
            <literal>security.mac.seeotheruids.specificgid_enabled</literal>.</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="mac-bsdextended">
    <title>El m&oacute;dulo MAC bsdextended</title>

    <indexterm>
    <primary>MAC</primary>
      <secondary>File System Firewall Policy</secondary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: 
      <filename>mac_bsdextended.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel:
      <literal>options MAC_BSDEXTENDED</literal></para>

    <para>Opci&oacute;n de arranque:
      <literal>mac_bsdextended_load="YES"</literal></para>

    <para>El m&oacute;dulo &man.mac.bsdextended.4; impone el
      fireall del sistema de archivos. La pol&iacute;tica de
      este m&oacute;dulo brinda una extensi&oacute;n al modelo
      est&aacute;ndar de permisos del sistema de archivos,
      permitiendo a un administrador un conjunto de reglas
      tipo firewall para proteger archivos, utilidades y directorios
      en la jerarqu&iacute;a del sistema de archivos.</para>

    <para>La pol&iacute;tica puede ser creada mediante una utilidad,
      &man.ugidfw.8;, que tiene una sintaxis similar a la de
      &man.ipfw.8;. Se pueden escribir m&aacute;s herramientas
      utilizando las funciones en la librer&iacute;a
      &man.libugidfw.3;.</para>

    <para>Se debe tener extrema precauci&oacute;n al trabajar con
      este m&oacute;dulo, el uso incorrecto puede bloquear el
      acceso a ciertas partes del sistema de archivos.</para>

    <sect2>
      <title>Ejemplos</title>

      <para>Despues de que el m&oacute;dulo &man.mac.bsdextended.4; ha
        sido cargado, el siguiente comando puede ser usado para
        listar la regla de configuraci&oacute;n actual:</para>

      <screen>&prompt.root; <userinput>ugidfw list</userinput>
0 slots, 0 rules</screen>

      <para>Como se esperaba, no existen reglas definidad. Esto
        significa que todo es completamente accesible. Para crear
        una regla que bloquear&aacute; todos los accesos de
        usuarios pero dejar&aacute; inafectado a
        <username>root</username> simplemente ejecute
        el siguiente comando:</para>

      <screen>&prompt.root; <userinput>ugidfw add subject not uid root new object not uid root mode n</userinput></screen>

      <note>
        <para>En releases previas a &os;&nbsp;5.3, el
          par&aacute;metro <parameter>add</parameter> no exist&iacute;a.
          En esos casos <parameter>set</parameter> deber&iacute; ser
          utilizado en su lugar. Vea abajo para un ejemplo de
          comando.</para></note> 

      <para>Esta es una muy mala idea ya que bloquear&aacute; a
        todos los usuarios de utilizar incluso los comandos m&aacute;s
        simples, como <command>ls</command>. Una lista m&aacute;s
        patriotica de reglas puede ser:</para>

      <screen>&prompt.root; <userinput>ugidfw set 2 subject uid <replaceable>user1</replaceable> object uid <replaceable>user2</replaceable> mode n</userinput>
&prompt.root; <userinput>ugidfw set 3 subject uid <replaceable>user1</replaceable> object gid <replaceable>user2</replaceable> mode n</userinput></screen>

      <para>Esto bloquear&aacute; todos los accesos, incluyendo
        listado de directorios, al directorio home de
        <username><replaceable>user2</replaceable></username>
        desde el nombre de usuario <username>user1</username>.</para>

      <para>En lugar de <username>user1</username>, se puede pasar
        <option>not uid <replaceable>user2</replaceable></option>.
        Esto impondr&aacute; las mismas restricciones de acceso de
        arriba para todos los usuarios en lugar de solo uno.</para>

      <note>
        <para>El usuario <username>root</username> no ser&aacute;
          afectado por estos cambios.</para>
      </note>

      <para>Esto debe proporcionar una idea general de
        como se puede utilizar el m&oacute;dulo
        &man.mac.bsdextended.4; para ayudar a fortificar
        un sistema de archivos. Para mayor informaci&oacute;n,
        vea las p&aacute;ginas de manual
        &man.mac.bsdextended.4; y &man.ugidfw.8;.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-ifoff">
    <title>El m&oacute;dulo MAC ifoff</title>
 
    <indexterm>
      <primary>MAC Interface Silencing Policy</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: <filename>mac_ifoff.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel:
      <literal>options MAC_IFOFF</literal></para>

    <para>Opci&oacute;n de arranque: <literal>mac_ifoff_load="YES"</literal>
      </para>

    <para>El  m&oacute;dulo &man.mac.ifoff.4; existe solamente
      para deshabilitar interfaces de red al vuelo y evitar que
      interfaces de red sean levantadas durante el arranque
      inicial del sistema. No requiere activar ninguna etiqueta
      en el sistema, ni tiene dependencias de otros
      m&oacute;dulos <acronym>MAC</acronym>.</para>

    <para>La mayor&iacute;a del control es hecho
      a trav&eacute;s de los sintonizables de <command>sysctl</command>
      listados abajo.</para>

    <itemizedlist>
      <listitem>
        <para><literal>security.mac.ifoff.lo_enabled</literal>
          habilitar&aacute;/deshabilitar&aacute; todo el tr&aacute;fico
          en la interfaz loopback (&man.lo.4;).</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.ifoff.bpfrecv_enabled</literal>
          habilitar&aacute;/deshabilitar&aacute; todo el tr&aacute;fico
          en la interfaz del filtro de paquetes de Berkeley
          (&man.bpf.4;)</para> 
      </listitem>

      <listitem>
	<para><literal>security.mac.ifoff.other_enabled</literal>
          habilitar&aacute;/deshabilitar&aacute; todo el tr&aacute;fico
          en todas las dem&aacute;s interfacez.</para>
      </listitem>
    </itemizedlist>

    <para>Uno de los usos m&aacute;s comunes de &man.mac.ifoff.4; es
      el monitoreo de red en un ambiente donde el tr&aacute;fico de
      red no debe ser permitido durante la secuencia de arranque.
      Otro uso sugerido puede ser escribir un script el cual
      utilice
      <filename role="package">security/aide</filename> para bloquear
      el tr&aacute;fico de red automaticamente si encuentra archivos
      nuevos o alterados en directorios protegidos.</para>
  </sect1>

  <sect1 id="mac-portacl">
    <title>El m&oacute;dulo MAC portacl</title>

    <indexterm>
      <primary>MAC Port Access Control List Policy</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: <filename>mac_portacl.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel:
      <literal>MAC_PORTACL</literal></para>

    <para>Opci&oacute;n de arranque: 
      <literal>mac_portacl_load="YES"</literal></para>

    <para>El m&oacute;dulo &man.mac.portacl.4; es utilizado para
      limitar el amarre a puertos locales <acronym>TCP</acronym> y
      <acronym>UDP</acronym> usando una variedad de variables
      <command>sysctl</command>. En esencia &man.mac.portacl.4; hace
      posible permitir a usuarios que no son <username>root</username>
      amarrarse a puertos privilegiados espec&iacute;ficos, por
      ejemplo, puertos menores a 1024.</para>

    <para>Una vez cargado, este  m&oacute;dulo habilitar&aacute;
      la pol&iacute;tica <acronym>MAC</acronym> en todos los
      sockets, Los siguientes sintonizables est&aacute;n
      disponibles:</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.portacl.enabled</literal>
          habilitar&aacute;/deshabilitar&aacute; la pol&iacute;tica
          completamente.<footnote><para>Debido a un error, la variable
          de <command>sysctl</command>
          <literal>security.mac.portacl.enabled</literal> no
          funcionar&aacute; en &os;&nbsp;5.2.1 o releases
          anteriores.</para></footnote></para>          
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.port_high</literal>
          especificar&aacute; el n&uacute;mero de puerto m&aacute;s
          elevado para el que &man.mac.portacl.4; habilitar&aacute;
          protecci&oacute;n.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.suser_exempt</literal> 
	  exentar&aacute; cuando est&eacute; a un valor diferente
          de cero, al usuario <username>root</username> de esta
          pol&iacute;tica.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.rules</literal>
          especificar&aacute; la pol&iacute;tica actual mac_portacl;
          ver abajo.</para>
      </listitem>
    </itemizedlist>

    <para>La pol&iacute;tica actual <literal>mac_portacl</literal>,
      como se especifica en la variable de sysctl
      <literal>security.mac.portacl.rules</literal>
      es un texto de cadena de la forma:
      <literal>rule[,rule,...]</literal> con tantas reglas
      como se necesiten. Cada regla es de la forma:
      <literal>idtype:id:protocol:port</literal>. El
      par&aacute;metro
      <parameter>idtype</parameter> puede ser
      <literal>uid</literal> o <literal>gid</literal> e interpreta
      el par&aacute;metro <parameter>id</parameter> ya sea como
      id de usuario o id de grupo, respectivamente.
      El par&aacute;metro
      <parameter>protocol</parameter> es usado para determinar
      si la regla debe aplicar a <acronym>TCP</acronym> o
      <acronym>UDP</acronym> configurando el par&aacute;metro a
      <literal>tcp</literal> o <literal>udp</literal>.
      El par&aacute;metro final <parameter>port</parameter> es el
      n&uacute;mero de puerto al que se le permitir&aacute;
      amarrarse al usuario o grupo especificado.</para>

    <note>
      <para>Ya que las reglas son interpretadas directamente por
        el kernel, solo valores num&eacute;ricos pueden utilizarse
        para los par&aacute;metros  ID de usuario, ID de grupo y puerto.
        Ejemplo, nombres de usuario, grupo y servicios de puerto
        no pueden ser usados.</para>
    </note>

    <para>Por omisi&oacute;n, en sistemas tipo &unix;, puertos
      menores que 1024 solo pueden ser usados o amarrados a
      procesos privilegiados, ejemplo, aquellos que corren
      como <username>root</username>. Para que
      &man.mac.portacl.4; permita que procesos no privilegiados
      se amarren a puertos debajo de 1024 esta restricci&oacute;n 
      est&aacute;ndar de &unix; debe ser deshabilitada. Esto puede 
      lograrse activando a cero las variables de &man.sysctl.8;
      <literal>net.inet.ip.portrange.reservedlow</literal> y
      <literal>net.inet.ip.portrange.reservedhigh</literal>.</para>

    <para>Vea los ejemplos abajo o revise la p&aacute;gina de
      manual &man.mac.portacl.4; para mayor informaci&oacute;n.</para>

    <sect2>
      <title>Ejemplos</title>

      <para>Los siguientes ejemplos deben iluminar la discusi&oacute;n
        de arriba un poco mejor:</para>

      <screen>&prompt.root; <userinput>sysctl security.mac.portacl.port_high=1023</userinput>
&prompt.root; <userinput>sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0</userinput></screen>

      <para>Primero configuramos &man.mac.portacl.4; para cubrir
        los puertos privilegiados est&aacute;ndar y deshabilitar
        las restricciones de amarre normales &unix;.</para>

      <screen>&prompt.root; <userinput>sysctl security.mac.portacl.suser_exempt=1</userinput></screen>

      <para>El usuario <username>root</username> no debe ser invalidado
        por esta pol&iacute;tica, as&iacute; que ponga
        <literal>security.mac.portacl.suser_exempt</literal> a un valor
        diferente de cero. El m&oacute;dulo &man.mac.portacl.4;
        ha sido ahora configurado para comportarse de la misma
        manera en que lo hacen los sistemas tipo &unix; por
        omisi&oacute;n.</para>

      <screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:80:tcp:80</userinput></screen>

      <para>Permite al usuario con <acronym>UID</acronym> 80
        (normalmente el usuario <username>www</username>) amarrarse
        al puerto 80. Esto puede usarse para permitir al usuario
        <username>www</username> ejecutar un servidor web sin tener
        siquiera privilegios de <username>root</username>.</para>

      <screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995</userinput></screen>

      <para>Permite al usuario con <acronym>UID</acronym> de
        1001 amarrarse al puerto <acronym>TCP</acronym> 110
        (<quote>pop3</quote>) y 995 (<quote>pop3s</quote>).
        Esto le permitir&aacute; a este usuario iniciar un
        servidor que acepte conexiones en los puertos
        110 y 995.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-labelingpolicies">
    <title>Pol&iacute;ticas MAC con propiedades de etiquetamiento</title>

    <para>Las siguientes secciones discutir&aacute;n pol&iacute;ticas
      <acronym>MAC</acronym> que utilizan etiquetas.</para>    

    <para>De aqu&iacute; en adelante este cap&iacute;tulo se enfocar&aacute;
      en las propiedades de &man.mac.biba.4;, &man.mac.lomac.4;,
      &man.mac.partition.4;, y &man.mac.mls.4;.</para>

    <note>
      <para>Este es solamente un ejemplo de configuraci&oacute;n y
        no debe ser considerado para una implementaci&oacute;n en
        producci&oacute;n. El objetivo es documentar y mostrar la
        sintaxis as&iacute; como los ejemplos para la
        implementaci&oacute;n y prueba.</para>
    </note>

    <para>Para que estas pol&iacute;ticas funcionen correctamente
      se deben hacer varias preparaciones.</para>

    <sect2 id="mac-prep">
      <title>Preparaci&oacute;n para pol&iacute;ticas de 
        etiquetamiento</title>

      <para>Los siguientes cambios son requeridos en 
        el archivo <filename>login.conf</filename>:</para>

      <itemizedlist>
	<listitem>
	  <para>Una clase <literal>insecure</literal>, u otra
            clase de tipo similar, debe ser agregada.
            La clase de login <literal>insecure</literal>
            no es requerida y solo es utilizada aqu&iacute;como un ejemplo;
            configuraciones diferentes pueden utilizar otro nombre
            de clase.</para
	</listitem>

	<listitem>
          <para> La clase <literal>insecure</literal> debe tener
            las siguientes propiedades y definiciones. Varias
            de estas pueden ser alteradas pero la l&iacute;nea
            que define la etiqueta por omisi&oacute;n es un
            requerimiento y debe permanecer.</para>

	  <programlisting>insecure:\
	:copyright=/etc/COPYRIGHT:\
	:welcome=/etc/motd:\
	:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
	:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
	:manpath=/usr/share/man /usr/local/man:\
	:nologin=/usr/sbin/nologin:\
	:cputime=1h30m:\
	:datasize=8M:\
	:vmemoryuse=100M:\
	:stacksize=2M:\
	:memorylocked=4M:\
	:memoryuse=8M:\
	:filesize=8M:\
	:coredumpsize=8M:\
	:openfiles=24:\
	:maxproc=32:\
	:priority=0:\
	:requirehome:\
	:passwordtime=91d:\
	:umask=022:\
	:ignoretime@:\
	:label=partition/13,mls/5,biba/low:</programlisting>

          <para>El comando &man.cap.mkdb.1; necesita ser ejecutado
            en &man.login.conf.5; antes de que cualquiera
            de los usuarios puede ser cambiado a la nueva
            clase.</para>

          <para>El usuario <username>root</username> debe tambi&eacute;n
            ser colocado en un clase de login; de otra manera, casi
            cualquier comando ejecutado por <username>root</username>
            requerir&aacute; el uso de
            <command>setpmac</command>.</para>

	  <warning>
            <para>La reconstrucci&oacute;n de la base de datos
              de <filename>login.conf</filename> puede causar
              algunos errores posteriores con la clase daemon.
              Simplemente descomentando la cuenta daemon y
              reconstruyendo la base de datos deber&iacute;a
              aliviar estos s&iacute;ntomas.</para>
	  </warning>
	</listitem>

	<listitem>
          <para>Asegurarse que todas las particiones
            en las que el etiquetamiento <acronym>MAC</acronym>
            ser&aacute; implementado soporten
            <option>multilabel</option>.
            Debemos hacer esto porque muchos de los ejemplos
            aqu&iacute; mostrados contienen diferentes
            etiquetas para prop&oacute;sitos de prueba.
            Revise la salida del comando <command>mount</command>
            como medida precautoria.</para>
	</listitem>

	<listitem>
          <para>Cambie cualquier usuario que tendr&aacute; los m&aacute;s
            altos mecanismos de seguridad impuestos a la nueva clase
            de usuario. Una ejecuci&oacute;n r&aacute;pida de
            &man.pw.8; o &man.vipw.8; debe hacer el truco.</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="mac-partition">
    <title>El m&oacute;dulo MAC partition</title>

    <indexterm>
      <primary>MAC Process Partition Policy</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: 
      <filename>mac_partition.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel:
      <literal>options MAC_PARTITION</literal></para>

    <para>Opci&oacute;n de arranque:
      <literal>mac_partition_load="YES"</literal></para>

    <para>La pol&iacute;tica &man.mac.partition.4; dejar&aacute;
      caer procesos en <quote>particiones</quote> espec&iacute;ficas
      basandose en su etiqueta <acronym>MAC</acronym>. Piense en
      ello como un tipo especial de &man.jail.8;, aunque eso es
      dificilmente una comparaci&oacute;n meritoria.</para>

    <para>Este es un m&oacute;dulo que debe ser agregado al
      archivo &man.loader.conf.5; para que cargue y
      habilite la pol&iacute;tica durante el proceso
      de arranque.</para>

    <para>La mayor&iacute;a de configuraciones para esta
      pol&iacute;tica son realizadas usando la utilidad
      &man.setpmac.8; que ser&aacute; explicada abajo.
      El siguiente sintonizable de <command>sysctl</command>
      est&aacute; disponible para esta pol&iacute;tica:</para>

    <itemizedlist>
      <listitem>
        <para><literal>security.mac.partition.enabled</literal>
          habilitar&aacute; la imposici&oacute;n de particiones
          de procesos <acronym>MAC</acronym>.</para>
      </listitem>
    </itemizedlist>

    <para>Cuando esta pol&iacute;tica est&aacute; habilitada, los
      usuarios solo tend&aacute;n permitido ver sus procesos pero
      no tend&aacute;n permitida la posibilidad de trabajar con
      ciertas utilidades. Por ejemplo, un usuario en la
      clase <literal>insecure</literal> de arriba no tend&aacute;
      permitido accesar el comando <command>top</command> as&iacute;
      como muchos otros comandos que necesitan engendrar un
      proceso.</para> 

    <para>Para activar o tirar utilidades dentro de una etiqueta
      de partici&oacute;n, use la utilidad <command>setpmac</command>:</para>

    <screen>&prompt.root; <userinput>setpmac partition/13 top</userinput></screen>

    <para>Esto agregar&aacute; el comando <command>top</command>
      a la etiqueta activada en usuarios en la clase 
      <literal>insecure</literal>.  Note que todos los procesos 
      engendrados por usuarios en la clase <literal>insecure</literal>
      permanecer&aacute;n en la etiqueta <literal>partition/13</literal>.
      </para>

    <sect2>
      <title>Ejemplos</title>

      <para>El siguiente comando le mostrar&aacute; la etiqueta de
        partici&oacute;n y la lista de procesos:</para>

      <screen>&prompt.root; <userinput>ps Zax</userinput></screen>

      <para>El siguiente comando permitir&aacute; la visualizaci&oacute;n
        de etiqueta de partici&oacute;n de procesos de otro usuario
        y que usuario est&aacute; ejecutando procesos actualmente:</para>

      <screen>&prompt.root; <userinput>ps -ZU trhodes</userinput></screen>

      <note>
        <para>Los usuarios pueden ver procesos en la etiqueta de
          <username>root</username> a menos que la pol&iacute;tica
          &man.mac.seeotheruids.4; est&aacute; cargada.</para>
      </note>

      <para>Una implementaci&oacute;n realmente enga&ntilde;osa
        podr&iacute;a tener todos los servicios deshabilitados
        en <filename>/etc/rc.conf</filename> e iniciados por un
        script que inicie con la configuraci&oacute;n adecuada
        de etiquetamiento.</para>

      <note>
        <para>Las siguientes pol&iacute;ticas soportan configuraciones
          de enteros en lugar de las tres etiquetas ofrecidas
          por omisi&oacute;n. Estas opciones, incluyendo sus
          limitaciones, son mejor explicadas en las p&aacute;ginas
          de manual del m&oacute;dulo.</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="mac-mls">
    <title>El m&oacute;dulo de seguridad multinivel MAC</title>

    <indexterm>
      <primary>MAC Multi-Level Security Policy</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: <filename>mac_mls.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel:
      <literal>options MAC_MLS</literal></para>

    <para>Opci&oacute;n de arranque: 
      <literal>mac_mls_load="YES"</literal></para>

    <para>La pol&iacute;tica &man.mac.mls.4; controla accesos entre sujetos
      y objetos en el sistema imponiendo una pol&iacute;tica estricta de
      flujo de informaci&oacute;n.</para>

    <para>En ambientes <acronym>MLS</acronym>, un nivel de
      <quote>aclaramiento</quote> es activado en cada etiqueta de
      objeto o sujeto, junto con compartimientos. Debido a que
      este aclaramiento o niveles de sensibilidad pueden alcanzar
      n&uacute;meros mayores a seis mil; podr&iacute;a ser una tarea
      intimidante para cualquier administrador de sistema configurar
      cada objeto o sujeto. Afortunadamente, tres etiquetas
      <quote>instantaneas</quote> es&aacute;n ya incluidas en
      esta pol&iacute;tica.</para>

    <para>Estas etiquetas son <literal>mls/low</literal>,
      <literal>mls/equal</literal> y <literal>mls/high</literal>.
      Ya que estas etiquetas son descritas en profundidad
      en la p&aacute;gina de manual, solo tendr&aacute;n una
      descripci&oacute;n breve aqu&iacute;:</para>

    <itemizedlist>
      <listitem>
        <para>La etiqueta <literal>mls/low</literal> contiene una
          configuraci&oacute;n baja que le permite ser dominada
          por todos los otros objetos. Cualquier cosa etiquetada
          con <literal>mls/low</literal> tendr&aacute; un nivel
          de aclaramiento bajo y no tendr&aacute; permitido
          accesar informaci&oacute;n de un nivel m&aacute;s alto.
          Adicionalmente, esta etiqueta prevendr&aacute; a objetos
          de un nivel de aclaramiento m&aacute;s elevado de
          escribir o pasar informaci&oacute;n hacia ellos.</para>
      </listitem>

      <listitem>
        <para>La etiqueta <literal>mls/equal</literal> debe ser
          colocada en objetos considerados exentos de la
          pol&iacute;tica.</para>
      </listitem>

      <listitem>
        <para>La etiqueta <literal>mls/high</literal> es el nivel
          m&aacute;s elevado de aclaramiento posible. Los objetos
          que tienen asignada esta etiqueta mantendr&aacute;n
          dominaci&oacute;n sobre todos los otros objetos en el
          sistema; sin embargo, no permitir&aacute;n el filtrado
          de informaci&oacute;n a objetos de una clase menor.</para>
      </listitem>
    </itemizedlist>

    <para><acronym>MLS</acronym> brinda:</para>

    <itemizedlist>
      <listitem>
        <para>Un nivel de seguridad jer&aacute;rquico con un
          conjunto de categor&iacute;as no jer&aacute;rquicas.</para>
      </listitem>

      <listitem>
        <para>Reglas fijas: no lecturas hacia arriba, no escrituras
          hacia abajo (un sujeto puede tener acceso de lectura a
          objetos en su propio nivel o inferior, pero no superior.
          Similarmente, un sujeto puede tener acceso de escritura
          a objetos en su propio nivel o superior pero no
          inferior.).</para>
      </listitem>

      <listitem>
        <para>Secreto (previniendo exposici&oacute;n
          inapropiada de datos).</para>
      </listitem>

      <listitem>
        <para>Bases para el dise&ntilde;o de sistemas que manejen
          datos concurrentemente a niveles m&uacute;ltiples de
          sensitividad (sin filtrar informaci&oacute;n entre
          secreto y confidencial).</para>
      </listitem>
    </itemizedlist>

    <para>Los siguientes sintonizables de <command>sysctl</command>
      est&aacute;n disponibles para la configuraci&oacute;n de
      servicios especiales e interfaces:</para>

    <itemizedlist>
      <listitem>
        <para><literal>security.mac.mls.enabled</literal> es usado
          para habilitar/deshabilitar la pol&iacute;tica
          <acronym>MLS</acronym>.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.ptys_equal</literal> 
          etiquetar&aacute; todos los dispositivos &man.pty.4;
          como <literal>mls/equal</literal> durante su
          creaci&oacute;n.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.revocation_enabled</literal> es
          utilizado para revocar accesos a objetos despues que su
          etiqueta cambie a una etiqueta de un grado inferior.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.max_compartments</literal> es
          utilizado para activar el n&uacute;mero m&aacute;ximo de
          niveles de compartimientos con objetos; basicamente el
          n&uacute;mero m&aacute;ximo de compartimientos permitidos
          en un sistema.</para>
      </listitem>
    </itemizedlist>

    <para>Para manipular las etiquetas <acronym>MLS</acronym>,
      se ha provisto el comando &man.setfmac.8;. Para asignar
      una etiqueta a un objeto, ejecute el siguiente comando:</para> 

    <screen>&prompt.root; <userinput>setfmac mls/5 test</userinput></screen>

    <para>Para obtener la etiqueta <acronym>MLS</acronym> para
      el archivo <filename>test</filename> ponga el siguiente
      comando:</para>

    <screen>&prompt.root; <userinput>getfmac test</userinput></screen>

    <para>Este es un resumen de las propiedades de la pol&iacute;tica
      <acronym>MLS</acronym>. Otro enfoque es crear un archivo de
      pol&iacute;ticas maestro en <filename class="directory">/etc</filename>
      que especifique la informaci&oacute;n de la pol&iacute;tica
      <acronym>MLS</acronym> y alimentar con ese archivo el comando
      <command>setfmac</command>. Este m&eacute;todo ser&aacute;
      explicado despues de cubrir todas las pol&iacute;ticas.</para>
      
    <para>Observaciones: un objeto con aclaramiento inferior es
      incapaz de observar procesos con aclaramiento m&aacute;s
      elevado. Una pol&iacute;tica b&aacute;sica podr&iacute;a
      ser imponer <literal>mls/high</literal> en todo lo que
      no va a ser le&iacute;do, incluso si necesita escribirse.
      Imponga <literal>mls/low</literal> en todo lo que
      no va a ser escrito, incluso si necesita ser le&iacute;do.
      Y finalmente imponga
      <literal>mls/equal</literal> en el resto. Todos los usuarios
      marcados <literal>insecure</literal> deben configurarse
      a <literal>mls/low</literal>.</para>
  </sect1>

  <sect1 id="mac-biba">
    <title>El m&oacute;dulo MAC Biba</title>

    <indexterm>
      <primary>MAC Biba Integrity Policy</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: <filename>mac_biba.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel: 
      <literal>options MAC_BIBA</literal></para>

    <para>Opci&oacute;n de arranque: 
      <literal>mac_biba_load="YES"</literal></para>

    <para>El m&oacute;dulo &man.mac.biba.4; carga la pol&iacute;tica
      <acronym>MAC</acronym> Biba. Esta pol&iacute;tica funciona
      muy parecido a la pol&iacute;tica <acronym>MLS</acronym> con
      la excepci&oacute;n que las reglas para flujo de informaci&oacute;n
      est&aacute;n ligeramente invertidas. Esto es dicho para prevenir
      el flujo hacia abajo de informaci&oacute;n sensitiva mientras
      que la pol&iacute;tica <acronym>MLS</acronym> previene el
      flujo hacia arriba de informaci&oacute;n sensitiva; as&iacute;
      mucha de esta secci&oacute;n puede aplicar a ambas
      pol&iacute;ticas.</para>

    <para>En ambientes Biba, una etiqueta de <quote>integridad</quote>
      es activada en cada objeto o sujeto. Estas etiquetas son hechas
      de grados jer&aacute;rquicos, y de componentes no jer&aacute;rquicos.
      Cuando el grado de un objeto o sujeto asciende tambi&eacute;n
      lo hace su integridad.</para>

    <para>Las etiquetas soportadas son <literal>biba/low</literal>,
      <literal>biba/equal</literal>, y<literal>biba/high</literal>;
      como se explica abajo:</para>

    <itemizedlist>
      <listitem>
        <para>La etiqueta <literal>biba/low</literal> es considerada
          la integridad m&aacute;s baja que un objeto o sujeto 
          puede tener. Activando esto es objetos o sujetos bloquear&aacute;
          sus accesos de escritura a objetos o sujetos marcados
          como high. Aunque a&uacute;n tendr&aacute;n acceso
          de lectura.</para>
      </listitem>

      <listitem>
        <para>La etiqueta <literal>biba/equal</literal> solo debe
          ser colocada en objetos considerados exentos de la
          pol&iacute;tica.</para>
      </listitem>

      <listitem>
        <para>La etiqueta <literal>biba/high</literal> permitir&aacute;
          la escritura a objetos puestos a una etiqueta de nivel
          inferior, pero no permitir&aacute; leer ese objeto.
          Se recomienda que esta etiqueta sea colocada en
          objetos que afecten la integridad del sistema entero.</para>
      </listitem>
    </itemizedlist>

    <para>Biba brinda:</para>

    <itemizedlist>
      <listitem>
        <para>Nivel de integridad jer&aacute;rquico con un
          conjunto de categor&iacute;as de integridad no
          jer&aacute;rquica.</para>
      </listitem>

      <listitem>
        <para>Reglas fijas: no escrituras hacia arriba, no
          lecturas hacia abajo (lo opuesto a <acronym>MLS</acronym>).
          Un sujeto puede tener acceso de escritura a objetos
          en su propio nivel o inferior, pero no superior.
          Similarmente, un sujeto puede tener acceso de lectura
          a objetos en su propio nivel o superior, pero no 
          inferior.</para> 
      </listitem>

      <listitem>
        <para>Integridad (previniendo modificaciones inapropiadas
          de datos).</para>
      </listitem>

      <listitem>
        <para>Niveles de integridad (en lugar de niveles de
          sensitividad MLS).</para>
      </listitem>
    </itemizedlist>

    <para>Los siguientes sintonizables de <command>sysctl</command>
      pueden utilizarse para manipular la pol&iacute;tica
      Biba.</para>

    <itemizedlist>
      <listitem>
        <para><literal>security.mac.biba.enabled</literal> puede usarse
          para habilitar/deshabilitar la imposici&oacute;n de la
          pol&iacute;tica Biba en la m&aacute;quina destino.</para>
      </listitem>

      <listitem>
        <para><literal>security.mac.biba.ptys_equal</literal> puede
          usarse para deshabilitar la pol&iacute;tica Biba en
          dispositivos &man.pty.4;.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.biba.revocation_enabled</literal>
          forzar&aacute; la revocaci&oacute;n de acceso a objetos si
          la etiqueta es cambiada a dominar el sujeto.</para>
      </listitem>
    </itemizedlist>

    <para>Para accesar la configuraci&oacute;n de la pol&iacute;tica
      biba en objetos del sistema, use los comandos
      <command>setfmac</command> y <command>getfmac</command>:</para>

    <screen>&prompt.root; <userinput>setfmac biba/low test</userinput>
&prompt.root; <userinput>getfmac test</userinput>
test: biba/low</screen>

    <para>Observaciones: un sujeto con integridad inferior es
      incapaz de escribir a un sujeto con integridad m&aacute;s
      elevada; un sujeto con integridad m&aacute;s elevada no
      puede observar o leer a un objeto con integridad inferior.</para>
  </sect1>

  <sect1 id="mac-lomac">
    <title>El m&oacute;dulo MAC LOMAC</title>

    <indexterm>
      <primary>MAC LOMAC</primary>
    </indexterm>
    <para>Nombre de m&oacute;dulo: <filename>mac_lomac.ko</filename></para>

    <para>L&iacute;nea de configuraci&oacute;n de Kernel: 
      <literal>options MAC_LOMAC</literal></para>
    <para>Opci&oacute;n de arranque: 
      <literal>mac_lomac_load="YES"</literal></para>

    <para>A diferencia de la pol&iacute;tica <acronym>MAC</acronym> Biba,
      la pol&iacute;tica &man.mac.lomac.4; permite acceso a
      objetos con integridad inferior solamente despues de
      decrementar el nivel de integridad para no romper
      cualquier regla de integridad.</para>

    <para>La versi&oacute;n <acronym>MAC</acronym> de la pol&iacute;tica
      de integridad de marca-inferior, no confundirla con la antigua
      implementaci&oacute;n &man.lomac.4;, funciona casi identicamente
      a Biba, pero con la excepci&oacute;n de utilizar etiquetas
      flotantes para soportar el descenso a trav&eacute;s de un
      compartimiento de grado auxiliar. Este compartimiento
      secundario toma la forma de <literal>[auxgrade]</literal>.
      Al asignar una pol&iacute;tica lomac con un grado
      auxiliar, se debe ver un poco como: <literal>lomac/10[2]</literal>
      donde el n&uacute;mero dos (2)es el grado
      auxiliar.</para>
      
    <para>La pol&iacute;tica <acronym>MAC</acronym> LOMAC se
      basa en el etiquetamiento omnipresente en todos los
      objetos del sistema con etiquetas de integridad,
      premitiendo a sujetos leer de objetos con integridad
      inferior y entonces desactualizar la etiqueta en el
      sujeto para prevenir escrituras futuras a objetos
      con integridas m&aacute;s alta. Esta es la opci6oacute;n
      <literal>[auxgrade]</literal> discutida arriba, as&iacute;
      la pol&iacute;tica puede brindar una compatibilidad
      mayor y requiere menos configuraci&oacute;n inicial
      que Biba.</para>

    <sect2>
      <title>Ejemplos</title>

      <para>Como en las pol&iacute;ticas Biba y <acronym>MLS</acronym>;
        las utilidades <command>setfmac</command> y <command>setpmac</command>
        pueden usarse para colocar etiquetas en objetos del
        sistema:</para>

      <screen>&prompt.root; <userinput>setfmac /usr/home/trhodes lomac/high[low]</userinput>
&prompt.root; <userinput>getfmac /usr/home/trhodes</userinput> lomac/high[low]</screen>

      <para>Note que el grado auxiliar aqu&iacute; es <literal>low</literal>,
        esta es una cualidad brindada solamente por la
        pol&iacute;tica <acronym>MAC</acronym> LOMAC.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-implementing">
    <title>Implementando un ambiente seguro con MAC</title>

    <indexterm>
      <primary>MAC Example Implementation</primary>
    </indexterm>

    <para>La siguiente demostraci&oacute;n implementar&aacute;
      un ambiente seguro utilizando varios m&oacute;dulos
      <acronym>MAC</acronym> con pol&iacute;ticas configuradas
      correctamente. Esta solamente es una prueba y no debe
      ser considerada una respuesta completa a las aflicciones
      de seguridad de todos. Solamente implementar una
      pol&iacute;tica e ignorarla nunca funciona y puede
      ser desastroso en un ambiente en producci&oacute;n.</para>

    <para>Antes de iniciar este proceso, la opci&oacute;n
      <literal>multilabel</literal> debe ser aplicada a cada
      archivo del sistema como se declar&oacute; al principio
      de este cap&iacute;tulo. No hacerlo resultar&aacute;
      en errores.</para>

    <sect2>
      <title>Crear una clase de usuario insegura</title>

      <para>Inicie el procedimiento agregando la siguiente clase
        de usuario al archivo <filename>/etc/login.conf</filename>:</para>

      <programlisting>insecure:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
:manpath=/usr/share/man /usr/local/man:\
:nologin=/usr/sbin/nologin:\
:cputime=1h30m:\
:datasize=8M:\
:vmemoryuse=100M:\
:stacksize=2M:\
:memorylocked=4M:\
:memoryuse=8M:\
:filesize=8M:\
:coredumpsize=8M:\
:openfiles=24:\
:maxproc=32:\
:priority=0:\
:requirehome:\
:passwordtime=91d:\
:umask=022:\
:ignoretime@:\
:label=partition/13,mls/5:</programlisting>

      <para>Y a&ntilde;adiendo la siguiente l&iacute;nea a la
        clase de usuario por omisi&oacute;n:</para>

      <programlisting>:label=mls/equal,biba/equal,partition/15:</programlisting>

      <para>Una vez que esto se ha completado, el siguiente
        comando debe ejecutarse para reconstruir la base
        de datos:</para>

      <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
    </sect2>

    <sect2>
      <title>Arrancar con los m&oacute;dulos correctos</title>

      <para>Agregue las siguientes l&iacute;neas al archivo
        <filename>/boot/loader.conf</filename> para que los
        m&oacute;dulos requeridos sean cargados durante la
        inicializaci&oacute;n del sistema:</para>

      <programlisting>mac_biba_load="YES"
mac_mls_load="YES"
mac_seeotheruids_load="YES"
mac_partition_load="YES"</programlisting>
    </sect2>

    <sect2>
      <title>Configure todos los usuarios a inseguro</title>

      <para>Todas la cuentas de usuarios que no sean <username>root</username>
        o usuarios de sistema ahora requerir&aacute;n una clase
        de login. Esta clase de login es requerida o de otra
        manera a los usuarios se les negar&aacute; acceso a
        comandos comunes como &man.vi.1;.
        El siguiente script de <command>sh</command> debe
        hacer el truco:</para>

      <screen>&prompt.root; <userinput>for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \</userinput>
	<userinput>/etc/passwd`; do pw usermod $x -L insecure; done;</userinput></screen>

      <para>El comando <command>cap_mkdb</command> necesitar&aacute;
        ser ejecutado en <filename>/etc/master.passwd</filename> despues
        de este cambio.</para>
    </sect2>

    <sect2>
      <title>Complete la configuraci&oacute;n</title>

      <para>Un archivo de contexto debe ser creado ahora; el
        siguiente ejemplo fu&eacute; tomado del ejemplo de
        pol&iacute;tica de Robert Watson y debe ser colocado en
        <filename>/etc/policy.contexts</filename>.</para>

      <programlisting># Esta es la pol&iacute;tica BIBA/MLS por omisi&oacute;n para este sistema.

.*                              biba/high,mls/high
/sbin/dhclient                  biba/high(low),mls/high(low)
/dev(/.*)?                      biba/equal,mls/equal
# This is not an exhaustive list of all "privileged" devices.
/dev/mdctl                      biba/high,mls/high
/dev/pci                        biba/high,mls/high
/dev/k?mem                      biba/high,mls/high
/dev/io                         biba/high,mls/high
/dev/agp.*                      biba/high,mls/high
(/var)?/tmp(/.*)?               biba/equal,mls/equal
/tmp/\.X11-unix                 biba/high(equal),mls/high(equal)
/tmp/\.X11-unix/.*              biba/equal,mls/equal
/proc(/.*)?                     biba/equal,mls/equal
/mnt.*                          biba/low,mls/low
(/usr)?/home                    biba/high(low),mls/high(low)
(/usr)?/home/.*                 biba/low,mls/low
/var/mail(/.*)?                 biba/low,mls/low
/var/spool/mqueue(/.*)?         biba/low,mls/low
(/mnt)?/cdrom(/.*)?             biba/high,mls/high
(/usr)?/home/(ftp|samba)(/.*)?  biba/high,mls/high
/var/log/sendmail\.st           biba/low,mls/low
/var/run/utmp                   biba/equal,mls/equal
/var/log/(lastlog|wtmp)         biba/equal,mls/equal</programlisting>

      <para>Esta pol&iacute;tica impondr&aacute; seguridad activando
        restricciones tanto de bajada como de subida en el flujo
        de informaci&oacute;n en relaci&oacute;n a los directorios
        y utilidades listadas en la izquierda.</para>

      <para>Esto puede ahora ser le&iacute;do hacia nuestro
        sistema ejecutando el siguiente comando:</para>

      <screen>&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /</userinput>
&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /usr</userinput></screen>

      <note>
        <para>El esquema de sistema de archivos de arriba puede
          ser diferente dependiendo del ambiente.</para>
      </note>

      <para>El archivo <filename>/etc/mac.conf</filename> requiere
        las siguientes modificaciones en la secci6oacute;n
        principal:</para>

      <programlisting>default_labels file ?biba,?mls
default_labels ifnet ?biba,?mls
default_labels process ?biba,?mls,?partition
default_labels socket ?biba,?mls</programlisting>
    </sect2>

    <sect2>
      <title>Probando la configuraci&oacute;n</title>

      <indexterm>
	<primary>MAC Configuration Testing</primary>
      </indexterm>

      <para>Agregue un usuario con el comando <command>adduser</command>
        y coloque a ese usuario en la clase <literal>insecure</literal>
        para estas pruebas.</para> 

      <para>Los ejemplos de abajo mostrar&aacute;n una mezcla
        de <username>root</username> y usuarios regulares de
        prueba; utilice el prompt para distinguie entre
        los dos.</para>

      <sect3>
	<title>Pruebas de etiquetamiento b&aacute;sico</title>

	<screen>&prompt.user; <userinput>getpmac</userinput>
biba/15(15-15),mls/15(15-15),partition/15
&prompt.root; <userinput>setpmac partition/15,mls/equal top</userinput></screen>

	<note>
          <para>El proceso top ser&aacute; asesinado antes
            de iniciar otro proceso top.</para>
	</note>
      </sect3>

      <sect3>
	<title>Pruebas MAC Seeotheruids</title>

	<screen>&prompt.user; <userinput>ps Zax</userinput>
biba/15(15-15),mls/15(15-15),partition/15  1096 #C:  S      0:00.03 -su (bash)
biba/15(15-15),mls/15(15-15),partition/15  1101 #C:  R+     0:00.01 ps Zax</screen>

        <para>No se debe permitir ver
          procesos propiedad de otros usuarios.</para>
      </sect3>

      <sect3>
	<title>Prueba MAC Partition</title>

        <para>Deshabilitar la pol&iacute;tica <acronym>MAC</acronym>
          <literal>seeotheruids</literal> para el resto de estas
          pruebas:</para>

	<screen>&prompt.root; <userinput>sysctl security.mac.seeotheruids.enabled=0</userinput>
&prompt.user; <userinput>ps Zax</userinput>
LABEL                                                   PID  TT  STAT      TIME COMMAND
  biba/equal(low-high),mls/equal(low-high),partition/15  1122 #C:  S+     0:00.02 top
  biba/15(15-15),mls/15(15-15),partition/15              1096 #C:  S      0:00.05 -su (bash)
  biba/15(15-15),mls/15(15-15),partition/15              1123 #C:  R+     0:00.01 ps Zax</screen>

        <para>Todos los usuarios deben tener permitido ver todos
          los procesos en su partici&oacute;n.</para>
      </sect3>

      <sect3>
	<title>Probando etiquetas Biba y MLS</title>

	<screen>&prompt.root; <userinput>setpmac partition/15,mls/equal,biba/high\(high-high\) top</userinput>
&prompt.user; <userinput>ps Zax</userinput>
LABEL                                                   PID  TT  STAT    TIME   COMMAND
  biba/high(high-high),mls/equal(low-high),partition/15   1251 #C:  S+     0:00.02 top
  biba/15(15-15),mls/15(15-15),partition/15               1096 #C:  S      0:00.06 -su (bash)
  biba/15(15-15),mls/15(15-15),partition/15               1157 #C:  R+     0:00.00 ps Zax</screen>

        <para>La pol&iacute;tica Biba nos permite leer objetos
          etiquetados m&aacute;s alto.</para>

	<screen>&prompt.root; <userinput>setpmac partition/15,mls/equal,biba/low top</userinput>
&prompt.user; <userinput>ps Zax</userinput>
LABEL                                       PID  TT  STAT      TIME COMMAND
  biba/15(15-15),mls/15(15-15),partition/15  1096 #C:  S      0:00.07 -su (bash)
  biba/15(15-15),mls/15(15-15),partition/15  1226 #C:  R+     0:00.01 ps Zax</screen>

        <para>La pol&iacute;tica Biba no permite que objetos
          etiquetados como inferiores sean le&iacute;dos; de
          todas maneras, <acronym>MLS</acronym> si lo
          permite.</para> 

	<screen>&prompt.user; <userinput>ifconfig bge0 | grep maclabel</userinput>
maclabel biba/low(low-low),mls/low(low-low)
&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput>
PING 192.0.34.166 (192.0.34.166): 56 data bytes
ping: sendto: Permission denied</screen>

        <para>Los usuarios son incapaces
          de dar un ping a
          <hostid role="domainname">example.com</hostid>, o cualquier
          dominio.</para>

        <para>Para prevenir que ocurra este error, ejecute el
          siguiente comando:</para>

	<screen>&prompt.root; <userinput>sysctl security.mac.biba.trust_all_interfaces=1</userinput></screen>

        <para>Esto configura la etiqueta por omisi&oacute;n de interfaces
          a modo inseguro, con ello la pol&iacute;tica Biba por omisi&oacute;
          no ser&aacute; impuesta.</para>

	<screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal\(low-high\),mls/equal\(low-high\)</userinput>
&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput>
PING 192.0.34.166 (192.0.34.166): 56 data bytes
64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms
--- 192.0.34.166 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms</screen>

        <para>Configurando una etiqueta m&aacute;s correcta,
          podemos ejecutar peticiones de <command>ping</command>.</para>

        <para>Ahora para crear algunos archivos para procedimientos
          de prueba de lectura y escritura:</para>

	<screen>&prompt.root; <userinput>touch test1 test2 test3 test4 test5</userinput>
&prompt.root; <userinput>getfmac test1</userinput>
test1: biba/equal,mls/equal
&prompt.root; <userinput>setfmac biba/low test1 test2; setfmac biba/high test4 test5; \
  setfmac mls/low test1 test3; setfmac mls/high test2 test4</userinput>
&prompt.root; <userinput>setfmac mls/equal,biba/equal test3 && getfmac test?</userinput>
test1: biba/low,mls/low
test2: biba/low,mls/high
test3: biba/equal,mls/equal
test4: biba/high,mls/high
test5: biba/high,mls/equal
&prompt.root; <userinput>chown testuser:testuser test?</userinput></screen>

        <para>Todos estos archivos deben ser ahora propiedad
          de nuestro usuario <username>testuser</username>.
          Y ahora para algunas pruebas de lectura:</para>

	<screen>&prompt.user; <userinput>ls</userinput>
test1   test2   test3   test4   test5
&prompt.user; <userinput>ls test?</userinput>
ls: test1: Permission denied
ls: test2: Permission denied
ls: test4: Permission denied
test3   test5</screen>

        <para>No deber&iacute;amos tener permitido observar
          pares; ejemplo:
          <literal>(biba/low,mls/low)</literal>,
          <literal>(biba/low,mls/high)</literal> y
          <literal>(biba/high,mls/high)</literal>. Y por supuesto,
          el acceso de lectura debe estar denegado. Ahora para
          algunas pruebas de escritura:</para>

	<screen>&prompt.user; <userinput>for i in `echo test*`; do echo 1 > $i; done</userinput>
-su: test1: Permission denied
-su: test4: Permission denied
-su: test5: Permission denied</screen>

        <para>Como con las pruebas de lectura, el acceso de
          escritura no debe ser permitido para escribir pares;
          ejemplo:
          <literal>(biba/low,mls/high)</literal> y
          <literal>(biba/equal,mls/equal)</literal>.</para>

	<screen>&prompt.user; <userinput>cat test?</userinput>
cat: test1: Permission denied
cat: test2: Permission denied
1
cat: test4: Permission denied</screen>

        <para>Y ahora como <username>root</username>:</para>

	<screen>&prompt.root; <userinput>cat test2</userinput>
1</screen>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="MAC-examplehttpd">
    <title>Otro ejemplo: Utilizando MAC para confinar un servidor web</title>

      <para>Una locaci&oacute;n separada para los datos de
        web a los cuales los usuarios deben ser capaces de
        accesar ser&aacute; seleccionada. Esto permitir&aacute;
        a los procesos <literal>biba/high</literal> derechos
        de acceso a los datos web.</para>
        
      <para>Inicie creando un directorio para guardar los
        datos de web:</para>

      <screen>&prompt.root; <userinput>mkdir /usr/home/cvs</userinput></screen>

      <para>Ahora inicialicelo con <command>cvs</command>:</para>

      <screen>&prompt.root; <userinput>cvs -d /usr/home/cvs init</userinput></screen>

      <para>El primer objetivo es habilitar la pol&iacute;tica
        <literal>biba</literal>, as&iacute;
        <literal>mac_biba_enable="YES"</literal> debe ser
        colocado en
        <filename>/boot/loader.conf</filename>. Se asume que
        el soporte para <acronym>MAC</acronym> ha sido
        habilitado en el kernel.</para>

      <para>De este punto en adelante todo en el sistema
        debe configurarse a <literal>biba/high</literal> por
        omisi&oacute;n.</para>

      <para>La siguiente modificaci&oacute;n debe ser hecha
        al archivo <filename>login.conf</filename>, bajo
        la clase de usuario por omisi&oacute;n:</para>

      <programlisting>:ignoretime@:\
	:umask=022:\
	:label=biba/high:</programlisting>

      <para>Cada usuario debe ser ahora colocado en la clase por
        omisi&oacute;n; un comando como:</para>

      <screen>&prompt.root; <userinput>for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \</userinput>
	<userinput>/etc/passwd`; do pw usermod $x -L default; done;</userinput></screen>

      <para>lograr&aacute; esta tarea en unos cuantos momentos.</para>

      <para>Ahora hay que crear otra clase, web, una copia de
        la clase por omisi&oacute;n, con la configuraci&oacute;n de
        etiqueta <literal>biba/low</literal>.</para>

      <para>Agregue un usuario que ser&aacute; utilizado para
        trabajar con los datos principales de web guardados
        en un repositorio <application>cvs</application>.
        Este usuario debe ser colocado en nuestra nueva clase
        de login, <username>web</username>.</para>

      <para>Ya que en todos lados por omisi&oacute;n es
        <literal>biba/high</literal>, el repositorio ser&aacute;
        el mismo. Los datos de web tambi&eacute;n deben ser
        lo mismo para usuarios que tienen acceso de lectura/escritura.
        de todas maneras, ya que nuestro servidor de web
        estar&aacute; sirviendo datos que usuarios
        <literal>biba/high</literal> deben accesar, necesitaremos
        rebajar los datos como un todo.</para> 

      <para>Las herramientas perfectas para esto son &man.sh.1;
        y &man.cron.8; y ya est&aacute;n en &os;. El siguiente
        script debe hacer todo lo que queremos:</para>

      <programlisting>PATH=/bin:/usr/bin:/usr/local/bin; export PATH;
CVSROOT=/home/repo; export CVSROOT;
cd /home/web;
cvs -qR checkout -P htdocs;
exit;</programlisting>

      <note>
        <para>En muchos casos los Id tags de <command>cvs</command>
          deben ser colocados dentro de los archivos
          de datos del sitio web.</para>
      </note>

      <para>Este script puede ahora ser colocado
        en el directorio home de <username>web</username>
        y la siguiente entrada agregada a &man.crontab.1;:</para> 

      <programlisting># Descargar los datos de web como biba/low cada doce horas:
0       */12       *       *       *       web    /home/web/checkout.sh</programlisting>

      <para>Esto descargar&aacute; las fuentes <acronym>HTML</acronym>
        cada doce horas en la m&aacute;quina.</para>

      <para>El m&eacute;todo de arranque por omisi&oacute;n para el
        servidor de web debe ser modificado tambi&eacute;n para
        iniciar los procesos como <literal>biba/low</literal>.
        Esto puede realizarse haciendo la siguiente modificaci&oacute;n
        al script
        <filename>/usr/local/etc/rc.d/apache.sh</filename>:</para>

      <programlisting>command="setpmac biba/low /usr/local/sbin/httpd"</programlisting>

      <para>La configuraci6oacute:n de <application>Apache</application>
        debe ser alterada para trabajar con la pol&iacute;tica
        <literal>biba/low</literal>. En este caso el software debe ser
        configurado para agregar a los archivos de log en un directorio
        configurado como <literal>biba/low</literal> o de lo contrario
        errores de <errorname>access denied</errorname> ser&aacute;n
        retornados.</para>

      <note>
        <para>Siguiendo este ejemplo requiere que la
          directiva <literal>docroot</literal> sea
          puesta a <filename>/home/web/htdocs</filename>;
          de otra manera, <application>Apache</application>
          fallar&aacute; al tratar de localizar el
          directorio desde donde servir documentos.</para>
      </note>

      <para>Otras variables de configuraci&oacute;n deben ser
        tambi&eacute;n alteradas, incluyendo el <acronym>PID</acronym>
        de archivo,
        <literal>Scoreboardfile</literal>,
        <literal>DocumentRoot</literal>, sitio del archivo de log o
        cualquier otra variable que requiera acceso de escritura.
        Al utilizar <literal>biba</literal>, todos los accesos de
        escritura ser&aacute;n negados al servidor en &aacute;reas
        <emphasis>no</emphasis> puestas a
        <literal>biba/low</literal>.</para> 
<!--
PROBLEM: CAN THIS WORK?  OR SHOULD IT BE start_precmd?  More testing need here.
-->
  </sect1>

<!--
XXX

  <sect1 id="mac-examplesandbox">
    <title>Un ejemplo de una caja de arena MAC</title>

    <para>Un ejemplo del colocamiento de usuarios en
      una caja de arena (sandbox) utilizando
      <acronym>MAC</acronym> debe ir aqu&iacute;.</para>
  </sect1>
-->

  <sect1 id="mac-troubleshoot">
    <title>Determinando errores en la estructura MAC</title>

    <indexterm>
      <primary>MAC Troubleshooting</primary>
    </indexterm>

    <para>Durante la fase de desarrollo, algunos usuarios reportaron
      problemas con la configuraci&oacute;n normal. Algunos de
      estos problemas est&aacute;n listados abajo:</para>

    <sect2>
      <title>La opci&oacute;n <option>multilabel</option> no puede ser
        habilitada en <filename>/</filename></title>

      <para>¡La bandera <option>multilabel</option> no permanece
        habilitada en mi partici&oacute;n ra&iacute;z
        (<filename>/</filename>)!</para>

      <para>Parece que uno de cada cincuenta usuarios tiene
        este problema, de hecho, hemos tenido este problema
        durante nuestra configuraci&oacute;n inicial.
        Mayor observaci&oacute;n en este llamado <quote>bug</quote>
        me ha llevado a creer que es el resultado de documentaci&oacute;n
        incorrecta o de interpretaci&oacute;n err&oacute;nea
        de la documentaci&oacute;n. Sin importar por qu&eacute;
        sucede, se pueden tomar los siguientes pasos para
        resolverlo:</para>

      <procedure>
	<step>
          <para>Editar <filename>/etc/fstab</filename> y poner la
            partici&oacute;n ra&iacute;z a <option>ro</option> para
            solo lectura.</para>
	</step>

	<step>
          <para>Reiniciar en modo mono usuario.</para>
	</step>

	<step>
          <para>Ejecutar <command>tunefs</command> <option>-l enable</option>
            en <filename>/</filename>.</para>
	</step>

	<step>
	  <para>Reiniciar el sistema a modo normal.</para>
	</step>

	<step>
          <para>Ejecutar <command>mount</command> <option>-urw</option>
            <filename>/</filename> y cambiar <option>ro</option>
            de regreso a <option>rw</option> en 
	    <filename>/etc/fstab</filename> y reiniciar el sistema de nuevo.
	    </para> 
	</step>

	<step>
          <para>Revisar nuevamente la salida de
            <command>mount</command> para asegurarse
            que <option>multilabel</option> haya sido
            activada correctamente el el sistema de
            archivos ra&iacute;z.</para>
	</step>
     </procedure>
    </sect2>

    <sect2>
      <title>No se puede iniciar un servidor X11 despues de 
        <acronym>MAC</acronym></title>

      <para>Despues de establecer un ambiente seguro con
        <acronym>MAC</acronym>, ¡ya no puedo iniciar 
        X!</para>

      <para>Esto puede ser causado por la pol&iacute;tica
        <acronym>MAC</acronym> <literal>partition</literal>
        o por un etiquetamiento erroneo en una de las
        pol&iacute;ticas de etiquetamiento <acronym>MAC</acronym>.
        Para determinar el error trate lo siguiente:</para>

      <procedure>
	<step>
          <para>Revise el mensaje de error; si el usuario est&aacute;
            en la clase <literal>insecure</literal>, la pol&iacute;tica
            <literal>partition</literal> puede ser la culpable.
            Trate poner la clase del usuario de regreso a la
            clase <literal>default</literal> y recostruya la base
            de datos con el comando <command>cap_mkdb</command>.
            Si esto no alivia el problema, vaya al paso dos.</para>
	</step>

	<step>
          <para>Revise doblemente las pol&iacute;ticas de etiquetamiento.
            Aseg&uacute;rese que las pol&iacute;ticas est&aacute;n
            configuradas correctamente para el usuario en cuesti&oacute;n,
            la aplicaci&oacute;n X11 y las entradas
            <filename class="directory">/dev</filename>.</para>
	</step>

	<step>
          <para>Si ninguno de estos resuelve el problema, envie el
            mensaje de error y la descripci&oacute;n de su ambiente
            a la lista de discusi&oacute;n TrustedBSD localizada en
            el sitio web
            <ulink url="http://www.TrustedBSD.org">TrustedBSD</ulink>
            o a la lista de correo &a.questions;.</para> 
	</step>
      </procedure>
    </sect2>

    <sect2>
      <title>Error: &man..secure.path.3; cannot stat 
        <filename>.login_conf</filename></title>

      <para>Cuando trato de cambiar de <username>root</username> a
        otro usuario en el sistema, aparece el mensaje de error
        <errorname>_secure_path: unable to state .login_conf</errorname>.
	</para>

      <para>Este mensaje es usualmente desplegado cuando el usuario
        tiene una etiqueta m&aacute;s alta que la del usuario al que
        se est&aacute; tratando de convertir. Por ejemplo, un usuario
        en el sistema, <username>joe</username>, tiene una etiqueta
        por omisi&oacute;n de
        <option>biba/low</option>. El usuario <username>root</username>,
        que tiene una etiqueta de <option>biba/high</option>, no 
        puede ver el directorio home de <username>joe</username>.
        Esto suceder&aacute; sin importar que <username>root</username>
        haya usado el comando <command>su</command> para convertirse
        en <username>joe</username>, o no. En este escenario, el modelo
        de integridad Biba no permitir&aacute; a <username>root</username>
        ver objetos puestos a un nivel de integridad inferior.</para>
    </sect2>

    <sect2>
      <title>¡El usuario <username>root</username> no funciona!</title>

      <para>En modo normal o incluso en modo monousuario,
        <username>root</username> no es reconocido. El
        comando <command>whoami</command> regresa 0 (cero) y
        <command>su</command> regresa <errorname>who are you?</errorname>.
        ¿Que es lo que puede estar pasando?</para>

      <para>Esto puede suceder si una pol&iacute;tica de etiquetamiento
        ha sido deshabilitada, ya sea por &man.sysctl.8; o el
        m&oacute;dulo de pol&iacute;tica ha sido removido.
        Si la pol&iacute;tica ha sido deshabilitada o ha sido
        temporalmente deshabilitada, entonces las capacidades de
        la base de datos de login necesita ser reconfigurada con
        la opci&oacute;n <option>label</option> eliminada.
        Revise doblemente el archivo <filename>login.conf</filename>
        para asegurarse que todas las opciones <option>label</option>
        hayan sido eliminadas y reconstruya la base de datos con
        el comando <command>cap_mkdb</command>.</para>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->