aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/books/handbook/security/chapter.xml
blob: ccbbc6c8836da5fd5645d3c178258552a24ec7dc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     Original revision: 1.155
-->

<chapter id="security">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Matthew</firstname>
	<surname>Dillon</surname>
	<contrib>Une grande partie de ce chapitre provient de la page
	  de manuel security(7) écrite par </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Sécurité</title>
  <indexterm><primary>sécurité</primary></indexterm>
  &trans.a.fonvieille;

  <sect1 id="security-synopsis">
    <title>Synopsis</title>

    <para>Ce chapitre sera une introduction aux concepts de base de la
      sécurité système, &agrave; certaines
      règles empiriques, et &agrave;
      des sujets avancés sous &os;.  De nombreux sujets
      abordés ici peuvent être appliqués &agrave;
      la sécurité système et &agrave; l'Internet en
      général.
      L'Internet n'est plus un endroit &ldquo;amical&rdquo;
      dans lequel chacun désire être votre gentil voisin.
      Sécuriser votre système est impératif pour
      protéger vos données, la propriété
      intellectuelle,
      votre temps, et bien plus des mains des &ldquo;hackers&rdquo; et
      équivalents.</para>

    <para>&os; fournit un ensemble d'utilitaires et de mécanismes
      pour assurer l'intégrité et la sécurité
      de votre système et votre réseau.</para>

    <para>Après la lecture de ce chapitre, vous
      connaîtrez:</para>

    <itemizedlist>
      <listitem>
	<para>Les concepts de base de la sécurité
	  système en ce qui concerne &os;.</para>
      </listitem>

      <listitem>
	<para>Les différents mécanismes de chiffrement
	  disponibles sous &os;, comme <acronym>DES</acronym> et <acronym>MD5</acronym>.</para>
      </listitem>

      <listitem>
	<para>Comment mettre en place une authentification
	  par mot de passe non réutilisable.</para>
      </listitem>

      <listitem>
	<para>Comment configurer l'encapsuleur <acronym>TCP</acronym>
	  pour une utilisation avec
	  <application>inetd</application>.</para>
      </listitem>

      <listitem>
	<para>Comment configurer <application>KerberosIV</application>
	  sous les versions de &os; antérieures &agrave; la
	  5.0.</para>
      </listitem>

      <listitem>
	<para>Comment configurer <application>Kerberos5</application>
	  sous &os;.</para>
      </listitem>

      <listitem>
	<para>Comment configurer IPsec et mettre en place un
	  <acronym>VPN</acronym> entre machines &os; et
	  &windows;.</para>
      </listitem>

      <listitem>
	<para>Comment configurer et utiliser
	  <application>OpenSSH</application>, la version de
	  <acronym>SSH</acronym> implémentée sous
	  &os;.</para>
      </listitem>

      <listitem>
	<para>Ce que sont les <acronym>ACL</acronym>s et comment les
	  utiliser.</para>
      </listitem>

      <listitem>
	<para>Comment employer l'utilitaire
	  <application>Portaudit</application> pour l'audit des
	  logiciels tierce-partie installés &agrave; partir du
	  catalogue des logiciels portés.</para>
      </listitem>

      <listitem>
	<para>Comment utiliser les avis de sécurité de
	  &os;.</para>
      </listitem>

      <listitem>
	<para>Ce qu'est la comptabilité des processus et
	  comment l'activer sous &os;.</para>
      </listitem>
    </itemizedlist>

    <para>Avant de lire ce chapitre, vous devrez:</para>

    <itemizedlist>
      <listitem>
	<para>Comprendre les concepts de base de &os; et
	  d'Internet.</para>
      </listitem>
    </itemizedlist>

    <para>D'autres sujets relatifs &agrave; la sécurité
      sont abordés par ailleurs dans ce Manuel.  Par exemple,
      le contrôle d'accès obligatoire est
      présenté dans le <xref linkend="mac"/> et les
      coupe-feux Internet sont développés dans le <xref
      linkend="firewalls"/>.</para>
  </sect1>

  <sect1 id="security-intro">
    <title>Introduction</title>

    <para>La sécurité est un domaine qui débute
      et se termine au niveau de l'administrateur système.
      Alors que tous les systèmes multi-utilisateurs &unix; BSD
      ont des sécurités inhérentes, la mise en
      place et la maintenance des mécanismes
      supplémentaires de sécurité pour conserver
      des utilisateurs <quote>honnêtes</quote> est probablement
      une des tâches les plus vastes de l'administrateur
      système.  La sécurité des machines est
      celle que vous voulez bien mettre en oeuvre, de plus les
      préoccupations en matière de
      sécurité sont plus que jamais en concurrence avec
      les besoins de confort des utilisateurs.  Les systèmes
      &unix; sont, en général, capables
      d'exécuter un nombre important de processus
      simultanément et plusieurs de ces processus fonctionnent
      en tant que serveur &mdash; cela signifiant que des
      entités extérieures peuvent se connecter et
      échanger avec ces processus.  Comme les mini-ordinateurs
      et les gros ordinateurs d'hier deviennent aujourd'hui nos
      ordinateurs de bureau, et comme les ordinateurs sont
      désormais en réseau et reliés &agrave;
      Internet, la sécurité devient d'autant plus un
      problème majeur.</para>

    <para>La sécurité système concerne
      également la lutte contre les diverses formes d'attaque,
      y compris les attaques destinées &agrave; faire planter,
      ou &agrave; rendre inutilisable le système, mais qui ne
      cherchent pas &agrave; compromettre le compte
      <username>root</username>.  Les problèmes de
      sécurité peuvent être divisés en
      plusieurs catégories:</para>

    <orderedlist>
      <listitem>
	<para>Attaques par déni de service.</para>
      </listitem>

      <listitem>
	<para>Compte utilisateur compromis.</para>
      </listitem>

      <listitem>
	<para>Le compte <username>root</username> compromis par
	  l'intermédiaire de serveurs accessibles.</para>
      </listitem>

      <listitem>
	<para>Le compte <username>root</username> compromis par
	  l'intermédiaire de comptes utilisateur.</para>
      </listitem>

      <listitem>
	<para>Création d'une <quote>Backdoor</quote> (porte
	  dérobée).</para>
      </listitem>
    </orderedlist>

    <indexterm>
      <primary>attaques DoS</primary>
      <see>déni de service (DoS)</see>
    </indexterm>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>attaques DoS</secondary>
      <see>déni de service (DoS)</see>
    </indexterm>
    <indexterm><primary>déni de service
      (DoS)</primary></indexterm>

    <para>Une attaque par déni de service (<quote>DoS</quote>)
      est une action qui prive la machine de ressources
      nécessaires &agrave; son bon fonctionnement.
      Généralement, les attaques par déni de
      service sont des mécanismes de force brute qui tentent de
      faire planter ou tout au moins de rendre inutilisable la machine
      en saturant ses serveurs ou sa pile réseau.  Certaines
      attaques par déni de service peuvent se servir de bogues
      présents dans la pile réseau pour faire planter
      une machine avec un seul paquet.  Ces problèmes ne
      peuvent être corrigés que par l'application d'un
      correctif sur le noyau.  On peut souvent remédier aux
      attaques sur les serveurs en fixant correctement des options
      pour limiter la charge que provoquent ces serveurs sur le
      système lors de conditions critiques.  Les attaques
      réseau par force brute sont plus difficiles &agrave;
      traiter.  Une attaque par paquets usurpés
      (<quote>spoofed-packet</quote>), par exemple, est
      quasi-impossible &agrave; arrêter, &agrave; moins de
      déconnecter de l'Internet votre système.  Elle
      peut ne pas être en mesure de stopper votre machine, mais
      elle peut saturer votre connexion Internet.</para>

    <indexterm>
      <primary>sécurité</primary>
      <secondary>comptes compromis</secondary>
    </indexterm>

    <para>La compromission d'un compte utilisateur est bien plus
      fréquente qu'une attaque de type DoS.  De nombreux
      administrateurs utilisent toujours sur leurs machines les
      versions standards des serveurs
      <application>telnetd</application>,
      <application>rlogind</application>,
      <application>rshd</application>, et
      <application>ftpd</application>.  Par défaut, ces
      serveurs ne fonctionnent pas avec des connexions
      chiffrées.  Cela aura pour résultat si vous
      disposez d'un nombre d'utilisateurs conséquent qu'un ou
      plusieurs de ces utilisateurs ayant l'habitude de se connecter
      &agrave; partir d'une machine distante (ce qui représente
      la manière la plus courante et la plus pratique pour
      ouvrir une session sur un système) auront leur mot de
      passe <quote>sniffé</quote>.  L'administrateur
      système méticuleux analysera ses journaux de
      connexions effectuées &agrave; partir de machines
      distantes &agrave; la recherche d'adresses sources suspectes
      même pour les ouvertures de sessions ayant
      réussies.</para>

    <para>Il faut toujours supposer qu'une fois l'attaquant a
      l'accès &agrave; un compte utilisateur, il pourra
      s'attaquer et avoir accès au compte
      <username>root</username>.  Cependant, la réalité
      est que dans un système bien sécurisé et
      surveillé, l'accès &agrave; un compte utilisateur
      ne donne pas nécessairement &agrave; l'attaquant
      l'accès au compte <username>root</username>.  Cette
      distinction est importante car sans accès aux droits de
      <username>root</username>, l'attaquant ne peut
      généralement pas dissimuler ses traces et peut,
      dans le meilleur des cas, ne rien faire d'autre que mettre la
      pagaille dans les fichiers de l'utilisateur ou faire planter la
      machine.  La compromission de comptes utilisateur est
      très fréquente parce que les utilisateurs n'ont
      pas l'habitude de prendre les précautions que prennent
      les administrateurs système.</para>

    <indexterm>
      <primary>sécurité</primary>
      <secondary>backdoors</secondary>
    </indexterm>

    <para>Les administrateurs doivent garder &agrave; l'esprit qu'il
      existe potentiellement de nombreuses manières d'avoir
      accès au compte <username>root</username> sur une
      machine.  L'attaquant peut connaître le mot de passe
      <username>root</username>, l'attaquant peut trouver un bogue
      dans un serveur tournant avec les droits de
      <username>root</username> et être en mesure de devenir
      <username>root</username> par l'intermédiaire d'une
      connexion réseau &agrave; ce serveur, ou l'attaquant peut
      connaître un bogue dans un programme suid-root qui permet
      de devenir <username>root</username> une fois qu'il a
      accédé &agrave; un compte utilisateur.  Si un
      attaquant a trouvé un moyen de devenir
      <username>root</username> sur une machine, il n'aura
      peut-être pas besoin d'installer une
      <quote>backdoor</quote> (porte dérobée).  De
      nombreux trous de sécurité
      <username>root</username> trouvés et fermés
      &agrave; temps demandent un travail considérable &agrave;
      l'attaquant pour effacer ses traces, aussi la plupart des
      attaquants installe des portes dérobées.  Une
      porte dérobée offre &agrave; l'attaquant un moyen
      aisé d'avoir &agrave; nouveau accès aux droits de
      <username>root</username> sur le système, mais cela donne
      également &agrave; l'administrateur système
      intelligent un bon moyen de détecter l'intrusion.  Rendre
      impossible &agrave; un attaquant l'installation d'une porte
      dérobée peut en fait être
      préjudiciable &agrave; votre sécurité,
      parce que cela ne fermera pas le trou qu'a découvert en
      premier lieu l'attaquant pour pénétrer sur le
      système.</para>

    <para>Les solutions aux problèmes de sécurité
      devraient toujours être mises en place suivant l'approche
      multi-couches de <quote>la pelure d'oignon</quote>, elles
      peuvent être classées comme suit:</para>

    <orderedlist>
      <listitem>
	<para>Sécuriser les comptes <username>root</username>
	  et d'administration.</para>
      </listitem>

      <listitem>
	<para>Sécuriser les serveurs exécutés
	  avec les droits de <username>root</username> et les binaires
	  suid/sgid.</para>
      </listitem>

      <listitem>
	<para>Sécuriser les comptes utilisateurs.</para>
      </listitem>

      <listitem>
	<para>Sécuriser le fichier des mots de passe.</para>
      </listitem>

      <listitem>
	<para>Sécuriser le noyau, les
	  périphériques et les systèmes de
	  fichiers.</para>
      </listitem>

      <listitem>
	<para>Installer un mécanisme de détection rapide
	  des modifications inappropriées apportées au
	  système.</para>
      </listitem>

      <listitem>
	<para>La paranoïa.</para>
      </listitem>
    </orderedlist>

    <para>La section suivante de ce chapitre abordera de
      manière plus approfondie les points énoncés
      ci-dessus.</para>
  </sect1>

  <sect1 id="securing-freebsd">
    <title>Securing FreeBSD ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="crypt">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Bill</firstname>
	  <surname>Swingle</surname>
	  <contrib>En partie réécrit et mis &agrave; jour
	    par </contrib>
	</author>
      </authorgroup>
      <!-- 21 Mar 2000 -->
    </sect1info>

    <title>DES, MD5, et chiffrement</title>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>chiffrement</secondary>
    </indexterm>

    <indexterm><primary>chiffrement</primary></indexterm>
    <indexterm><primary>DES</primary></indexterm>
    <indexterm><primary>MD5</primary></indexterm>

    <para>Chaque utilisateur d'un système &unix; possède un
      mot de passe associé &agrave; son compte.
      Il semble évident
      que ces mots de passe ne doivent être connus que de
      l'utilisateur et du système d'exploitation.  Afin de
      conserver ces mots de passe secrets, ils sont chiffrés
      avec ce que l'on appelle un &ldquo;hachage
      irréversible&rdquo;, ce qui signifie que le mot de passe
      peut être aisément chiffré mais pas
      déchiffré.
      En d'autres mots, ce que nous vous disions précédemment
      n'est même pas vrai: le système d'exploitation
      lui-même ne connaît pas <emphasis>vraiment</emphasis>
      le mot de passe.  Il ne connaît que la forme
      <emphasis>chiffrée</emphasis> du mot de passe.  La
      seule manière d'obtenir le mot de passe en
      <emphasis>clair</emphasis> est d'effectuer une recherche par
      force brute de tous les mots de passe possibles.</para>

    <para>Malheureusement, la seule méthode sécurisée
      pour chiffrer les mots de passe quand &unix; a vu le jour
      était basée sur DES, le &ldquo;Data Encryption
      Standard&rdquo; (standard de chiffrement des données).
      C'était un problème mineur pour les utilisateurs
      résidants aux Etats-Unis, mais puisque le code source
      de DES ne pouvait être exporté en dehors des Etats-Unis,
      &os; dû trouver un moyen de respecter la législation
      américaine et de rester compatible avec les autres
      systèmes &unix; qui utilisaient encore DES.</para>

    <para>La solution fut de séparer les bibliothèques
      de chiffrement de façon &agrave; ce que les utilisateurs
      américains puissent installer les bibliothèques DES
      et utiliser DES, mais que les utilisateurs internationaux
      disposent d'une méthode de chiffrement non restreinte
      &agrave; l'exportation.  C'est comment &os; est venu &agrave;
      utiliser MD5 comme méthode de chiffrement par défaut.
      MD5 est reconnu comme étant plus sure que DES,
      l'installation de DES est proposée principalement
      pour des raisons de compatibilité.</para>

    <sect2>
      <title>Identifier votre mécanisme de chiffrement</title>

      <para>Avant FreeBSD&nbsp;4.4 <filename>libcrypt.a</filename>
	était un lien symbolique pointant sur la bibliothèque
	utilisée pour le chiffrement.  FreeBSD&nbsp;4.4 modifia
	<filename>libcrypt.a</filename> pour fournir une bibliothèque
	de hachage pour l'authentification des mots de passe
	configurable.  Actuellement la bibliothèque supporte les
	fonctions de hachage DES, MD5 et Blowfish.  Par défaut
	&os; utilise MD5 pour chiffrer les mots de passe.</para>

      <para>Il est relativement facile d'identifier quelle
	méthode de chiffrement &os; utilise.  Examiner les
	mots de passe chiffrés dans le fichier
	<filename>/etc/master.passwd</filename> est une méthode.
	Les mots de passe MD5 sont plus longs que les mots de passe
	DES, et commencent par les caractères
	<literal>&dollar;1&dollar;</literal>.  Les mots de passe
	débutant par <literal>&dollar;2&dollar;</literal> sont
	chiffrés suivant la méthode Blowfish.  Les mots de
	passe DES n'ont pas de caractéristique particulière,
	mais sont plus courts que les mots de passe MD5 et utilisent
	un alphabet de 64 caractères qui ne contient pas le
	caractère <literal>&dollar;</literal>, aussi une
	chaîne relativement courte qui ne commence pas par un dollar
	a donc de très fortes chances d'être un mot de passe
	DES.</para>

      <para>Le format utilisé par les nouveaux mots de passe est
	contrôlé par la capacité de classe de session
	<literal>passwd_format</literal> dans
	<filename>/etc/login.conf</filename>, qui prend comme
	valeur <literal>des</literal>, <literal>md5</literal> ou
	<literal>blf</literal>.  Voir la page de manuel
	&man.login.conf.5; pour plus d'information sur les
	capacités de classe de session.</para>

    </sect2>
  </sect1>

  <sect1 id="one-time-passwords">
    <title>Mots de passe non réutilisables</title>
    <indexterm><primary>mots de passe non réutilisables</primary></indexterm>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>mots de passe non réutilisables</secondary>
    </indexterm>

    <para>S/Key est un système de mots de passe non
      réutilisables basé sur une fonction de hachage
      irréversible.  &os; utilise le hachage MD4 pour des
      raisons de compatibilité mais d'autres système
      utilisent MD5 et DES-MAC.  S/Key fait partie du système
      de base de &os; depuis la version 1.1.5 et est aussi
      utilisé sur un nombre toujours plus important d'autres
      systèmes d'exploitation.  S/Key est une marque
      déposée de Bell
      Communications Research, Inc.</para>

    <para>Depuis la version 5.0 de &os;, S/Key a été
      remplacé par la fonction équivalente OPIE
      (&ldquo;One-time Passwords In Everything&rdquo; &mdash; Mots de
      passe non réutilisables dans toutes les applications).
      OPIE utilise le hachage MD5 par défaut.</para>

    <para>Il existe trois types de mots de passe dont nous parlerons
      dans ce qui suit.  Le premier est votre mot de passe &unix;
      habituel ou mot de passe Kerberos; nous appellerons &ldquo;mot
      de passe &unix;&ldquo;.  Le deuxième type est le mot de passe
      généré par les programmes
      S/Key <command>key</command> ou
      OPIE &man.opiekey.1; et reconnu par les programmes
      <command>keyinit</command> ou &man.opiepasswd.1; et l'invite
      de session; nous appellerons ceci un &ldquo;mot de passe non
      réutilisable&rdquo;.  Le dernier type de mot de passe
      est le mot de passe secret que vous donnez aux programmes
      <command>key</command>/<command>opiekey</command> (et parfois
      aux programmes
      <command>keyinit</command>/<command>opiepasswd</command>) qui
      l'utilisent pour générer des mots de passe non
      réutilisable; nous l'appellerons &ldquo;mot de passe
      secret&rdquo; ou tout simplement &ldquo;mot de
      passe&rdquo;.</para>

    <para>Le mot de passe secret n'a rien &agrave; voir avec
      votre mot de passe &unix;; ils peuvent être identique,
      mais c'est déconseillé.  Les mots de passe secret
      S/Key et OPIE ne sont pas limités &agrave; 8
      caractères comme les
      anciens mots de passe &unix;<footnote><para>Sous &os; le mot de
      passe standard peut avoir une longueur de 128 caractères
      maximum.</para></footnote>, ils peuvent avoir la longueur que
      vous désirez.  Des mots de passe de six ou sept mots de long
      sont relativement communs.  La plupart du temps, le système
      S/Key ou OPIE fonctionne de façon complètement
      indépendante du système de mot de passe &unix;.</para>

    <para>En plus du mot de passe, deux autres types de données
      sont importantes pour S/Key et OPIE.  L'une d'elles est
      connue sous le nom de &ldquo;germe&rdquo; (&ldquo;seed&rdquo;)
      ou &ldquo;clé&rdquo;, formé de deux lettres et
      cinq chiffres.  L'autre est ce que l'on appelle le
      &ldquo;compteur d'itérations&rdquo;, un nombre compris
      entre 1 et 100.  S/Key génère un mot de passe non
      réutilisable en concaténant le germe et le mot de
      passe secret, puis en appliquant la fonction de hachage MD4/MD5
      autant de fois qu'indiqué par le compteur
      d'itérations, et en convertissant le résultat en
      six courts mots anglais.
      Ces six mots anglais constituent votre mot de
      passe non réutilisable.  Le système d'authentification
      (principalement PAM) conserve une trace du dernier mot de passe
      non réutilisable utilisé, et l'utilisateur est
      authentifié si la valeur de hachage du mot de passe fourni par
      l'utilisateur est la même que celle du mot de passe
      précédent.  Comme le hachage utilisé est
      irréversible, il est impossible de générer
      de mot de passe non réutilisable si on a surpris un de
      ceux qui a été utilisé avec succès; le
      compteur d'itérations est décrémenté
      après chaque ouverture de session réussie, de sorte que
      l'utilisateur et le programme d'ouverture de session restent en
      phase.  Quand le compteur d'itération passe &agrave; 1,
      S/Key et OPIE doivent être
      réinitialisés.</para>

    <para>Il y a trois programmes impliqués dans chacun des
      systèmes que nous aborderons plus bas.  Les programmes
      <command>key</command> et <command>opiekey</command> ont pour
      paramètres un compteur d'itérations, un germe, et un
      mot de passe secret, et génère un mot
      de passe non réutilisable ou une liste de mots
      de passe non réutilisable.  Les programmes
      <command>keyinit</command> et <command>opiepasswd</command>
      sont utilisés pour initialiser respectivement
      S/Key et OPIE, et pour modifier les mots de passe, les compteurs
      d'itérations, ou les germes; ils prennent pour
      paramètres soit un mot de passe secret, soit un compteur
      d'itérations, soit un germe, et un mot de passe non
      réutilisable.  Le programme <command>keyinfo</command> ou
      <command>opieinfo</command> consulte le fichier d'identification
      correspondant (<filename>/etc/skeykeys</filename> ou
      <filename>/etc/opiekeys</filename>) et imprime la valeur du
      compteur d'itérations et le germe de l'utilisateur qui l'a
      invoqué.</para>

    <para>Nous décrirons quatre sortes d'opérations.  La
      première est l'utilisation du programme
      <command>keyinit</command> ou <command>opiepasswd</command> sur
      une connexion sécurisée pour initialiser les mots
      de passe non réutilisables pour la première
      fois, ou pour modifier votre mot de passe ou votre germe.
      La seconde opération est l'emploi des programmes
      <command>keyinit</command> ou <command>opiepasswd</command>
      sur une connexion non sécurisée, en conjonction
      avec <command>key</command> ou <command>opiekey</command> sur
      une connexion sécurisée, pour faire la même
      chose.  La troisième est l'utilisation de
      <command>key</command>/<command>opiekey</command> pour ouvrir
      une session sur une connexion non sécurisée.
      La quatrième est l'emploi de <command>key</command>
      ou <command>opiekey</command> pour générer
      un certain nombre de clés qui peuvent être
      notées ou imprimées et emportées avec vous
      quand vous allez quelque part ou il n'y a aucune connexion
      sécurisée.</para>

    <sect2>
      <title>Initialisation depuis une connexion
	sécurisée</title>

      <para>Pour initialiser S/Key pour la première fois,
	changer votre mot de passe, ou changer votre germe quand
	vous êtes attaché sous votre compte par
	l'intermédiaire d'une connexion sécurisée
	(e.g., sur la console d'une machine ou via
	<application>ssh</application>), utilisez la commande
	<command>keyinit</command> sans paramètres:</para>

      <screen>&prompt.user; <userinput>keyinit</userinput>
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:

ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFT</screen>

      <para>Pour OPIE, <command>opiepasswd</command> est
	utilisé &agrave; la place:</para>

      <screen>&prompt.user; <userinput>opiepasswd -c</userinput>
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
</screen>

      <para>A l'invite <prompt>Enter new secret pass phrase:</prompt>
	ou <prompt>Enter secret password:</prompt>, vous devez entrer
	un mot de passe ou une phrase.  Rappelez-vous que ce n'est pas
	le mot de passe que vous utiliserez pour ouvrir une session,
	mais celui utilisé pour générer vos clés
	non réutilisables.  La ligne commençant par
	&ldquo;ID&rdquo; liste les paramètres de votre instance:
	votre nom d'utilisateur, la valeur de votre compteur
	d'itérations et votre germe.  Quand vous ouvrirez une
	session, le système aura mémorisé ces
	paramètres et vous les redonnera, vous n'avez donc
	pas besoin de les retenir.  La dernière ligne
	donne le mot de passe non réutilisable correspondant
	&agrave; ces paramètres et &agrave; votre mot de passe secret;
	si vous devez vous reconnectez immédiatement, c'est ce
	mot de passe que vous utiliseriez.</para>
    </sect2>

    <sect2>
      <title>Initialisation depuis une connexion non
	sécurisée</title>

      <para>Pour initialiser ou changer votre mot de passe secret
	par l'intermédiaire d'une connexion non
	sécurisée, il faudra avoir déj&agrave;
	une connexion sécurisée sur une machine
	où vous pouvez exécuter <command>key</command> ou
	<command>opiekey</command>; ce peut être
	depuis une icone sur le bureau d'un Macintosh
	ou depuis la ligne de commande d'une machine sûre.
	Il vous faudra également donner une valeur au compteur
	d'itération (100 est probablement une bonne valeur),
	et indiquer un germe ou utiliser la valeur aléatoire
	générée par le programme.  Sur la connexion non
	sécurisée (vers la machine que vous initialisez),
	employez la commande <command>keyinit -s</command>:</para>

      <screen>&prompt.user; <userinput>keyinit -s</userinput>
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: <userinput>100</userinput>
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:<userinput>CURE MIKE BANE HIM RACY GORE</userinput>
</screen>

      <para>Pour OPIE, vous devez utiliser <command>opiepasswd</command>:</para>

      <screen>&prompt.user; <userinput>opiepasswd</userinput>

Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
        otp-md5 498 to4268 ext
        Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
        otp-md5 499 to4269
        Response: LINE PAP MILK NELL BUOY TROY

ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
</screen>

      <para>Pour accepter le germe par défaut (que le programme
	<command>keyinit</command> appelle <literal>key</literal>,
	ce qui prête &agrave; confusion), appuyez sur
	<keycap>Entrée</keycap>.  Ensuite avant d'entrer un mot de
	passe d'accès, passez sur votre connexion
	sécurisée et donnez lui les mêmes
	paramètres:</para>

      <screen>&prompt.user; <userinput>key 100 to17759</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <userinput>&lt;secret password&gt;</userinput>
