aboutsummaryrefslogtreecommitdiff
path: root/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml
blob: 63c691909c0cde97d39d6329b6b760cffdee40a6 (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
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!--
     The FreeBSD Dutch Documentation Project

     $FreeBSD$

     %SOURCE%	en_US.ISO8859-1/books/handbook/mac/chapter.xml
     %SRCID%	39544
-->

<chapter id="mac">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Tom</firstname>
	<surname>Rhodes</surname>
	<contrib>Geschreven door </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Siebrand</firstname>
	<surname>Mazeland</surname>
	<contrib>Vertaald door </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>René</firstname>
	<surname>Ladan</surname>
	<contrib>Vertaling voortgezet door </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Verplichte Toegangscontrole (MAC)</title>

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

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

    <indexterm>
      <primary>verplichte toegangscontrole</primary>

      <see>MAC</see>
    </indexterm>

    <indexterm><primary>mandatory access control</primary></indexterm>

    <para>In &os;&nbsp;5.X werden nieuwe beveiligingsuitbreidingen
      geïntroduceerd uit het TrustedBSD project, dat is gebaseerd
      op de &posix;.1e draft.  Twee van de meest significante nieuwe
      beveiligingsmechanismen zijn faciliteiten voor
      Toegangscontrolelijsten voor bestandssystemen
      (<acronym>ACL</acronym>s) en Verplichte Toegangscontrole
      (Mandatory Access Control of <acronym>MAC</acronym>).  Met
      Verplichte Toegangscontrole kunnen nieuwe toegangscontrolemodules
      geladen worden, waarmee nieuw beveiligingsbeleid opgelegd kan
      worden.  Een aantal daarvan bieden beveiliging aan hele kleine
      onderdelen van het systeem, waardoor een bepaalde dienst
      weerbaarder wordt.  Andere bieden allesomvattende gelabelde
      beveiliging op alle vlakken en objecten.  Het verplichte deel van
      de definitie komt van het feit dat het opleggen van de controle
      wordt gedaan door beheerders en het systeem en niet wordt
      overgelaten aan de nukken van gebruikers, zoals wel wordt gedaan
      met toegangscontrole naar goeddunken (discretionary access control
      of <acronym>DAC</acronym>, de standaardrechten voor bestanden en
      System V <acronym>IPC</acronym> rechten in &os;).</para>

    <para>In dit hoofdstuk wordt de nadruk gelegd op het
      Verplichte Toegangscontrole Raamwerk (<acronym>MAC</acronym>
      Framework) en een verzameling van te activeren
      beveiligingsbeleidsmodules waarmee verschillende soorten
      beveiligingsmechanismen wordt ingeschakeld.</para>

    <para>Na het lezen van dit hoofdstuk weet u:</para>

    <itemizedlist>
      <listitem>
	<para>Welke <acronym>MAC</acronym> beveiligingsbeleidsmodules
	  op dit moment in &os; beschikbaar zijn en welke mechanismen
	  daarbij horen.</para>
      </listitem>

      <listitem>
	<para>Wat <acronym>MAC</acronym> beveiligingsbeleidsmodules
	  implementeren en het verschil tussen gelabeld en
	  niet-gelabeld beleid.</para>
      </listitem>

      <listitem>
	<para>Hoe een systeem efficiënt ingesteld kan worden om
	  met het <acronym>MAC</acronym>-raamwerk te werken.</para>
      </listitem>

      <listitem>
	<para>Hoe het beleid van de verschillende
	  beveiligingsbeleidsmodules die in het
	  <acronym>MAC</acronym>-raamwerk zitten ingesteld kunnen
	  worden.</para>
      </listitem>

      <listitem>
	<para>Hoe een veiligere omgeving gemaakt kan worden met het
	  <acronym>MAC</acronym>-raamwerk en de getoonde voorbeelden;</para>
      </listitem>

      <listitem>
	<para>Hoe de <acronym>MAC</acronym>-instellingen getest
	  kunnen worden om er zeker van te zijn dat het raamwerk juist
	  is geïmplementeerd.</para>
      </listitem>
    </itemizedlist>

    <para>Aangeraden voorkennis:</para>

    <itemizedlist>
      <listitem>
	<para>Begrip van &unix; en &os; basiskennis (<xref
	    linkend="basics"/>);</para>
      </listitem>

      <listitem>
	<para>Bekend zijn met de beginselen van het instellen en
	  compileren van de kernel (<xref linkend="kernelconfig"/>);</para>
      </listitem>

      <listitem>
	<para>Enigszins bekend zijn met beveiliging en wat dat te maken
	  heeft met &os; (<xref linkend="security"/>).</para>
      </listitem>
    </itemizedlist>

    <warning>
      <para>Het verkeerd gebruiken van de informatie die hierin staat
	kan leiden tot het niet langer toegang hebben tot een systeem,
	ergernis bij gebruikers, of het niet langer kunnen gebruiken van
	de mogelijkheden die X11 biedt.  Nog belangrijker is dat niet
	alleen op <acronym>MAC</acronym> vertrouwd moet worden voor de
	beveiliging van een systeem.  Het
	<acronym>MAC</acronym>-raamwerk vergroot alleen het bestaande
	beveiligingsbeleid; zonder goede beveiligingsprocedures en
	regelmatige beveiligingscontroles is een systeem nooit helemaal
	veilig.</para>

      <para>Het is ook van belang op te merken dat de voorbeelden in
	dit hoofdstuk alleen voorbeelden zijn.  Het is niet aan te
	raden ze uit te rollen op een productiesysteem.  Het
	implementeren van de verschillende beveiligingsbeleidsmodules
	dient goed overdacht en getest te worden.  Iemand die niet
	helemaal begrijpt hoe alles werkt, komt er waarschijnlijk achter
	dat die het complete systeem van voor naar achter en weer terug
	doorloopt en vele bestanden en mappen opnieuw moet instellen.</para>
    </warning>

    <sect2>
      <title>Wat niet wordt behandeld</title>

      <para>In dit hoofdstuk wordt een brede reeks
	beveiligingsonderwerpen met betrekking tot het
	<acronym>MAC</acronym>-raamwerk behandeld.  De ontwikkeling
	van nieuwe <acronym>MAC</acronym>-beveiligingsbeleidsmodules
	wordt niet behandeld.  Een aantal modules die bij het
	<acronym>MAC</acronym>-raamwerk zitten hebben specifieke
	eigenschappen voor het testen en ontwikkelen van nieuwe modules.
	Daaronder vallen &man.mac.test.4;, &man.mac.stub.4; en
	&man.mac.none.4;.  Meer informatie over deze
	beveiligingsbeleidsmodules en de mogelijkheden die ze bieden
	staan in de hulppagina's.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-inline-glossary">
    <title>Sleuteltermen in dit hoofdstuk</title>

    <para>Voordat dit hoofdstuk gelezen wordt, moeten er een aantal
      sleuteltermen toegelicht worden.  Hiermee wordt hopelijk mogelijke
      verwarring en de abrupte introductie van nieuwe termen en
      informatie voorkomen.</para>

    <itemizedlist>
      <listitem>
	<para><emphasis>compartiment</emphasis>: een compartiment is een
	  verzameling van programma's en gegevens die gepartitioneerd of
	  gescheiden dient te worden en waartoe gebruikers expliciet
	  toegang moeten krijgen op een systeem.  Een compartiment staat
	  ook voor een groep, zoals een werkgroep, afdeling, project, of
	  onderwerp.  Door gebruik te maken van compartimenten is het
	  mogelijk om een <quote>need-to-know</quote> beveiligingsbeleid
	  in te stellen.</para>
      </listitem>

      <listitem>
	<para><emphasis>hoogwatermarkering</emphasis>: Een
	  hoogwatermarkeringsbeleid is een beleid dat toestaat om
	  beveiligingsniveaus te verhogen met het doel informatie dat op
	  een hoger niveau aanwezig is te benaderen.  In de meeste
	  gevallen wordt het originele niveau hersteld nadat het proces
	  voltooid is.  Momenteel heeft het
	  <acronym>MAC</acronym>-raamwerk van &os; hier geen beleid
	  voor, maar de definitie is voor de volledigheid opgenomen.</para>
      </listitem>

      <listitem>
	<para><emphasis>integriteit</emphasis>: integriteit, als
	  sleutelconcept, is het niveau van vertrouwen dat in gegevens
	  gesteld kan worden.  Als de integriteit van gegevens wordt
	  vergroot, dan geldt dat ook voor het vertrouwen dat in die
	  gegevens gesteld kan worden.</para>
      </listitem>

      <listitem>
	<para><emphasis>label</emphasis>: een label is een
	  beveiligingsattribuut dat toegepast kan worden op bestanden,
	  mappen of andere onderdelen van een systeem.  Het kan gezien
	  worden als een vertrouwelijkheidsstempel: als er een label op
	  een bestand is geplaatst, beschrijft dat de
	  beveiligingseigenschappen voor dat specifieke bestand en is
	  daarop alleen toegang voor bestanden, gebruikers, bronnen,
	  enzovoort, met gelijke beveiligingsinstellingen.  De betekenis
	  en interpretatie van labelwaarden hangt af van de
	  beleidsinstellingen: hoewel sommige
	  beleidseenheden een label beschouwen als representatie van de
	  integriteit of het geheimhoudingsniveau van een object, kunnen
	  andere beleidseenheden labels gebruiken om regels voor toegang
	  in op te slaan.</para>
      </listitem>

      <listitem>
	<para><emphasis>niveau</emphasis>: de verhoogde of verlaagde
	  instelling van een beveiligingsattribuut.  Met het stijgen
	  van het niveau wordt ook aangenomen dat de veiligheid
	  stijgt.</para>
      </listitem>

      <listitem>
	<para><emphasis>laagwatermarkering</emphasis>:  Een
	  laagwatermarkeringsbeleid is een beleid dat toestaat om de
	  beveiligingsniveaus te verlagen met het doel informatie te
	  benaderen die minder veilig is.  In de meeste gevallen wordt
	  het originele beveiligingsniveau van de gebruiker hersteld
	  nadat het proces voltooid is.  De enige
	  beveiligingsbeleidsmodule in &os; die dit gebruikt is
	  &man.mac.lomac.4;.</para>
      </listitem>

      <listitem>
	<para><emphasis>meervoudig label</emphasis>: de eigenschap
	  <option>multilabel</option> is een optie van het
	  bestandssysteem die in enkelegebruikersmodus met
	  &man.tunefs.8;, tijdens het opstarten via het bestand
	  &man.fstab.5; of tijdens het maken van een nieuw
	  bestandssysteem ingesteld kan worden.  Met deze optie wordt
	  het voor een beheerder mogelijk om verschillende
	  <acronym>MAC</acronym>-labels op verschillende objecten toe te
	  passen.  Deze optie is alleen van toepassing op
	  beveiligingsbeleidsmodules die labels ondersteunen.</para>
      </listitem>

      <listitem>
	<para><emphasis>object</emphasis>: een object of systeemobject
	  is een entiteit waar informatie doorheen stroomt op
	  aanwijzing van een <emphasis>subject</emphasis>.  Hieronder
	  vallen mappen, bestanden, velden, schermen, toetsenborden,
	  geheugen, magnetische opslag, printers en alle andere
	  denkbare apparaten waarmee gegevens kunnen worden vervoerd of
	  kunnen worden opgeslagen.  In de basis is een object een
	  opslageenheid voor gegevens of een systeembron; toegang tot
	  een <emphasis>object</emphasis> betekent in feite toegang tot
	  de gegevens.</para>
      </listitem>

      <listitem>
	<para><emphasis>beleidseenheid</emphasis>: een verzameling van
	  regels die aangeven hoe doelstellingen bereikt moeten worden.
	  In een <emphasis>beleidseenheid</emphasis> staat meestal
	  beschreven hoe bepaalde eenheden behandeld dienen te worden.
	  In dit hoofdstuk wordt de term
	  <emphasis>beleidseenheid</emphasis> in deze context gezien
	  als een <emphasis>beveiligingsbeleidseenheid</emphasis>, wat
	  zoveel wil zeggen als een verzameling regels die bepaalt hoe
	  gegevens en informatie stroomt en aangeeft wie toegang tot
	  welke gegevens en informatie heeft.</para>
      </listitem>

      <listitem>
	<para><emphasis>gevoeligheid</emphasis>: meestal gebruikt bij
	  het bespreken van <acronym>MLS</acronym>.  Een
	  gevoeligheidsniveau is een term die gebruikt wordt om te
	  beschrijven hoe belangrijk of geheim de gegevens horen te
	  zijn.  Met het stijgen van het gevoeligheidsniveau stijgt ook
	  het belang van de geheimhouding of de vertrouwelijkheid van de
	  gegevens.</para>
      </listitem>

      <listitem>
	<para><emphasis>enkelvoudig label</emphasis>: een enkelvoudig
	  label wordt gebruikt als een heel bestandssysteem gebruik
	  maakt van één label om het toegangsbeleid over
	  de gegevensstromen af te dwingen.  Als dit voor een
	  bestandssysteem is ingesteld, wat geldt als er geen gebruik
	  gemaakt wordt van de optie <option>multilabel</option>, dan
	  gehoorzamen alle bestanden aan dezelfde labelinstelling.</para>
      </listitem>

      <listitem>
	<para><emphasis>subject</emphasis>: een subject is een gegeven
	  actieve entiteit die het stromen van informatie tussen
	  <emphasis>objecten</emphasis> veroorzaakt, bijvoorbeeld een
	  gebruiker, gebruikersprocessor, systeemproces, enzovoort.  Op
	  &os; is dit bijna altijd een thread die in een proces namens
	  een gebruiker optreedt.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="mac-initial">
    <title>Uitleg over MAC</title>

    <para>Met al deze nieuwe termen in gedachten, kan overdacht worden
      hoe het <acronym>MAC</acronym>-raamwerk de complete beveiliging
      van een systeem kan vergroten.  De verschillende
      beveiligingsbeleidsmodules die het <acronym>MAC</acronym>-raamwerk
      biedt zouden gebruikt kunnen worden om het netwerk en
      bestandssystemen te beschermen, gebruikers toegang tot bepaalde
      poorten en sockets kunnen ontzeggen, en nog veel meer.  Misschien
      kunnen de beleidsmodules het beste gebruikt worden door ze samen
      in te zetten, door meerdere beveiligingsbeleidsmodules te laden om
      te komen tot een omgeving waarin de beveiliging uit meerdere lagen
      is opgebouwd.  In een omgeving waarin de beveiliging uit meerdere
      lagen is opgebouwd zijn meerdere beleidsmodules actief om de
      beveiliging in de hand te houden.  Deze aanpak is anders dan een
      beleid om de beveiliging sec beter te maken, omdat daarmee in het
      algemeen elementen in een systeem beveiligd worden dat voor een
      specifiek doel wordt gebruikt.  Het enige nadeel is het benodigde
      beheer in het geval van meervoudige bestandssysteemlabels, het
      instellen van toegang tot het netwerk per gebruiker, enzovoort.</para>

    <para>De nadelen zijn wel minimaal als ze worden vergeleken met het
      immer durende effect van het raamwerk.  Zo zorgt bijvoorbeeld de
      mogelijkheid om te kiezen welke beleidseenheden voor een specifiek
      gebruik nodig zijn voor het zo laag mogelijk houden van de
      beheerslast.  Het terugdringen van ondersteuning voor onnodige
      beleidseenheden kan de beschikbaarheid van systemen verhogen en
      ook de keuzevrijheid vergroten.  Voor een goede implementatie
      worden alle beveiligingseisen in beschouwing genomen en daarna
      worden de verschillende beveiligingsbeleidsmodules effectief door
      het raamwerk geïmplementeerd.</para>

    <para>Een systeem dat gebruik maakt van de mogelijkheden van
      <acronym>MAC</acronym> dient dus tenminste de garantie te bieden
      dat een gebruiker niet de mogelijkheid heeft naar eigen inzicht
      beveiligingsattributen te wijzigen.  Alle gebruikersprogramma's en
      scripts moeten werken binnen de beperkingen die de toegangsregels
      voorschrijven volgens de geselecteerde beveiligingsbeleidsmodules.
      Het voorgaande impliceert ook dat de volledige controle over de
      <acronym>MAC</acronym>-toegangsregels bij de systeembeheerder
      ligt.</para>

    <para>Het is de taak van de systeembeheerder om zorgvuldig de juiste
      beveiligingsbeleidsmodules te kiezen.  Voor sommige omgevingen kan
      het nodig zijn dat de toegang tot het netwerk wordt beperkt.  In
      dat soort gevallen zijn de beleidsmodules &man.mac.portacl.4;,
      &man.mac.ifoff.4; en zelfs &man.mac.biba.4; goede startpunten.  In
      andere gevallen kan de strikte vertrouwelijkheid van
      bestandssysteemobjecten van belang zijn.  Dan zijn beleidsmodules
      zoals &man.mac.bsdextended.4; en &man.mac.mls.4; voor dit doel
      gemaakt.</para>

    <para>Beslissingen over beleid zouden gemaakt kunnen worden op basis
      van het netwerkontwerp.  Wellicht wordt alleen bepaalde gebruikers
      toegestaan gebruik te maken van de mogelijkheden van &man.ssh.1;
      om toegang te krijgen tot het netwerk of Internet.  In dat geval
      is de juiste beleidsmodule &man.mac.portacl.4;.  Maar wat te doen
      voor bestandssystemen?  Moet alle toegang tot bepaalde mappen
      worden afgesneden van andere gebruikersgroepen of specifieke
      gebruikers, of moeten de toegang voor gebruikers of programma's
      tot bepaalde bestanden worden ingesteld door bepaalde objecten
      als geheim te bestempelen?</para>

    <para>In het geval van het bestandssysteem, kan ervoor gekozen
      worden om de toegang voor sommige objecten voor bepaalde
      gebruikers als geheim te bestempelen, maar voor andere niet.
      Bijvoorbeeld: een groot ontwikkelteam wordt opgedeeld in kleinere
      eenheden van individuen.  Ontwikkelaars in project A horen geen
      toegang te hebben tot objecten die zijn geschreven door
      ontwikkelaars in project B.  Maar misschien moeten ze wel toegang
      hebben tot objecten die zijn geschreven door ontwikkelaars in
      project C.  Dat is nogal wat.  Door gebruik te maken van de
      verschillende beveiligingsbeleidsmodules in het
      <acronym>MAC</acronym>-raamwerk kunnen gebruikers in hun groepen
      worden opgedeeld en kan ze toegang gegeven worden tot de juiste
      locaties zonder dat er angst hoeft te zijn voor het lekken van
      informatie.</para>

    <para>Zo heeft dus iedere beveiligingsbeleidsmodule een unieke wijze
      om om te gaan met de totale beveiliging van een systeem.  Het
      kiezen van modules hoort gebaseerd te zijn op een zorgvuldig
      uitgedacht beveiligingsbeleid.  In veel gevallen wordt het totale
      beveiligingsbeleid aangepast en opnieuw toegepast op het systeem.
      Een goed begrip van de verschillende beveiligingsbeleidsmodules
      die het <acronym>MAC</acronym>-raamwerk biedt helpt beheerders bij
      het kiezen van de juiste beleidseenheden voor hun situatie.</para>

    <para>De standaard &os;-kernel kent geen ondersteuning voor het
      <acronym>MAC</acronym>-raamwerk en daarom dient de volgende
      kerneloptie toegevoegd te worden voordat op basis van de
      voorbeelden of informatie uit dit hoofdstuk wijzigen worden
      gemaakt:</para>

    <programlisting>options     MAC</programlisting>

    <para>Hierna dient de kernel herbouwd en opnieuw geïnstalleerd
      te worden.</para>

    <caution>
      <para>Hoewel in de verschillende hulppagina's voor
	<acronym>MAC</acronym>-beleidsmodules staat dat ze in de kernel
	gebouwd kunnen worden, is het mogelijk het systeem van het
	netwerk af te sluiten en meer.  Het implementeren van
	<acronym>MAC</acronym> is net zoiets als het implementeren van
	een firewall en er moet opgepast worden dat een systeem niet
	totaal op slot gaat.  Er dient rekening gehouden te worden met
	het teruggaan naar een vorige instelling en het op afstand
	implementeren van <acronym>MAC</acronym> dient bijzonder
	voorzichtig te gebeuren.</para>
    </caution>
  </sect1>

  <sect1 id="mac-understandlabel">
    <title>MAC-labels begrijpen</title>

    <para>Een <acronym>MAC</acronym>-label is een beveiligingsattribuut
      dat toegepast kan worden op subjecten en objecten die door het
      systeem gaan.</para>

    <para>Bij het instellen van een label moet de gebruiker in staat
      zijn om precies te begrijpen wat er gebeurt.  De attributen die
      voor een object beschikbaar zijn hangen af van de geladen
      beleidsmodule en die interpreteren hun attributen op nogal
      verschillende manieren.  Het resultaat kan resulteren in
      onverwacht en wellicht ongewenst gedrag van een systeem als het
      beleid door een gebrek aan begrip verkeerd is ingesteld.</para>

    <para>Het beveiligingslabel op een object wordt gebruikt als
      onderdeel van een beveiligingstoegangscontrolebeslissing door een
      beleidseenheid.  Voor sommige beleidseenheden bevat het label zelf
      alle informatie die nodig is voor het maken van een beslissing;
      in andere modellen kunnen de labels als onderdeel van een grotere
      verzameling verwerkt worden, enzovoort.</para>

    <para>Zo staat bijvoorbeeld het instellen van het label
      <literal>biba/low</literal> op een bestand voor een label dat
      wordt beheerd door de beveiligingsbeleidsmodule Biba, met een
      waarde van <quote>low</quote>.</para>

    <para>Een aantal beleidsmodules die in &os; de mogelijkheid voor
      labelen ondersteunen, bieden drie specifieke voorgedefinieerde
      labels: low, high en equal.  Hoewel ze in verschillende
      beleidsmodules op een andere manier toegangscontrole afdwingen,
      is er de garantie dat het label <literal>low</literal> de laagst
      mogelijke instelling is, het label <literal>equal</literal> het
      subject of object uitschakelt of ongemoeid laat en het label
      <literal>high</literal> de hoogst mogelijk instelling afdwingt
      die beschikbaar is in de beleidsmodules Biba en
      <acronym>MLS</acronym>.</para>

    <para>Binnen een bestandssysteemomgeving met een enkelvoudig label
      kan er maar één label gebruikt worden op objecten.
      Hiermee wordt een verzameling van toegangsrechten op het hele
      systeem opgelegd en dat is voor veel omgevingen voldoende.  Er
      zijn echter een aantal gevallen waarin het wenselijk is
      meervoudige labels in te stellen op subjecten of objecten in het
      bestandssysteem.  In die gevallen kan de optie
      <option>multilabel</option> meegegeven worden aan
      &man.tunefs.8;.</para>

    <para>In het geval van Biba en <acronym>MLS</acronym> kan er een
      numeriek label gezet worden om het precieze niveau van de
      hiërarchische controle aan te geven.  Dit numerieke niveau
      wordt gebruikt om informatie in verschillende groepen te
      partitioneren of te sorteren voor het classificeren voor het geven
      van toegang voor een bepaalde groep of een groep van een hoger
      niveau.</para>

    <para>In de meeste gevallen stelt een beheerder alleen maar een
      enkelvoudig label in dat door het hele bestandssysteem wordt
      gebruikt.</para>

    <para><emphasis>Wacht eens, dat klinkt net als
	<acronym>DAC</acronym>!  <acronym>MAC</acronym> gaf de controle
	toch strikt aan de beheerder?</emphasis>  Dat klopt nog steeds,
      <username>root</username> heeft nog steeds de controle in handen
      en is degene die het beleid instelt zodat gebruikers in de juiste
      categorie en/of toegangsniveaus worden geplaatst.  Daarnaast
      kunnen veel beleidsmodules ook de gebruiker
      <username>root</username> beperkingen opleggen.  Dan wordt de
      controle overgedragen aan een groep, maar kan
      <username>root</username> de instellingen op ieder gewenst moment
      intrekken of wijzigen.  Dit is het hiërarchische of
      toegangsmodel dat wordt afgedekt door beleidseenheden zoals Biba
      en <acronym>MLS</acronym>.</para>

    <sect2>
      <title>Labelinstellingen</title>

      <para>Vrijwel alle aspecten voor het instellen van labelbeleid
	worden uitgevoerd met basissysteemprogramma's.  Die commando's
	bieden een eenvoudige interface voor object- of
	subjectinstellingen of de manipulatie en verificatie van de
	instellingen.</para>

      <para>Alle instellingen kunnen gemaakt worden met de
	hulpprogramma's &man.setfmac.8; en &man.setpmac.8;.
	Het commando <command>setfmac</command> wordt gebruikt om
	<acronym>MAC</acronym> labels op systeemobjecten in te stellen
	en <command>setpmac</command> voor het instellen van de labels
	op systeemsubjecten:</para>

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

      <para>Als het bovenstaande commando geen foutmeldingen heeft
	veroorzaakt, dan komt er een prompt terug.  Deze commando's
	geven nooit uitvoer, tenzij er een fout is opgetreden; net als
	bij de commando's &man.chmod.1; en &man.chown.8;.  In sommige
	gevallen kan de foutmelding <errorname>Permission
	denied</errorname> zijn en deze treedt meestal op als het label
	wordt ingesteld of gewijzigd op een object dat is beperkt.

	<footnote>
	  <para>Andere condities kunnen andere foutmeldingen
	    veroorzaken.  De gebruiker die het object probeert te
	    herlabelen kan bijvoorbeeld niet de eigenaar zijn van het
	    bestand, het object kan niet bestaan of alleen-lezen zijn.
	    Een verplichte beleidsinstelling zal het proces niet
	    toestaan om een bestand te herlabelen, misschien om een
	    eigenschap van het bestand, een eigenschap van het proces
	    of een eigenschap van de voorgestelde nieuwe waarde van het
	    label.  Een gebruiker die met een lage integriteit draait,
	    probeert bijvoorbeeld het label van een bestand met een hoge
	    integriteit te veranderen of zo'n zelfde gebruiker kan
	    proberen het label van een bestand met lage integriteit te
	    wijzigen in een label van een hoge integriteit.</para></footnote>

	De systeembeheerder kan de volgende commando's gebruiken om dit
	probleem te voorkomen:</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>Hierboven is te zien dat <command>setpmac</command> gebruikt
	kan worden om aan de instellingen van een beleidsmodules voorbij
	te gaan door een ander label toe te wijzen aan het aangeroepen
	proces.  Het hulpprogramma <command>getpmac</command> wordt
	meestal toegepast op processen die al draaien, zoals
	<application>sendmail</application>: hoewel er een proces-ID
	nodig is in plaats van een commando, is de logica gelijk.  Als
	gebruikers proberen een bestand te manipuleren waar ze geen
	toegang tot hebben, onderhevig aan de regels van de geladen
	beleidsmodules, dan wordt de foutmelding <errorname>Operation
	not permitted</errorname> weergegeven door de functie
	<function>mac_set_link</function>.</para>

      <sect3>
	<title>Labeltypen</title>

	<para>Met de beleidsmodules &man.mac.biba.4;, &man.mac.mls.4; en
	  &man.mac.lomac.4; is het mogelijk eenvoudige labels toe te
	  wijzen.  Die kunnen hoog, gelijk aan en laag zijn.  Hieronder
	  een beschrijving van wat die labels betekenen:</para>

	<itemizedlist>
	  <listitem>
	    <para>Het label <literal>low</literal> is de laagst
	      mogelijke labelinstelling die een object of subject kan
	      hebben.  Deze instelling op objecten of subjecten
	      blokkeert hun toegang tot objecten of subjecten met de
	      markering hoog.</para>
	  </listitem>

	  <listitem>
	    <para>Het label <literal>equal</literal> hoort alleen
	      ingesteld te worden op objecten die uitgesloten moeten
	      worden van een beleidsinstelling.</para>
	  </listitem>

	  <listitem>
	    <para>Het label <literal>high</literal> geeft een object of
	      subject de hoogst mogelijke instelling.</para>
	  </listitem>
	</itemizedlist>

	<para>Afhankelijke van iedere beleidsmodule heeft iedere
	  instelling een ander informatiestroomdirectief tot gevolg.
	  Het lezen van de hulppagina's die van toepassing zijn geeft
	  inzicht in de precieze eigenschappen van de standaard
	  labelinstellingen.</para>

	<sect4>
	  <title>Gevorderde labelinstellingen</title>

	  <para>Dit zijn de labels met numerieke graden die gebruikt
	    worden voor
	    <literal>vergelijking:afdeling+afdeling</literal>.</para>

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

	  <para>Het bovenstaande kan dus geïnterpreteerd worden
	    als:</para>

	  <para><quote>Biba-beleidslabel</quote>/<quote>Graad
	      10</quote>:<quote>Afdelingen 2, 3 en 6</quote>:
	    (<quote>graad 5 ...</quote>)</para>

	  <para>In dit voorbeeld is de eerste graad de
	    <quote>effectieve graad</quote> met de <quote>effectieve
	    afdelingen</quote>, de tweede graad is de lage graad en de
	    laatste is de hoge graad.  In de meeste instellingen worden
	    deze instellingen niet gebruikt.  Ze zijn inderdaad
	    instellingen voor gevorderden.</para>

	  <para>Als ze worden toegepast op systeemobjecten, hebben ze
	    alleen een huidige graad/afdeling in vergelijking met
	    systeemsubjecten, omdat ze de reikwijdte van rechten in het
	    systeem en op netwerkinterfaces aangeven, waar ze gebruikt
	    worden voor toegangscontrole.</para>

	  <para>De graad en afdelingen in een subject en object paar
	    wordt gebruikt om een relatie te construeren die
	    <quote>dominantie</quote> heet, waar een subject een object
	    domineert, geen van beiden domineert, of beiden elkaar
	    domineren.  Het geval <quote>beiden domineren</quote> komt
	    voor als de twee labels gelijk zijn.  Vanwege de natuur van
	    de informatiestroom van Biba, heeft een gebruiker rechten
	    op een verzameling van afdelingen, <quote>need to
	    know</quote>, die overeen zouden kunnen komen met projecten,
	    maar objecten hebben ook een verzameling van afdelingen.
	    Gebruikers dienen wellicht hun rechten onder te verdelen met
	    <command>su</command> of <command>setpmac</command> om
	    toegang te krijgen tot objecten in een afdeling die geen
	    verboden terrein voor ze zijn.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Gebruikers en labelinstellingen</title>

	<para>Gebruikers moeten zelf labels hebben, zodat hun bestanden
	  en processen juist kunnen samenwerken met het
	  beveiligingsbeleid dat op een systeem is ingesteld.  Dit wordt
	  ingesteld via het bestand <filename>login.conf</filename> door
	  gebruik te maken van aanmeldklassen.  Iedere beleidsmodule die
	  labels gebruikt implementeert ook de instelling van de
	  gebruikersklasse.</para>

	<para>Een voorbeeld dat iedere instelling uit de beleidsmodule
	  bevat is hieronder te zien:</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),lomac/10[2]:</programlisting>

	<para>De optie <literal>label</literal> wordt gebruikt om het
	  standaardlabel voor aanmeldklasse in te stellen dat door
	  <acronym>MAC</acronym> wordt afgedwongen.  Het wordt
	  gebruikers nooit toegestaan deze waarde te wijzigen, dus kan
	  het gezien worden als niet optioneel vanuit het perspectief
	  van de gebruiker.  In de echte wereld besluit een beheerder
	  echter nooit iedere beleidsmodule te activeren.  Het wordt
	  sterk aangeraden de rest van die hoofdstuk te lezen alvorens
	  (een deel van) de bovenstaande instellingen te
	  implementeren.</para>

	<note>
	  <para>Gebruikers kunnen hun label wijzigen na het
	    initiële aanmelden, maar dit is wel afhankelijk van de
	    beperkingen van een beleidsinstelling.  Het bovenstaande
	    voorbeeld vertelt de beleidseenheid Biba dat de minimale
	    integriteit van een proces 5 en het maximum 15, maar dat het
	    effectieve label standaard 10 is.  Het proces draait op
	    niveau 10, totdat het proces het label wijzigt, misschien door een
	    gebruiker die <command>setpmac</command> gebruikt, bij het
	    aanmelden beperkt tot de door Biba ingestelde reeks.</para>
	</note>

	<para>In alle gevallen dient de database met
	  aanmeldklassemogelijkheden opnieuw gebouwd te worden met
	  <command>cap_mkdb</command> na het wijzigen van
	  <filename>login.conf</filename>.  Dit wordt ook in alle
	  komende voorbeelden en beschrijvingen gedaan.</para>

	<para>Het is belangrijk op te merken dat in veel gevallen sites
	  te maken hebben met bijzonder grote aantallen gebruikers
	  waardoor er een aantal verschillende aanmeldklassen nodig
	  zijn.  Het is dan nodig gedetailleerd te plannen omdat dit
	  anders bijzonder complex wordt om te onderhouden.</para>
      </sect3>

      <sect3>
	<title>Netwerkinterfaces en labelinstellingen</title>

	<para>Labels kunnen ook ingesteld worden op netwerkinterfaces om
	  te assisteren bij het controleren van het stromen van gegevens
	  over het netwerk.  In alle gevallen werken ze op dezelfde
	  wijze als het beleid werkt ten aanzien van objecten.
	  Gebruikers met bijvoorbeeld een hoge instelling in
	  <literal>biba</literal> krijgen geen toegang tot interfaces
	  met een laag label.</para>

	<para>Het <option>maclabel</option> kan meegegeven worden aan
	  <command>ifconfig</command> als het
	  <acronym>MAC</acronym>-label op netwerkinterfaces wordt
	  ingesteld:</para>

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

	<para>In het bovenstaande voorbeeld wordt het
	  <acronym>MAC</acronym>-label <literal>biba/equal</literal>
	  ingesteld op de interface &man.bge.4;.  Als er een instelling
	  wordt gebruikt die gelijkvormig is aan
	  <literal>biba/high(low-high)</literal>, dan moet het volledige
	  label worden ingegeven, anders treedt er een fout op.</para>

	<para>Iedere beleidsmodule die labels ondersteunt een instelling
	  waarmee het <acronym>MAC</acronym>-label op netwerkinterfaces
	  kan worden uitgeschakeld.  Het label instellen op
	  <option>equal</option> heeft hetzelfde effect.  Deze
	  instellingen zijn na te kijken in de uitvoer van
	  <command>sysctl</command>, de hulppagina van het beleid en
	  zelfs later in dit hoofdstuk.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Enkelvoudig label of meervoudig label?</title>

      <para>Standaard gebruikt een systeem de optie
	<option>singlelabel</option>.  Wat betekent dit voor een
	beheerder?  Er zijn een aantal verschillen die allemaal hun
	eigen voor- en nadelen hebben voor de flexibiliteit in het
	beveiligingsmodel voor een systeem.</para>

      <para>Bij gebruik van <option>singlelabel</option> kan er maar
	één label, bijvoorbeeld
	<literal>biba/high</literal>, gebruikt worden voor ieder subject
	of object.  Hierdoor is er minder beheer nodig, maar de
	flexibiliteit voor beleid dat labels ondersteunt daalt erdoor.
	Veel beheerders willen de optie <option>multilabel</option>
	gebruiken in hun beveiligingsmodel.</para>

      <para>De optie <option>multilabel</option> staat ieder subject of
	object toe om zijn eigen onafhankelijke
	<acronym>MAC</acronym>-label te hebben in plaats van de
	standaardoptie <option>singlelabel</option>, die maar
	één label toestaat op een hele partitie.  De
	labelopties <option>multilabel</option> en
	<option>single</option> zijn alleen verplicht voor de
	beleidseenheden die de mogelijkheid bieden om te labelen,
	waaronder de beleidsmogelijkheden van Biba, Lomac,
	<acronym>MLS</acronym> en <acronym>SEBSD</acronym>.</para>

      <para>In veel gevallen hoeft <option>multilabel</option> niet eens
	ingesteld te worden.  Stel er is de volgende situatie en
	beveiligingsmodel:</para>

      <itemizedlist>
	<listitem>
	  <para>&os;-webserver die gebruik maakt van het
	    <acronym>MAC</acronym>-raamwerk en een mengeling van
	    verschillende beleidseenheden.</para>
	</listitem>

	<listitem>
	  <para>De webserver heeft maar één label nodig,
	    <literal>biba/high</literal>, voor alles in het systeem.
	    Hier is de optie <option>multilabel</option> voor het
	    bestandssysteem niet nodig, omdat een enkelvoudig label
	    altijd van toepassing is.</para>
	</listitem>

	<listitem>
	  <para>Maar omdat de machine als webserver dienst gaat doen,
	    dient de webserver te draaien als
	    <literal>biba/low</literal> om administratiemogelijkheden te
	    voorkomen.  Later wordt beschreven hoe de beleidseenheid
	    Biba werkt, dus als de voorgaande opmerking wat lastig te
	    begrijpen is, lees dan verder en kom later nog een keer
	    terug.  De server zou een aparte partitie kunnen gebruiken
	    waarop <literal>biba/low</literal> van toepassing kan zijn
	    voor de meeste, zo niet alle, runtime-statussen.  Er
	    ontbreekt veel in dit voorbeeld, bijvoorbeeld de restricties
	    op gegevens en (gebruikers)instellingen.  Dit was slechts
	    een snel voorbeeld om de hiervoor aangehaalde stelling te
	    ondersteunen.</para>
	</listitem>
      </itemizedlist>

      <para>Als er een niet-labelende beleidseenheid wordt gebruikt, dan
	is de optie <option>multilabel</option> nooit verplicht.
	Hieronder vallen de beleidseenheden
	<literal>seeotheruids</literal>, <literal>portacl</literal> en
	<literal>partition</literal>.</para>

      <para>Bij gebruik van <option>multilabel</option> voor een
	partitie en het neerzetten van een beveiligingsmodel gebaseerd
	op <option>multilabel</option> functionaliteit gaat de deur open
	voor hogere administratieve rompslomp, omdat alles in een
	bestandssysteem een label krijgt.  Hieronder vallen mappen,
	bestanden en zelfs apparaatknooppunten.</para>

      <para>Het volgende commando stelt <option>multilabel</option> in
	op de bestandssystemen om meerdere labels te kunnen krijgen.
	Dit kan alleen uitgevoerd worden in enkele gebruikersmodus:</para>

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

      <para>Dit is geen criterium voor het wisselbestandssysteem.</para>

      <note>
	<para>Sommige gebruikers hebben problemen ondervonden met het
	  instellen van de vlag <option>multilabel</option> op de
	  rootpartitie.  Als dit het geval is, kijk dan naar <xref
	    linkend="mac-troubleshoot"/> van dit hoofdstuk.</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="mac-planning">
    <title>De beveiligingsconfiguratie plannen</title>

    <para>Wanneer een nieuwe technologie wordt geïmplementeerd is
      een planningsfase altijd een goed idee.  Tijdens de planningsfases
      zou een beheerder in het algemeen naar de <quote>big
      picture</quote> moeten kijken, en daarbij minstens het volgende
      in de gaten proberen te houden:</para>

    <itemizedlist>
      <listitem>
	<para>De implementatiebenodigdheden;</para>
      </listitem>

      <listitem>
	<para>De implementatiedoelen;</para>
      </listitem>
    </itemizedlist>

    <para>Voor <acronym>MAC</acronym>-installaties houden deze in:</para>

    <itemizedlist>
      <listitem>
	<para>Hoe de beschikbare informatie en bronnen die op het
	  doelsysteem aanwezig zijn te classificeren.</para>
      </listitem>

      <listitem>
	<para>Voor wat voor soort informatie of bronnen de toegang te
	  beperken samen met het type van de beperkingen die dienen te
	  worden toegepast.</para>
      </listitem>

      <listitem>
	<para>Welke <acronym>MAC</acronym>-module(s) nodig zullen zijn
	  om dit doel te bereiken.</para>
      </listitem>
    </itemizedlist>

    <para>Het is altijd mogelijk om de systeembronnen en de
      beveiligingsinstellingen te veranderen en te herconfigureren, het
      komt vaak erg ongelegen om het systeem te doorzoeken en bestaande
      bestanden en gebruikersaccounts te repareren.  Plannen helpt om
      zeker te zijn van een probleemloze en efficiënte
      systeemimplementatie.  Het is vaak vitaal en zeker in uw voordeel
      om een proefronde van het vertrouwde systeem, inclusief de
      configuratie, te draaien
      <emphasis>vóórdat</emphasis> een
      <acronym>MAC</acronym>-implementatie wordt gebruikt op
      productiesystemen.  Het idee om een systeem met
      <acronym>MAC</acronym> gewoon los te laten is als het plannen van
      mislukkingen.</para>

    <para>Verschillende omgevingen kunnen verschillende behoeften en
      benodigdheden nodig hebben.  Het opzetten van een diepgaand en
      compleet beveiligingsprofiel zal de noodzaak van verandering
      verminderen wanneer het systeem in gebruik wordt genomen.
      Zodoende zullen de toekomstige secties de verschillende modules
      die beschikbaar zijn voor beheerders behandelen; hun gebruik en
      configuratie beschrijven; en in sommige gevallen inzicht bieden in
      welke situaties ze het beste tot hun recht komen.  Een webserver
      bijvoorbeeld zou de beleiden &man.mac.biba.4; en
      &man.mac.bsdextended.4; in gebruik nemen.  In andere gevallen kan
      voor een machine met erg weinig lokale gebruikers
      &man.mac.partition.4; een goede keuze zijn.</para>
  </sect1>

  <sect1 id="mac-modules">
    <title>Module-instellingen</title>

    <para>Iedere module uit het <acronym>MAC</acronym>-raamwerk kan
      zoals zojuist aangegeven in de kernel worden gecompileerd of als
      runtime-kernelmodule geladen worden.  De geadviseerde methode is
      de naam van een module toevoegen aan het bestand
      <filename>/boot/loader.conf</filename> zodat die wordt geladen
      tijdens de eerste fase van het starten van een systeem.</para>

    <para>In de volgende onderdelen worden de verschillende
      <acronym>MAC</acronym>-modules en hun mogelijkheden beschreven.
      De implementatie in een specifieke omgeving wordt ook in dit
      hoofdstuk beschreven.  Een aantal modules ondersteunt het gebruik
      van labelen, wat het beperken van toegang is door een label als
      <quote>dit is toegestaan en dat niet</quote> af te dwingen.  Een
      labelinstellingenbestand kan bepalen hoe bestanden kunnen worden
      benaderd, hoe netwerkcommunicatie wordt uitgewisseld, en meer.  In
      het vorige onderdeel is beschreven hoe de vlag
      <option>multilabel</option> ingesteld kon worden op
      bestandssystemen om per bestand of per partitie toegangscontrole
      in te schakelen.</para>

    <para>Een instelling met een enkelvoudig label zou maar
      één label over een heel systeem afdwingen, daarom
      wordt de optie <command>tunefs</command>
      <option>multilabel</option> genoemd.</para>
  </sect1>

  <sect1 id="mac-seeotheruids">
    <title>MAC-module seeotheruids</title>

    <indexterm><primary>MAC zie andere UID's
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_seeotheruids.ko</filename></para>

    <para>Kernelinstelling: <literal>options MAC_SEEOTHERUIDS</literal></para>

    <para>Opstartoptie: <literal>mac_seeotheruids_load="YES"</literal></para>

    <para>De module &man.mac.seeotheruids.4; imiteert de
      <command>sysctl</command>-tunables
      <literal>security.bsd.see_other_uids</literal> en
      <literal>security.bsd.see_other_gids</literal> en breidt deze
      uit.  Voor deze optie hoeven geen labels ingesteld te worden voor
      de instelling en hij werkt transparant met de andere modules.</para>

    <para>Na het laden van de module kunnen de volgende
      <command>sysctl</command>-tunables gebruikt worden om de opties te
      beheren:</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.seeotheruids.enabled</literal>
	  schakelt de opties van de module in en gebruikt de
	  standaardinstellingen.  Deze standaardinstellingen ontzeggen
	  gebruikt de mogelijkheid processen en sockets te zien die
	  eigendom zijn van andere gebruikers.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.seeotheruids.specificgid_enabled</literal>
	  staat toe dat een bepaalde groep niet onder dit beleid valt.
	  Om bepaalde groepen van dit beleid uit te sluiten, kan de
	  <command>sysctl</command>-tunable
	  <literal>security.mac.seeotheruids.specificgid=<replaceable>XXX</replaceable></literal>
	  gebruikt worden.  In het bovenstaande voorbeeld dient
	  <replaceable>XXX</replaceable> vervangen te worden door het
	  numerieke ID van een groep die uitgesloten moet worden van de
	  beleidsinstelling.</para>
      </listitem>

      <listitem>
	<para>
	  <literal>security.mac.seeotheruids.primarygroup_enabled</literal>
	  wordt gebruikt om specifieke primaire groepen uit te sluiten
	  van dit beleid.  Als deze tunable wordt gebruikt, mag
	  <literal>security.mac.seeotheruids.specificgid_enabled</literal>
	  niet gebruikt worden.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="mac-bsdextended">
    <title>MAC-module bsdextended</title>

    <indexterm>
      <primary>MAC</primary>

      <secondary>bestandssysteemfirewall beleidsinstelling</secondary>
    </indexterm>

    <para>Modulenaam: <filename>mac_bsdextended.ko</filename></para>

    <para>Kernelinstelling:
      <literal>options MAC_BSDEXTENDED</literal></para>

    <para>Opstartoptie:
      <literal>mac_bsdextended_load="YES"</literal></para>

    <para>De module &man.mac.bsdextended.4; dwingt de
      bestandssysteemfirewall af.  Het beleid van deze module biedt een
      uitbreiding van het standaard rechtenmodel voor bestandssystemen,
      waardoor een beheerder een firewallachtige verzameling met regels
      kan maken om bestanden, programma's en mappen in de
      bestandssysteemhiërarchie te beschermen.  Wanneer geprobeerd
      wordt om toegang tot een object in het bestandssysteem te krijgen,
      wordt de lijst met regels afgelopen totdat er òf een
      overeenkomstige regel is gevonden òf het einde van de lijst
      is bereikt.  Dit gedrag kan veranderd worden door het gebruik van
      de &man.sysctl.8;-parameter
      security.mac.bsdextended.firstmatch_enabled.  Net zoals andere
      firewall-modules in &os; kan een bestand dat regels voor
      toegangscontrole bevat tijdens het opstarten door het systeem
      worden aangemaakt en gelezen door een &man.rc.conf.5;-variabele te
      gebruiken.</para>

    <para>De lijst met regels kan ingevoerd worden met het hulpprogramma
      &man.ugidfw.8;, dat een syntaxis heeft die lijkt op die van
      &man.ipfw.8;.  Meer hulpprogramma's kunnen geschreven worden met
      de functies in de bibliotheek &man.libugidfw.3;.</para>

    <para>Bij het werken met deze module dient bijzondere
      voorzichtigheid in acht te worden genomen.  Verkeerd gebruik kan
      toegang tot bepaalde delen van het bestandssysteem blokkeren.</para>

    <sect2>
      <title>Voorbeelden</title>

      <para>Nadat de module &man.mac.bsdextended.4; is geladen, kan met
	het volgende commando de huidige regels getoond worden:</para>

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

      <para>Zoals verwacht zijn er geen regels ingesteld.  Dit betekent
	dat alles nog steeds volledig toegankelijk is.  Om een regel te
	maken die alle toegang voor alle gebruikers behalve
	<username>root</username> ontzegt:</para>

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

      <para>Dit is een slecht idee, omdat het voorkomt dat alle
	gebruikers ook maar het meest eenvoudige commando kunnen
	uitvoeren, zoals <command>ls</command>.  Een betere lijst met
	regels zou kunnen zijn:</para>

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

      <para>Hiermee wordt alle toegang, inclusief het tonen van
	mapinhoud, tot de thuismap van
	<username><replaceable>gebruiker2</replaceable></username>
	ontzegd voor de gebruikersnaam <username>gebruiker1</username>.</para>

      <para>In plaats van <username>gebruiker1</username>, zou
	<option>not uid <replaceable>gebruiker2</replaceable></option>
	kunnen worden opgegeven.  Hierdoor worden dezelfde restricties
	als hierboven actief voor alle gebruikers in plaats van voor
	slechts één gebruiker.</para>

      <note>
	<para>De gebruiker <username>root</username> blijft onaangetast
	  door deze wijzigingen.</para>
      </note>

      <para>Met deze informatie zou een basisbegrip moeten zijn ontstaan
	over hoe de module &man.mac.bsdextended.4; gebruikt kan worden
	om een bestandssysteem te beschermen.  Meer informatie staat in
	de hulppagina's van &man.mac.bsdextended.4; en &man.ugidfw.8;.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-ifoff">
    <title>MAC-module ifoff</title>

    <indexterm><primary>MAC Interface Silencing
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_ifoff.ko</filename></para>

    <para>Kernelinstelling:
      <literal>options MAC_IFOFF</literal></para>

    <para>Opstartoptie: <literal>mac_ifoff_load="YES"</literal></para>

    <para>De module &man.mac.ifoff.4; bestaat alleen om
      netwerkinterfaces tijdens het draaien uit te schakelen en om te
      verhinderen dat netwerkinterfaces tijdens het initiële
      opstarten worden geactiveerd.  Er hoeven geen labels ingesteld te
      worden, noch is deze module afhankelijk van andere
      <acronym>MAC</acronym>-modules.</para>

    <para>Het meeste beheer wordt gedaan met de
      <command>sysctl</command>-tunables die hieronder zijn vermeld.</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.ifoff.lo_enabled</literal> schakelt
	  alle verkeer op het teruglusinterface (&man.lo.4;) in of uit.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.ifoff.bpfrecv_enabled</literal>
	  schakelt alle verkeer op het Berkeley Packet Filterinterface
	  (&man.bpf.4;) in of uit.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.ifoff.other_enabled</literal>
	  schakelt alle verkeer op alle andere interfaces in of uit.</para>
      </listitem>
    </itemizedlist>

    <para>&man.mac.ifoff.4; wordt het meest gebruikt om netwerken te
      monitoren in een omgeving waar netwerkverkeer niet toegestaan zou
      moeten zijn tijdens het opstarten.  Een ander voorgesteld gebruik
      zou het schrijven van een script zijn dat <filename
	role="package">security/aide</filename> gebruikt om automatisch
      netwerkverkeer te blokkeren wanneer het nieuwe of veranderde
      bestanden in beschermde mappen vindt.</para>
  </sect1>

  <sect1 id="mac-portacl">
    <title>MAC-module portacl</title>

    <indexterm><primary>MAC poorttoegangscontrolelijst
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_portacl.ko</filename></para>

    <para>Kernelinstelling:
      <literal>MAC_PORTACL</literal></para>

    <para>Opstartoptie: <literal>mac_portacl_load="YES"</literal></para>

    <para>De module &man.mac.portacl.4; wordt gebruikt om het binden aan
      lokale <acronym>TCP</acronym>- en <acronym>UDP</acronym>-poorten
      te begrenzen door een waaier aan
      <command>sysctl</command>-variabelen te gebruiken.  In essentie
      maakt &man.mac.portacl.4; het mogelijk om
      niet-<username>root</username>-gebruikers in staat te stellen om
      aan gespecificeerde geprivilegieerde poorten te binden, dus
      poorten lager dan 1024.</para>

    <para>Eenmaal geladen zal deze module het
      <acronym>MAC</acronym>-beleid op alle sockets aanzetten.  De
      volgende tunables zijn beschikbaar:</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.portacl.enabled</literal> schakelt
	  het beleid volledig in of uit.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.port_high</literal> stelt
	  het hoogste poortnummer in waarvoor &man.mac.portacl.4;
	  bescherming biedt.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.suser_exempt</literal> sluit
	  de gebruiker <username>root</username> uit van dit beleid
	  wanneer het op een waarde anders dan nul wordt ingesteld.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.portacl.rules</literal> specificeert
	  het eigenlijke beleid van mac_portacl; zie onder.</para>
      </listitem>
    </itemizedlist>

    <para>Het eigenlijke beleid van <literal>mac_portacl</literal>,
      zoals gespecificeerd in de sysctl
      <literal>security.mac.portacl.rules</literal>, is een tekststring
      van de vorm: <literal>regel[,regel,...]</literal> met zoveel
      regels als nodig.  Elke regel heeft de vorm:
      <literal>idtype:id:protocol:poort</literal>.  De parameter
      <parameter>idtype</parameter> kan <literal>uid</literal> of
      <literal>gid</literal> zijn en wordt gebruikt om de parameter

      <parameter>id</parameter> als respectievelijk een gebruikers-id of
      groeps-id te interpreteren.  De parameter
      <parameter>protocol</parameter> wordt gebruikt om te bepalen of de
      regel op <acronym>TCP</acronym> of <acronym>UDP</acronym> moet
      worden toegepast door de parameter op <literal>tcp</literal> of
      <literal>udp</literal> in te stellen.  De laatste parameter
      <parameter>poort</parameter> is het poortnummer waaraan de
      gespecificeerde gebruiker of groep zich mag binden.</para>

    <note>
      <para>Aangezien de regelverzameling direct door de kernel wordt
	geïnterpreteerd kunnen alleen numerieke waarden voor de
	parameters voor de gebruikers-ID, groeps-ID, en de poort
	gebruikt worden.  Voor gebruikers, groepen, en
	poortdiensten kunnen dus geen namen  gebruikt worden.</para>
    </note>

    <para>Standaard kunnen op &unix;-achtige systemen poorten lager dan
      1024 alleen aan geprivilegieerde processen gebonden worden, dus
      diegenen die als <username>root</username> draaien.  Om
      &man.mac.portacl.4; toe te laten staan om ongeprivilegieerde
      processen aan poorten lager dan 1024 te laten binden moet deze
      standaard &unix;-beperking uitgezet worden.  Dit kan bereikt
      worden door de &man.sysctl.8;-variabelen
      <literal>net.inet.ip.portange.reservedlow</literal> en
      <literal>net.inet.ip.portrange.reservedhigh</literal> op nul te
      zetten.</para>

    <para>Zie de onderstaande voorbeelden of bekijk de handleidingpagina
      voor &man.mac.portacl.4; voor meer informatie.</para>

    <sect2>
      <title>Voorbeelden</title>

      <para>De volgende voorbeelden zouden de bovenstaande discussie wat
	moeten toelichten:</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>Eerst wordt &man.mac.portacl.4; ingesteld om de standaard
	geprivilegieerde poorten te dekken en worden de normale
	bindbeperkingen van &unix; uitgeschakeld.</para>

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

      <para>De gebruiker <username>root</username> zou niet beperkt
	moeten worden door dit beleid, stel
	<literal>security.mac.portacl.suser_exempt</literal> dus in op
	een waarde anders dan nul.  De module &man.mac.portacl.4; is nu
	ingesteld om zich op de zelfde manier te gedragen als
	&unix;-achtige systemen zich standaard gedragen.</para>

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

      <para>Sta de gebruiker met <acronym>UID</acronym> 80 (normaliter
	de gebruiker <username>www</username>) toe om zich aan poort 80
	te binden.  Dit kan gebruikt worden om de gebruiker
	<username>www</username> toe te staan een webserver te draaien
	zonder ooit <username>root</username>-rechten te hebben.</para>

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

      <para>Sta de gebruiker met <acronym>UID</acronym> 1001 om zich aan
	de <acronym>TCP</acronym>-poorten 110 (<quote>pop3</quote>) en
	995 (<quote>pop3s</quote>) te binden.  Dit staat deze gebruiker
	toe om een server te starten die verbindingen accepteert op
	poorten 110 en 995.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-partition">
    <title>MAC-module partition</title>

    <indexterm><primary>MAC procespartitionering
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_partition.ko</filename></para>

    <para>Kernelinstelling:
      <literal>options MAC_PARTITION</literal></para>

    <para>Opstartoptie:
      <literal>mac_partition_load="YES"</literal></para>

    <para>Het beleid &man.mac.partition.4; plaatst processen in
      specifieke <quote>partities</quote> gebaseerd op hun
      <acronym>MAC</acronym>-label.  Zie dit als een speciaal soort
      &man.jail.8;, hoewel dit nauwelijks een waardige vergelijking is.</para>

    <para>Dit is één module die aan het bestand
      &man.loader.conf.5; dient te worden toegevoegd zodat het het
      beleid tijdens het opstartproces laadt en aanzet.</para>

    <para>De meeste configuratie van dit beleid wordt gedaan met het
      gereedschap &man.setpmac.8;, wat hieronder zal worden uitgelegd.
      De volgende <command>sysctl</command>-tunable is beschikbaar voor
      dit beleid:</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.partition.enabled</literal> zet het
	  afdwingen van <acronym>MAC</acronym>-procespartities aan.</para>
      </listitem>
    </itemizedlist>

    <para>Wanneer dit beleid aanstaat, mogen gebruikers alleen hun eigen
      processen zien, en elke andere in hun partitie, maar mogen niet
      met gereedschappen buiten deze partitie werken.  Bijvoorbeeld, een
      gebruiker in de klasse <literal>insecure</literal> heeft geen
      toegang tot het commando <command>top</command> noch tot vele
      andere commando's die een proces moeten draaien.</para>

    <para>Gebruik het gereedschap <command>setpmac</command> om
      gereedschappen in te stellen of ze in een partitielabel te
      plaatsen:</para>

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

    <para>Dit zal het commando <command>top</command> toevoegen aan het
      label dat voor gebruikers in de klasse <literal>insecure</literal>
      gebruikt wordt.  Merk op dat alle processen gestart door
      gebruikers in de klasse <literal>insecure</literal> in het label
      <literal>partition/13</literal> zullen blijven.</para>

    <sect2>
      <title>Voorbeelden</title>

      <para>Het volgende commando laat de partitielabel en de
	proceslijst zien:</para>

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

      <para>Het volgende commando staat toe om het procespartitielabel
	van een andere gebruiker en de momenteel draaiende processen van
	die gebruiker te zien:</para>

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

      <note>
	<para>Gebruikers kunnen processen in het label van
	  <username>root</username> zien tenzij het beleid
	  &man.mac.seeotheruids.4; is geladen.</para>
      </note>

      <para>Een echte vakmansimplementatie zou alle diensten in
	<filename>/etc/rc.conf</filename> uitzetten en deze door een
	script met de juiste labeling laten starten.</para>

      <note>
	<para>De volgende beleiden ondersteunen integerinstellingen in
	  plaats van de drie standaardlabels die aangeboden worden.
	  Deze opties, inclusief hun beperkingen, worden verder
	  uitgelegd in de handleidingpagina's van de modules.</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="mac-mls">
    <title>MAC-module Multi-Level Security</title>

    <indexterm><primary>MAC meerlaagse beveiliging
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_mls.ko</filename></para>

    <para>Kernelinstelling:
      <literal>options MAC_MLS</literal></para>

    <para>Opstartoptie: <literal>mac_mls_load="YES"</literal></para>

    <para>Het beleid &man.mac.mls.4; beheert toegang tussen subjecten en
      objecten in het systeem door een strikt beleid voor
      informatiestromen af te dwingen.</para>

    <para>In <acronym>MLS</acronym>-omgevingen wordt een
      <quote>toestemming</quote>-niveau ingesteld in het label van elk
      subject of object, samen met compartimenten.  Aangezien deze
      toestemmings- of zinnigheidsniveaus getallen groter dan zesduizend
      kunnen bereiken; zou het voor elke systeembeheerder een
      afschrikwekkende taak zijn om elk subject of object grondig te
      configureren.  Gelukkig worden er al drie
      <quote>kant-en-klare</quote> bij dit beleid geleverd.</para>

    <para>Deze labels zijn <literal>mls/low</literal>,
      <literal>mls/equal</literal> en <literal>mls/high</literal>.
      Aangezien deze labels uitgebreid in de handleidingpagina worden
      beschreven, worden ze hier slechts kort beschreven:</para>

    <itemizedlist>
      <listitem>
	<para>Het label <literal>mls/low</literal> bevat een lage
	  configuratie welke het toestaat om door alle andere objecten
	  te worden gedomineerd.  Alles dat met
	  <literal>mls/low</literal> is gelabeld heeft een laag
	  toestemmingsniveau en heeft geen toegang tot informatie van
	  een hoger niveau.  Ook voorkomt dit label dat objecten van een
	  hoger toestemmingsniveau informatie naar hen schrijven of aan
	  hen doorgeven.</para>
      </listitem>

      <listitem>
	<para>Het label <literal>mls/equal</literal> dient geplaatst te
	  worden op objecten die geacht te zijn uitgesloten van het
	  beleid.</para>
      </listitem>

      <listitem>
	<para>Het label <literal>mls/high</literal> is het hoogst
	  mogelijke toestemmingsniveau.  Objecten waaraan dit label is
	  toegekend zijn dominant over alle andere objecten in het
	  systeem; ze mogen echter geen informatie lekken naar objecten
	  van een lagere klasse.</para>
      </listitem>
    </itemizedlist>

    <para><acronym>MLS</acronym> biedt:</para>

    <itemizedlist>
      <listitem>
	<para>Een hiërarchisch beveiligingsniveau met een
	  verzameling niet-hiërarchische categoriën;</para>
      </listitem>

      <listitem>
	<para>Vaste regels: niet naar boven lezen, niet naar beneden
	  schrijven (een subject kan leestoegang hebben naar objecten op
	  zijn eigen niveau of daaronder, maar niet daarboven.  Evenzo
	  kan een subject schrijftoegang hebben naar objecten op zijn
	  eigen niveau of daarboven maar niet daaronder.);</para>
      </listitem>

      <listitem>
	<para>Geheimhouding (voorkomt ongeschikte openbaarmaking van
	  gegevens);</para>
      </listitem>

      <listitem>
	<para>Een basis voor het ontwerp van systemen die gelijktijdig
	  gegevens op verschillende gevoeligheidsniveaus behandelen
	  (zonder informatie tussen geheim en vertrouwelijk te lekken).</para>
      </listitem>
    </itemizedlist>

    <para>De volgende <command>sysctl</command>-tunables zijn
      beschikbaar voor de configuratie van speciale diensten en
      interfaces:</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.mls.enabled</literal> wordt gebruikt
	  om het <acronym>MLS</acronym>-beleid in en uit te schakelen.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.ptys_equal</literal> labelt alle
	  &man.pty.4;-apparaten als <literal>mls/equal</literal> wanneer
	  ze worden aangemaakt.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.revocation_enabled</literal>
	  wordt gebruikt om toegang tot objecten in te trekken nadat hun
	  label in die van een lagere graad verandert.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.mls.max_compartments</literal> wordt
	  gebruikt om het maximaal aantal compartimentniveaus met
	  objecten in te stellen; in feite het maximale
	  compartimentnummer  dat op een systeem is toegestaan.</para>
      </listitem>
    </itemizedlist>

    <para>Het commando &man.setfmac.8; kan gebruikt worden om de
      <acronym>MLS</acronym>-labels te manipuleren.  Gebruik het
      volgende commando om een label aan een object toe te kennen:</para>

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

    <para>Gebruik het volgende commando om het
      <acronym>MLS</acronym>-label voor het bestand
      <filename>test</filename> te verkrijgen:</para>

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

    <para>Dit is een samenvatting van de mogelijkheden van het beleid
      <acronym>MLS</acronym>.  Een andere manier is om een
      meesterbeleidsbestand in <filename
	class="directory">/etc</filename> aan te maken dat de
      <acronym>MLS</acronym>-informatie bevat en om dat bestand aan het
      commando <command>setfmac</command> te geven.  Deze methode wordt
      uitgelegd nadat alle beleiden zijn behandeld.</para>

    <sect2>
      <title>Verplichte Gevoeligheid plannen</title>

      <para>Met de beleidsmodule voor  meerlaagse beveiliging plant een
	beheerder het beheren van gevoelige informatiestromen.
	Standaard zet het systeem met zijn natuur van lezen naar boven
	blokkeren en schrijven naar beneden blokkeren alles in een lage
	toestand.  Alles is beschikbaar en een beheerder verandert dit
	langzaam tijdens de configuratiefase; waarbij de
	vertrouwelijkheid van de informatie toeneemt.</para>

      <para>Buiten de bovengenoemde drie basisopties voor labels, kan
	een beheerder gebruikers en groepen indelen als nodig om de
	informatiestroom tussen hun te blokkeren.  Het is misschien
	gemakkelijker om naar de informatie te kijken in
	toestemmingsniveaus waarvoor bekende woorden bestaan, zoals
	<literal>Vertrouwelijk</literal>, <literal>Geheim</literal> en
	<literal>Strikt Geheim</literal>.  Sommige beheerders zullen
	verschillende groepen aanmaken gebaseerd op verschillende
	projecten.  Ongeacht de classificatiemethode moet er een goed
	overwogen plan bestaan voordat zo'n berperkend beleid wordt
	geïmplementeerd.</para>

      <para>Wat voorbeeldsituaties voor deze beveiligingsbeleidsmodule
	kunnen een e-commerce webserver, een bestandsserver die kritieke
	bedrijfsinformatie, en omgevingen van financiële
	instellingen zijn.  De meest onwaarschijnlijke plaats zou een
	persoonlijk werkstation met slechts twee of drie gebruikers
	zijn.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-biba">
    <title>MAC-module Biba</title>

    <indexterm><primary>MAC Biba integriteit
	beleidsinstelling</primary></indexterm>

    <para>Modulenaam: <filename>mac_biba.ko</filename></para>

    <para>Kernelinstelling: <literal>options MAC_BIBA</literal></para>

    <para>Opstartoptie: <literal>mac_biba_load="YES"</literal></para>

    <para>De module &man.mac.biba.4; laadt het beleid
      <acronym>MAC</acronym> Biba.  Dit beleid werkt vaak zoals dat van
      <acronym>MLS</acronym> behalve dat de regels voor de
      informatiestroom lichtelijk zijn omgedraaid.  Dit is gezegd om de
      neerwaartse stroom van gevoelige informatie te voorkomen terwijl
      het beleid <acronym>MLS</acronym> de opwaartse stroom van
      gevoelige informatie voorkomt; veel van deze sectie is dus op
      beide beleiden toepasbaar.</para>

    <para>In Biba-omgevingen wordt een <quote>integriteits</quote>-label
      op elk subject of object ingesteld.  Deze labels bestaan uit
      hiërarchische graden, en niet-hiërarchische componenten.
      Een graad van een object of subject stijgt samen met de
      integriteit.</para>

    <para>Ondersteunde labels zijn <literal>biba/low</literal>,
      <literal>biba/equal</literal>, en <literal>biba/high</literal>;
      zoals hieronder uitgelegd:</para>

    <itemizedlist>
      <listitem>
	<para>Het label <literal>biba/low</literal> wordt gezien als de
	  laagste integriteit die een object of subject kan hebben.  Dit
	  instellen op objecten of subjecten zal hun schrijftoegang tot
	  objecten of subjecten die als hoog zijn gemarkeerd blokkeren.
	  Ze hebben echter nog steeds leestoegang.</para>
      </listitem>

      <listitem>
	<para>Het label <literal>biba/equal</literal> dient alleen
	  geplaatst te worden op objecten die geacht te zijn uitgesloten
	  van het beleid.</para>
      </listitem>

      <listitem>
	<para>Het label <literal>biba/high</literal> staat schrijven
	  naar objecten met een lager label toe maar sluit het lezen van
	  dat object uit.  Het wordt aangeraden om dit label te plaatsen
	  op objecten die de integriteit van het gehele systeem
	  beïnvloeden.</para>
      </listitem>
    </itemizedlist>

    <para>Biba biedt:</para>

    <itemizedlist>
      <listitem>
	<para>Hiërarchische integriteitsniveaus met een verzameling
	  niet-hiërarchische integriteitscategoriën;</para>
      </listitem>

      <listitem>
	<para>Vaste regels: niet naar boven schrijven, niet naar beneden
	  lezen (tegenovergestelde van <acronym>MLS</acronym>).  Een
	  subject kan schrijftoegang hebben naar objecten op hetzelfde
	  niveau of daaronder, maar niet daarboven.  Evenzo kan een
	  subject leestoegang naar objecten op hetzelfde niveau of
	  daarboven hebben, maar niet daaronder;</para>
      </listitem>

      <listitem>
	<para>Integriteit (voorkomt oneigenlijk wijzigen van gegevens);</para>
      </listitem>

      <listitem>
	<para>Integriteitsniveaus (in plaats van de gevoeligheidsniveaus
	  van MLS)</para>
      </listitem>
    </itemizedlist>

    <para>De volgende <command>sysctl</command>-tunables kunnen gebruikt
      worden om het Biba-beleid te manipuleren.</para>

    <itemizedlist>
      <listitem>
	<para><literal>security.mac.biba.enabled</literal> kan gebruikt
	  worden om het afdwingen van het Biba-beleid op de doelmachine
	  aan en uit te zetten.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.biba.ptys_equal</literal> kan
	  gebruikt worden om het Biba-beleid op &man.pty.4;-apparaten
	  uit te zetten.</para>
      </listitem>

      <listitem>
	<para><literal>security.mac.biba.revocation_enabled</literal>
	  dwingt het herroepen van toegang tot objecten af als het label
	  is veranderd om het subject te domineren.</para>
      </listitem>
    </itemizedlist>

    <para>Gebruik de commando's <command>setfmac</command> en
      <command>getfmac</command> om de instellingen van het Biba-beleid
      op systeemobjecten te benaderen:</para>

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

    <sect2>
      <title>Verplichte Integriteit plannen</title>

      <para>Integriteit, anders dan gevoeligheid, garandeert dat de
	informatie nooit door onvertrouwde gebruikers zal worden
	gemanipuleerd.  Dit geldt ook voor informatie die tussen
	subjecten, objecten, of beiden wordt doorgegeven.  Het verzekert
	dat gebruikers alleen de informatie kunnen wijzigen en in
	sommige gevallen zelfs benaderen die ze expliciet nodig hebben.</para>

      <para>De beveiligingsbeleidsmodule &man.mac.biba.4; staat een
	beheerder in staat om te bepalen welke bestanden en programma's
	een gebruiker of gebruikers mogen zien en draaien terwijl het
	verzekert dat de programma's en bestanden vrij zijn van
	dreigingen en vertrouwt zijn door het systeem voor die gebruiker
	of groep van gebruikers.</para>

      <para>Tijdens de initiële planningsfase moet een beheerder
	bereid zijn om gebruikers in gradaties, niveaus, en gebieden in
	te delen.  Gebruikers zal toegang tot niet alleen gegevens maar
	ook tot programma's en hulpmiddelen ontzegt worden zowel voordat
	en nadat ze beginnen.  Het systeem zal standaard een hoog label
	instellen nadat deze beleidsmodule is ingeschakeld, en het is
	aan de beheerder om de verschillende gradaties en niveaus voor
	gebruikers in te stellen.  In plaats van toestemmingsniveaus
	zoals boven beschreven te gebruiken, kan een goede
	planningsmethode onderwerpen bevatten.  Bijvoorbeeld, geef
	alleen ontwikkelaars veranderingstoegang tot het
	broncoderepository, de broncodecompiler, en andere
	ontwikkelgereedschappen.  Andere gebruikers zouden in andere
	groepen zoals testers, ontwerpers, of gewone gebruikers worden
	ingedeeld en zouden alleen leestoegang hebben.</para>

      <para>Met zijn natuurlijke beveiligingsbeheer kan een subject van
	lagere integriteit niet schijven naar een subject van hogere
	integriteit; een subject van hogere integriteit kan geen subject
	van lagere integriteit observeren of lezen.  Een label op de
	laagst mogelijke graad instellen kan het ontoegankelijk voor
	subjecten maken.  Sommige succesvolle omgevingen voor deze
	beveiligingsbeheermodule zijn een beperkte webserver, een
	ontwikkel- en testmachine, en broncoderepositories.  Minder
	nuttige implementaties zouden een persoonlijk werkstation, een
	machine gebruikt als router, of een netwerkfirewall zijn.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-lomac">
    <title>MAC-module LOMAC</title>

    <indexterm><primary>MAC LOMAC</primary></indexterm>

    <para>Modulenaam: <filename>mac_lomac.ko</filename></para>

    <para>Kernelinstelling: <literal>options MAC_LOMAC</literal></para>

    <para>Opstartoptie: <literal>mac_lomac_load="YES"</literal></para>

    <para>In tegenstelling tot het beleid <acronym>MAC</acronym> Biba,
      staat het beleid &man.mac.lomac.4; toegang tot objecten van lagere
      integriteit slechts toe nadat het integriteitsniveau is verlaagt
      om de integriteitsregels niet te verstoren.</para>

    <para>De <acronym>MAC</acronym>-versie van het
      laagwatermarkeringsintegreitsbeleid, niet te verwarren met de
      oudere implementatie van &man.lomac.4;, werkt bijna hetzelfde als
      Biba maar met de uitzondering dat er drijvende labels worden
      gebruikt om subjectdegradatie via een hulpcompartiment met graden
      te ondersteunen.  Dit tweede compartiment heeft de vorm
      <literal>[hulpgraad]</literal>.  Wanneer een lomac-beleid met een
      hulpgraad wordt toegekend, dient het er ongeveer uit te zien als:
      <literal>lomac/10[2]</literal> waar het getal twee (2) de
      hulpgraad is.</para>

    <para>Het beleid <acronym>MAC</acronym> LOMAC berust op het overal
      labelen van alle systeemobjecten met integriteitslabels, waardoor
      subjecten wordt toegestaan om te lezen van objecten van lage
      integriteit en om daarna het label op subject te degraderen om
      toekomstig schrijven naar objecten van hoge integriteit te
      voorkomen.  Dit is de hierboven besproken optie
      <literal>[hulpgraad]</literal>, dus biedt het beleid grotere
      compatibiliteit en vereist het minder initiële configuratie
      dan Biba.</para>

    <sect2>
      <title>Voorbeelden</title>

      <para>Net zoals bij de beleiden Biba en <acronym>MLS</acronym>
	kunnen de commando's <command>setfmac</command> en
	<command>setpmac</command> gebruikt worden om labels op
	systeemobjecten te plaatsen:</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>Merk op dat de hulpgraad hier <literal>low</literal> is, dit
	is een mogelijkheid die alleen door het beleid
	<acronym>MAC</acronym> LOMAC wordt geboden.</para>
    </sect2>
  </sect1>

  <sect1 id="mac-implementing">
    <title>Nagios in een MAC-jail</title>

    <indexterm><primary>Nagios in een MAC-jail</primary></indexterm>

    <para>De volgende demonstratie zal een veilige omgeving
      implementeren door verschillende <acronym>MAC</acronym>-modules te
      gebruiken met juist ingestelde beleiden.  Dit is slechts een
      test en dient niet gezien te worden als het volledige antwoord op
      de beveiligingszorgen van iedereen.  Gewoon een beleid
      implementeren en het verder negeren werkt nooit en kan rampzalig
      zijn in een productieomgeving.</para>

    <para>Voordat met dit proces wordt begonnen, moet de optie
      <literal>multilabel</literal> zijn geactiveerd op elk
      bestandssysteem zoals vermeld aan het begin van dit hoofdstuk.
      Nalatigheid zal in fouten resulteren.  Zorg er ook voor dat de
      ports <filename role="package">net-mgmt/nagios-plugins</filename>,
      <filename role="package">net-mgmt/nagios</filename>, en <filename
	role="package">www/apache22</filename> allemaal
      geïnstalleerde en geconfigureerd zijn en correct werken.</para>

    <sect2>
      <title>Gebruikersklasse <literal>insecure</literal> maken</title>

      <para>Begin de procedure door de volgende gebruikersklasse toe te
	voegen aan het bestand <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=biba/10(10-10):</programlisting>

      <para>Voeg de volgende regel toe aan de standaard
	gebruikersklasse:</para>

      <programlisting>:label=biba/high:</programlisting>

      <para>Wanneer dit voltooid is, moet het volgende commando gedraaid
	worden om de database te herbouwen:</para>

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

    <sect2>
      <title>Opstartinstellingen</title>

      <para>Start nog niet opnieuw op, voeg alleen de volgende regels
	toe aan <filename>/boot/loader.conf</filename> zodat de
	benodigde modules worden geladen tijdens systeeminitialisatie:</para>

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

    <sect2>
      <title>Gebruikers instellen</title>

      <para>Stel de gebruiker <username>root</username> in op de
	standaardklasse met:</para>

      <screen>&prompt.root; <userinput>pw usermod root -L default</userinput></screen>

      <para>Alle gebruikersaccounts die geen <username>root</username>
	of systeemgebruikers zijn hebben nu een aanmeldklasse nodig.  De
	aanmeldklasse is nodig om te voorkomen dat gebruikers geen
	toegang hebben tot gewone commando's als &man.vi.1;.  Het
	volgende <command>sh</command>-script zou moeten werken:</para>

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

      <para>Laat de gebruikers <username>nagios</username> en
	<username>www</username> in de klasse insecure vallen:</para>

      <screen>&prompt.root; <userinput>pw usermod nagios -L insecure</userinput></screen>

      <screen>&prompt.root; <userinput>pw usermod www -L insecure</userinput></screen>
    </sect2>

    <sect2>
      <title>Het contextbestand aanmaken</title>

      <para>Nu dient een contextbestand aangemaakt te worden; het
	volgende voorbeeld dient geplaatst te worden in
	<filename>/etc/policy.contexts</filename>.</para>

      <programlisting># Dit is het standaard-BIBA-beleid voor dit systeem.