CURE MIKE BANE HIM RACY GORE</screen>

      <para>Ou pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
</screen>

      <para>Retournez maintenant sur votre connexion non
	sécurisée, et copiez le mot de passe
	non réutilisable généré par le programme
	adapté.</para>
    </sect2>

    <sect2>
      <title>Générer un unique mot de passe non
	réutilisable</title>

      <para>Une fois que vous avez initialisé S/Key ou OPIE,
	lorsque que vous ouvrez une session, une invite de ce type
	apparaîtra:</para>

<screen>&prompt.user; <userinput>telnet example.com</userinput>
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.

FreeBSD/i386 (example.com) (ttypa)

login: <userinput>&lt;username&gt;</userinput>
s/key 97 fw13894
Password: </screen>

      <para>Ou pour OPIE:</para>

<screen>&prompt.user; <userinput>telnet example.com</userinput>
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.

FreeBSD/i386 (example.com) (ttypa)

login: <userinput>&lt;username&gt;</userinput>
otp-md5 498 gr4269 ext
Password: </screen>

      <para>Les invites S/Key et OPIE disposent d'une fonction utile
	(qui n'est pas illustrée ici): si vous appuyez sur la touche
	<keycap>Entrée</keycap> lorsque l'on vous demande votre
	mot de passe, le programme active l'écho au terminal, de
	sorte que vous voyez ce que vous êtes en train de taper.
	Ceci est très utile si vous essayez de taper un mot de
	passe &agrave; la main, &agrave; partir d'un résultat
	imprimé par exemple.</para>

      <indexterm><primary>MS-DOS</primary></indexterm>
      <indexterm><primary>Windows</primary></indexterm>
      <indexterm><primary>MacOS</primary></indexterm>

      <para>A ce moment vous devez générer votre
	mot de passe non réutilisable pour répondre &agrave;
	cette invite de session.  Cela doit être effectué
	sur une machine de confiance sur laquelle vous pouvez
	exécuter <command>key</command> ou
        <command>opiekey</command> (il y a des versions de ces
	programmes pour DOS, Windows et MacOS).  Ces programmes
	ont besoin du compteur d'itérations et du germe comme
	paramètres.  Vous pouvez les copier-coller de l'invite de
	session de la machine sur laquelle vous voulez ouvrir une
	session.</para>

      <para>Sur le système sûr:</para>

      <screen>&prompt.user; <userinput>key 97 fw13894</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAG</screen>

      <para>Pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT</screen>

      <para>Maintenant que vous disposez de votre mot de passe non
	réutilisable vous pouvez continuer et vous
	connecter:</para>

      <screen>login: <userinput>&lt;username&gt;</userinput>
s/key 97 fw13894
Password: <userinput>&lt;return to enable echo&gt;</userinput>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... </screen>

    </sect2>

    <sect2>
      <title>Générer de multiples mots de passe
	non réutilisables</title>

      <para>Il faut parfois se rendre en des endroits où
	vous n'avez pas accès &agrave; une machine de confiance
	ou &agrave; une connexion sécurisée.  Dans ce cas, vous
	pouvez utiliser la commande <command>key</command> ou
	<command>opiekey</command> pour générer plusieurs
	mots de passe non réutilisables que vous pouvez imprimer
	et transporter avec vous.  Par exemple:</para>

      <screen>&prompt.user; <userinput>key -n 5 30 zz99999</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <userinput>&lt;secret password&gt;</userinput>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILK</screen>

      <para>Ou pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey -n 5 30 zz99999</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHI</screen>

      <para>L'option <option>-n 5</option> demande cinq clés en
	séquence, l'option <option>30</option> indique quel doit
	être le rang de la dernière itération.  Notez que
	les clés sont imprimées dans l'ordre
	<emphasis>inverse</emphasis> de celui où elles seront
	éventuellement utilisées.  Si vous êtes
	vraiment paranoïaque, vous pouvez les recopier &agrave; la main,
	sinon vous pouvez les copier-coller vers la commande
	<command>lpr</command>.  Remarquez que chaque ligne liste le
	compteur d'itération et le mot de passe non
	réutilisable; vous trouverez peut-être utile de rayer les
	mots de passe au fur et &agrave; mesure de leur utilisation.</para>
    </sect2>

    <sect2>
      <title>Restreindre l'utilisation des mots de passe &unix;</title>

      <para>S/Key peut placer des restrictions sur l'utilisation des
	mots de passe &unix; en fonction des noms de machine,
	d'utilisateur, de la ligne utilisée par le terminal ou de
	l'adresse IP de la machine connectée &agrave; distance.
	Ces restrictions peuvent être trouvées dans le
	fichier de configuration
	<filename>/etc/skey.access</filename>.  La page de manuel
	&man.skey.access.5; donne de plus amples informations sur le
	format de ce fichier et elle détaille également
	certains avertissements relatifs &agrave; la sécurité
	qu'il faut lire avant de se fier &agrave; ce fichier pour sa
	sécurité.</para>

      <para>S'il n'y a pas de fichier
	<filename>/etc/skey.access</filename> (ce qui est le cas par
	défaut sur les systèmes &os;&nbsp;4.X), tous les
	utilisateurs pourront se servir de mots de passe &unix;.  Si le
	fichier existe, alors tous les utilisateurs devront passer par
	S/Key, &agrave; moins qu'ils ne soient explicitement
	autorisés &agrave; ne pas le faire par des instructions du
	fichier <filename>/etc/skey.access</filename>.  Dans tous les
	cas l'usage des mots de passe &unix; est autorisé sur
	la console.</para>

      <para>Voici un exemple de configuration du fichier
	<filename>skey.access</filename> qui illustre les trois types
	d'instructions les plus courantes:</para>

      <programlisting>permit internet 192.168.0.0 255.255.0.0
permit user fnord
permit port ttyd0</programlisting>

      <para>La première ligne (<literal>permit internet</literal>)
	autorise les utilisateurs dont l'adresse IP (ce qui rend
	vulnérable en cas d'usurpation) appartient au
	sous-réseau spécifié &agrave; employer les mots
	de passe &unix;.  Cela ne doit pas être
	considéré comme une mesure de sécurité,
	mais plutôt comme un moyen de rappeler aux utilisateurs
	autorisés qu'ils sont sur un réseau non
	sécurisé et doivent utiliser S/Key pour
	s'authentifier.</para>

      <para>La seconde ligne (<literal>permit user</literal>)
	autorise l'utilisateur désigné, dans notre cas
	<username>fnord</username>, &agrave; employer n'importe quand
	les mots de passe &unix;.  En général,
	il faut se servir de cette possibilité si les personnes
	soit n'ont pas moyen d'utiliser le programme
	<command>key</command>, s'ils ont par exemple des terminaux
	passifs, soit s'ils sont définitivement réfractaires au
	système.</para>

      <para>La troisième ligne (<literal>permit port</literal>)
	autorise tous les utilisateurs d'un terminal sur une liaison
	particulière &agrave; utiliser les mots de passe &unix;;
	cela devrait être employé pour les connexions
	téléphoniques.</para>

      <para>OPIE peut restreindre l'usage des mots de passe &unix;
	sur la base de l'adresse IP lors de l'ouverture d'une session
	comme peut le faire S/Key.  Le fichier impliqué est
	<filename>/etc/opieaccess</filename>, qui est présent par
	défaut sous &os;&nbsp;5.0 et versions suivantes.
	Veuillez consulter la page de manuel &man.opieaccess.5; pour
	plus d'information sur ce fichier et certaines
	considérations sur la sécurité dont vous
	devez être au courant en l'utilisant.</para>

      <para>Voici un exemple de fichier
	<filename>opieaccess</filename>:</para>

      <programlisting>permit 192.168.0.0 255.255.0.0</programlisting>

      <para>Cette ligne autorise les utilisateurs dont l'adresse IP (ce
	qui rend vulnérable en cas d'usurpation) appartient au
	sous-réseau spécifié &agrave; employer les mots
	de passe &unix; &agrave; tout moment.</para>

      <para>Si aucune règle du fichier <filename>opieaccess</filename>
	ne correspond, le comportement par défaut est de
	refuser toute ouverture de session non-OPIE.</para>

    </sect2>
  </sect1>

  <sect1 id="tcpwrappers">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>L'encapsuleur TCP (<quote>TCP Wrappers</quote>)</title>

    <indexterm><primary>TCP Wrappers</primary></indexterm>

    <para>Toute personne familière avec &man.inetd.8; a
      probablement entendu parlé &agrave; un moment ou &agrave;
      un autre de l'encapsuleur <acronym>TCP</acronym> (<quote>TCP
      Wrappers</quote>).  Mais peu sont ceux qui semblent saisir
      complètement son intérêt dans un
      réseau.  Il semble que tout le monde désire
      installer un coupe-feu pour contrôler les connexions
      réseaux.  Alors qu'un coupe-feu peut avoir de nombreuses
      utilisations, il existe des choses qu'un coupe-feu ne peut
      gérer comme renvoyer un message &agrave; l'initiateur
      d'une connexion.  L'encapsuleur <acronym>TCP</acronym> en est
      capable ainsi que bien d'autres choses.  Dans les sections
      suivantes plusieurs fonctionnalités de l'encapsuleur
      <acronym>TCP</acronym> seront abordées, et, dès
      que ce sera possible, un exemple de configuration sera
      proposé.</para>

    <para>L'encapsuleur <acronym>TCP</acronym> étend les
      capacités d'<application>inetd</application> au niveau du
      support pour chaque serveur sous son contrôle.  En
      utilisant cette méthode il est possible d'offrir le
      support des ouvertures de session, de retourner des messages
      lors des connexions, de permettre &agrave; un
      <quote>daemon</quote> de n'accepter que les connexions internes,
      etc.  Bien que certaines de ces fonctionnalités peuvent
      être obtenues par l'implémentation d'un coupe-feu,
      ce système ajoutera non seulement une couche
      supplémentaire de protection mais ira plus loin dans le
      contrôle que ce que peut fournir un coupe-feu.</para>

    <para>Les fonctionnalités apportées par
      l'encapsuleur <acronym>TCP</acronym> ne peuvent se substituer
      &agrave; l'utilisation d'un bon coupe-feu.  L'encapsuleur
      <acronym>TCP</acronym> peut être utilisé de paire
      avec un coupe-feu ou tout autre système de
      sécurité et il pourra alors servir comme une
      couche supplémentaire de protection pour le
      système.</para>

    <para>Etant donné que ce programme est une extension
      &agrave; la configuration du programme
      <application>inetd</application>, le lecteur est supposé
      avoir pris connaissance de la section de <link
      linkend="network-inetd">configuration d'inetd</link>.</para>

    <note>
      <para>Bien que les programmes lancés par &man.inetd.8; ne
	soient pas tout &agrave; fait des <quote>daemons</quote>, ils
	sont traditionnellement appelés <quote>daemons</quote>.
	C'est le terme que nous utiliserons également dans le
	reste de cette section.</para>
    </note>

    <sect2>
      <title>Configuration initiale</title>

      <para>Le seul pré-requis &agrave; l'utilisation de
	l'encapsuleur <acronym>TCP</acronym> sous &os; est de
	s'assurer que le serveur <application>inetd</application> est
	lancé &agrave; partir de <filename>rc.conf</filename>
	avec l'option <option>-Ww</option>; c'est la configuration par
	défaut.  Bien évidemment une configuration
	correcte du fichier <filename>/etc/hosts.allow</filename> est
	également sous-entendue, mais dans le cas contraire
	&man.syslogd.8; émettra des messages d'avertissement
	dans les journaux du système.</para>

      <note>
	<para>Contrairement &agrave; d'autres implémentations
	  de l'encapsuleur <acronym>TCP</acronym>, l'emploi du fichier
	  <filename>hosts.deny</filename> est obsolète.  Toutes
	  les options de configuration doivent être
	  placées dans le fichier
	  <filename>/etc/hosts.allow</filename>.</para>
      </note>

      <para>Dans la configuration la plus simple, la politique de
	connexion aux <quote>daemons</quote> est soit de tout
	autoriser ou soit de tout bloquer en fonctions des options
	choisies dans <filename>/etc/hosts.allow</filename>.  La
	configuration par défaut sous &os; est d'autoriser les
	connexions &agrave; chaque <quote>daemon</quote> lancé
	&agrave; l'aide d'<application>inetd</application>.  La
	modification de ce réglage par défaut sera
	discutée une fois que la configuration de base aura
	été vue.</para>

      <para>Une configuration de base prend en général
	la forme <literal>daemon : adresse : action</literal>.
	Où <literal>daemon</literal> est le nom du
	<quote>daemon</quote> lancé par
	<application>inetd</application>.
	L'<literal>adresse</literal> peut être un nom de machine
	valide, une adresse <acronym>IP</acronym> ou une adresse IPv6
	entre crochets ([&nbsp;]).  Le champ <literal>action</literal>
	pourra avoir comme valeur <literal>allow</literal> ou
	<literal>deny</literal> pour autoriser ou interdire
	l'accès.  Gardez &agrave; l'esprit que ce type de
	configuration fonctionne de manière &agrave; honorer la
	première règle sémantique correspondante,
	cela signifie que le fichier de configuration est parcouru
	&agrave; la recherche d'une règle correspondant
	&agrave; la requête.  Quand une correspondance est
	trouvée, la règle est appliquée et la
	recherche s'arrête.</para>

      <para>Plusieurs autres options existent mais elles seront
	exposées dans une section ultérieure.  Une
	simple ligne de configuration peut être construite avec
	peu d'information.  Par exemple, pour autoriser les connexions
	<acronym>POP</acronym>3 via le <quote>daemon</quote> <filename
	role="package">mail/qpopper</filename>, les lignes suivantes
	doivent être ajoutées au fichier
	<filename>hosts.allow</filename>:</para>

      <programlisting># This line is required for POP3 connections:
qpopper : ALL : allow</programlisting>

      <para>Après l'ajout de cette ligne,
	<application>inetd</application> devra être
	redémarré.  Cela sera fait en utilisant la
	commande &man.kill.1;, ou avec le passage du paramètre
	<parameter>restart</parameter> &agrave; la commande
	<filename>/etc/rc.d/inetd</filename>.</para>
    </sect2>

    <sect2>
      <title>Configuration avancée</title>

      <para>L'encapsuleur <acronym>TCP</acronym> dispose
	également d'options avancées; elles permettrons
	plus de contrôle sur la manière dont sont
	gérées les connexions.  Dans certains cas cela
	peut être une bonne idée de renvoyer un
	commentaire &agrave; certaines machines ou lors de connexions
	&agrave; certains <quote>daemon</quote>s.  Dans d'autres cas,
	peut-être qu'un fichier journal pourrait être
	enregistré ou un courrier électronique pourrait
	être envoyé &agrave; l'administrateur.  D'autres
	situations peuvent nécessiter l'utilisation d'un
	service uniquement pour les connexions locales.  Tout cela est
	possible &agrave; l'aide des options de configuration connues
	sous le nom de <literal>jokers</literal>, caractères
	d'expansion et d'exécution de commandes externes.  Les
	deux sections suivantes abordent ces situations.</para>

      <sect3>
	<title>Commandes externes</title>

	<para>Imaginez une situation dans laquelle une connexion doit
	  être refusée et que la raison de ce refus doit
	  être envoyée &agrave; la personne qui a
	  tenté d'établir cette connexion.  Comment cela
	  peut-il être mis en place?  Ce type d'action est rendu
	  possible par l'emploi de l'option <option>twist</option>.
	  Quand une tentative de connexion est faite,
	  <option>twist</option> sera appelée pour
	  exécuter une commande ou une procédure
	  d'interpréteur de commande.  Un exemple est
	  déj&agrave; présent dans le fichier
	  <filename>hosts.allow</filename>:</para>

	<programlisting># The rest of the daemons are protected.
ALL : ALL \
        : severity auth.info \
        : twist /bin/echo "You are not welcome to use %d from %h."</programlisting>

	<para>Cet exemple montre que le message <quote>You are not
	  allowed to use <literal>daemon</literal> from
	  <literal>hostname</literal>.</quote> sera retourné
	  pour tout <quote>daemon</quote> qui n'a pas
	  été précédemment
	  configuré dans le fichier d'accès.  Cette
	  fonction est très utile pour envoyer une
	  réponse &agrave; l'initiateur de la connexion juste
	  après le refus de la connexion.  Notez que tout
	  message &agrave; retourner <emphasis>doit</emphasis>
	  être placé entre des guillemets
	  <literal>"</literal>; il n'y a pas d'exception possible
	  &agrave; cette règle.</para>

	<warning>
	  <para>Il est possible de lancer une attaque par déni
	    de service sur le serveur si un agresseur, ou un groupe
	    d'agresseurs sont en mesure de submerger ces
	    <quote>daemon</quote>s avec des demandes de
	    connexion.</para>
	</warning>

	<para>Une autre possibilité dans ce cas est d'employer
	  l'option <option>spawn</option>.  Tout comme l'option
	  <option>twist</option>, <option>spawn</option> interdit
	  implicitement les connexions et peut être
	  utilisée pour lancer une commande ou une
	  procédure externe.  Contrairement &agrave;
	  <option>twist</option>, <option>spawn</option> n'enverra pas
	  de réponse &agrave; la personne qui a établi
	  la connexion.  Examinons par exemple la ligne de
	  configuration suivante:</para>

	<programlisting># We do not allow connections from example.com:
ALL : .example.com \
	: spawn (/bin/echo %a from %h attempted to access %d &gt;&gt; \
	  /var/log/connections.log) \
	: deny</programlisting>

	<para>Cela interdira toute tentative de connexion &agrave;
	  partir du domaine <hostid
	  role="fqdn">*.example.com</hostid>, enregistrant
	  simultanément dans le fichier
	  <filename>/var/log/connections.log</filename> le nom de
	  machine, l'adresse <acronym>IP</acronym> et le
	  <quote>daemon</quote> auquel on tente
	  d'accéder.</para>

	<para>Il existe d'autres caractères de substitution en
	  dehors de ceux déj&agrave; présentés,
	  par exemple <literal>%a</literal>.  Consultez la page de
	  manuel &man.hosts.access.5; pour une liste
	  complète.</para>
      </sect3>

      <sect3>
	<title>Les options jokers</title>

	<para>Jusqu'ici l'option <literal>ALL</literal> a
	  été utilisée dans tous les exemples.
	  Il existe d'autres options pour étendre un peu plus
	  les fonctionnalités.  Par exemple, l'option
	  <literal>ALL</literal> peut être utilisée pour
	  prendre en compte chaque instance d'un
	  <quote>daemon</quote>, d'un domaine ou d'une adresse
	  <acronym>IP</acronym>.  Un autre joker disponible est
	  l'option <literal>PARANOID</literal> qui peut être
	  employée pour prendre en compte toute machine qui
	  fournirait une adresse <acronym>IP</acronym> susceptible
	  d'être falsifiée.  En d'autres termes, l'option
	  <literal>PARANOID</literal> peut être utilisée
	  pour définir l'action a effectuer dès qu'une
	  connexion se fait &agrave; partir d'une adresse
	  <acronym>IP</acronym> qui diffère de celle
	  attachée &agrave; une machine.  L'exemple suivant
	  apporte un éclairage sur cette option:</para>

	<programlisting># Block possibly spoofed requests to sendmail:
sendmail : PARANOID : deny</programlisting>

	<para>Dans cet exemple, toutes les requêtes de connexion
	  &agrave; <application>sendmail</application> &agrave; partir
	  d'adresses <acronym>IP</acronym> différentes de celle
	  correspondant au nom de la machine seront
	  refusées.</para>

	<caution>
	  <para>Utiliser l'option <literal>PARANOID</literal> peut
	    gravement paralyser les serveurs si le client ou le
	    serveur a une configuration de <acronym>DNS</acronym>
	    défectueuse.  Les administrateurs sont maintenant
	    prévenus.</para>
	</caution>

	<para>Pour en apprendre plus sur les jokers et leurs
	  fonctionnalités associées, consultez la page
	  de manuel &man.hosts.access.5;.</para>

	<para>Avant que n'importe quelle des lignes de configuration
	  données ci-dessus ne fonctionne, la première
	  ligne de configuration du fichier
	  <filename>hosts.allow</filename> devra être
	  dé-commentée.  Cela a été
	  noté en début de section.</para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="kerberosIV">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Mark</firstname>
	  <surname>Murray</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Mark</firstname>
	  <surname>Dapoz</surname>
	  <contrib>Basée sur une contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Kerberos</title>
    <indexterm><primary>Kerberos</primary></indexterm>

    <para>Kerberos est un protocole réseau supplémentaire
      qui permet aux utilisateurs de s'authentifier par
      l'intermédiaire d'un serveur sécurisé.
      Des services comme l'ouverture de session et la copie &agrave;
      distance, la copie sécurisée de fichiers entre
      systèmes et autres fonctionnalités &agrave; haut
      risque deviennent ainsi considérablement plus
      sûrs et contrôlables.</para>

    <para>Les instructions qui suivent peuvent être
      utilisées comme guide d'installation de Kerberos dans
      la version distribuée pour &os;.  Vous devriez
      cependant vous référer aux pages de manuel
      correspondantes pour avoir une description
      complète.</para>

    <sect2>
      <title>Installation de Kerberos</title>

      <indexterm><primary>MIT</primary></indexterm>
      <indexterm>
	<primary>Kerberos</primary>
	<secondary>installation</secondary>
      </indexterm>
      <para>Kerberos est un composant optionnel de &os;.  La
	manière la plus simple d'installer ce logiciel est de
	sélectionner la distribution <literal>krb4</literal>
	ou <literal>krb5</literal> dans
	<application>sysinstall</application> lors de l'installation
	de &os;.  Cela installera les implémentations
	&ldquo;eBones&rdquo; (KerberosIV) ou &ldquo;Heimdal&rdquo;
	(Kerberos5) de Kerberos.  Ces implémentations sont
	distribuées car elles sont développées en dehors
	des USA ou du Canada et étaient par conséquent
	disponibles aux utilisateurs hors de ces pays durant
	l'ère restrictive du contrôle des exportations de
	code de chiffrement &agrave; partir des USA.</para>

      <para>Alternativement, l'implémentation du MIT de
	Kerberos est disponible dans le catalogue des logiciels
	portés sous
        <filename role="package">security/krb5</filename>.</para>
    </sect2>

    <sect2>
      <title>Créer la base de données initiale</title>

      <para>Cela se fait uniquement sur le serveur Kerberos.
	Vérifiez tout d'abord qu'il ne traîne pas d'anciennes
	bases Kerberos.  Allez dans le répertoire
	<filename>/etc/kerberosIV</filename> et assurez-vous qu'il ne
	contient que les fichiers suivants:</para>

      <screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput>
&prompt.root; <userinput>ls</userinput>
README		krb.conf        krb.realms</screen>

      <para>S'il y a d'autres fichiers (comme
	<filename>principal.*</filename> ou
	<filename>master_key</filename>), utilisez alors la commande
	<command>kdb_destroy</command> pour supprimer l'ancienne base de
	données Kerberos, ou si Kerberos ne tourne pas, effacez
	simplement les fichiers supplémentaires.</para>

      <para>Vous devez maintenant éditer les fichiers
	<filename>krb.conf</filename> et <filename>krb.realms</filename>
	pour définir votre domaine Kerberos.  Dans notre cas,
	le domaine sera  <literal>EXAMPLE.COM</literal> et le
	serveur <hostid role="fqdn">grunt.example.com</hostid>.  Nous
	éditons ou créons le fichier
	<filename>krb.conf</filename>:</para>

      <screen>&prompt.root; <userinput>cat krb.conf</userinput>
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov</screen>

      <para>Dans notre cas les autres domaines n'ont pas besoin
	d'être mentionnés.  Ils ne sont l&agrave; que pour
	montrer comment une machine peut avoir connaissance de
	plusieurs domaines.  Pour plus de simplicité, vous
	pouvez ne pas les inclure.</para>

      <para>La première ligne indique pour quel domaine cette
	machine agit.  Les autre lignes définissent les autres
	domaines/machines.  Le premier élément sur une ligne
	est le domaine, le second le nom de la machine qui est le
	&ldquo;centre de distribution de clés&rdquo; de ce
	domaine.  Les mots <literal>admin server</literal> qui suivent
	un nom de machine signifient que la machine est aussi serveur
	d'administration de la base de données.  Pour plus
	d'explication sur cette terminologie, consultez les pages de
	manuel de Kerberos.</para>

      <para>Nous devons maintenant ajouter <hostid
	role="fqdn">grunt.example.com</hostid> au domaine
	<literal>EXAMPLE.COM</literal> et ajouter une entrée pour
	mettre toutes les machines du domaine DNS <hostid
	role="domainname">.example.com</hostid> dans le domaine
	Kerberos <literal>EXAMPLE.COM</literal>.  Le fichier
	<filename>krb.realms</filename> aura alors l'allure
	suivante:</para>

      <screen>&prompt.root; <userinput>cat krb.realms</userinput>
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU</screen>

      <para>Encore une fois, les autres domaines n'ont pas besoin
	d'être mentionnés.  Ils ne sont l&agrave; que pour
	montrer comment une machine peut avoir connaissance de
	plusieurs domaines.  Pour plus de simplicité, vous pouvez
	ne pas les inclure.</para>

      <para>La première ligne assigne un système
	<emphasis>particulier</emphasis> au domaine désigné.
	Les lignes restantes montrent comment affecter par défaut
	les systèmes d'un sous-domaine DNS particulier &agrave; un
	domaine Kerberos donné.</para>

      <para>Nous sommes maintenant prêt pour la création
	de la base de données.  Il n'y a &agrave; le faire que
	sur le serveur Kerberos (ou Centre de Distribution de
	Clés).  Cela se fait avec la commande
	<command>kdb_init</command>:</para>

      <screen>&prompt.root; <userinput>kdb_init</userinput>
<prompt>Realm name [default  ATHENA.MIT.EDU ]:</prompt> <userinput>EXAMPLE.COM</userinput>
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.

<prompt>Enter Kerberos master key:</prompt> </screen>

      <para>Nous devons maintenant sauvegarder la clé pour que
	les serveurs sur la machine locale puissent la lire.
	Utilisons la commande <command>kstash</command> pour faire
	cela:</para>

      <screen>&prompt.root; <userinput>kstash</userinput>

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered. BEWARE!</screen>

      <para>Le mot de passe maître chiffré est
	sauvegardé dans
	<filename>/etc/kerberosIV/master_key</filename>.</para>
    </sect2>

    <sect2>
      <title>Installer les services</title>

      <para>Il faut ajouter deux entrées (&ldquo;principals&rdquo;)
	&agrave; la base de données pour <emphasis>chaque</emphasis>
	système qui sera sécurisé par Kerberos.  Ce
	sont <literal>kpasswd</literal> et <literal>rcmd</literal>.
	Ces deux entrées sont définies pour chaque
	système, chacune de leurs instances se voyant
	attribuer le nom du système.</para>

      <para>Ces &ldquo;daemons&rdquo;,
	<application>kpasswd</application> et
	<application>rcmd</application> permettent aux autres
	systèmes de changer les mots de passe Kerberos et
	d'exécuter des commandes comme &man.rcp.1;,
	&man.rlogin.1;, et &man.rsh.1;.</para>

      <para>Ajoutons donc maintenant ces entrées:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>passwd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>

Principal: passwd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt>                    &lt;---- entrez RANDOM ici
Verifying password

<prompt>New Password:</prompt> &lt;---- enter RANDOM here

<prompt>Random password [y] ?</prompt> <userinput>y</userinput>

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt> <userinput>rcmd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt>

Principal: rcmd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt>		&lt;---- entrez RANDOM ici
Verifying password

<prompt>New Password:</prompt>           &lt;---- entrez RANDOM ici

<prompt>Random password [y] ?</prompt>

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>         &lt;---- ne rien entrer ici permet de quitter le programme</screen>
    </sect2>

    <sect2>
      <title>Créer le fichier des services</title>

      <para>Il faut maintenant extraire les instances qui
	définissent les services sur chaque machine.  Pour cela
	on utilise la commande <command>ext_srvtab</command>.
	Cela créera un fichier qui doit être copié
	ou déplacé <emphasis>par un moyen
	sûr</emphasis> dans le répertoire
	<filename>/etc/kerberosIV</filename> de chaque client
	Kerberos.  Ce fichier doit être présent sur
	chaque serveur et client, et est crucial au bon fonctionnement
	de Kerberos.</para>


      <screen>&prompt.root; <userinput>ext_srvtab grunt</userinput>
<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....</screen>

      <para>Cette commande ne génère qu'un fichier temporaire
	qui doit être renommé en <filename>srvtab</filename>
	pour que tous les serveurs puissent y accéder.
	Utilisez la commande &man.mv.1; pour l'installer sur le
	système d'origine:</para>

      <screen>&prompt.root; <userinput>mv grunt-new-srvtab srvtab</userinput></screen>

      <para>Si le fichier est destiné &agrave; un client, et que
	le réseau n'est pas considéré comme sûr,
	alors copiez le fichier
	<filename><replaceable>client</replaceable>-new-srvtab</filename>
	sur un support amovible et transportez-le par un moyen
	physiquement sûr.  Assurez-vous de le renommer en
	<filename>srvtab</filename> dans le répertoire
	<filename>/etc/kerberosIV</filename> du client, et mettez-le
	bien en mode 600:</para>

      <screen>&prompt.root; <userinput>mv grumble-new-srvtab srvtab</userinput>
&prompt.root; <userinput>chmod 600 srvtab</userinput></screen>
    </sect2>

    <sect2>
      <title>Renseigner la base de données</title>

      <para>Nous devons maintenant créer des entrées
	utilisateurs dans la base de données.  Tout d'abord
	créons une entrée pour l'utilisateur
	<username>jane</username>.  Utilisez la commande
	<command>kdb_edit</command> pour cela:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>

Principal: jane, Instance: , kdc_key_ver: 1
<prompt>New Password:</prompt>                &lt;---- entrez un mot de passe sûr ici
Verifying password

<prompt>New Password:</prompt>                &lt;---- réentrez le mot de passe sûr l&agrave;
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>		   &lt;---- ne rien entrer ici permet de quitter le programme</screen>
    </sect2>

    <sect2>
      <title>Tester l'ensemble</title>

      <para>Il faut tout d'abord démarrer les &ldquo;daemons&rdquo;
	Kerberos.  Notez que si vous avez correctement modifié
	votre fichier <filename>/etc/rc.conf</filename>, cela se fera
	automatiquement au redémarrage du système.  Ceci
	n'est nécessaire que sur le serveur Kerberos.  Les
	clients Kerberos récupéreront automatiquement les
	informations dont ils ont besoin via leur répertoire
	<filename>/etc/kerberosIV</filename>.</para>

      <screen>&prompt.root; <userinput>kerberos &amp;</userinput>
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.

Master key entered. BEWARE!

Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; <userinput>kadmind -n &amp;</userinput>
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead

Current Kerberos master key version is 1.

Master key entered.  BEWARE!</screen>

      <para>Nous pouvons maintenant utiliser la commande
	<command>kinit</command> pour obtenir un &ldquo;ticket
	d'entrée&rdquo; pour l'utilisateur
	<username>jane</username> que nous avons créé
	plus haut:</para>

      <screen>&prompt.user; <userinput>kinit jane</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
<prompt>Password:</prompt> </screen>

      <para>Essayons de lister les informations associées
	avec la commande <command>klist</command> pour voir si nous
	avons vraiment tout ce qu'il faut:</para>

      <screen>&prompt.user; <userinput>klist</userinput>
Ticket file:    /tmp/tkt245
Principal:      jane@EXAMPLE.COM

  Issued           Expires          Principal
Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>

      <para>Essayons maintenant de modifier le mot de passe en
	utilisant la commande &man.passwd.1; pour vérifier
	si le &ldquo;daemon&rdquo; <application>kpasswd</application>
	est autorisé &agrave; accéder &agrave; la base
	de données Kerberos:</para>

      <screen>&prompt.user; <userinput>passwd</userinput>
realm EXAMPLE.COM
<prompt>Old password for jane:</prompt>
<prompt>New Password for jane:</prompt>
Verifying password
<prompt>New Password for jane:</prompt>
Password changed.</screen>
    </sect2>

    <sect2>
      <title>Autoriser l'utilisation de la commande
	<command>su</command></title>

      <para>Kerberos permet d'attribuer &agrave;
	<emphasis>chaque</emphasis> utilisateur qui a besoin des droits
        du super-utilisateur son <emphasis>propre</emphasis> mot de
	passe &man.su.1;.  Nous pouvons créer un identifiant
	qui est autorisé &agrave; utiliser &man.su.1;
	pour devenir <username>root</username>.  Cela se fait en
	associant une instance <username>root</username> un
	identificateur (&ldquo;principal&rdquo;) de base.  En
	utilisant la commande <command>kdb_edit</command> nous pouvons
	créer l'entrée <literal>jane.root</literal>
	dans la base de données Kerberos:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt> <userinput>root</userinput>

&lt;Not found&gt;, Create [y] ? y

Principal: jane, Instance: root, kdc_key_ver: 1
<prompt>New Password:</prompt>                    &lt;---- entrez un mot de passe SUR ici
Verifying password

<prompt>New Password:</prompt>    	 	 &lt;---- réentrez le mot de passe ici

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt> <userinput>12</userinput> &lt;--- Laissez une valeur faible!
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>		         &lt;---- ne rien entrer ici permet de quitter le programme</screen>

      <para>Vérifions maintenant les caractéristiques
	associées pour voir si cela fonctionne:</para>

      <screen>&prompt.root; <userinput>kinit jane.root</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
<prompt>Password:</prompt></screen>

      <para>Nous devons maintenant ajouter l'utilisateur au fichier
	<filename>.klogin</filename> de
	<username>root</username>:</para>

      <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>

      <para>Essayons maintenant la commande &man.su.1;:</para>

      <screen>&prompt.user; <userinput>su</userinput>
<prompt>Password:</prompt></screen>

      <para>et voyons quelles sont nos caractéristiques:</para>

      <screen>&prompt.root; <userinput>klist</userinput>
Ticket file:	/tmp/tkt_root_245
Principal:      jane.root@EXAMPLE.COM

  Issued           Expires          Principal