# Systeem:
/var/run                        biba/equal
/var/run/*                      biba/equal

/dev                            biba/equal
/dev/*                          biba/equal

/var                            biba/equal
/var/spool                      biba/equal
/var/spool/*                    biba/equal

/var/log                        biba/equal
/var/log/*                      biba/equal

/tmp                            biba/equal
/tmp/*                          biba/equal
/var/tmp                        biba/equal
/var/tmp/*                      biba/equal

/var/spool/mqueue               biba/equal
/var/spool/clientmqueue         biba/equal

#Voor Nagios:
/usr/local/etc/nagios
/usr/local/etc/nagios/*         biba/10
/var/spool/nagios               biba/10
/var/spool/nagios/*             biba/10

#Voor Apache:
/usr/local/etc/apache           biba/10
/usr/local/etc/apache/*         biba/10</programlisting>

      <para>Dit beleid zal beveiliging afdwingen door beperkingen aan de
	informatiestroom te stellen.  In deze specifieke configuratie
	mogen gebruikers, inclusief <username>root</username>, nooit
	toegang hebben tot <application>Nagios</application>.
	Instellingenbestanden en processen die deel zijn van
	<application>Nagios</application> zullen geheel in zichzelf
	of in een jail zitten.</para>

      <para>Dit bestand kan nu in ons systeem worden gelezen door ons
	systeem door het volgende commando uit te voeren:</para>

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

      <note>
	<para>De bovenstaande indeling van het bestandssysteem kan
	  afhankelijk van de omgeving verschillen; het moet echter op
	  elk bestandssysteem gedraaid worden.</para>
      </note>

      <para>Het bestand <filename>/etc/mac.conf</filename> dient als
	volgt in de hoofdsectie gewijzigd te worden:</para>

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

    <sect2>
      <title>Het netwerk activeren</title>

      <para>Voeg de volgende regel toe aan
	<filename>/boot/loader.conf</filename>:</para>

      <programlisting>security.mac.biba.trust_all_interfaces=1</programlisting>

      <para>En voeg het volgende toe aan de instellingen van de
	netwerkkaart opgeslagen in <filename>rc.conf</filename>.  Als de
	primaire Internetconfiguratie via <acronym>DHCP</acronym> wordt
	gedaan, kan het nodig zijn om dit handmatig te configureren
	telkens nadat het systeem is opgestart:</para>

      <programlisting>maclabel biba/equal</programlisting>
    </sect2>

    <sect2>
      <title>De configuratie testen</title>

      <indexterm><primary>MAC-configuratie testen</primary></indexterm>

      <para>Controleer dat de webserver en
	<application>Nagios</application> niet tijdens de
	systeeminitialisatie worden gestart, en start opnieuw op.
	Controleer dat de gebruiker <username>root</username> geen enkel
	bestand in de instellingenmap van
	<application>Nagios</application> kan benaderen.  Als
	<username>root</username> het commando &man.ls.1; op
	<filename>/var/spool/nagios</filename> kan uitvoeren, is er iets
	verkeerd.  Anders zou er een fout <quote>Permission
	  denied</quote> teruggegeven moeten worden.</para>

      <para>Als alles er goed uitziet, kunnen
	<application>Nagios</application>,
	<application>Apache</application>, en
	<application>Sendmail</application> nu gestart worden op een
	manier die past in het beveiligingsbeleid.  De volgende
	commando's zorgen hiervoor:</para>

      <screen>&prompt.root; <userinput>cd /etc/mail &amp;&map; make stop &amp;&amp; \
setpmac biba/equal make start &amp;&amp; setpmac biba/10\(10-10\) apachectl start &amp;&amp; \
setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart</userinput></screen>

      <para>Controleer nogmaals om er zeker van te zijn dat alles juist
	werkt.  Indien niet, controleer dan de logbestanden of de
	foutmeldingen.  Gebruik het hulpprogramma &man.sysctl.8; om de
	beveiligingsbeleidsmodule &man.mac.biba.4; uit te schakelen en
	probeer om alles opnieuw op te starten, zoals gewoonlijk.</para>

      <note>
	<para>De gebruiker <username>root</username> kan zonder angst de
	  afgedwongen beveiliging veranderen en de instellingenbestanden
	  bewerken.  Het volgende commando staat toe om het
	  beveiligingsbeleid naar een lagere graad te degraderen voor
	  een nieuw voortgebrachte shell:</para>

	<screen>&prompt.root; <userinput>setpmac biba/10 csh</userinput></screen>

	<para>Om te voorkomen dat dit gebeurt, kan de gebruiker via
	  &man.login.conf.5; in een bereik worden gedwongen.  Als
	  &man.setpmac.8; probeert om een commando buiten het bereik van
	  het compartiment te draaien, zal er een fout worden
	  teruggegeven en wordt het commando niet uitgevoerd.  Zet in
	  dit geval root op <literal>biba/high(high-high)</literal>.</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="mac-userlocked">
    <title>Gebruikers afsluiten</title>

    <para>Dit voorbeeld gaat over een relatief klein opslagsysteem met
      minder dan vijftig gebruikers.  Gebruikers kunnen zich aanmelden,
      en mogen zowel gegevens opslaan als bronnen benaderen.</para>

    <para>Voor dit scenario kunnen &man.mac.bsdextended.4; gecombineerd
      met &man.mac.seeotheruids.4; naast elkaar bestaan en zowel toegang
      tot systeemobjecten als tot gebruikersprocessen ontzeggen.</para>

    <para>Begin door de volgende regel aan
      <filename>/boot/loader.conf</filename> toe te voegen:</para>

    <programlisting>mac_seeotheruids_load="YES"</programlisting>

    <para>Het beveiligingsbeleidsmodule &man.mac.bsdextended.4; kan door
      volgende variabele in rc.conf geactiveerd worden:</para>

    <programlisting>ugidfw_enable="YES"</programlisting>

    <para>De standaardregels in <filename>/etc/rc.bsdextended</filename>
      zullen tijdens de systeeminitialisatie worden geladen; het kan
      echter nodig zijn om de standaardregels te wijzigen.  Aangezien
      van deze machine alleen verwacht wordt dat het gebruikers bedient,
      kunnen alle regels uitgecommentarieerd blijven behalve de laatste
      twee.  Deze forceren het standaard laden van systeemobjecten die
      eigendom zijn van gebruikers.</para>

    <para>Voeg de benodigde gebruikers toe aan deze machine en start
      opnieuw op.  Probeer, voor testdoeleinden, u aan te melden als een
      andere gebruiker over twee consoles.  Draai het commando
      <command>ps aux</command> om te zien of processen van andere
      gebruikers zichtbaar zijn.  Probeer om &man.ls.1; te draaien op de
      thuismap van een andere gebruiker, dit zou moeten mislukken.</para>

    <para>Probeer niet te testen met de gebruiker
      <username>root</username> tenzij de specifieke
      <command>sysctl</command>'s om supergebruikertoegang te blokkeren
      zijn aangepast.</para>

    <note>
      <para>Wanneer een nieuwe gebruiker is toegevoegd, zit de
	&man.mac.bsdextended.4;-regel van die gebruiker niet in de lijst
	van regelverzamelingen.  Om de regelverzameling snel bij te
	werken, kan simpelweg de beveiligingsbeleidsmodule worden
	herladen met de gereedschappen &man.kldunload.8; en
	&man.kldload.8;.</para>
    </note>
  </sect1>

  <sect1 id="mac-troubleshoot">
    <title>Problemen oplossen met het MAC-raamwerk</title>

    <indexterm><primary>MAC-problemen oplossen</primary></indexterm>

    <para>Tijdens de ontwikkeling hebben een aantal gebruikers problemen
      aangegeven met normale instellingen.  Hieronder worden een aantal
      van die problemen beschreven:</para>

    <sect2>
      <title>De optie <option>multilabel</option> kan niet ingeschakeld
	worden op <filename>/</filename></title>

      <para>De vlag <option>multilabel</option> blijft niet ingeschakeld
	op de rootpartitie (<filename>/</filename>)!</para>

      <para>Het lijkt er inderdaad op dat een paar procent van de
	gebruikers dit probleem heeft.  Nadere analyse van het probleem
	doet vermoeden dat deze zogenaamde <quote>bug</quote> het
	resultaat is van òfwel onjuiste documentatie òfwel
	verkeerde interpretatie van de documentatie.  Hoe het probleem
	ook is ontstaan, met de volgende stappen is het te verhelpen:</para>

      <procedure>
	<step>
	  <para>Wijzig <filename>/etc/fstab</filename> en stel de
	    rootpartitie in op <option>ro</option> voor alleen-lezen.</para>
	</step>

	<step>
	  <para>Herstart in enkele-gebruikersmodus.</para>
	</step>

	<step>
	  <para>Draai <command>tunefs</command> <option>-l enable</option> op
	    <filename>/</filename>.</para>
	</step>

	<step>
	  <para>Herstart in normale modus.</para>
	</step>

	<step>
	  <para>Draai <command>mount</command> <option>-urw</option>
	    <filename>/</filename> en wijzig <option>ro</option> terug
	    in <option>rw</option> in <filename>/etc/fstab</filename> en
	    start het systeem opnieuw.</para>
	</step>

	<step>
	  <para>Controleer de uitvoer van <command>mount</command> om
	    zeker te zijn dat <option>multilabel</option> juist is
	    ingesteld op het rootbestandssysteem.</para>
	</step>
      </procedure>
    </sect2>

    <sect2>
      <title>X11-server start niet na <acronym>MAC</acronym></title>

      <para>Na het instellen van een beveiligde omgeving met
	<acronym>MAC</acronym> start X niet meer!</para>

      <para>Dit kan komen door de <acronym>MAC</acronym>-beleidseenheid
	<literal>partition</literal> of door een verkeerde labeling van
	een van de <acronym>MAC</acronym>-labeling beleidseenheden.
	Probeer als volgt te debuggen:</para>

      <procedure>
	<step>
	  <para>Controleer de foutmelding.  Als de gebruiker in de
	    klasse <literal>insecure</literal> zit, kan de
	    beleidseenheid <literal>partition</literal> het probleem
	    zijn.  Zet de klasse voor de gebruiker terug naar de klasse
	    <literal>default</literal> en herbouw de database met het
	    commando <command>cap_mkdb</command>.  Ga naar stap twee als
	    hiermee het probleem niet is opgelost.</para>
	</step>

	<step>
	  <para>Controleer de labelbeleidseenheden nog een keer.  Stel
	    zeker dat het beleid voor de bewuste gebruiker, de
	    X11-applicatie, en de onderdelen van <filename
	      class="directory">/dev</filename> juist zijn ingesteld.</para>
	</step>

	<step>
	  <para>Als geen van beide methodes het probleem oplossen, stuur
	    dan de foutmelding en een beschrijving van de omgeving naar
	    de TrustedBSD-discussielijsten van de <ulink
	      url="http://www.TrustedBSD.org">TrustedBSD</ulink>
	    website of naar de &a.questions; mailinglijst.</para>
	</step>
      </procedure>
    </sect2>

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

      <para>Bij het wisselen van de gebruiker <username>root</username>
	naar een andere gebruiker in het systeem, verschijnt de
	foutmelding
	<errorname>_secure_path: unable to state .login_conf</errorname>.</para>

      <para>Deze melding komt meestal voor als de gebruiker een hogere
	labelinstelling heeft dan de gebruiker waarnaar wordt
	gewisseld.  Als bijvoorbeeld gebruiker <username>joe</username>
	een standaardlabel <option>biba/low</option> heeft, dan kan
	gebruiker <username>root</username>, die een label
	<option>biba/high</option> heeft, de thuismap van
	<username>joe</username> niet zien.  Dit gebeurt zonder
	rekening te houden met de mogelijkheid dat
	<username>root</username> met <command>su</command> de
	identiteit van <username>joe</username> heeft aangenomen.  In
	dit scenario staat het integriteitsmodel van Biba niet toe dat
	<username>root</username> objecten kan zien van een lager
	integriteitsniveau.</para>
    </sect2>

    <sect2>
      <title>De gebruikersnaam <username>root</username> is
	stuk!</title>

      <para>In normale, of zelfs in enkelegebruikersmodus, wordt
	<username>root</username> niet herkend.  Het commando
	<command>whoami</command> geeft 0 (nul) terug en
	<command>su</command> heeft als resultaat <errorname>who are
	  you?</errorname>.  Wat is er aan de hand?</para>

      <para>Dit kan gebeuren als een labelbeleid is uitgeschakeld,
	òfwel door &man.sysctl.8; òf doordat de
	beleidsmodule niet meer is geladen.  Als de beleidseenheid
	(tijdelijk) is uitgeschakeld dan moet de database met
	aanmeldmogelijkheden opnieuw worden ingesteld, waarbij de optie
	<option>label</option> wordt verwijderd.  Er dient voor te
	worden zorggedragen dat het bestand
	<filename>login.conf</filename> wordt ontdaan van alle opties
	met <option>label</option>, waarna de database opnieuw gebouwd
	kan worden met <command>cap_mkdb</command>.</para>

      <para>Dit kan ook gebeuren als een beleid toegang verhinderd tot
	het bestand of de database <filename>master.passwd</filename>.
	Meestal wordt dit veroorzaakt door een beheerder die het bestand
	veranderd onder een label welke conflicteert met het globale
	beleid dat gebruikt wordt op het systeem.  In deze gevallen
	wordt de gebruikersinformatie gelezen door het systeem en wordt
	de toegang geblokkeerd omdat het bestand het nieuwe label erft.
	Zet het beleid uit door middel van &man.sysctl.8; en alles zou
	weer normaal moeten zijn.</para>
    </sect2>
  </sect1>
</chapter>