May  2 20:43:12  May  3 04:43:12  krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
    </sect2>

    <sect2>
      <title>Utiliser d'autres commandes</title>

      <para>Dans l'exemple précédent, nous avons
	créé une entrée principale nommée
	<literal>jane</literal> avec une instance <literal>root</literal>.
	Cette entrée reposait sur un utilisateur ayant le même
	nom que l'entrée principale, c'est ce que fait par
	défaut Kerberos; une
	<literal>&lt;entrée_principale&gt;.&lt;instance&gt;</literal>
	de la forme
	<literal>&lt;nom_d_utilisateur&gt;.</literal><username>root</username>
	autorisera <literal>&lt;nom_d_utilisateur&gt;.</literal> &agrave;
	utiliser &man.su.1; pour devenir <username>root</username> si
	le fichier <filename>.klogin</filename> du répertoire
	personnel de l'utilisateur <username>root</username> est
	correctement renseigné:</para>

      <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>

      <para>De même, si un utilisateur a dans son répertoire des
	lignes de la forme:</para>

      <screen>&prompt.user; <userinput>cat ~/.klogin</userinput>
jane@EXAMPLE.COM
jack@EXAMPLE.COM</screen>

      <para>Cela permet &agrave; quiconque dans le domaine
	<literal>EXAMPLE.COM</literal> s'étant authentifié
	en tant que <username>jane</username> ou
	<username>jack</username> (via <command>kinit</command>, voir
	plus haut) d'accéder avec &man.rlogin.1; au compte de
	<username>jane</username> ou &agrave; ses fichiers sur le
	système (<hostid>grunt</hostid>) via &man.rlogin.1;,
	&man.rsh.1; ou &man.rcp.1;.</para>

      <para>Par exemple, <username>jane</username> ouvre maintenant
	une session sur un autre système en utilisant
	Kerberos:</para>

	    <screen>&prompt.user; <userinput>kinit</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password:</prompt>
&prompt.user; <userinput>rlogin grunt</userinput>
Last login: Mon May  1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.

FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>

      <para>Ou bien <username>jack</username> ouvre une session sur le
	compte de <username>jane</username> sur la même machine
	(<username>jane</username> ayant modifié son fichier
	<filename>.klogin</filename> comme décrit plus haut, et la
	personne an charge de Kerberos ayant défini une entrée
	principale <emphasis>jack</emphasis> sans instance):</para>

      <screen>&prompt.user; <userinput>kinit</userinput>
&prompt.user; <userinput>rlogin grunt -l jane</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password:</prompt>
Last login: Mon May  1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
    </sect2>
  </sect1>

  <sect1 id="kerberos5">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tillman</firstname>
	  <surname>Hodgson</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Mark</firstname>
	  <surname>Murray</surname>
	  <contrib>Based on a contribution by </contrib>
	  <contrib>Basé sur une contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title><application>Kerberos5</application> ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="openssl">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>OpenSSL</title>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>OpenSSL</secondary>
    </indexterm>

    <para>Une des caractéristiques que de nombreux utilisateurs
      ignorent souvent est la présence des outils
      <application>OpenSSL</application> dans le système &os;.
      <application>OpenSSL</application> fournit une couche de
      transport des données chiffrée par-dessus la
      couche de communication, lui permettant ainsi d'être
      liée &agrave; de nombreux services et applications
      réseau.</para>

    <para>Les applications d'<application>OpenSSL</application>
      pourront être l'authentification chiffrée de
      clients de messagerie, les transactions via le Web comme les
      paiements par carte bancaire et bien plus encore.  De nombreux
      logiciels portés tels que <filename
      role="package">www/apache13-ssl</filename>, et <filename
      role="package">mail/sylpheed-claws</filename> offriront un
      support pour <application>OpenSSL</application> lors de leur
      compilation.</para>

    <note>
      <para>Dans la plupart des cas le catalogue des logiciels
	portés tentera de compiler le logiciel porté
	<filename role="package">security/openssl</filename> &agrave;
	moins que la variable &man.make.1;
	<makevar>WITH_OPENSSL_BASE</makevar> ne soit explicitement
	fixée &agrave; la valeur <quote>yes</quote>.</para>
    </note>

    <para>La version d'<application>OpenSSL</application> fournie avec
      &os; supporte les protocoles de sécurité
      réseau <emphasis>Secure Sockets Layer v2/v3</emphasis>
      (SSLv2/SSLv3), et <emphasis>Transport Layer Security
      v1</emphasis> (TLSv1) et peut être utilisée comme
      bibliothèque de chiffrement d'usage
      général.</para>

    <note>
      <para>Bien que <application>OpenSSL</application> supporte
	l'algorithme <acronym>IDEA</acronym>, il est
	désactivé par défaut en raison des
	problèmes de brevets aux USA.  Pour l'utiliser, le
	texte de la licence devrait être consulté et si
	les termes de cette licence sont acceptables, la variable
	<makevar>MAKE_IDEA</makevar> doit être activée
	dans le fichier <filename>make.conf</filename>.</para>
    </note>

    <para>Une des utilisations les plus courantes
      d'<application>OpenSSL</application> est de fournir des
      certificats utilisables avec des applications logicielles.  Ces
      certificats assurent que les références de la
      société ou d'un individu sont valides et non
      frauduleuses.  Si le certificat en question n'a pas
      été vérifié par une des nombreuses
      <quote>autorité de certification</quote>
      (<quote>Certificate Authorities</quote>) ou
      <acronym>CA</acronym>s, une alerte est
      généralement produite.  Une autorité de
      certification est une société, comme <ulink
      url="http://www.verisign.com">VeriSign</ulink>, qui signera les
      certificats afin de valider les références
      d'individus ou de sociétés.  Ce processus a un
      coût et n'est pas obligatoire pour utiliser des
      certificats, cependant cela pourra mettre plus &agrave; l'aise
      les utilisateurs les plus paranoïaques.</para>

    <sect2>
      <title>Générer des certificats</title>

      <indexterm>
	<primary>OpenSSL</primary>
	<secondary>génération de certificats</secondary>
      </indexterm>

      <para>Pour générer un certificat, la commande
	suivante est disponible:</para>

      <screen>&prompt.root; <userinput>openssl req -new -nodes -out req.pem -keyout cert.pem</userinput>
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:<userinput><replaceable>US</replaceable></userinput>
State or Province Name (full name) [Some-State]:<userinput><replaceable>PA</replaceable></userinput>
Locality Name (eg, city) []:<userinput><replaceable>Pittsburgh</replaceable></userinput>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput><replaceable>My Company</replaceable></userinput>
Organizational Unit Name (eg, section) []:<userinput><replaceable>Systems Administrator</replaceable></userinput>
Common Name (eg, YOUR name) []:<userinput><replaceable>localhost.example.org</replaceable></userinput>
Email Address []:<userinput><replaceable>trhodes@FreeBSD.org</replaceable></userinput>

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<userinput><replaceable>SOME PASSWORD</replaceable></userinput>
An optional company name []:<userinput><replaceable>Another Name</replaceable></userinput></screen>

      <para>Notez la réponse &agrave; la question <quote>Common
	Name</quote> qui est un nom de domaine.  Cette question
	demande l'entrée d'un serveur de noms &agrave; des fins
	de vérification; entrer autre chose qu'un nom de
	domaine produira un certificat inutilisable.  D'autres options
	sont disponibles comme par exemple: la date d'expiration, des
	algorithmes de chiffrement alternatifs, etc.  Une liste
	complète peut être obtenue en consultant la page
	de manuel &man.openssl.1;.</para>

      <para>Deux fichiers doivent maintenant être
	présents dans le répertoire dans lequel la
	commande a été exécutée.  La
	demande de certificat, <filename>req.pem</filename>, peut
	être envoyée &agrave; une autorité de
	certification qui validera les références que
	vous avez saisies, signera la demande et vous retournera le
	certificat.  Le deuxième fichier s'appellera
	<filename>cert.pem</filename> et sera la clé
	privée du certificat et devra être &agrave; tout
	prix protégée; si ce fichier tombe dans d'autres
	mains, il pourra être utilisé pour imiter votre
	identité (ou votre serveur).</para>

      <para>Pour les cas où une signature d'une
	<acronym>CA</acronym> n'est pas indispensable, un certificat
	auto-signé peut être créé.
	Générez tout d'abord la clé
	<acronym>RSA</acronym>:</para>

      <screen>&prompt.root; <userinput>openssl dsaparam -rand -genkey -out <filename>myRSA.key</filename> 1024</userinput></screen>

      <para>Générez ensuite la clé de la
	<acronym>CA</acronym>:</para>

      <screen>&prompt.root; <userinput>openssl gendsa -des3 -out <filename>myca.key</filename> <filename>myRSA.key</filename></userinput></screen>

      <para>Utilisez cette clé pour créer le
	certificat:</para>

      <screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key <filename>myca.key</filename> -out <filename>new.crt</filename></userinput></screen>

      <para>Deux fichiers devraient être présents
	maintenant dans le répertoire: un fichier de signature
	de l'autorité de certification,
	<filename>myca.key</filename>, et le certificat
	lui-même, <filename>new.crt</filename>.  Ces fichiers
	doivent être placés dans un répertoire, de
	préférence sous <filename
	class="directory">/etc</filename>, qui est uniquement lisible
	que par <username>root</username>.  Les permissions 0700
	devraient convenir et peuvent être fixées
	&agrave; l'aide de l'utilitaire
	<command>chmod</command>.</para>
    </sect2>

    <sect2>
      <title>Utilisation des certificats, un exemple</title>

      <para>A quoi peuvent servir ces fichiers?  Un bon exemple serait
	le chiffrage des connexions au <acronym>MTA</acronym>
	<application>sendmail</application>.  Cela permettra de faire
	disparaître l'utilisation d'une authentification en
	clair pour les utilisateurs qui envoient du courrier via le
	<acronym>MTA</acronym> local.</para>

      <note>
	<para>Ce n'est pas la meilleure utilisation au monde
	  étant donné que certains clients de messagerie
	  afficheront une erreur si le certificat n'a pas
	  été installé localement.  Reportez-vous
	  &agrave; la documentation du logiciel pour plus
	  d'information sur l'installation de certificats.</para>
      </note>

      <para>Les lignes suivantes doivent être ajoutées
	dans le fichier <filename>.mc</filename> local:</para>

      <programlisting>dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting>

      <para><filename
	class="directory">/etc/certs/</filename> est le
	répertoire &agrave; utiliser pour stocker localement
	les certificats et les clés.  La dernière
	condition nécessaire étant une reconstruction du
	fichier <filename>.cf</filename>.  Cela se fait facilement en
	tapant <command>make</command> <parameter>install</parameter>
	&agrave; l'intérieur du répertoire <filename
	class="directory">/etc/mail</filename>.  Suivi d'un
	<command>make</command> <parameter>restart</parameter> qui
	devrait relancer le <quote>daemon</quote>
	<application>sendmail</application>.</para>

      <para>Si tout s'est bien passé il n'y aura pas de message
	d'erreur dans le fichier <filename>/var/log/maillog</filename>
	et <application>sendmail</application> apparaîtra dans
	la liste des processus.</para>

      <para>Comme test simple, connectez vous au serveur de messagerie
	&agrave; l'aide de l'utilitaire &man.telnet.1;:</para>

      <screen>&prompt.root; <userinput>telnet <replaceable>example.com</replaceable> 25</userinput>
Trying 192.0.34.166...
Connected to <hostid role="fqdn">example.com</hostid>.
Escape character is '^]'.
220 <hostid role="fqdn">example.com</hostid> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
<userinput>ehlo <replaceable>example.com</replaceable></userinput>
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
<userinput>quit</userinput>
221 2.0.0 <hostid role="fqdn">example.com</hostid> closing connection
Connection closed by foreign host.</screen>

      <para>Si la ligne <quote>STARTTLS</quote> apparaît dans la
	sortie, cela signifie alors que tout fonctionne
	correctement.</para>
    </sect2>
  </sect1>

  <sect1 id="ipsec">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Yoshinobu</firstname>
	  <surname>Inoue</surname>
	  <contrib>Contribution de </contrib>
	</author>
	<!-- 5 Mar 2000 -->
      </authorgroup>
    </sect1info>

    <title>IPsec</title>
    <indexterm><primary>IPsec</primary></indexterm>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>IPsec</secondary>
    </indexterm>

    <note>
      <title>Caractères de terminaison</title>
      <para>Dans tous les exemples de cette section, et d'autres
	sections, vous remarquerez qu'il y aura un &ldquo;^D&rdquo;
	&agrave; la fin de certains exemples.  Cela signifie qu'il faut
	maintenir la touche <keycap>Ctrl</keycap> enfoncée
	et appuyer sur la touche <keycap>D</keycap>.  Un autre
	caractère couramment utilisé est &ldquo;^C&rdquo;,
	qui signifie de maintenir enfoncé la touche
	<keycap>Ctrl</keycap> et d'appuyer sur
	<keycap>C</keycap>.</para>
    </note>

    <tip>
      <para>Pour d'autres documents détaillant
	l'implémentation d'IPsec, jetez un oeil &agrave;
        <ulink
        url="http://www.daemonnews.org/200101/ipsec-howto.html"></ulink>
        et <ulink
        url="http://www.freebsddiary.org/ipsec.php"></ulink>.</para>
    </tip>

    <para>Le mécanisme IPsec fournit des communications
      sécurisées sur couche IP ou &agrave; travers les
      <emphasis>sockets</emphasis>.  Cette section explique comment
      l'utiliser.  Pour des détails concernant
      l'implémentation d'IPsec, reportez-vous au
      <ulink url="../developers-handbook/ipv6.html">Manuel du
      développeur</ulink>.</para>

    <para>L'implémentation actuelle d'IPsec supporte le mode
      transport et le mode tunnel.  Cependant, il y a des restrictions
      au mode tunnel.  <ulink
      url="http://www.kame.net/newsletter/"></ulink> fournit des
      exemples plus exhaustifs.</para>

    <para>Soyez informé que pour utiliser cette fonctionnalité,
      vous devez avoir les options suivantes présentes dans
      votre fichier de configuration du noyau:</para>

    <programlisting>options          IPSEC              #IP security
options          IPSEC_ESP          #IP security (crypto; define w/IPSEC)</programlisting>

    <sect2>
      <title>Exemple en mode transport avec IPv4</title>

      <para>Configurons une association de sécurité
	pour déployer un canal sécurisé entre la Machine A
	(<hostid role="ipaddr">10.2.3.4</hostid>) et la Machine B
	(<hostid role="ipaddr">10.6.7.8</hostid>).  Notre exemple est
	un peu compliqué.  De A vers B, nous n'utilisons que
	l'ancien AH.  De B vers A, le nouvel AH et le nouvel ESP sont
	combinés.</para>

      <para>Nous devons maintenant choisir les algorithmes
	correspondant &agrave;
        &ldquo;AH&rdquo;/&ldquo;nouvel AH&rdquo;/&ldquo;ESP&rdquo;/
	&ldquo;nouvel ESP&rdquo;.  Reportez-vous &agrave; la page de manuel
	&man.setkey.8; pour connaître les noms des algorithmes.
	Nous utiliserons MD5 pour AH, new-HMAC-SHA1 pour le nouvel AH,
	et new-DES-expIV avec 8 octets IV pour le nouvel ESP.</para>

      <para>La longueur de la clé dépend de chaque algorithme.
	Par exemple, elle doit être égale &agrave; 16 octets
	pour MD5, 20 pour new-HMAC-SHA1, et 8 pour new-DES-expIV.
	Nous choisissons maintenant &ldquo;MYSECRETMYSECRET&rdquo;,
        &ldquo;KAMEKAMEKAMEKAMEKAME&rdquo;, &ldquo;PASSWORD&rdquo;,
	respectivement.</para>

      <para>Définissons maintenant le SPI (<emphasis>Security Parameter
	Index</emphasis>) pour chaque protocole.  Remarquez qu'il nous
	faut 3 SPIs pour ce canal sécurisé puisqu'il y aura
	trois entêtes de sécurité (une de la Machine A vers la
	Machine B et deux de la Machine B vers la Machine A).  Notez
	également que les SPIs doivent être supérieurs
	&agrave; 256.  Nous choisirions 1000, 2000 et 3000
	respectivement.</para>

      <screen>
	          (1)
	Machine A ------&gt; Machine B

	(1)PROTO=AH
		ALG=MD5(RFC1826)
		KEY=MYSECRETMYSECRET
		SPI=1000

	           (2.1)
	Machine A &lt;------ Machine B
	          &lt;------
	           (2.2)

	(2.1)
	PROTO=AH
		ALG=new-HMAC-SHA1(new AH)
		KEY=KAMEKAMEKAMEKAMEKAME
		SPI=2000

	(2.2)
	PROTO=ESP
		ALG=new-DES-expIV(new ESP)
			IV length = 8
		KEY=PASSWORD
		SPI=3000
</screen>

      <para>Maintenant, définissons l'association de
	sécurité.  Exécutons &man.setkey.8; sur
	la Machine A et la Machine B:</para>

      <screen>&prompt.root; <userinput>setkey -c
    add 10.2.3.4 10.6.7.8 ah-old  1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
    add 10.6.7.8 10.2.3.4 ah  2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
    add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
    ^D</userinput></screen>

      <para>En fait, la communication IPsec n'aura pas lieu avant que
	les entrées de politique de sécurité
	ne soient définies.  Dans notre cas, il faut le faire sur les
	deux machines.</para>

      <screen>
Côté A:

&prompt.root; <userinput>setkey -c
    spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
	ah/transport/10.2.3.4-10.6.7.8/require ;
    ^D</userinput>

Côté B:

&prompt.root; <userinput>setkey -c
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
	esp/transport/10.6.7.8-10.2.3.4/require ;
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
	ah/transport/10.6.7.8-10.2.3.4/require ;
    ^D</userinput>


   Machine A --------------------------> Machine E
   10.2.3.4                               10.6.7.8
      |                                     |
      ========= ancien AH keyed-md5 ========&gt;

      &lt;======== nouveau AH hmac-sha1 ========
      &lt;======== nouveau ESP des-cbc =========
</screen>
    </sect2>

    <sect2>
      <title>Exemple en mode transport avec IPv6</title>

      <para>Un autre exemple utilisant IPv6.</para>

      <para>Le mode de transport ESP est recommandé pour le
	port TCP numéro 110 entre la Machine-A et la
	Machine-B.</para>

      <screen>
              ============ ESP ============
              |                           |
          Machine-A                   Machine-B
          fec0::10 -------------------- fec0::11
</screen>

      <para>L'algorithme de chiffrement est blowfish-cbc avec la
	clé &ldquo;kamekame&rdquo;, et l'algorithme
	d'authentification est hmac-sha1 avec la clé
	&ldquo;this is the test key&rdquo;.  Configuration de la
	Machine-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec
	esp/transport/fec0::10-fec0::11/use ;
    spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec
	esp/transport/fec0::11-fec0::10/use ;
    add fec0::10 fec0::11 esp 0x10001
	-m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    add fec0::11 fec0::10 esp 0x10002
	-m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    EOF</userinput></screen>

      <para>et de la Machine-B:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec
	esp/transport/fec0::11-fec0::10/use ;
    spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec
	esp/transport/fec0::10-fec0::11/use ;
    add fec0::10 fec0::11 esp 0x10001 -m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    add fec0::11 fec0::10 esp 0x10002 -m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    EOF</userinput></screen>

      <para>Remarquez la direction de SP.</para>
    </sect2>

    <sect2>
      <title>Exemple en mode tunnel avec IPv4</title>

      <para>Mode tunnel entre deux passerelles de
	sécurité</para>

      <para>Le protocole de sécurité est l'ancien mode
	tunnel AH, i.e. spécifié par la RFC1826,
	avec keyed-md5 comme algorithme d'authentification
	et &ldquo;this is the test&rdquo; comme clé.</para>

      <screen>
                             ======= AH =======
                             |                |
         Réseau-A       Passerelle-A     Passerelle-B       Réseau-B
        10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24
</screen>

      <para>Configuration de la Passerelle-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec
	ah/tunnel/172.16.0.1-172.16.0.2/require ;
    spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec
	ah/tunnel/172.16.0.2-172.16.0.1/require ;
    add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
	-A keyed-md5 "this is the test" ;
    add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
	-A keyed-md5 "this is the test" ;

EOF</userinput></screen>

      <para>Si le numéro de port n'est pas précisé
	comme ci-dessus, alors <literal>[any]</literal> est
	utilisé.  <literal>-m</literal> définit le mode
	de SA &agrave; utiliser. <literal>-m any</literal> signifie
	tout mode de protocole de sécurité.  Vous
	pouvez utiliser cette SA &agrave; la fois en mode transport
	et en mode tunnel.</para>

      <para>et de la Passerelle-B:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec
	ah/tunnel/172.16.0.2-172.16.0.1/require ;
    spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec
	ah/tunnel/172.16.0.1-172.16.0.2/require ;
    add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
	-A keyed-md5 "this is the test" ;
    add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
	-A keyed-md5 "this is the test" ;

EOF</userinput></screen>

      <para>Etablir une SA regroupée entre deux passerelles
	de sécurité</para>

      <para>On désire le mode de transport AH et le mode
	tunnel ESP entre Passerelle-A et Passerelle-B.  Dans ce
	cas, on applique d'abord le mode tunnel ESP puis le mode
	de transport AH.</para>

      <screen>
                            ========== AH =========
                            |  ======= ESP =====  |
                            |  |               |  |
       Réseau-A         Passerelle-A        Passerelle-B        Réseau-B
    fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64
</screen>
    </sect2>

    <sect2>
      <title>Exemple en mode tunnel avec IPv6</title>

      <para>L'algorithme de chiffrement est 3des-cbc, et l'algorithme
	d'authentification est hmac-sha1.  L'algorithme
	d'authentification pour AH est hmac-md5.  Configuration de la
	Passerelle-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec
	esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require
	ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ;
    spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec
	esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require
	ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ;
    add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel
	-E 3des-cbc "kamekame12341234kame1234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport
	-A hmac-md5 "this is the test" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel
	-E 3des-cbc "kamekame12341234kame1234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport
	-A hmac-md5 "this is the test" ;

    EOF</userinput></screen>

      <para>Etablir des SAs avec les différentes
	extrémités</para>

      <para>On désire un mode tunnel ESP entre Machine-A et
	Passerelle-A.  L'algorithme de chiffrement est cast128-cbc,
	et l'algorithme d'authentification pour ESP est hmac-sha1.
	Le mode de transport ESP est recommandé entre Machine-A
	et Machine-B.  L'algorithme de chiffrement est rc5-cbc, et
	l'algorithme d'authentification pour ESP est hmac-md5.</para>

      <screen>
              ================== ESP =================
              |  ======= ESP =======                 |
              |  |                 |                 |
            Machine-A        Passerelle-A         Machine-B
          fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2
</screen>

      <para>Configuration de la Machine-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec
	esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use
	esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ;
    spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec
	esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use
	esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ;
    add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001
	-m transport
	-E cast128-cbc "12341234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002
	-E rc5-cbc "kamekame"
	-A hmac-md5 "this is the test" ;
    add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003
	-m transport
	-E cast128-cbc "12341234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004
	-E rc5-cbc "kamekame"
	-A hmac-md5 "this is the test" ;

    EOF</userinput></screen>
    </sect2>
  </sect1>

  <sect1 id="openssh">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Contribution de </contrib>
	</author>
	<!-- 21 April 2001 -->
      </authorgroup>
    </sect1info>

    <title>OpenSSH</title>
    <indexterm><primary>OpenSSH</primary></indexterm>
    <indexterm>
      <primary>sécurité</primary>
      <secondary>OpenSSH</secondary>
    </indexterm>

    <para><application>OpenSSH</application> est un ensemble d'outils
      de connexion réseau utilisés pour
      accéder &agrave; des machines
      distantes de façon sécurisée.  Ils peuvent
      être utilisés comme remplaçants directs de
      <command>rlogin</command>, <command>rsh</command>,
      <command>rcp</command>, et <command>telnet</command>.
      De plus, <application>OpenSSH</application> peut
      sécuriser n'importe quelle connexion
      TCP/IP via un tunnel.  <application>OpenSSH</application>
      chiffre tout le trafic de façon
      &agrave; déjouer les écoutes réseau, les
      prises de contrôle de connexion, et aux attaques au niveau
      du réseau.</para>

    <para><application>OpenSSH</application> est maintenu par le
      projet OpenBSD, et est basé sur SSH v1.2.12 avec tous les
      récentes corrections et mises &agrave; jour.  Il est
      compatible avec les protocoles SSH 1 et 2.
      <application>OpenSSH</application> est présent dans le
      système de base depuis &os;&nbsp;4.0.</para>

    <sect2>
      <title>Les avantages &agrave; utiliser OpenSSH</title>

      <para>Normalement, quand on utilise &man.telnet.1; ou
	&man.rlogin.1;, les données sont envoyées sur le
	réseau en clair, sous forme non chiffrée.
	Des &ldquo;renifleurs de paquets&rdquo; placés
	n'importe où entre le client et le serveur peuvent
	prendre connaissance de votre nom d'utilisateur, de votre mot
	de passe et des données transmises lors de votre session.
	<application>OpenSSH</application> offre une
	variété de méthodes d'authentification et
	de chiffrage pour éviter ce genre de
	problème.</para>
    </sect2>

    <sect2>
      <title>Activer sshd</title>
      <indexterm>
	<primary>OpenSSH</primary>
	<secondary>activation</secondary>
      </indexterm>

      <para>Assurez-vous d'ajouter la ligne suivante &agrave;
	votre fichier <filename>rc.conf</filename>:</para>

      <screen>sshd_enable="YES"</screen>

      <para>Cela chargera le &ldquo;daemon&rdquo;
	<application>ssh</application> &agrave; l'initialisation suivante
	du système.  Alternativement, vous pouvez tout simplement
	exécuter le &ldquo;daemon&rdquo;
	<application>sshd</application> directement en tapant
	<command>sshd</command> sur la ligne de commande.</para>
    </sect2>

    <sect2>
      <title>Client SSH</title>
      <indexterm>
	<primary>OpenSSH</primary>
	<secondary>client</secondary>
      </indexterm>

      <para>L'utilitaire &man.ssh.1; fonctionne de la même
	manière que &man.rlogin.1;:</para>

      <screen>&prompt.root; <userinput>ssh <replaceable>user@example.com</replaceable></userinput>
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput>
Host 'example.com' added to the list of known hosts.
user@example.com's password: <userinput>*******</userinput></screen>

      <para>L'ouverture de session se poursuit comme si elle
	avait lancée par &man.rlogin.1; ou &man.telnet.1;.
	Le système SSH utilise un système d'empreinte
	de clé pour vérifier l'authenticité du
	serveur quand le client se connecte.  L'utilisateur est
	invité &agrave; entrer <literal>yes</literal> uniquement
	&agrave; la première connexion.  Lors des futures
	connexions, l'empreinte de la clé sauvegardé est
	vérifiée.  Le client SSH vous avertira si
	l'empreinte sauvée diffère de l'empreinte
	reçue lors de futures tentatives
	de connexion.  Les empreintes sont sauvées dans le
	fichier <filename>~/.ssh/known_hosts</filename>, ou
	<filename>~/.ssh/known_hosts2</filename> pour les empreintes
	du protocole SSH 2.</para>

      <para>Par défaut, les serveurs
	<application>OpenSSH</application> sont
	configurés pour accepter les connexions dans les deux
	protocoles SSH 1 et 2.  Le client peut, cependant, choisir
	entre les deux.  Le protocole 2 est connu pour être plus
	robuste et plus sécurisé que son
	prédécesseur.</para>

      <para><command>ssh</command> peut être forcé &agrave;
	utilisé l'un des protocole en passant l'argument
	<option>-1</option> ou <option>-2</option> pour le protocole 1
	ou 2 respectivement.</para>
    </sect2>

    <sect2>
      <title>Copie sécurisée</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>copie sécurisée</secondary>
      </indexterm>
      <indexterm><primary><command>scp</command></primary></indexterm>

      <para>La commande &man.scp.1; fonctionne de la même
	manière que &man.rcp.1;; elle copie un fichier vers ou
	&agrave; partir d'une machine distante &agrave; la
	différence qu'elle le fait
	d'une façon sécurisé.</para>

      <screen>&prompt.root; <userinput> scp <replaceable>user@example.com:/COPYRIGHT COPYRIGHT</replaceable></userinput>
user@example.com's password: <userinput>*******</userinput>
COPYRIGHT            100% |*****************************|  4735
00:00
&prompt.root;</screen>

      <para>Puisque l'empreinte a déj&agrave; été
	sauvée pour cette machine dans l'exemple
	précédent, cela se vérifie ici quand on utilise
	&man.scp.1;.</para>

      <para>Les arguments passés &agrave; &man.scp.1; sont
	similaires &agrave; ceux de &man.cp.1;, avec le ou les fichiers
	en premier argument, et la destination en second.
	Puisque que le fichier est copié via le réseau, par
	l'intermédiaire de SSH, un ou plusieurs des arguments
	prennent la forme
	<option>utilisateur@machine_distante:&lt;chemin_du_fichier&gt;</option>.</para>
    </sect2>

    <sect2>
      <title>Configuration</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>configuration</secondary>
      </indexterm>

      <para>Les fichiers de configuration général au
	système pour le &ldquo;daemon&rdquo; et le client
	<application>OpenSSH</application> résident dans le
	répertoire <filename>/etc/ssh</filename>.</para>

      <para><filename>ssh_config</filename> permet de paramétrer
	le client, tandis que <filename>sshd_config</filename>
	s'occupe de la configuration du &ldquo;daemon&rdquo;.</para>

      <para>De plus, les options <option>sshd_program</option>
	(<filename>/usr/sbin/sshd</filename> par défaut),
	et <option>sshd_flags</option> du fichier
	<filename>rc.conf</filename> peut fournir un niveau
	supplémentaire de configuration.</para>
    </sect2>

    <sect2>
      <title>ssh-keygen</title>

      <para>Au lieu d'utiliser des mots de passe, &man.ssh-keygen.1;
	peut être employé pour générer des
	clés RSA pour authentifier un utilisateur:</para>

      <screen>&prompt.user; <userinput>ssh-keygen -t <replaceable>rsa1</replaceable></userinput>
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...</screen>

      <para>&man.ssh-keygen.1; créera une paire de clés
	publique et privée &agrave; utiliser pour l'authentification.
	La clé privée est stockée dans le fichier
        <filename>~/.ssh/identity</filename>, alors que la clé
	publique l'est dans le fichier
	<filename>~/.ssh/identity.pub</filename>.  La clé
	publique doit être placée dans le fichier
        <filename>~/.ssh/authorized_keys</filename> sur la machine
	distante pour que cela fonctionne.</para>

      <para>Ceci autorisera les connexions sur la machine distante
	en utilisant l'authentification RSA &agrave; la place des
	mots de passe.</para>

      <note><para>L'option <option>-t rsa1</option> créera des
	clés RSA pour le protocole SSH 1.  Si vous désirez
	utiliser des clés RSA avec le protocole SSH 2, vous devez
	employer la commande <command>ssh-keygen -t
	rsa</command>.</para></note>

      <para>Si une phrase d'authentification est utilisée
	avec &man.ssh-keygen.1;, l'utilisateur se verra demandé
	d'entrer un mot de passe &agrave; chaque utilisation de la clé
	privé.</para>

      <para>Une clé DSA SSH protocole 2 peut être
	créée pour le même objectif en utilisant
	la commande <command>ssh-keygen -t dsa</command>.
	Cela créera une paire de clés DSA pour les sessions
	SSH utilisant le protocole 2.  La clé publique est
	conservée dans <filename>~/.ssh/id_dsa.pub</filename>,
	tandis que la clé privée se trouve dans
	<filename>~/.ssh/id_dsa</filename>.</para>

      <para>Les clés publiques DSA sont placées dans le
	fichier <filename>~/.ssh/authorized_keys</filename> sur la
	machine distante.</para>

      <para>&man.ssh-agent.1; et &man.ssh-add.1; sont des utilitaires
	employés pour la gestion de multiples clés
	privées protégées par mots de passe.</para>

      <warning><para>Les divers fichiers et options peuvent être
	différents selon la version
	d'<application>OpenSSH</application> dont vous disposez,
	pour éviter les problèmes vous devez consultez la page de
	manuel &man.ssh-keygen.1;.</para></warning>
    </sect2>

    <sect2 id="security-ssh-tunneling">
      <title>Tunnels SSH</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>tunnel</secondary>
      </indexterm>

      <para><application>OpenSSH</application> a la
	capacité de créer un tunnel
	pour encapsuler un autre protocole dans une session
	chiffrée.</para>

      <para>La commande suivante demande &agrave; &man.ssh.1; de
	créer un tunnel pour <application>telnet</application>:</para>

       <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5023:localhost:23 user@foo.example.com</replaceable></userinput>
&prompt.user;</screen>

      <para>La commande <command>ssh</command> est utilisée avec
	les options suivantes:</para>

      <variablelist>
	<varlistentry>
	  <term><option>-2</option></term>

	  <listitem>
	    <para>Force <command>ssh</command> &agrave; utiliser la
	      version du protocole (&agrave; ne pas utiliser si vous
	      travaillez avec de vieux serveurs SSH).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-N</option></term>

	  <listitem>
	    <para>N'exécute aucune commande &agrave; distance, ou
	      mode se place en mode tunnel.  Si cette option est omise
	      <command>ssh</command> initiera une session
	      normale.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-f</option></term>

	  <listitem>
	    <para>Force <command>ssh</command> &agrave; s'exécuter
	      en arrière-plan.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-L</option></term>

	  <listitem>
	    <para>Spécifie un tunnel local de la manière
	      <replaceable>port_local:machine_distante:port_distant</replaceable>.</para>
	  </listitem>
	  </varlistentry>

	<varlistentry>
	  <term><option>user@foo.example.com</option></term>

	  <listitem>
	    <para>Le serveur SSH distant.</para>
	  </listitem>
	</varlistentry>
      </variablelist>


      <para>Un tunnel SSH fonctionne grâce &agrave;
	l'allocation d'une &ldquo;socket&rdquo; qui écoute
	sur le port spécifié de la machine
	<hostid>localhost</hostid>.
	Il transfère ensuite toute connexion reçue sur la/le
	machine/port local(e) via la connexion SSH vers la machine et
	le port distants spécifiés.</para>

      <para>Dans l'exemple, le port <replaceable>5023</replaceable>
	sur la machine locale transfère toute connexion
	sur ce port vers le port <replaceable>23</replaceable> de la
	machine distante (le <hostid>localhost</hostid> de la
	commande).  Puisque le port <replaceable>23</replaceable> est
	celui de <application>telnet</application>, cela créerai
	une session <application>telnet</application>
	sécurisée par l'intermédiaire
	d'un tunnel SSH.</para>

      <para>Cela peut être utilisé pour
	encapsuler n'importe quel nombre de protocoles TCP non
	sécurisé comme SMTP, POP3, FTP, etc.</para>

      <example>
	<title>Utiliser SSH pour créer un tunnel
	  sécurisé pour SMTP</title>

        <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5025:localhost:25 user@mailserver.example.com</replaceable></userinput>
user@mailserver.example.com's password: <userinput>*****</userinput>
&prompt.user; <userinput>telnet localhost 5025</userinput>
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP</screen>

        <para>Ceci peut être utilisé en conjonction
	  avec &man.ssh-keygen.1; et des comptes utilisateurs
	  supplémentaires pour la création et l'accès au
	  tunnel SSH sans trop de problème.
	  Des clés peuvent être utilisées &agrave;
	  la place de la saisie d'un mot de passe, et les tunnels
	  peuvent être exécutés sous un
	  utilisateur séparé.</para>
      </example>

      <sect3>
	<title>Exemples pratiques de tunnels SSH</title>

	<sect4>
	  <title>Accès sécurisé &agrave; un serveur POP3</title>

	  <para>Au travail, il y a un serveur SSH qui accepte les
	    connexions de l'extérieur.  Sur le même réseau
	    d'entreprise réside un serveur de courrier
	    électronique faisant fonctionner un serveur POP3.
	    Le réseau ou le chemin entre chez vous et le bureau
	    peut ou peut ne pas être complètement sûr.
	    Pour cette raison, vous devez récupérer votre
	    courrier électronique d'une façon
	    sécurisée.
	    La solution est de créer une connexion SSH vers
	    le serveur SSH de votre entreprise, et d'utiliser ce
	    tunnel vers le serveur de courrier.</para>

	  <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>2110:mail.example.com:110 user@ssh-server.example.com</replaceable></userinput>
user@ssh-server.example.com's password: <userinput>******</userinput></screen>

	  <para>Quand le tunnel est configuré et fonctionne,
	    vous pouvez demander &agrave; votre client de courrier
	    électronique d'envoyer ses requêtes POP3 sur le
	    port 2110 de la machine locale: <hostid>localhost</hostid>.
	    Les connexions seront transférées de façon
	    sécurisé &agrave; travers le tunnel jusqu'&agrave;
	    <hostid>mail.example.com</hostid>.</para>
	</sect4>

	<sect4>
	  <title>Passer &agrave; travers un coupe-feu restrictif</title>

	  <para>Certains administrateurs réseau imposent
	    des règles draconiennes au niveau du coupe-feu,
	    filtrant non seulement les connexions entrantes,
	    mais également les connexions sortantes.  Il se
	    peut que vous n'ayez accès qu'aux ports 22 et 80
	    de machines distantes pour SSH ou la navigation
	    Internet.</para>

	  <para>Vous pouvez vouloir accéder &agrave; un autre
	    (n'ayant peut-être aucun rapport avec votre travail)
	    service, comme un serveur Ogg Vorbis pour écouter
	    de la musique.  Si le serveur Ogg Vorbis diffuse
	    (&ldquo;streaming&rdquo;) ses données
	    &agrave; partir d'un port différent
	    des ports 22 ou 80, vous ne serez alors pas en mesure d'y
	    accéder.</para>

	  <para>La solution est de créer une connexion SSH
	    vers une machine &agrave; l'extérieur du
	    réseau protégé
	    par le coupe-feu, et l'utiliser pour créer un
	    tunnel vers le serveur Ogg Vorbis.</para>

	  <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>8888:music.example.com:8000 user@unfirewalled-system.example.org</replaceable></userinput>
user@unfirewalled-system.example.org's password: <userinput>*******</userinput></screen>

	  <para>Vous pouvez maintenant faire pointer votre client
	    pour la récupération du flux de
	    données sur le port 8888
	    de la machine locale, qui sera transféré
	    jusqu'au port 8000 de la machine
	    <hostid>music.example.com</hostid>, passant ainsi outre
	    les restrictions du coupe-feu.</para>
        </sect4>
      </sect3>
    </sect2>

    <sect2>
      <title>Lectures supplémentaires</title>
      <para><ulink url="http://www.openssh.com/">OpenSSH</ulink></para>
      <para>&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
        &man.ssh-agent.1; &man.ssh-add.1;</para>
      <para>&man.sshd.8; &man.sftp-server.8;</para>
    </sect2>
  </sect1>

  <sect1 id="fs-acl">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Listes de contrôle d'accès au système de
      fichiers</title>

    <indexterm>
      <primary>ACL</primary>
    </indexterm>

    <para>Avec les améliorations des systèmes de fichiers
      comme les &ldquo;snapshots&rdquo;, FreeBSD&nbsp;5.0 et versions
      suivantes offrent une nouveauté en matière de
      sécurité: les listes de contrôle d'accès
      au système de fichiers (<acronym>ACL</acronym>s -
      &ldquo;Access Control Lists&rdquo;).</para>

    <para>Les listes de contrôle d'accès étendent
      le système de permission standard d'UNIX d'une manière
      hautement compatible (POSIX.1e).  Cette caractéristique
      permet &agrave; un administrateur d'utiliser avantageusement
      un modèle de sécurité plus
      sophistiqué.</para>

    <para>Pour activer le support <acronym>ACL</acronym> pour les
      systèmes de fichiers <acronym>UFS</acronym>, ce qui
      suit:</para>

    <programlisting>options UFS_ACL</programlisting>

    <para>doit être compilé dans le noyau.  Si cette option
      n'a pas été ajoutée, un avertissement sera
      affiché lors d'une tentative de montage d'un système
      de fichiers supportant les <acronym>ACL</acronym>s.
      Cette option est présente dans le noyau
      <filename>GENERIC</filename>.  Les <acronym>ACL</acronym>s
      reposent sur des attributs étendus rajoutés
      au système de fichiers.  Les attributs étendus sont
      nativement supportés par la prochaine
      génération du système de fichiers UNIX,
      <acronym>UFS2</acronym>.</para>

    <note>
      <para>Un supplément de travail d'administration est requis
	pour configurer les attributs étendus sous
	<acronym>UFS1</acronym> par rapport &agrave;
	<acronym>UFS2</acronym>.  Les performances des attributs
	étendus sous <acronym>UFS2</acronym> sont sensiblement
	meilleures également.  Il en résulte donc, que
	l'<acronym>UFS2</acronym> est généralement
	recommandé par rapport &agrave;
	l'<acronym>UFS1</acronym> pour une utilisation des listes
	de contrôle d'accès.</para>
      </note>

    <para>Les <acronym>ACL</acronym>s sont activés grâce
      l'option utilisée lors du montage, <option>acls</option>,
      qui peut être ajouté dans le fichier
      <filename>/etc/fstab</filename>.  Cette option de montage peut
      être également automatiquement fixée
      d'une manière définitive en utilisant  &man.tunefs.8;
      pour modifier l'indicateur <acronym>ACL</acronym> du
      &ldquo;superblock&rdquo; dans l'entête du système de
      fichiers.  Il est en général préférable
      d'utiliser cet indicateur pour plusieurs raisons:</para>

    <itemizedlist>
      <listitem>
	<para>L'option de montage pour les <acronym>ACL</acronym>s ne
	  peut être modifiée par un simple remontage
	  (&man.mount.8; <option>-u</option>), mais uniquement par un
	  &man.umount.8; complet et suivi d'un &man.mount.8;.  Cela
	  signifie que les <acronym>ACL</acronym>s ne peuvent
	  être activées sur le système de fichiers
	  racine après le démarrage. Cela signifie
	  également que vous ne pouvez pas modifier la
	  disposition d'un système de fichier une fois que
	  c'est activé.</para>
      </listitem>

      <listitem>
	<para>Positionner l'indicateur du &ldquo;superblock&rdquo;
	  fera que le système de fichiers sera toujours monté
	  avec les <acronym>ACL</acronym>s activées même
	  s'il n'y a pas d'entrée dans le fichier
	  <filename>fstab</filename>, ou s'il y a une réorganisation
	  des périphériques.  Cela prévient
	  le montage accidentel du système de fichiers sans les
	  <acronym>ACL</acronym>s activées, ce qui peut provoquer
	  une activation impropre des <acronym>ACL</acronym>s et
	  par conséquent des problèmes de
	  sécurité.</para>
      </listitem>
    </itemizedlist>

    <note>
      <para>Nous pourrions modifier le comportement des
	<acronym>ACL</acronym>s pour permettre l'activation de
	l'indicateur sans le besoin d'un nouveau &man.mount.8;
	complet, mais nous considérons qu'il est préférable
	d'éviter un montage accidentel sans les
	<acronym>ACL</acronym>s activées, parce que vous pouvez
	vous &ldquo;tirer facilement dans les pieds&rdquo;
	si vous activez les <acronym>ACL</acronym>s, puis
	les désactivez, et ensuite les réactivez &agrave;
	nouveau sans réinitialiser les attributs étendus.
	En général, une fois que vous avez activé
	les <acronym>ACL</acronym>s sur un système de fichiers,
	elles ne devraient pas être désactivées
	étant donné que les protections de fichiers
	résultantes peuvent ne pas être compatible avec
	celles prévues par les utilisateurs du système,
	et réactiver les <acronym>ACL</acronym>s peut
	réaffecter les précédentes
	<acronym>ACL</acronym>s aux fichiers qui ont depuis eût
	leur permissions modifiées, avec pour résultat
	un comportement imprévisible.</para>
    </note>

    <para>Les systèmes de fichiers avec les
      <acronym>ACL</acronym>s activées présenteront un signe
      <literal>+</literal> au niveau de leurs permissions
      quand elles seront affichées.  Par exemple:</para>

    <programlisting>drwx------  2 robert  robert  512 Dec 27 11:54 private
drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html</programlisting>

    <para>Ici nous voyons que les répertoires
      <filename>directory1</filename>,
      <filename>directory2</filename>, et
      <filename>directory3</filename> utilisent les
      <acronym>ACL</acronym>s.  Ce n'est pas le cas du
      répertoire <filename>public_html</filename>.</para>

    <sect2>
      <title>Utilisation des <acronym>ACL</acronym>s</title>

      <para>Les <acronym>ACL</acronym>s
	peuvent être affichées par l'utilitaire
	&man.getfacl.1;.  Par exemple pour voir les
	<acronym>ACL</acronym>s sur le fichier
	<filename>test</filename>, on utilisera la commande:</para>

      <screen>&prompt.user; <userinput>getfacl <filename>test</filename></userinput>
	#file:test
	#owner:1001
	#group:1001
	user::rw-
	group::r--
	other::r--</screen>

      <para>Pour modifier le paramétrage des
	<acronym>ACL</acronym>s sur ce fichier, invoquez la commande
	&man.setfacl.1;.  Intéressons-nous &agrave; la
	ligne:</para>

      <screen>&prompt.user; <userinput>setfacl -k <filename>test</filename></userinput></screen>

      <para>L'indicateur <option>-k</option> supprimera toutes les
	<acronym>ACL</acronym>s actuellement définies pour un
	fichier ou un système de fichiers.  Une méthode
	plus adaptée est d'utiliser l'option
	<option>-b</option> étant donné qu'elle conserve
	les champs de base nécessaires au bon
	fonctionnement des <acronym>ACL</acronym>s.</para>

      <screen>&prompt.user; <userinput>setfacl -m u:trhodes:rwx,group:web:r--,o::--- <filename>test</filename></userinput></screen>

      <para>Dans la commande ci-dessus, l'option <option>-m</option> a
	été utilisée pour modifier les
	entrées <acronym>ACL</acronym> par défaut.
	Comme il n'y avait pas d'entrées
	pré-définies, puisqu'elles ont été
	supprimées par la commande précédente,
	cela restaurera les options par défaut et prendra en
	compte les options précisées.  Prenez soin de
	noter que si vous ajoutez un utilisateur ou un groupe qui
	n'existe pas sur le système, une erreur
	<errorname>Invalid argument</errorname> sera affichée
	sur la sortie standard.</para>
    </sect2>
  </sect1>

  <sect1 id="security-portaudit">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Surveillance des problèmes de sécurité
      relatifs aux programmes tierce-partie</title>

    <indexterm>
      <primary>Portaudit</primary>
    </indexterm>

    <para>Ces dernières années, le monde de la
      sécurité a fait beaucoup de progrès dans la
      manière d'évaluer les
      vulnérabilités.  Le risque d'une intrusion dans le
      système augmente avec l'installation et la configuration
      d'utilitaires tierce-partie et cela pour quasiment n'importe
      quel système d'exploitation disponible
      aujourd'hui.</para>

    <para>L'évaluation des vulnérabilités est un
      facteur clé de la politique de sécurité,
      alors que &os; publie des avis pour le système de base,
      faire de même pour les programmes tierce-partie
      dépasse les capacités du projet &os;.  Il existe
      un moyen d'atténuer les vulnérabilités des
      logiciels tierce-partie et de prévenir les
      administrateurs des problèmes de sécurité
      connus.  Un outil &os; connu sous le nom de
      <application>Portaudit</application> existe dans cet unique
      but.</para>

    <para>Le logiciel porté <filename
      role="port">ports-mgmt/portaudit</filename> consulte une base de
      données, mise &agrave; jour et maintenue par
      l'équipe de sécurité de &os; et les
      développeurs des logiciels portés, &agrave; la
      recherche de problèmes de sécurité
      connus.</para>

    <para>Pour utiliser <application>Portaudit</application>, ce
      dernier doit être installé &agrave; partir du
      catalogue des logiciels portés:</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portaudit &amp;&amp; make install clean</userinput></screen>

    <para>Lors du processus d'installation, les fichiers de
      configuration de &man.periodic.8; seront mis &agrave; jour,
      autorisant l'ajout des résultats de
      <application>Portaudit</application> dans l'exécution
      quotidienne du rapport de sécurité.  Assurez-vous
      que les rapports de sécurité quotidiens, qui sont
      envoyés au compte messagerie de
      <username>root</username>, sont bien lus.  Pas plus de
      configuration ne sera nécessaire.</para>

    <para>Après l'installation, un administrateur peut mettre
      &agrave; jour la base de données et afficher les
      vulnérabilités connues des logiciels
      installés en invoquant la commande suivante:</para>

    <screen>&prompt.root; <userinput>portaudit -Fda</userinput></screen>

    <note>
      <para>La base de données sera automatiquement mise
	&agrave; jour lors de l'exécution de &man.periodic.8;,
	cela rendant par conséquent facultative la commande
	précédente.  Elle n'est requise que pour les
	exemples qui vont suivre.</para>
    </note>

    <para>Pour contrôler &agrave; n'importe quel moment les
      programmes tierce-partie installés &agrave; partir du
      catalogue des logiciels portés, un administrateur n'aura
      qu'&agrave; exécuter la commande suivante:</para>

    <screen>&prompt.root; <userinput>portaudit -a</userinput></screen>

    <para><application>Portaudit</application> produira pour les
      logiciels vulnérables quelque chose comme ceci:</para>

    <programlisting>Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: &lt;http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html&gt;

1 problem(s) in your installed packages found.

You are advised to update or deinstall the affected package(s) immediately.</programlisting>

    <para>En faisant pointer un navigateur Web sur
      l'<acronym>URL</acronym> proposée, un administrateur
      pourra obtenir plus d'information au sujet de la
      vulnérabilité en question.  Cela comprendra les
      versions affectées, listées par version du
      logiciel porté &os;, ainsi que des liens vers d'autres
      sites Web pouvant contenir des avis de
      sécurité.</para>

    <para>En résumé,
      <application>Portaudit</application> est un outil puissant et
      extrêmement utile quand il est employé
      conjointement avec le logiciel
      <application>Portupgrade</application>.</para>
  </sect1>

  <sect1 id="security-advisories">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Avis de sécurité de &os;</title>

    <indexterm>
      <primary>Avis de sécurité de FreeBSD</primary>
    </indexterm>

    <para>Comme plusieurs systèmes d'exploitation
      destinés &agrave; la production, &os; publie des
      &ldquo;Avis de sécurité&rdquo;.  Ces avis sont
      généralement envoyés aux listes de
      diffusion traitant de la sécurité et
      ajoutés dans l'errata une fois seulement que les versions
      correspondantes ont été corrigées.  Cette
      section aura pour objectif d'expliquer ce qu'est un avis,
      comment le comprendre, et quelles mesures sont &agrave; prendre
      pour appliquer des correctifs &agrave; un système.</para>

    <sect2>
      <title>A quoi ressemble un avis de
	sécurité?</title>

      <para>Les avis de sécurité de &os; ressemblent
	&agrave; celui présenté ci-dessous qui provient
	de la liste de diffusion
	&a.security-notifications.name;.</para>

      <programlisting>=============================================================================
&os;-SA-XX:XX.UTIL                                     Security Advisory
                                                          The &os; Project

Topic:          denial of service due to some problem<co id="co-topic"/>

Category:       core<co id="co-category"/>
Module:         sys<co id="co-module"/>
Announced:      2003-09-23<co id="co-announce"/>
Credits:        Person@EMAIL-ADDRESS<co id="co-credit"/>
Affects:        All releases of &os;<co id="co-affects"/>
                &os; 4-STABLE prior to the correction date
Corrected:      2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
                2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
                2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
                2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
                2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
                2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
                2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
                2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
                2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co id="co-corrected"/>
&os; only:   NO<co id="co-only"/>

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.freebsd.org/security/.

I.   Background<co id="co-backround"/>


II.  Problem Description<co id="co-descript"/>


III. Impact<co id="co-impact"/>


IV.  Workaround<co id="co-workaround"/>


V.   Solution<co id="co-solution"/>


VI.  Correction details<co id="co-details"/>


VII. References<co id="co-ref"/></programlisting>


      <calloutlist>
	<callout arearefs="co-topic">
	  <para>Le champ <literal>Topic</literal> indique exactement
	    quel est le problème.  C'est basiquement une
	    introduction &agrave; l'avis de sécurité en
	    tant que tel et mentionne l'utilitaire contenant la
	    vulnérabilité.</para>
	</callout>

	<callout arearefs="co-category">
	  <para>Le champ <literal>Category</literal> fait
	    référence &agrave; la partie du système
	    affectée qui peut être une parmi
	    <literal>core</literal>, <literal>contrib</literal>, ou
	    <literal>ports</literal>.  La catégorie
	    <literal>core</literal> signifie que la
	    vulnérabilité affecte un composant
	    système du système d'exploitation &os;.  La
	    catégorie <literal>contrib</literal> précise
	    que la vulnérabilité affecte du logiciel
	    contribué au projet &os;, comme
	    <application>sendmail</application>.  Et enfin la
	    catégorie <literal>ports</literal> indique que la
	    vulnérabilité affecte un logiciel du catalogue
	    des logiciels portés.</para>
	</callout>

	<callout arearefs="co-module">
	  <para>Le champ <literal>Module</literal> fait
	    référence &agrave; l'emplacement du composant,
	    par exemple <literal>sys</literal>.  Dans notre exemple,
	    nous voyons que le module <literal>sys</literal> est
	    affecté, par conséquent, cette
	    vulnérabilité concerne un composant
	    utilisé dans le noyau.</para>
	</callout>

	<callout arearefs="co-announce">
	  <para>Le champ <literal>Announced</literal> reflète
	    la date &agrave; laquelle l'avis de sécurité a
	    été publié, ou annoncé au monde
	    entier.  Cela signifie que l'équipe de
	    sécurité a vérifié que le
	    problème existait vraiment et qu'un correctif a
	    été ajouté au référentiel
	    des sources de &os;.</para>
	</callout>

	<callout arearefs="co-credit">
	  <para>Le champ <literal>Credits</literal> donne le
	    crédit de la découverte du problème
	    &agrave; la personne ou l'organisation qui a constaté
	    et rapporté le problème.</para>
	</callout>

	<callout arearefs="co-affects">
	  <para>Le champ <literal>Affects</literal> explique quelles
	    versions de &os; sont affectées par cette
	    vulnérabilité.  Pour le noyau, un coup d'oeil
	    rapide &agrave; la sortie de la commande
	    <command>ident</command> sur les fichiers affectés
	    aidera &agrave; déterminer la révision.  Pour
	    les logiciels portés, le numéro de version est
	    listé après le nom du logiciel dans <filename
	    class="directory">/var/db/pkg</filename>.  Si le
	    système ne se synchronise pas avec le
	    référentiel <acronym>CVS</acronym> &os; et ne
	    recompile pas les sources quotidiennement, il y a des
	    chances qu'il soit affecté par le
	    problème.</para>
	</callout>

	<callout arearefs="co-corrected">
	  <para>Le champ <literal>Corrected</literal> indique la date,
	    l'heure, le fuseau horaire, et la version de publication qui
	    a été corrigée.</para>
	</callout>

	<callout arearefs="co-only">
	  <para>Le champ <literal>&os; only</literal> précise
	    si cette vulnérabilité affecte juste &os;, ou
	    si elle concerne d'autres systèmes d'exploitation
	    également.</para>
	</callout>

	<callout arearefs="co-backround">
	  <para>Le champ <literal>Background</literal> donne une
	    information précise sur ce qu'est l'utilitaire
	    affecté.  La plupart du temps, ce champ indique
	    pourquoi l'utilitaire existe sous &os;, son rôle, et
	    quelques informations sur la naissance de
	    l'utilitaire.</para>
	</callout>

	<callout arearefs="co-descript">
	  <para>Le champ <literal>Problem Description</literal>
	    explique en profondeur le problème de
	    sécurité.  Cela peut comprendre des
	    informations sur le code défectueux, ou même
	    comment l'utilitaire pourrait être utilisé pour
	    ouvrir un faille de sécurité.</para>
	</callout>

	<callout arearefs="co-impact">
	  <para>Le champ <literal>Impact</literal> décrit
	    l'impact sur le système du problème de
	    sécurité.  Par exemple, cela peut aller de
	    l'attaque par refus de service, au gain de droits
	    supplémentaires par les utilisateurs, en passant par
	    l'obtention des droits de super-utilisateur par
	    l'attaquant.</para>
	</callout>

	<callout arearefs="co-workaround">
	  <para>Le champ <literal>Workaround</literal> offre une
	    solution de contournement possible pour les administrateurs
	    qui ne sont pas en mesure de mettre &agrave; jour le
	    système.  Cela pouvant être due &agrave; des
	    contraintes de temps, &agrave; une disponibilité
	    réseau, ou une tout autre raison.  Cependant, la
	    sécurité ne devrait pas être prise
	    &agrave; la légère, et un système
	    affecté devrait soit être corrigé soit
	    implémenter une solution de contournement du
	    problème de sécurité.</para>
	</callout>

	<callout arearefs="co-solution">
	  <para>Le champ <literal>Solution</literal> donne les
	    instructions sur l'application de correctifs sur le
	    système affecté.  C'est une méthode pas
	    &agrave; pas vérifiée et testée pour
	    obtenir un système corrigé et fonctionnant de
	    manière sécurisée.</para>
	</callout>

	<callout arearefs="co-details">
	  <para>Le champ <literal>Correction Details</literal> liste
	    la branche <acronym>CVS</acronym> ou la version de
	    publication avec les points remplacés par des
	    caractères souligné.  Il donne
	    également le numéro de révision des
	    fichiers affectés sur chaque branche.</para>
	</callout>

	<callout arearefs="co-ref">
	  <para>Le champ <literal>References</literal> donne en
	    général d'autres sources d'informations.  Cela
	    peut être des <acronym>URL</acronym>s web, des
	    ouvrages, des listes de diffusions, et des forums de
	    discussion.</para>
	</callout>
      </calloutlist>
    </sect2>
  </sect1>

  <sect1 id="security-accounting">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Comptabilité des processus</title>

    <indexterm>
      <primary>Comptabilité des processus</primary>
    </indexterm>

    <para>La comptabilité des processus est une mesure de
      sécurité avec laquelle un administrateur peut
      suivre l'utilisation des ressources du système, leur
      répartition entre les utilisateurs, surveiller le
      système et avoir un suivi minimal des commandes
      exécutées par un utilisateur.</para>

    <para>Ce système possède des avantages et des
      inconvénients.  Un de ses avantages est qu'une intrusion
      pourra être remontée jusqu'&agrave; son point
      d'entrée.  Un des inconvénients est la
      quantité de journaux générée par
      cette comptabilité et l'espace disque que cela peut
      demander.  Cette section guidera l'administrateur au travers des
      bases de la comptabilité des processus.</para>

    <sect2>
      <title>Activer et utiliser la comptabilité des
	processus</title>

      <para>Avant de pouvoir utiliser la comptabilité des
	processus, il faut l'activer.  Cela se fait en
	exécutant les commandes suivantes:</para>

      <screen>&prompt.root; <userinput>touch <filename>/var/account/acct</filename></userinput>

&prompt.root; <userinput>accton <filename>/var/account/acct</filename></userinput>

&prompt.root; <userinput>echo 'accounting_enable="YES"' &gt;&gt; <filename>/etc/rc.conf</filename></userinput></screen>

      <para>Une fois activée, les statistiques concernant le
	<acronym>CPU</acronym>, les commandes, etc. commenceront
	&agrave; être comptabilisée.  Tous les journaux
	de comptabilisation des processus sont dans un format
	directement illisible pour l'utilisateur, ils pourront
	être examinés &agrave; l'aide de l'utilitaire
	&man.sa.8;.  Si elle est utilisée sans
	paramètre, la commande <command>sa</command> affichera
	les informations relatives au nombre d'appels par utilisateur,
	le temps écoulé en minutes, la durée
	totale des temps <acronym>CPU</acronym> et utilisateur en
	minutes, le nombre moyen des opérations d'E/S,
	etc.</para>

      <para>Pour afficher les informations sur les commandes
	utilisées, on emploiera l'utilitaire &man.lastcomm.1;.
	La commande <command>lastcomm</command> peut être
	employée pour afficher les commandes tapées par
	les utilisateurs sur des terminaux (&man.ttys.5;)
	spécifiques; par exemple:</para>

      <screen>&prompt.root; <userinput>lastcomm ls
	<username>trhodes</username> ttyp1</userinput></screen>

      <para>imprimera toute utilisation de la commande
	<command>ls</command> par l'utilisateur
	<username>trhodes</username> sur le terminal
	<literal>ttyp1</literal>.</para>

      <para>De nombreuses autres options utiles existent et sont
	détaillées dans les pages de manuel
	&man.lastcomm.1;, &man.acct.5; et &man.sa.8;.</para>
    </sect2>
  </sect1>
</chapter>