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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Przesanianie hase (Shadow Password)</TITLE>
</HEAD>
<BODY>
<H1>Przesanianie hase (Shadow Password)<BR></H1>
<H2>Autor: Michael H. Jackson,
<A HREF="mhjack@tscnet.com">mhjack@tscnet.com</A><BR>
v1.3, 3 Kwietnia 1996<BR>
<B>Wersja polska: Bartosz Maruszewski
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><BR></B>
v1.02, 26 Lipca 1997</H2>
<P><HR>
<EM>Dokument ten opisuje jak zdoby, zainstalowa i skonfigurowa pakiet
<I>Shadow Password</I> dla Linux-a. Omwione zostao tutaj take zdobywanie i
(ponowna) instalacja oprogramowania oraz demonw sieciowych, ktre potrzebuj
dostpu do hase uytkownika. Oprogramowanie to nie jest waciw czci
pakietu <I>Shadow Suite</I>, ale bd one musiay zosta przekompilowane,
aby mc korzysta z hase. Jest tutaj take zawarty przykad dla
programistw, jak dodawa obsug przesanianych hase w swoich programach.
Pod koniec dokumentu zawarte zostay odpowiedzi na czsto zadawane pytania.
Dokument ten zosta napisany w standardzie ISO-8859-2.
Orygina mona znale pod adresem
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO">ftp.icm.edu.pl</A> w katalogu /pub/Linux/sunsite/docs/HOWTO.</EM>
<HR>
<H2><A NAME="s1">1. Wprowadzenie.</A></H2>
<P>
<P>Jest to dokument z serii HOWTO (czyli Jak To Zrobi). Opisuje on
jak i dlaczego instalowa obsug "shadow password" na swoim
Linux-ie. Zawarte jest take kilka przykadw na uywanie pewnych
waciwoci pakietu <I>Shadow Suite</I>.
<P>Podczas instalacji pakietu oraz uywania jego narzdzi musisz by
zalogowany jako <I>"root"</I>. Podczas instalacji bdziesz dokonywa
pewnych zmian do oprogramowania systemowego i zalecane jest, aby
zrobi kopi tego oprogramowania. Zalecam te, aby przeczyta i
zrozumia wszystkie instrukcje zawarte tutaj zanim zaczniesz.
<P>
<H2>1.1 Zmiany w stosunku do poprzedniej wersji.</H2>
<P>
<P>
<PRE>
Dodane sekcje:
Dodaem sekcj na temat dlaczego mgby niechcie instalowa
pakietu Shadow Suite.
Dodaem sekcj jak uaktualni xdm-a.
Dodaem sekcj jak zmusi do dziaania specjalne waciwoci pakietu
Shadow Suite.
Dodaem sekcj zawierajc czsto zadawane pytania.
Poprawki/Uaktualnienia:
Poprawiem odwoania html do sunsite-a.
Poprawiem sekcj na temat wu-ftpd, aby odzwierciedlaa dodawanie
-lshadow do pliku Makefile.
Poprawiem kilka literwek.
Zmieniem sekcj na temat wu-ftpd, aby obsugiwa ELF.
Uaktualniem cay dokument, aby odzwierciedla problemy bezpieczestwa
w rnych programach.
Dodaem rekomendacj pakietu Linux Shadow Suite napisanego
przez Marka Michakiewicza
</PRE>
<P>
<H2>1.2 Nowe wersje tego dokumentu.</H2>
<P>
<P>Najnowsz wersj oryginau tego dokumentu mona cign z
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/">ftp.icm.edu.pl</A> z katalogu
<CODE>/pub/Linux/sunsite/docs/HOWTO</CODE>. Inne formaty znajduj si
w katalogu <CODE>other-formats</CODE>. Albo poprzez sie WWW z
<A HREF="http://sunsite.icm.edu.pl:/pub/Linux/Documentation">sunsite.icm.edu.pl</A>. Mona te bezporednio
<A HREF="mailto:mhjack@tscnet.com">od autora</A>. Autor bdzie te
wysya nowe wersje na grup dyskusyjn
<CODE>comp.os.linux.answers</CODE>
<P>Dokument ten jest take rozprowadzany wraz z dystrybucj pakietu
<CODE>Shadow-YYDDMM</CODE>.
<P>Na temat nowych wersji tumaczenia zobacz sekcj
<A HREF="#tlum">Od tumacza</A>.
<P>
<H2>1.3 Komentarze.</H2>
<P>
<P>Prosz wszelkie komentarze, uaktualnienia czy sugestie wysya
<A HREF="mailto:mhjack@tscnet.com">do mnie</A>. Im szybciej otrzymam
poczt tym szybciej mog poprawi ten dokument. Jeli masz jakie
uwagi na jego temat, to wylij je bezporednio do mnie, poniewa
bardzo rzadko odwiedzam grupy dyskusyjne.
<P>
<H2><A NAME="s2">2. Po co przesania plik passwd ?</A></H2>
<P>
<P>W chwili obecnej wikszo dystrybucji Linux-a nie instaluje domylnie pakietu
<CODE>Shadow Suite</CODE>. Dotyczy to Slackware 2.3, Slackware 3.0 i innych
popularnych dystrybucji. Jednym z powodw tego jest to, e jeli zapacono
jak kwot za <CODE>Shadow Suite</CODE> to prawa co do redystrybucji nie byy
do koca jasne. Linux uywa licencji GNU, ktra pozwala na umieszczanie go
w dowolnych pakietach (jak np. dystrybucje CD-ROM) i pobieranie za nie opaty.
<P>Obecny opiekun pakietu <CODE>Shadow Suite</CODE>,
<A HREF="mailto:marekm@ists.pwr.wroc.pl">Marek Michakiewicz</A> otrzyma
rda oryginau na licencji w stylu BSD, ktra pozwala na dystrybucj.
Teraz, kiedy ju sprawy praw kopiowania s rozwizane, spodziewane jest, e
przysze dystrybucje bd zawiera domylnie przesanianie hase. Jednak do
tego czasu, bdziesz musia je samemu instalowa.
<P>Jeli instalowae swoj dystrybucj z CD-ROM-u, to pomimo, e dystrybucja
nie zainstalowaa <CODE>Shadow Suite</CODE> niektre pliki, ktrych potrzebujesz
mog si znajdowa na CD-ROM-ie.
<P><I>Wersje pakietu 3.3.1, 3.3.1-2 i shadow-mk maj problemy dotyczce
bezpieczestwa ze swoim programem login i kilkoma innymi programami typu
<EM>suid root</EM> i nie powinny by ju uywane.</I>
<P>Wszystkie potrzebne pliki s dostpne poprzez anonimowane ftp oraz WWW.
<P>W Linux-ie bez zainstalowanego pakietu <CODE>Shadow Suite</CODE> informacje
o uytkowniku wraz z hasem trzymane s w pliku <CODE>/etc/passwd</CODE>.
Haso znajduje si tam w formie zakodowanej (encrypted). Jednak jeli
spytasz jakiego eksperta od kryptografii, to powie ci on/ona, e
haso jest w postaci "encoded", a nie "encrypted" poniewa uywajc
funkcji crypt(3), tekstowi jest przypisywany acuch pusty a haso
jest kluczem. Dlatego, od tego momentu bd uywa okrelenia "encoded".
<P>Algorytm uywany do kodowania hasa jest technicznie okrelany jako algorytm
dziaajcy w jedn stron. Jest to algorytm, ktry jest atwy do zastosowania
w jedn stron, ale bardzo trudny do zamania. Wicej na ten temat znajdziesz
w sekcji
<A HREF="#krypt">2.4</A> albo na stronie podrcznika systemowego
dotyczcej funkcji crypt(3).
<P>Kiedy uytkownik wybiera haso, albo jest mu ono przydzielone, jest ono
kodowane losowo generowan wartoci zwan <CODE>salt</CODE> (sl). Oznacza to,
e kade haso moe zosta zakodowane na 4096 sposobw. Warto <CODE>salt</CODE>
jest potem zapisywana razem z zakodowanym hasem.
<P>Kiedy uytkownik si wlogowuje i podaje haso, najpierw pobierana
jest warto <CODE>salt</CODE> z zakodowanego hasa. Nastpnie pobrane
haso zostaje zakodowane pobran wartoci, i porwnane z zapisanym
zakodowanym hasem. Jeli acuchy te s identyczne, to uytkownik
zostaje "wpuszczony" do systemu. Jest bardzo trudno (ale nie jest
to niemoliwe) wzi losowo zakodowane haso i otrzyma haso
rozkodowane. Chocia, w kadym systemie z wiksz liczb
uytkownikw, przynajmniej kilka hase bdzie zwykymi sowami albo
jak wariacj zwykych sw.
<P>Wamywacze widz o tym wszystkim i po prostu koduj sownik ze
sowami i popularnymi hasami wszytkimi moliwymi wartociami
<CODE>salt</CODE>. Potem porwnaj wyniki z zawartoci twojego pliku
<CODE>/etc/passwd</CODE>. Jak znajd jaki identyczny acuch, to maj
haso na nastpne konto. Nazywane jest to <CODE>atakiem
sownikowym</CODE> i jest to jeden z najpopularniejszych sposobw na
pozyskiwanie dostpu do systemu przez osoby nieuprawnione.
<P>Jeli si nad tym zastanowisz, to zobaczysz, e 8-znakowe haso
moe zosta zakodowane na 4096 * 13 sposobw. Tak wic sownik
skadajcy si powiedzmy z 400.000 popularnych sw, nazw, imion,
hase i ich prostych wariacji zmieciby si z atwoci na dysku o
pojemnoci 4GB. Wamywacz musi go tylko posortowa i sprawdzi czy
ktry z acuchw nie jest hasem. Dysk o pojemnoci 4GB mona
kupi za ok. 1000 dolarw, tak wic mieci si to w moliwociach
wikszoci wamywaczy systemowych.
<P>Jeli wamywacz zdobdzie twj plik <CODE>/etc/passwd</CODE>, to musi
on zakodowa swj sownik kluczem, ktry znajduje si w tym
pliku. Metoda ta moe by wykorzystana przez przecitnego
nastolatka z kilkoma megabajtami na dysku i komputerem klasy 486.
<P>Nawet bez duej iloci wolnego miejsca na dysku, narzdzia takie
jak crack(1) mog zwykle zama przynajmniej kilka hase z systemu
z dostatecznie du iloci uytkownikw (zakadajc, e
uytkownicy maj moliwo samemu wybiera sobie hasa).
<P>Plik <CODE>/etc/passwd</CODE> zawiera take takie informacje jak ID
uytkownika i ID grupy, ktre s uywane przez wikszo
programw. Dlatego plik <CODE>/etc/passwd</CODE> <B>musi</B>
pozosta odczytywalny dla kadego. Jeli chciae wanie zmieni
prawa dostpu do pliku <CODE>/etc/passwd</CODE> tak, eby nikt nie mg
go czyta (oprcz "root-a"), to pierwszym symptomem jaki by
zauway, to to, e przy wydaniu polecenia <CODE>ls -l</CODE>
pojawiyby si numery zamiast nazw uytkownikw.
<P>Pakiet <CODE>Shadow Suite</CODE> rozwizuje ten problem poprzez
umieszczenie hase w innym pliku (z reguy jest to
<CODE>/etc/shadow</CODE>). Plik <CODE>/etc/shadow</CODE> ma tak ustawione
prawa dostpu, e nie moe go czyta nikt, oprcz
"root-a". Niektre programy jak np. xlock, nie musz mie
moliwoci zmiany hase, ale tylko ich odczytu. Programy te mog
albo by uruchamiane z prawem "suid root", albo moesz doda grup
<CODE>shadow</CODE>, ktra miaaby tylko prawo odczytu pliku
<CODE>/etc/shadow</CODE>. Program ten moe wtedy nalee do grupy
"shadow" i by uruchamiany z prawem "sgid".
<P>Przenoszc zakodowane hasa do innego pliku, efektywnie zabraniamy
wamywaczom dostpu do nich, co uniemoliwia ataki sownikowe.
<P>Dodatkowo pakiet <CODE>Shadow Suite</CODE> posiada wiele innych zalet:
<UL>
<LI>Plik konfiguracyjny, w ktrym mona ustawic wartoci domylne
podczas logowania (<CODE>/etc/login.defs</CODE>)</LI>
<LI>Narzdzia do dodawania, modyfikacji i usuwania kont i grup.</LI>
<LI>Ustalanie "daty wanoci" konta i jego wygasanie (expiration).</LI>
<LI>Przesanianie hase dla grup. (opcjonalnie)</LI>
<LI>Hasa o podwjnej dugoci (16 znakw) [NIE ZALECANE]</LI>
<LI>Lepsza kontrola nad wybieraniem hase przez uytkownikw.</LI>
<LI>Hasa przez telefon.</LI>
<LI>Programy do dodatkowej autentykacji [NIE ZALECANE]</LI>
</UL>
<P>Instalacja pakietu <CODE>Shadow Suite</CODE> przyczynia si do
zwikszenia bezpieczestwa sieci opartej na Linux-ie, ale pozostaje
jeszcze wiele innych rzeczy do zrobienia, aby zwikszy
bezpieczestwo takiej sieci. Z czasem pojawi si seria HOWTO
powicona bezpieczestwu.
<P>Na
<A HREF="http://bach.cis.temple.edu/linux/linux-security/">stronie powiconej bezpieczestwu w Linux-ie</A> zawarte s
rne informacje na ten temat jak rwnie ostrzeenia o znanych
dziurach w systemie.
<P>
<H2>2.1 Czemu moesz nie chcie przesania swojego pliku z hasami ?</H2>
<P>
<P>Jest kilka okolicznoci i konfiguracji, w ktrych instalacja
pakietu <CODE>Shadow Suite</CODE> <B>nie byaby</B> dobrym pomysem:
<P>
<UL>
<LI>Maszyna nie zawiera kont uytkownikw.</LI>
<LI>Twoja maszyna jest w sieci LAN i uywa NIS (Network Information
Services), aby obsugiwa nazwy uytkownikw i hasa na innych
maszynach w tej samej sieci. (Waciwie mogoby to by zrobione,
ale wykracza poza ramy tego dokumentu i nie zwikszyoby
bezpieczestwa w znacznym stopniu.)</LI>
<LI>Twoja maszyna jest uywana przez serwery terminali, aby
weryfikowa uytkownikw poprzez NFS (Network File System), NIS
albo jak inn metod.</LI>
<LI>Na twojej maszynie znajduje si inne oprogramowanie, ktre
autentykuje uytkownikw, a nie ma wersji tego oprogramowania dla
shadow i nie masz rde.</LI>
</UL>
<P>
<H2>2.2 Format pliku /etc/passwd.</H2>
<P>
<P>Nieprzesonity plik /etc/passwd ma nastpujcy format:
<P>
<PRE>
identyfikator:haso:UID:GID:imie_nazw:katalog:powoka
</PRE>
<P>Gdzie:
<DL>
<DT><B><CODE>identyfikator</CODE></B><DD><P>Nazwa (login) uytkownika
<DT><B><CODE>haso</CODE></B><DD><P>Zakodowane haso
<DT><B><CODE>UID</CODE></B><DD><P>Numer uytkownika
<DT><B><CODE>GID</CODE></B><DD><P>Numer domylnej grupy dla uytkownika
<DT><B><CODE>imie_nazw</CODE></B><DD><P>Imi i nazwisko uytkownika - Waciwie
pole to nazywa si GECOS (General Electric Comprehensive Operating
System) i mog tam by zapisane inne dane ni tylko imi i nazwisko
Polecenia Shadow i strony podrcznika systemowego nazywaj to pole
polem komentarza.
<DT><B><CODE>katalog</CODE></B><DD><P>Katalog domowy uytkownika (pena cieka)
<DT><B><CODE>powoka</CODE></B><DD><P>Powoka dla danego uytkownika (pena
cieka)
</DL>
<P>Na przykad:
<P>
<PRE>
login:Nkjg97jh7yff8:503:100:Imi Nazwisko:/home/login:/bin/bash
</PRE>
<P>Gdzie <CODE>Nk</CODE> jest wartoci <CODE>salt</CODE> a
<CODE>jg97jh7yff8</CODE> jest zakodowanym hasem. Zakodowane haso z
kluczem mogoby rwnie dobrze wyglda tak: <CODE>ghHFgj75fR8iP</CODE>
a te dwa acuchy to dokanie te same hasa. Jest 4096 moliwoci
zakodowania pojedynczego hasa. {Przykadowym hasem jest tutaj
'haso' naprawd <B>zy</B> przykad hasa.}
<P>Jak ju pakiet <CODE>Shadow Suite</CODE> jest zainstalowany, to plik
<CODE>/etc/passwd</CODE> zawiera:
<P>
<PRE>
login:x:503:100:Imi Nazwisko:/home/login:/bin/bash
</PRE>
<P>Znaczek "x" w tym przypadku jest po prostu czym co wypenia miejsce
hasa. Format pliku <CODE>/etc/passwd</CODE> si nie zmieni, zmienio si
tylko miejsce przechowywania zakodowanego hasa. Oznacza to, e
kady program, ktry tylko czyta plik <CODE>/etc/passwd</CODE>,a nie
zapisuje w nim hasa, bdzie nadal dziaa poprawnie.
<P>Hasa znajduj si obecnie w pliku <CODE>/etc/shadow</CODE>. (jest to
domylna nazwa)
<P>
<H2>2.3 Format pliku przesaniajcego.</H2>
<P>
<P>Plik <CODE>/etc/shadow</CODE> zawiera nastpujce informacje:
<P>
<PRE>
login:haso:ostatnio_1970:moe:musi:ostrz:dni:dni_1970:zarez
</PRE>
<P>Gdzie:
<P>
<DL>
<DT><B><CODE>login</CODE></B><DD><P>patrz /etc/passwd
<DT><B><CODE>haso</CODE></B><DD><P>Zakodowane haso
<DT><B><CODE>ostatnio_1970</CODE></B><DD><P>Ilo dni od 1 Stycznia 1970, kiedy
haso byo ostatnio modyfikowane
<DT><B><CODE>moe</CODE></B><DD><P>Ilo dni w przecigu, ktrych haso moe by
zmienione
<DT><B><CODE>musi</CODE></B><DD><P>Ilo dni, po ktrej haso musi zosta
zmienione
<DT><B><CODE>ostrz</CODE></B><DD><P>Ilo dni przed wyganiciem hasa od jakiej
naley zacz informowa uytkownika o wyganiciu hasa.
<DT><B><CODE>dni</CODE></B><DD><P>Ilo dni, po ktrej haso wygasa i konto jest
blokowane
<DT><B><CODE>dni_1970</CODE></B><DD><P>Ilo dni od 1 Stycznia 1970, po ktrej
konto jest blokowane
<DT><B><CODE>zarez</CODE></B><DD><P>Pole zarezerwowane
</DL>
<P>Poprzedni przykad mg wic wyglda tak:
<P>
<PRE>
login:Nkjg97jh7yff8:9479:0:10000::::
</PRE>
<P>
<H2><A NAME="krypt"></A> 2.4 Przegld funkcji crypt(3).</H2>
<P>
<P>Ze strony podrcznika systemowego "man":
<P>"<CODE>crypt</CODE> jest funkcj kodujc haso. Oparta jest na
algorytmie DES (Data Encryption Standard) z dozwolonymi wariacjami
(midzy innymi), aby zniechci do sprztowych rozwiza
poszukiwania klucza.
<P>Kluczem jest podane przez uytkownika haso. [Zakodowany acuch
jest wartociami NULL]
<P><CODE>Salt</CODE> jest acuchem 2-znakowym wybranym ze zbioru
[a-zA-Z0-9]. auch ten jest uyty po to, aby zaburzy algorytm w
jeden z 4096 sposobw.
<P>Biorc 7 najmniej znaczcych bitw kadego znaku z klucza
otrzymujemy 56-bitowy klucz. Ten 56-bitowy klucz jest uywany, do
powtrnego kodowania staego acucha (zwykle s to znaki
NULL). Zwrcona warto wskazuje na zakodowane haso - seri 13
drukowalnych znakw ASCII (dwa pierwsze znaki reprezentuj warto
salt). Warto zwracana wskazuje na stae dane, ktrych zawarto
jest zmieniana przy kadym wywoaniu.
<P><B>Uwaga:</B> Liczba moliwych wartoci klucza to 2^56 = 7,2E16
(okoo 72 biliardw). Wyczerpujce poszukiwania tego klucza <B>s
moliwe</B> przy wykorzystaniu wielu rwnolegle wsppracujcych
komputerw. Oprogramowanie, takie jak crack(1), jest dostpne i
szuka ono takich kluczy, ktre z reguy uywane s przez
ludzi. Dlatego wanie przy wybieraniu hasa powinno si unika
przynajmniej zwykych sw. Zaleca si, uywanie programu
passwd(1), ktre podczas zmiany hasa sprawdza czy nowe haso nie
jest przesadnie proste.
<P>Algorytm DES ma w sobie pewne kruczki, ktre czyni uycie
interfejsu <CODE>crypt(3)</CODE> bezuytecznym w przypadku innym ni
autentykacja hase. Jeli masz zamiar uywa interfejsu <CODE>crypt(3)</CODE>
do kryptografii nie rb tego: zdobd dobr ksik na temat
kodowania (encryption) i jedn z szeroko dostpnych bibliotek DES."
<P>Wikszo pakietw <CODE>Shadow Suite</CODE> zawiera kod zwikszajcy
ilo znakw w hale do 16. Eksperci od DES-a s temu przeciwni,
poniewa w takim przypadku kodowanie najpierw odbywa si dla lewej
strony duszego hasa, a potem dla prawej strony. Z powodu tego
jak dziaa <CODE>crypt</CODE>, moe to stworzy mniej bezpiecznie
zakodowane haso ni wtedy, gdy uyte zostaoby haso
krtsze. Dodatkowo, jest mao prawdopodobne, eby uytkownik by w
stanie zapamita haso 16-znakowe.
<P>Trwaj w tej chwili prace, ktre maj na celu zastpienie
dotychczasowego algorytmu autentykacji czym bardziej bezpiecznym
oraz z obsug duszych hase (szczeglnie algorytmem MD5) oraz
pozostawienie kompatybilnoci z metod wykorzystujc <CODE>crypt</CODE>.
<P>Jeli szukasz dobrej ksiki na temat kodowania polecam:
<P>
<PRE>
"Applied Cryptography: Protocols, Algorithms, and Source Code in C"
by Bruce Schneier <schneier@chinet.com>
ISBN: 0-471-59756-2
</PRE>
<P>
<H2><A NAME="s3">3. Zdobywanie pakietu Shadow Suite.</A></H2>
<P>
<P>
<H2>3.1 Historia pakietu Shadow Suite dla Linux-a.</H2>
<P>
<P><B>NIE UYWAJ PAKIETW WYMIENIONYCH W TEJ SEKCJI, S W NICH
PROBLEMY Z BEZPIECZESTWEM.</B>
<P>Orygina pakietu <CODE>Shadow Suite</CODE> zosta napisany przez
<CODE>John F. Haugh II</CODE>.
<P>Jest kilka wersji, ktre byy uywane na Linux-ie:
<P>
<UL>
<LI>Orygina to <CODE>shadow-3.3.1</CODE></LI>
<LI><CODE>shadow-3.3.1-2</CODE> to ata przeznaczona specjalnie na
Linux-a zrobiona przez
<A HREF="mailto:flla@stud.uni-sb.de">Florian La Roche <flla@stud.uni-sb.de></A>. Zawiera ona
take dalsze ulepszenia.</LI>
<LI>Pakiet <CODE>shadow-mk</CODE> zosta skomponowany specjalnie dla
Linux-a.</LI>
</UL>
<P>Pakiet <CODE>shadow-mk</CODE> zawiera pakiet <CODE>shadow-3.3.1</CODE>
dystrybuowany przez <CODE>John F. Haugh II</CODE> wraz z at
<CODE>shadow-3.3.1-2 patch</CODE>, kilka poprawek zrobionych przez
<A HREF="mailto:magnus@texas.net">Mohan Kokal <magnus@texas.net></A>,
ktre uczyniy instalacj o wiele atwiejsz, at zrobion przez
<CODE>Joseph R.M. Zbiciak</CODE>, ktra eliminuje dziury w programie
/bin/login zwizane z opcjami -f, -h oraz kilka innych at.
<P>Pakiet <CODE>shadow-mk</CODE> by pakietem <B>poprzednio</B>
rekomendowanym, ale powinien zosta zamieniony z powodu
<B>problemw</B> z bezpieczestwem zwizanych z programem <CODE>login</CODE>.
<P>W pakietach 3.3.1, 3.3.1-2 oraz shadow-mk s problemy zwizane z
programem <CODE>login</CODE>. Bd ten to niesprawdzanie dugoci
podawanego identyfikatora. Powoduje to przepenienie bufora, co z
kolei powoduje zaamania (crashes) programu albo gorzej. Podobno to
przepenienie bufora moe by wykorzystane przez kogo, kto posiada
konto w systemie w poczeniu z bibliotekami dzielonymi, aby
uzyska przywileje <B>root-a</B>. Nie bd opisywa jak dokadnie
dziaa ten bd poniewa jest duo systemw Linux-owych, ktre s
zaraone, ale systemy z zainstalowanymi tymi pakietami <CODE>Shadow
Suite</CODE> oraz wikszo systemw w wersji przed-ELF <B>bez</B>
pakietu <CODE>Shadow Suite</CODE> s podatne na atak!
<P>Wicej informacji na ten temat znajdziesz na
<A HREF="http://bach.cis.temple.edu/linux/linux-security/">stronie powiconej bezpieczestwu w Linux-ie</A>. (Shared
Libraries and login Program Vulnerability)
<P>
<H2>3.2 Gdzie znale pakiet Shadow Suite.</H2>
<P>
<P>Jedyny polecany pakiet <CODE>Shadow Suite</CODE> jest wci w wersji
BETA, chocia najnowsze wersje s bezpieczne w rodowisku produkcji
i nie zawieraj podatnego na ataki programu <CODE>login</CODE>.
<P>W pakiecie uywane jest nastpujce nazewnictwo:
<PRE>
shadow-RRMMDD.tar.gz
</PRE>
<P>gdzie <CODE>RRMMDD</CODE> oznacza dat wprowadzenia pakietu w obieg.
<P>Wersja ta ostatecznie bdzie wersj <CODE>3.3.3</CODE>, kiedy
zakoczone zostan testy w wersji BETA, a obsugiwana jest przez
<A HREF="mailto:marekm@i17linuxb.ists.pwr.wroc.pl">Marka Michakiewicza <marekm@i17linuxb.ists.pwr.wroc.pl></A>.
<P>Dostpna jest jako
<A HREF="ftp://i17linuxb.ists.pwr.wroc.pl/pub/linux/shadow/">shadow-current.tar.gz</A>.
<P>Dostpna jest take pod adresem
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/shadow/">ftp.icm.edu.pl</A>.
<P>Powiniene uy najnowszej dostpnej wersji.
<P><B>NIE</B> powiniene uywa wersji <B>starszej</B> ni
<CODE>shadow-960129</CODE> poniewa wystpuje tam opisany powyej
problem z programem <CODE>login</CODE>.
<P>Jeli pisz o pakiecie <CODE>Shadow Suite</CODE>, to mam na myli ten
wanie plik. Zakada si te, e tej wanie wersji uywasz.
<P>Aby napisa ten dokument uyem tej wanie wersji pakietu.
<P>Jeli wczeniej uywae pakietu <CODE>shadow-mk</CODE>, powiniene
zaktualizowa go do tej wersji i ponownie skompilowa wszystko to,
co pierwotnie przekompilowae,
<P>
<H2>3.3 Co jest zawarte w pakiecie Shadow Suite.</H2>
<P>
<P>Pakiet ten zawiera zastpcze wersje dla programw:<BR>
<CODE>su, login, passwd, newgrp, chfn, chsh, id</CODE>
<P>Pakiet ten zawiera take nowe programy:
<CODE>chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod, groupadd,
groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, pwunconv</CODE>.
<P>Dodatkowo znajduje si tam take biblioteka <CODE>libshadow.a</CODE>
przeznaczona do pisania i kompilowania programw, ktre potrzebuj
dostpu do hase uytkownikw.
<P>Zawarte s take strony podrcznika systemowego do wszystkich
programw.
<P>Znajduje si tam take plik konfiguracyjny dla programu login,
ktry zostanie zainstalowany jako <CODE>/etc/login.defs</CODE>.
<P>
<H2><A NAME="s4">4. Kompilacja programw.</A></H2>
<P>
<P>
<H2>4.1 Rozpakowywanie archiww.</H2>
<P>
<P>Pierwszym krokiem po cigniciu programu jest rozpakowanie
go. Pakiet jest w formie starowanej i skompresowany programem
gzip, tak wic najpierw przenie go do <CODE>/usr/src</CODE>, a potem
napisz:
<P>
<PRE>
tar -xzvf shadow-current.tar.gz
</PRE>
<P>Powstanie katalog <CODE>/usr/src/shadow-RRMMDD</CODE>, w ktrym znajd
si rda pakietu.
<P>
<H2>4.2 Konfiguracja w pliku config.h</H2>
<P>
<P>Pierwsz rzecz jak musisz zrobi, to skopiowa odpowiednie pliki
Makefile i config.h:
<P>
<PRE>
cd /usr/src/shadow-RRMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h
</PRE>
<P>Potem powiniene przejrze plik <CODE>config.h</CODE>. Zawiera on
definicje dla niektrych opcji konfiguracyjnych. Jeli uywasz
<I>zalecanego</I> pakietu, to polecam wyczenie na pocztek
przesanianie hase grup.
<P>Domylnie opcja ta jest wczona. Aby to wyczy, wyedytuj plik
<CODE>config.h</CODE> i zmie <CODE>#define SHADOWGRP</CODE> na
<CODE>#undef SHADOWGRP</CODE>. Na pocztek proponuje to wyaczy, a pniej
jak bdziesz chcia hase dla grup i administratorw grup, to
moesz przekompilowa pakiet. Jeli zostawisz t opcj wczon
<B>musisz</B> stworzy plik <CODE>/etc/gshadow</CODE>.
<P>Wczanie opcji pozwalajcej na dusze hasa <B>nie</B> jest
zalecane - patrz wyej.
<P>Opcja <CODE>AUTOSHADOW</CODE> zostaa zaprojektowana, aby umoliwi
dziaanie programom, ktre ignoruj przesanianie
hase. Teoretycznie brzmi to dobrze, ale niestety nie dziaa
poprawnie. Jeli waczysz t opcj i program zostanie uruchomiony z
przywilejami "root-a", moe on wywoa funkcj <CODE>getpwnam()</CODE>
jako "root", a pniej zapisa zmienion pozycj spowrotem do
pliku <CODE>/etc/passwd</CODE> (<B>i haso nie jest ju przesonite</B>).
<P>Do takich programw zaliczaj si chfn i chsh. (Nie moesz obej
tego przez zamian rzeczywistego uid z efektywnym uid przed
wywoaniem funkcji <CODE>getpwnam()</CODE> poniewa root take moe
uywa chfn i chsh.)
<P>To samo ostrzeenie jest suszne jeli kompilujesz bibliotek libc,
ktra posiada opcj <CODE>SHADOW_COMPAT</CODE>, ktra robi to
samo. <B>Nie powinna</B> ona by uywana! Jeli zakodowane hasa
zaczn si pojawia spowrotem w pliku <CODE>/etc/passwd</CODE>, to to
wanie jest przyczyn.
<P>Jeli uywasz wczeniejszej wersji biblioteki ni <CODE>4.6.27</CODE>,
bdziesz musia zrobi troch wicej zmian w pliku
<CODE>config.h</CODE> i <CODE>Makefile</CODE>.
<P>W pliku <CODE>config.h</CODE> zmie:
<P>
<PRE>
#define HAVE_BASENAME
</PRE>
<P>na:
<P>
<PRE>
#undef HAVE_BASENAME
</PRE>
<P>A nastpnie w pliku <CODE>Makefile</CODE> zmie:
<P>
<PRE>
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c
</PRE>
<P>na:
<P>
<PRE>
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c basename.c
</PRE>
<P>Zmiany te powoduj zawarcie kodu z <CODE>basename.c</CODE>, ktry zawiera
si w <CODE>libc 4.6.27</CODE> i pniejszych.
<P>
<H2>4.3 Kopie zapasowe twoich oryginalnych programw.</H2>
<P>
<P>Dobrym pomysem bdzie zrobienie kopii zapasowych programw, ktre
zostan zamienione przez <CODE>Shadow Suite</CODE>. W dystrybucji
Slackware 3.0 s to:
<P>
<UL>
<LI>/bin/su</LI>
<LI>/bin/login</LI>
<LI>/usr/bin/passwd</LI>
<LI>/usr/bin/newgrp</LI>
<LI>/usr/bin/chfn</LI>
<LI>/usr/bin/chsh</LI>
<LI>/usr/bin/id</LI>
</UL>
<P>Pakiet w wersji BETA ma moliwo wykonania tego poprzez program
make, ale jest to w komentarzu w pliku Makefile, poniewa rne
dystrybucje umieszczaj te programy w rnych miejscach. Mona to
zrobi piszc: <CODE>make save</CODE>, ale najpierw trzeba skasowa
znaki # z pliku Makefile od linii: <CODE>save:</CODE>
<P>Powiniene take zrobi kopi zapasow pliku <CODE>/etc/passwd</CODE>,
ale bd ostrony, eby nie zmaza programu passwd w katalogu
/etc.
<P>
<H2>4.4 Polecenie make</H2>
<P>
<P><I>Aby zainstalowa pakiet musisz by zalogowany jako "root"</I>.
<P>Uruchom <CODE>make</CODE>, aby skompilowa programy wykonywalne:
<P>
<PRE>
make all
</PRE>
<P>Moesz zobaczy ostrzeenie: <CODE>rcsid defined but not
used</CODE>. Wszystko jest w porzdku, poniewa autor uywa wersji
kontrolnej pakietu.
<P>
<H2><A NAME="s5">5. Instalacja</A></H2>
<P>
<P>
<H2>5.1 Zaopatrz si w dyskietk startow w razie gdyby co popsu.</H2>
<P>
<P>Jeli co powanie pjdzie nie tak, byoby dobrze, gdyby mia
dyskietk startow. Jeli masz dyskietki boot/root z czasw
instalacji, to w porzdku, w innym przypadku przeczytaj
<A HREF="http://ftp.icm.edu.pl/pub/Linux/Documentation/HOWTO/Bootdisk-HOWTO.html">Bootdisk-HOWTO</A>, ktre opisuje jak zrobi dyskietk startow.
<P>
<H2>5.2 Usuwanie zduplikowanych stron podrcznika systemowego.</H2>
<P>
<P>Powiniene take przenie strony podrcznika systemowego, ktre
zostan zastpione. Nawet jeli jeste na tyle odwany, e
instalujesz <CODE>Shadow Suite</CODE> bez kopii zapasowej, to i tak
bdziesz chcia przenie stare strony podrcznika
systemowego. Nowe strony normalnie nie usunyby starych, poniewa
te drugie s przypuszczalnie skompresowane.
<P>Moesz uy takiej kombinacji polece: <CODE>man -aW polecenie</CODE> i
<CODE>locate polecenie</CODE>, aby zlokalizowa strony, ktre maj by
usunite czy przeniesione. Raczej atwiej zrobi to przed
poleceniem <CODE>make install</CODE>.
<P>Jeli uywasz dystrybucji Slackware 3.0, to oto strony, ktre
powiniene usun/przesun:
<P>
<UL>
<LI>/usr/man/man1/chfn.1.gz</LI>
<LI>/usr/man/man1/chsh.1.gz</LI>
<LI>/usr/man/man1/id.1.gz</LI>
<LI>/usr/man/man1/login.1.gz</LI>
<LI>/usr/man/man1/passwd.1.gz</LI>
<LI>/usr/man/man1/su.1.gz</LI>
<LI>/usr/man/man5/passwd.5.gz</LI>
</UL>
<P>W katalogu <CODE>/var/man/cat[1-9]</CODE> mog znajdowa si strony o
tych samych nazwach, ktre take powinny zosta usunite/przeniesione.
<P>
<H2>5.3 Polecenie make install</H2>
<P>
<P>Jeste gotw, aby napisa (zrb to jako "root"):
<P>
<PRE>
make install
</PRE>
<P>Zainstaluje to nowe programy i programy zastpcze oraz ustawi
odpowiednie prawa dostpu do plikw. Zostan take zainstalowane
strony podrcznika systemowego.
<P>S tu take instalowane pliki nagwkowe w odpowiednich miejscach w
<CODE>/usr/include/shadow</CODE>.
<P>Jeli uywasz wersji BETA tego pakietu, to musisz rcznie skopiowa
plik <CODE>login.defs</CODE> do katalogu <CODE>/etc</CODE> i upewni si,
e <B>tylko "root"</B> moe go modyfikowa.
<P>
<PRE>
cp login.defs /etc
chmod 600 /etc/login.defs
</PRE>
<P>Plik ten jest plikiem konfiguracyjnym dla programu <CODE>login</CODE>.
Powiniene go przejrze i odpowiednio zmodyfikowa jego zawarto
zgodnie z twoimi wymaganiami. To tutaj decydujesz, z ktrych
terminalli (tty) moe zalogowa si "root" oraz ustawiasz inne
opcje bezpieczestwa (np. domylne wygasanie hase).
<P>
<H2>5.4 Polecenie pwconv</H2>
<P>
<P>Nastpnym krokiem jest polecenie <CODE>pwconv</CODE>. Musi ono take
by wykonane jako "root" i najlepiej w katalogu <CODE>/etc</CODE>:
<P>
<PRE>
cd /etc
/usr/sbin/pwconv
</PRE>
<P>Program <CODE>pwconv</CODE> tworzy z pliku <CODE>/etc/passwd</CODE> dwa
pliki: <CODE>/etc/npasswd i /etc/nshadow</CODE>.
<P>Dostpny jest take program <CODE>pwunconv</CODE> jeli musisz zrobi
normalny plik <CODE>/etc/passwd</CODE> z plikw <CODE>/etc/passwd i
/etc/shadow</CODE>.
<P>
<H2>5.5 Zmiany nazw plikw npasswd i nshadow</H2>
<P>
<P>Teraz, kiedy ju wykonae polecenie <CODE>pwconv</CODE>, stworzye
dwa pliki - <CODE>/etc/npasswd i /etc/nshadow</CODE>. Ich nazwy musz
zosta zmienione odpowiednio na <CODE>/etc/passwd i /etc/shadow</CODE>.
Chcemy take zrobi kopi oryginalnego pliku <CODE>/etc/passwd</CODE> i
upewni si, e tylko "root" moe go czyta. Kopi zapasow
umiecimy w katalogu domowym "root-a":
<P>
<PRE>
cd /etc
cp passwd ~/passwd
chmod 600 ~/passwd
mv npasswd passwd
mv nshadow shadow
</PRE>
<P>Powiniene si take upewni, czy waciciel plikw i prawa dostpu
s poprawne. Jeli masz zamiar uywa <I>XWindows</I>, to
programy <CODE>xlock i xdm</CODE> musz mie moliwo odczytu pliku
<CODE>shadow</CODE>, ale nie zapisu.
<P>S dwa sposoby na zrobienie tego. Moesz ustawi bit "SUID" dla
programu <CODE>xlock</CODE> (chmod u+s xlock); <CODE>xdm</CODE> ma z reguy
ten bit ustawiony. Albo moesz przydzieli plik <CODE>/etc/shadow</CODE> do
grupy <CODE>shadow</CODE>, ale zanim to zrobisz, sprawd czy masz grup
shadow w pliku <CODE>/etc/group</CODE>. Waciwie aden z uytkownikw
systemu nie powinien by w tej grupie.
<P>
<PRE>
cd /etc
chown root.root passwd
chown root.shadow shadow
chmod 0644 passwd
chmod 0640 shadow
</PRE>
<P>Twj system ma teraz przesonite hasa. Powiniene teraz przej
na inny wirtualny terminal i sprawdzi czy moesz si zalogowa
<P><B>Zrb to teraz - naprawd !</B>
<P>Jeli nie moesz, to co jest nie tak ! Aby powrci do stanu
sprzed instalacji <I>Shadow Suite</I> zrb to:
<P>
<PRE>
cd /etc
cp ~/passwd passwd
chmod 644 passwd
</PRE>
<P>Przywracasz w ten sposb stare pliki, ktre wczeniej zachowae,
na ich waciwe miejsce.
<P>
<H2><A NAME="s6">6. Inne programy, ktre moe musisz uaktualni albo "zaata".</A></H2>
<P>
<P>Pomimo, i pakiet <I>Shadow Suite</I> posiada zastpcze programy dla
wikszoci programw, ktre potrzebuj dostepu do hase, to prawie
w kadym systemie s jeszcze dodatkowe programy, ktre potrzebuj
dostpu do hase.
<P>Jeli masz dystrybucj <I>Debian</I> (a nawet jeli nie masz),
moesz znale rda programw, ktre musz by przerobione
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/debian/stable/source">pod tym adresem</A>.
<P>Reszta tej sekcji opisuje jak uaktualni programy: <CODE>adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo</CODE> tak, aby obsugiway
przesonite hasa.
<P>Aby dowiedzie si jak zrobi obsug przesonitych hase w
jakimkolwiek innym programie zobacz sekcj
<A HREF="#sec-adding">Obsuga przesanianych hase w programach w C</A>. (Programy te
i tak musz by uruchomione z bitem "SUID" dla "root-a" albo grupy
shadow, aby rzeczywicie mie dostp do hase.)
<P>
<H2>6.1 Program adduser z dystrybucji Slackware.</H2>
<P>
<P>Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program
sucy do dodawania nowych uytkownikw - <CODE>/sbin/adduser</CODE>.
Wersj tego programu obsugujc przesonite hasa mona pobra
np. z
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/system/admin/accounts/">ftp.icm.edu.pl</A> z katalogu /pub/Linux/sunsite/system/admin/accounts/.
<P>Ja zalecam uywanie programw, ktre s dostarczane wraz z pakietem
<I>Shadow Suite</I> (<CODE>useradd</CODE>, <CODE>usermod</CODE>, i <CODE>userdel</CODE>)
zamiast <CODE>adduser</CODE> z dystrybucji Slackware. Co prawda
nauczenie si jak si nimi posugiwa zabiera troch czasu, ale
opaca si to poniewa masz o wiele wiksz kontrol i maj one
poprawne blokowanie plikw (file locking) <CODE>/etc/passwd i
/etc/shadow</CODE> - <CODE>adduser</CODE> tego nie robi.
<P>Wicej informacji w nastpnej sekcji -
<A HREF="#sec-work">Wprowadzanie pakietu Shadow Suite do uycia.</A>.
<P>Ale jeli ju musisz go mie, oto co musisz zrobi:
<PRE>
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin
</PRE>
<P>
<H2>6.2 Serwer wu_ftpd.</H2>
<P>
<P>Wraz z wikszoci dystrybucji Linux-a przychodzi serwer <CODE>wu_ftpd</CODE>.
Jeli twoja dystrybucja nie instaluje domylnie pakietu <I>Shadow
Suite</I>, to twj serwer <CODE>wu_ftpd</CODE> nie bdzie skompilowany z
obsug przesonitych hase. <CODE>wu_ftpd</CODE> jest odpalany z
<CODE>inetd/tcpd</CODE> jako proces <I>"root-a"</I>. Jeli twj demon
<CODE>wu_ftpd</CODE> jest star wersj, to bdziesz chcia j
uaktualni tak czy inaczej poniewa stare wersje maj pewien bd,
ktry kompromituje konto <I>"root"</I>. (Wicej informacji
znajdziesz na
<A HREF="http://bach.cis.temple.edu/linux/linux-security/Linux-Security-FAQ/Linux-wu.ftpd-2.4-Update.html">Stronie Domowej Bezpieczestwa na Linuxie</A>).
<P>Na szczcie musisz tylko zdoby rda tego programu i skompilowa
go z wczon obsug "Shadow password".
<P>Jeli nie masz systemu ELF, to serwer <CODE>wu_ftpd</CODE> moesz
znale
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/file-transfer/">na SUNSite Polska</A> - nazywa si <CODE>wu_ftpd-2.4-fixed.tar.gz</CODE>
<P>Jak ju cigniesz te rda, to wtedy napisz:
<P>
<PRE>
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
</PRE>
<P>Potem zmie w pliku <CODE>./src/makefiles/Makefile.lnx</CODE> lini:
<P>
<PRE>
LIBES = -lbsd -support
</PRE>
<P>na:
<PRE>
LIBES = -lbsd -support -lshadow
</PRE>
<P>Teraz moesz uruchomi skrypt kompilujcy i zainstalowa pakiet:
<P>
<PRE>
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
</PRE>
<P>Polecenia te powoduj uycie pliku konfiguracyjnego z obsug hase
przesanianych dla Linux-a, skompilowanie i instalacj serwera.
<P>U siebie na Slackware 2.3 musiaem dodatkowo przed kompilacj
zrobi co takiego:
<P>
<PRE>
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
</PRE>
<P>Zgaszane byy problemy z kompilacj na systemie binarnym ELF, ale
wersja BETA nastpnej wersji dziaa dobrze. Mona j znale pod
adresem
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/slackware/source/n/tcpip">ftp.icm.edu.pl</A> pod nazw wu-ftp-2.4.2-beta-10.tar.gz.
<P>Jak ju cigniesz serwer umie go w <CODE>/usr/src</CODE> i napisz:
<P>
<PRE>
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config
</PRE>
<P>Potem zmie w pliku <CODE>config.lnx</CODE>:
<P>
<PRE>
#undef SHADOW.PASSWORD
</PRE>
<P>na:
<P>
<PRE>
#define SHADOW.PASSWORD
</PRE>
<P>Potem:
<P>
<PRE>
cd ../Makefiles
</PRE>
<P>i zmie w pliku <CODE>Makefile.lnx</CODE>
<P>
<PRE>
LIBES = -lsupport -lbsd # -lshadow
</PRE>
<P>na:
<P>
<PRE>
LIBES = -lsupport -lbsd -lshadow
</PRE>
<P>Nastpnie skompiluj i zainstaluj:
<P>
<PRE>
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
</PRE>
<P>Zauwa, e powiniene sprawdzi w <CODE>/etc/inetd.conf</CODE> katalog,
w ktrym twj serwer rzeczywicie si znajduje. Powiadomiono mnie,
e niektre dystrybucje umieszczaj demony serwerw w innych
miejscach, a wtedy wu_ftpd moe si znajdowa gdzie indziej.
<P>
<H2>6.3 Standardowy ftpd.</H2>
<P>
<P>Jeli masz u siebie standardowy serwer <CODE>ftpd</CODE>, zalecabym
zmian na <CODE>wu_ftpd</CODE>. Poza znan dziur omwion wczeniej,
wu_ftpd jest uznany za bardziej bezpieczny.
<P>Jeli nalegasz na standardowy, albo potrzebujesz obsugi
<I>NIS</I>, to
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/network/file-transfer/">na SUNSite Polska</A> znajdziesz ftpd-shadow-nis.tgz.
<P>
<H2>6.4 pop3d (Post Office Protocol 3)</H2>
<P>
<P>Jeli potrzebujesz obsugi <I>Post Office Protocol 3</I>, bdziesz
musia skompilowa ponownie program <CODE>pop3d</CODE>. Normalnie jest
on uruchamiany przez <CODE>inetd/tcpd</CODE> jako <CODE>"root"</CODE>.
<P>
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/mail/pop/">Na SUNSite Polska</A> dostpne s dwie wersje:
<P>
<UL>
<LI>pop3d-1.00.4.linux.shadow.tar.gz</LI>
<LI>pop3d+shadow+elf.tar.gz</LI>
</UL>
<P>Obie s raczej proste do zainstalowania.
<P>
<H2>6.5 xlock</H2>
<P>
<P>Jeli zainstalujesz pakiet Shadow Suite i uruchomisz
<I>XWindows</I>, a nastpnie zablokujesz (lock) ekran nie
uaktualniajc programu <CODE>xlock</CODE>, bdziesz musia uy
<CODE>CTRL+ALT+Fx</CODE>, aby przeczy si na wirtualn konsol
tekstow (jeli masz jak), zalogowa si i zlikwidowa proces
<CODE>xlock</CODE> (albo uy <CODE>CTRL+ALT+BACKSPACE</CODE> eby zamkn
XWindows). Na szczcie uaktualnienie programu <CODE>xlock</CODE> jest
do proste.
<P>Jeli masz XFree86 wersja 3.x.x, przypuszczalnie uywasz
<CODE>xlockmore</CODE> (ktry jest wspaniaym "screensaver-em" w
poaczeniu z "lock"). Nastpujcy pakiet obsuguje przesonite
hasa - <CODE>xlockmore-3.5.tgz</CODE> a dostpny jest z
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/X11/xutils/screensavers/">SUNSite Polska</A>. Jeli masz starsz wersj zalecam
uaktualnienie do tej.
<P>Oto "z grubsza" to, co musisz zrobi:
<UL>
<LI>cignij <CODE>xlockmore</CODE> i umie w <CODE>/usr/src</CODE></LI>
<LI>rozpakuj: <CODE>tar -xzvf xlockmore-3.7.tgz</CODE></LI>
<LI>zmie w pliku <CODE>/usr/X11R6/lib/X11/config/linux.cf</CODE> lini
<PRE>
#define HasShadowPasswd NO
</PRE>
na:
<PRE>
#define HasShadowPasswd YES
</PRE>
</LI>
<LI>skompiluj pliki wykonywalne:
<PRE>
cd /usr/src/xlockmore
xmkmf
make depend
make
</PRE>
</LI>
<LI>potem przenie wszystko w odpowiednie miejsce i uaktulanij
prawa dostpu i wacicieli plikw
<PRE>
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
</PRE>
</LI>
</UL>
<P>Twj <CODE>xlock</CODE> bdzie teraz dziaa poprawnie.
<P>
<H2>6.6 xdm</H2>
<P>
<P><CODE>xdm</CODE> jest programem, ktry prezentuje ekran "logujcy" dla
XWindows. Niektre systemy startuj ten program kiedy system ma si
uruchomi w odpowiednim "runlevel-u" (zobacz <CODE>/etc/inittab</CODE>).
<P>Jeli zainstalowae przesaniane hasa, musisz uaktulani ten
program. Na szczcie jest to do proste:
<P><CODE>xdm.tar.gz</CODE> mona cign z
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/X11/xutils/">SUNSite Polska</A>.
<P>cignij ten plik i umie go w <CODE>/usr/src</CODE>, potem go
rozpakuj: <CODE>tar -xzvf xdm.tar.gz</CODE>.
<P>Zmie w pliku <CODE>/usr/X11R6/lib/X11/config/linux.cf</CODE> lini
<P>
<PRE>
#define HasShadowPasswd NO
</PRE>
<P>na:
<PRE>
#define HasShadowPasswd YES
</PRE>
<P>Skompiluj pliki wykonywalne:
<P>
<PRE>
cd /usr/src/xdm
xmkmf
make depend
make
</PRE>
<P>Potem umie wszystko na swoim miejscu <CODE>cp xdm /usr/X11R6/bin/</CODE>.
<P><CODE>xdm</CODE> jest uruchamiany jako "root" tak wic nie musisz
zmienia jego praw dostpu.
<P>
<H2>6.7 sudo</H2>
<P>
<P>Program <CODE>sudo</CODE> pozwala administratorowi na udostpnianie
zwykym uytkownikom programw, ktre wymagaj uprawnie
"root-a". Jest to poyteczne poniewa mona ogranicza dostp do
konta "root" i jednoczenie pozwala uytkownikom np. montowa
urzdzenia.
<P><CODE>sudo</CODE> musi przeczyta haso poniewa weryfikuje uytkownika
kiedy jest uruchamiane. <CODE>sudo</CODE> jest uruchamiane z bitem SUID
"root" tak wic nie ma problemu z dostpem do pliku <CODE>/etc/shadow</CODE>.
<P>Program ten z obsug hase przesanianych dostpny jest
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/admin">na SUNSite Polska</A> pod nazw <CODE>sudo-1.2-shadow.tgz.</CODE>
<P><B>Uwaga:</B> Podczas instalacji tego programu usunity zostanie
plik <CODE>/etc/sudoerrs</CODE> i zastpiony domylnym przychodzcym
razem z pakietem. Tak wic zrb sobie kopi zapasow jeli robie
tam jakie zmiany. Albo moesz usun linijk kasujc ten plik z
pliku <CODE>Makefile</CODE>.
<P>Obsuga przesanianych hase jest ju ustawiona w pakiecie, tak
wic wszystko co trzeba zrobi, to przekompilowa go. Po
umieszczeniu go w <CODE>/usr/src</CODE> napisz:
<P>
<PRE>
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
</PRE>
<P>
<H2>6.9 pppd (Serwer Protokou Point-to-Point)</H2>
<P>
<P>Serwer pppd moe zosta tak ustawiony, aby uywa rnych typw
autentykacji:<BR>
<I>Password Authentication Protocol</I> (PAP) i <I>Cryptographic
Handshake Authentication Protocol</I> (CHAP). Serwer pppd zwykle
czyta auchy hase z <CODE>/etc/ppp/chap-secrets</CODE>
i/albo z <CODE>/etc/ppp/pap-secrets</CODE>. Jeli uywasz tego
domylnego zachowania serwera pppd, to przeinstalowywanie go nie
jest konieczne.
<P>pppd pozwala take na uycie parametrw <I>login-u</I> (albo z
wiersza polece, albo z pliku konfiguracyjnego, albo z pliku z
opcjami). Jeli jest podana jaka opcja <I>login-u</I>, to pppd
uyje pliku <CODE>/etc/passwd</CODE>, eby zweryfikowa identyfikator i
haso dla PAP. To oczywicie nie zadziaa odkd nasz plik z hasami
jest przesaniany. Jeli uywasz pppd-1.2.1d, to bdziesz musia
doda kod do obsugi hase przesanianych.
<P>Podany w dalszej czci przykad dodaje obsug dla tej wanie wersji.
<P>Wersja pppd-2.2.0 ma ju w sobie obsug przesanianych hase.
<P>
<H2><A NAME="sec-work"></A> <A NAME="s7">7. Wprowadzanie pakietu Shadow Suite do uycia.</A></H2>
<P>
<P>Sekcja ta opisuje kilka rzeczy ktre bdziesz chcia wiedzie jak
ju zainstalowae pakiet <I>Shadow Suite</I>. Dalsze informacje
zawarte s na stronach podrcznika systemowego na temat kadego
polecenia.
<P>
<H2>7.1 Dodawanie, Modyfikacja i usuwanie uytkownikw.</H2>
<P>
<P>Pakiet <I>Shadow Suite</I> doda nastpujce polecenia do
dodawania, modyfikacji i usuwania uytkownikw. S one obsugiwane z
wiersza polece przez parametry (moge take zainstalowa program
<CODE>adduser</CODE>).
<P>
<H3>useradd.</H3>
<P>
<P>Polecenie <CODE>useradd</CODE> moe zosta uyte, aby doda uytkownika
do systemu. Wykonujesz je take, eby zmieni domylne ustawienia.
<P>Pierwsz rzecz jak powiniene zrobi, to sprawdzi ustawienia
domylne na twoim systemie i odpowiednio je zmieni:
<P>
<PRE>
useradd -D
</PRE>
<P>
<HR>
<PRE>
GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel
</PRE>
<HR>
<P>Wartoci domylne to pewnie nie s te, ktre chcesz uywa, tak
wic jeli zaczby dodawa uytkownikw teraz, to musiaby
podawa informacje dla kadego uytkownika. Jednak moemy i
powinnimy zmieni wartoci domylne:
<P>
<UL>
<LI>Niech domyln grup bdzie 100</LI>
<LI>Niech hasa wygasaj po 60 dniach</LI>
<LI>Niech konta nie bd blokowane po wyganiciu hasa</LI>
<LI>Niech domyln powok bdzie <CODE>/bin/bash</CODE></LI>
</UL>
<P>Aby zrobi takie zmiany napisabym:
<P>
<PRE>
useradd -D -g100 -e60 -f0 -s/bin/bash
</PRE>
<P>Teraz uruchomienie <CODE>useradd -D</CODE> pokae:
<P>
<HR>
<PRE>
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel
</PRE>
<HR>
<P>W razie gdyby chcia wiedzie, to wartoci te s zapisywane w
<CODE>/etc/default/useradd</CODE>.
<P>Teraz moesz uy polecenia <CODE>useradd</CODE>, aby doda
uytkownikw do systemu. Na przykad, aby doda uytkownika <CODE>fred</CODE>
uywajc wartoci domylnych napisaby:
<P>
<PRE>
useradd -m -c "Fred Flintstone" fred
</PRE>
<P>Stworzy to nastpujc pozycj w <CODE>/etc/passwd</CODE>:
<P>
<PRE>
fred:*:505:100:Fred Flinstone:/home/fred:/bin/bash
</PRE>
<P>oraz nastpujc pozycj w <CODE>/etc/shadow</CODE>:
<P>
<PRE>
fred:!:0:0:60:0:0:0:0
</PRE>
<P>Utworzony zostanie katalog domowy freda oraz skopiowana zostanie
tam zawarto katalogu <CODE>/etc/skel</CODE> z powodu opcji <CODE>-m</CODE>.
<P>Poniewa nie podalimy UID-u uyty zostanie nastpny wolny.
<P>Konto freda bdzie utworzone, ale nie bdzie on si mg zalogowa
dopki go nie odblokujemy. Zrobimy to przez zmian hasa:
<P>
<PRE>
passwd fred
</PRE>
<P>
<HR>
<PRE>
Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******
</PRE>
<HR>
<P>Teraz w <CODE>/etc/shadow</CODE> bdzie:
<P>
<PRE>
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
</PRE>
<P>A fred bdzie mg si teraz zalogowa i korzysta z
systemu. Najlepsze w uyciu programw, ktre przychodz razem z
pakietem <I>Shadow Suite</I> jest to, e wszelkie zmiany plikw
<CODE>/etc/passwd</CODE> i <CODE>/etc/shadow</CODE> s wykonywane z
tzw. blokowaniem. Ta wic jeli dodajesz uytkownika do systemu a
inny uytkownik wanie sobie zmienia haso, to obie operacje
zostan wykonane poprawnie.
<P>Powiniene uywa raczej dostarczonych programw ni edytowa
rcznie pliki <CODE>/etc/passwd</CODE> i <CODE>/etc/shadow</CODE>. Jeli
edytowae plik <CODE>/etc/shadow</CODE> i jaki uytkownik zmienia
sobie w tym samym czasie haso, to po zapisaniu zmian dokonanych
przez ciebie nowe haso uytkownika zginie.
<P>Oto may interaktywny skrypt, ktry dodaje nowego uytkownika
uywajc <CODE>useradd</CODE> i <CODE>passwd</CODE>:
<P>
<HR>
<PRE>
#!/bin/bash
#
# /sbin/newuser - Skrypt dodajcy uytkownikw do systemu uywajcego
# programw useradd z pakietu Shadow Suite i passwd.
#
# Napisany przez Mike'a Jacksona <mhjack@tscnet.com> jako przykad do
# Shadow-Password-HOWTO. Pozwolenie na uywanie i modyfikacje wyranie dane.
#
# Monaby ten skrypt zmodyfikowa tak, eby pokazywa wartoci domylne
# oraz pozwala na modyfikacj podobnie jak program adduser ze Slackware.
# Monaby te sprawdza bdy, czy gupie wartoci.
#
#
##
# Wartoci domylne dla polecenia useradd
##
GROUP=100 # Domylna grupa
HOME=/home # Katalog domowy (/home/identyfikator)
SKEL=/etc/skel # Katalog szkieletowy
INACTIVE=0 # Ilo dni, po ktrych wygasa haso.
EXPIRE=60 # Ilo dni, przez ktr ma istnie haso
SHELL=/bin/bash # Domylna powoka (pena cieka)
##
# Wartoci domylne dla polecenia passwd
##
PASSMIN=0 # Ilo dni midzy ktr zmienia si haso
PASSWARN=14 # Ilo dni przed wyganiciem hasa kiedy jest
# wysyana wiadomo ostrzegajca.
##
# Upewnij si, e "root" uruchomi ten skrypt
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
echo "You must be root to add news users!"
exit 1
fi
##
# Zapytaj o identyfikator i imi i nazwisko
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# Zauwa, e wymagane s "" przy $FULLNAME poniewa pole to bdzie
# prawie zawsze zawierao przynajmniej jedn spacj, a bez " polecenie
# useradd "pomylaoby", e jest to nastpny parametr kiedy doszoby
# do spacji.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
-f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# Ustaw domylne wartoci dla hasa
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# Niech polecenie passwd zapyta poprawnie (dwa razy) o haso
##
/bin/passwd $USERNAME
##
# Poka, co zostao zrobione
##
echo ""
echo "Entry from /etc/passwd:"
echo -n " "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n " "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n " "
passwd -S $USERNAME
echo ""
</PRE>
<HR>
<P>Uycie skryptu do dodawania uytkownikw do systemu jest na prawd
bardziej preferowane ni rczna edycja plikw <CODE>/etc/passwd</CODE>
czy <CODE>/etc/shadow</CODE> czy te uywanie programu <CODE>adduser</CODE>
ze Slackware. Moesz miao modyfikowa ten skrypt dla swoich
potrzeb.
<P>Wicej informacji na temat <CODE>useradd</CODE> znajdziesz w
podrczniku systemowym.
<P>
<H3>usermod.</H3>
<P>
<P>Program <CODE>usermod</CODE> uywany jest do modyfikowania informacji na
temat danego uytkownika. Opcje tego programu s podobne do opcji
programu <CODE>useradd</CODE>.
<P>Powiedzmy, e chcesz zmieni powok dla freda; zrobiby to tak:
<P>
<PRE>
usermod -s /bin/tcsh fred
</PRE>
<P>Teraz pozycja dotyczca freda w <CODE>/etc/passwd</CODE> zmieniaby si
na:
<P>
<PRE>
fred:*:505:100:Fred Flinstone:/home/fred:/bin/tcsh
</PRE>
<P>Zamy, e chcemy, eby konto freda wygaso 15.09.1997:
<P>
<PRE>
usermod -e 09/15/97 fred <-- data w stylu angielskim-amerykaskim (mmddrr)
</PRE>
<P>Teraz pozycja dotyczca freda w <CODE>/etc/shadow</CODE> zmieniaby si
na:
<P>
<PRE>
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
</PRE>
<P>Wicej informacji na temat <CODE>usermod</CODE> znajdziesz w
podrczniku systemowym.
<P>
<H3>userdel.</H3>
<P>
<P><CODE>userdel</CODE> robi dokadnie to czego si spodziewae - kasuje
konto podanego uytkownika. Uycie jest proste:
<P>
<PRE>
userdel -r <identyfikator>
</PRE>
<P>Opcja <CODE>-r</CODE> powoduje skasowanie wszystkich plikw z katalogu
domowego uytkownika. Plikw zlokalizowanych w innym systemie
plikw trzeba poszuka i skasowa je rcznie.
<P>Jeli chcesz tylko zablokowa dane konto, a nie skasowa to uyj
polecenia <CODE>passwd</CODE>.
<P>
<H2>7.2 Polecenie passwd i "termin wanoci" hasa.</H2>
<P>
<P>Polecenie <CODE>passwd</CODE> uywane jest do zmiany hasa. Oprcz tego
uywane jest przez "root-a" do:
<P>
<UL>
<LI>Blokowania i odblokowywania kont (<CODE>-l</CODE> i <CODE>-u</CODE>)</LI>
<LI>Ustawiania maksymalnej iloci dni przez jak haso jest wane (<CODE>-x</CODE>)</LI>
<LI>Ustawiania minimalnej iloci dni midzy zmianami hasa (<CODE>-n</CODE>)</LI>
<LI>Ustawiania iloci dni, po ktrych wysyane jest ostrzeenie o
wyganiciu hasa (<CODE>-w</CODE>)</LI>
<LI>Ustawiania iloci dni, po ktrej haso wygasa przed
zablokowaniem konta (<CODE>-i</CODE>)</LI>
<LI>Pozwalania na przegldanie informacji o koncie w czytelniejszym
formacie (<CODE>-S</CODE>)</LI>
</UL>
<P>Na przykad, spjrzmy jeszcze raz na freda:
<P>
<PRE>
passwd -S fred
fred P 03/04/96 0 60 0 0
</PRE>
<P>Oznacza to, e haso freda jest wane, ostatnio byo zmieniane
04.03.1996, moe by zmienione w kadej chwili, wygasa po 60
dniach, fred nie zostanie ostrzeony oraz konto nie zostanie
zablokowane po wyganiciu hasa.
<P>Oznacza to po prostu tyle, e kiedy fred zaloguje si po
wyganiciu hasa zostanie zaraz na pocztku poproszony o podanie
nowego hasa.
<P>Jeli zdecydujemy si, e chcemy ostrzec freda na 14 dni przed
wyganiciem jego hasa i zablokowa jego konto 14 dni po
wyganiciu hasa trzebaby napisa tak:
<P>
<PRE>
passwd -w14 -i14 fred
</PRE>
<P>Teraz dane o fredzie zmianiy si na:
<P>
<PRE>
fred P 03/04/96 0 60 14 14
</PRE>
<P>Wicej informacji na temat <CODE>passwd</CODE> znajdziesz w
podrczniku systemowym.
<P>
<H2>7.3 Plik login.defs</H2>
<P>
<P>Plik <CODE>/etc/login</CODE> jest plikiem konfiguracyjnym dla programu
<CODE>login</CODE> oraz dla caego pakietu <I>Shadow Suite</I>.
<P><CODE>/etc/login</CODE> zawiera ustawienia od tego jak bd wyglda
znaki zachty do tego jakie domylne wartoci bd dla wygasania
hasa kiedy uytkownik je sobie zmieni.
<P>Plik <CODE>/etc/login.defs</CODE> jest do dobrze udokumentowany ju
przez same komentarze w nim zawarte. Chocia jest kilka rzeczy do
odnotowania:
<P>
<UL>
<LI>Zawiera opcje, ktre mog by wczane i wyczane do okrelania
iloci zalogowa.</LI>
<LI>Zawiera wskazania na inne pliki konfiguracyjne.</LI>
<LI>Zawiera domylne wartoci dla takich ustawie jak "termin
wanoci" hasa.</LI>
</UL>
<P>Z powyszej listy wynika, e jest to raczej wany plik i powiniene
si upewni, e istnieje i e ustawienia s takie jak chciae.
<P>
<H2>7.4 Hasa dla grup.</H2>
<P>
<P>Plik <CODE>/etc/groups</CODE> moe zawiera hasa, ktre pozwalaj
uytkownikom doczy si do jakiej grupy. Funkcja ta jest
wczona jeli zdefiniujesz sta <CODE>SHADOWGRP</CODE> w pliku
<CODE>/usr/src/shadow-YYMMDD/config.h</CODE> .
<P>Jeli j zdefiniujesz i skompilujesz pakiet, musisz utworzy plik
<CODE>/etc/gshadow</CODE>, eby trzyma tam hasa grup i informacje
administracyjne.
<P>Do utworzenia pliku <CODE>/etc/shadow</CODE> uye programu
<CODE>pwconv</CODE>; nie ma odpowiednika do utworzenia pliku
<CODE>/etc/gshadow</CODE>, ale to nie ma znaczenia bo plik ten sam si
sob zajmuje.
<P>Aby stworzy pocztkowy plik <CODE>/etc/gshadow</CODE> zrb tak:
<P>
<PRE>
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
</PRE>
<P>Jak bdziesz tworzy nowe grupy, zostan one dodane do
<CODE>/etc/group</CODE> i <CODE>/etc/gshadow</CODE>.
<P>Do modyfikacji grup su programy dostarczane wraz z pakietem
<I>Shadow Suite</I>: <CODE>groups</CODE>, <CODE>groupadd</CODE>,
<CODE>groupmod</CODE> i <CODE>groupdel</CODE>.
<P>Format pliku <CODE>/etc/group</CODE> jest taki:
<P>
<PRE>
nazwa_grupy:!:GID:czonek,czonek,...
</PRE>
<P>Gdzie:
<P>
<DL>
<DT><B><CODE>nazwa_grupy</CODE></B><DD><P>- chyba nie wymaga wyjaniania :)
<DT><B><CODE>!</CODE></B><DD><P>- w tym miejscu normalnie byoby haso, ale
teraz jest ono w gshadow
<DT><B><CODE>GID</CODE></B><DD><P>- numer grupy
<DT><B><CODE>czonek</CODE></B><DD><P>- lista czonkw grupy.
</DL>
<P>Format pliku <CODE>/etc/gshadow</CODE> jest taki:
<P>
<PRE>
nazwa_grupy:haso:admin,admin,...:czonek,czonek,...
</PRE>
<P>Gdzie:
<DL>
<DT><B><CODE>nazwa_grupy</CODE></B><DD><P>- chyba nie wymaga wyjaniania :)
<DT><B><CODE>haso</CODE></B><DD><P>- zakodowane haso grupy
<DT><B><CODE>admin</CODE></B><DD><P>- lista administratorw grupy
<DT><B><CODE>czonek</CODE></B><DD><P>- lista czonkw grupy
</DL>
<P>Polecenie <CODE>gpasswd</CODE> jest uywane tylko do dodawania i
usuwania czonkw do/z grupy. "root" i kady z administratorw
grupy moe usuwa i dodawa czonkw.
<P>Haso dla grupy moe by zmienione za pomoc polecenia
<CODE>passwd</CODE> przez "root-a" i kadego z administratorw grupy.
<P>Chocia nie ma strony do podrcznika systemowego dla
<CODE>gpasswd</CODE>, to zrozumienie opcji tego polecenia nie jest
takie trudne jak ju rozumiesz jego format i
koncept. <CODE>gpasswd</CODE> bez adnych parametrw poda opcje jakie
przyjmuje.
<P>
<H2>7.5 Programy do sprawdzania poprawnoci.</H2>
<P>
<P>
<H3>pwck</H3>
<P>
<P>Program <CODE>pwck</CODE> sprawdza poprawno plikw <CODE>/etc/passwd</CODE>
i <CODE>/etc/shadow</CODE>. Sprawdzi kadego uytkownika czy ma:
<P>
<UL>
<LI>poprawn ilo pl,</LI>
<LI>unikalny identyfikator,</LI>
<LI>dobry UID i GID</LI>
<LI>dobr grup domyln</LI>
<LI>poprawny katalog domowy</LI>
<LI>poprawn powok</LI>
</UL>
<P>Ostrzee nas take jeli znajdzie konta bez hase.
<P>Uruchomienie tego programu po zainstalowaniu pakietu <I>Shadow
Suite</I> jest dobrym pomysem. Powinno sie go take uruchamia
okresowo - co tydzie, co miesic. Jeli uyjesz opcji <CODE>-r</CODE>,
to moesz uy programu <CODE>cron</CODE>, aby uruchamia <CODE>pwck</CODE>
okresowo i dostawa raport poczt.
<P>
<H3>grpck</H3>
<P>
<P>Program ten sprawdza poprawno plikw <CODE>/etc/group</CODE> i
<CODE>/etc/gshadow</CODE>. Sprawdza:
<P>
<UL>
<LI>ilo pl,</LI>
<LI>unikaln nazw grupy</LI>
<LI>poprawno listy administratorw i czonkw.</LI>
</UL>
<P>Ma take opcj <CODE>-r</CODE> do automatycznych raportw.
<P>
<H2>7.6 Hasa przez telefon. (Dial-up)</H2>
<P>
<P>Hasa przez telefon s inn opcjonaln lini obrony dla systemw,
ktre umoliwiaj dostp przez telefon. Jeli masz system z du
iloi uytkownikw czcych si lokalnie albo poprzez sie, ale
chcesz ograniczy kto moe sie poczy, to "hasa przez telefon"
s dla ciebie. Aby waczy "hasa przez telefon" musisz wyedytowa
plik <CODE>/etc/login.defs</CODE> i upewni si, e
<CODE>DIALUPS_CHECK_ENAB</CODE> jest ustawione na <CODE>yes</CODE>.
<P>S dwa pliki, ktre zawieraj informacje o poczeniach przez
telefon: <CODE>/etc/dialups</CODE>, ktry zawiera "tty" (jeden na lini
bez "/dev/"). Jeli dany tty jest tam zawarty to poczenie jest
sprawdzane; oraz <CODE>/etc/d_passwd</CODE> z pen ciek dostpu do
powoki oraz opcjonalnym hasem.
<P>Jeli uytkownik zaloguje si na lini, ktra jest podana w
<CODE>/etc/diulups</CODE> i jego powoka jest podana w
<CODE>/etc/d_passwd</CODE>, to bdzie mg si zalogowa tylko po
podaniu poprawnego hasa.
<P>Innym uytecznym celem "hase przez telefon" moe by
ustawienie linii, ktra pozwala tylko na poczenia konkretnego
rodzaju (np. PPP lub/i UUCP). Jeli uytkownik prbuje si poczy
inaczej (np. list powok), to musi zna haso na t lini.
<P>Zanim bdziesz mg uywa tych waciwoci musisz stworzy te
pliki.
<P>Polecenie <CODE>dpasswd</CODE> przypisuje hasa do konkretnych powok
zawartych w pliku <CODE>/etc/d_passwd</CODE>. Wicej informacji
znajdziesz na stronie podrcznika systemowego.
<P>
<H2><A NAME="sec-adding"></A> <A NAME="s8">8. Obsuga przesanianych hase w programach w C.</A></H2>
<P>
<P>Dodawanie obsugi hase przesanianych do programw jest cakiem
proste. Jedynym problemem jest to, e program musi zosta
uruchomiony z prawami "root-a", aby mie dostp do pliku
<CODE>/etc/shadow</CODE>.
<P>Tutaj pojawia si jeden wielki problem: podczas pisania takich
programw naley si trzyma jak najcilej zasad
bezpieczestwa. Na przykad jeli program posiada wyjcie do
powoki, to <B>nie moe</B> si to zdarzy na prawach "root-a".
<P>Jeli program musi mie dostp do <CODE>/etc/shadow</CODE> i nie
potrzebuje wicej praw "root-a", to lepiej uruchomi go z prawami
grupy "shadow". Program <CODE>xlock</CODE> jest przykadem takiego
programu.
<P>W przykadzie podanym niej, <CODE>pppd-1.2.1d</CODE> jest ju
uruchomiony z prawami "root-a", tak wic dodanie obsugi hase
przesanianych nie powinno zagrozi bezpieczestwu.
<P>
<H2>8.1 Pliki nagwkowe.</H2>
<P>
<P>Pliki te powinny znajdowa si w <CODE>/usr/include/shadow</CODE>.
Powinien tam by take plik <CODE>/usr/include/shadow.h</CODE>, ale
bdzie to symboliczne doaczenie do
<CODE>/usr/include/shadow/shadow.h</CODE>.
<P>Aby doda obsug hase przesanianych do programu, musisz doczy
pliki nagwkowe:
<P>
<PRE>
#include <shadow/shadow.h>
#include <shadow/pwauth.h>
</PRE>
<P>Dobrym pomysem byoby uycie dyrektyw kompilatora, aby skompilowa
warunkowo kod z obsug hase przesanianych. (tak jak w
przykadzie poniej.)
<P>
<H2>8.2 Biblioteka libshadow.a</H2>
<P>
<P>Biblioteka ta zostaa zainstalowana w <CODE>/usr/lib</CODE> jak
instalowae pakiet <I>Shadow Suite</I>.
<P>Kiedy kompilujesz obsug przesaniancyh hase w programie trzeba
poinformowa "linker-a", aby doczy bibliotek
<CODE>libshadow.a</CODE>.
<P>Robi si to tak:
<P>
<PRE>
gcc program.c -o program -lshadow
</PRE>
<P>Chocia jak zobaczymy w poniszym przykadzie, wikszo duych
programw uywa plikw <CODE>Makefile</CODE> i ma zwykle zmienn
<CODE>LIBS=...</CODE>, ktr si modyfikuje.
<P>
<H2>8.3 Struktura Shadow.</H2>
<P>
<P>Biblioteka <CODE>libshadow.a</CODE> uywa struktury <CODE>spwd</CODE> dla
informacji, ktre otrzyma z pliku <CODE>/etc/shadow</CODE>. Oto
definicja tej struktury wzita z <CODE>/usr/include/shadow/shadow.h</CODE>:
<P>
<HR>
<PRE>
struct spwd
{
char *sp_namp; /* identyfikator */
char *sp_pwdp; /* zakodowane haso */
sptime sp_lstchg; /* data ostatniej zmiany */
sptime sp_min; /* minimalna ilo dni midzy zmianami */
sptime sp_max; /* maksymalna ilo dni midzy zmianami */
sptime sp_warn; /* ilo dni przed wyganiciem hasa
kiedy bdzie wysyane ostrzeenie */
sptime sp_inact; /* ilo dni, po jakiej wygasa haso
dopki konto nie bdzie zablokowane */
sptime sp_expire; /* ilo dni od 01.01.1970 dopki
konto nie wyganie */
unsigned long sp_flag; /* zarezerwowane na przyszo */
};
</PRE>
<HR>
<P>Do pola <CODE>sp_pwdp</CODE> mona dodatkowo wstawi nawz programu:
<P>
<PRE>
identyfikator:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::
</PRE>
<P>Oznacza to, e oprcz podania hasa bdzie wykonany program
<CODE>/sbin/extra</CODE>, ktry wykona dalsz autentykacj. Wywoany program
otrzyma identyfikator i przecznik, ktry okreli dlaczego zosta
wywoany. Wicej informacji znajdziesz w
<CODE>/usr/include/shadow/pwauth.h</CODE> i <CODE>pwauth.c</CODE>.
<P>Oznacza to, e powinnimy uy funkcji <CODE>pwauth</CODE> do
przeprowadzenia poprawnej autentykacji, poniewa zajmie si ona
take drug autentykacj. Jest to uyte w przykadzie poniej.
<P>Autor pakietu <I>Shadow Suite</I> twierdzi, e odkd wikszo
programw tego nie stosuje, moe to zosta usunite lub zmienione w
przyszych wersjach pakietu.
<P>
<H2>8.4 Funkcje pakietu Shadow Suite.</H2>
<P>
<P>Plik <CODE>shadow.h</CODE> zawiera deklaracje funkcji zawartych w
bibliotece <CODE>libshadow.a</CODE>:
<P>
<HR>
<PRE>
extern void setspent __P ((void));
extern void endspent __P ((void));
extern struct spwd *sgetspent __P ((__const char *__string));
extern struct spwd *fgetspent __P ((FILE *__fp));
extern struct spwd *getspent __P ((void));
extern struct spwd *getspnam __P ((__const char *__name));
extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));
</PRE>
<HR>
<P>Funkcja, ktr uyjemy w przykadzie to <CODE>getspnam</CODE>, ktra
odczyta struktur <CODE>spwd</CODE> dla podanego identyfikatora.
<P>
<H2>8.5 Przykad.</H2>
<P>
<P>Jest to przykad na dodanie obsugi hase przesanianych do
programu, ktry tego potrzebuje, ale nie ma domylnie wczonego.
<P>Przykad ten uywa serwera <I>Point-to-Point Protocol</I>
(pppd-1.2.1d), ktry ma tryb do autentykacji <I>PAP</I> uywajc
identyfikatora i hasa z pliku <CODE>/etc/passwd</CODE> zamiast z
plikw <I>PAP</I> czy <I>CHAP</I>. Nie musisz dodawa tego
kodu do <CODE>pppd-2.2.0</CODE>, poniewa on ju tam jest.
<P>Ta waciwo pppd przypuszczalnie nie jest czsto uywana, ale
jeli zainstalowae <I>Shadow Suite</I>, to serwer ten nie
bdzie dziaa poniewa hasa nie s ju zapisywane w
<CODE>/etc/passwd</CODE>.
<P>Kod do autentykacji uytkownikw przez <CODE>pppd-1.2.1d</CODE>
umieszczony jest w pliku <CODE>/usr/src/pppd-1.2.1d/pppd/auth.c</CODE>.
<P>Poniszy kod musi zosta dodany na pocztku pliku gdzie znajduj
si wszystkie inne dyrektywy <CODE>#include</CODE>. Otoczylimy je
dyrektywami warunkowymi (czyli skompiluj si tylko jeli
kompilujemy z waczon obsug hase przesanianych).
<P>
<HR>
<PRE>
#ifdef HAS_SHADOW
#include <shadow.h>
#include <shadow/pwauth.h>
#endif
</PRE>
<HR>
<P>Nastpnym krokiem jest modyfikacja waciwiego kodu. Cigle
modyfikujemy plik <CODE>auth.c</CODE>.
<P>Funkcja <CODE>auth.c</CODE> przed modyfikacj:
<P>
<HR>
<PRE>
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
/*
* XXX If no passwd, let them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHACK);
}
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
</PRE>
<HR>
<P>Haso uytkownika jest umieszczane w <CODE>pw->pw_passwd</CODE>, tak e
wszystko co musimy zrobi, to doda funkcj
<CODE>getspnam</CODE>. Umieci to haso w <CODE>spwd->sp_pwdp</CODE>.
<P>Dodamy funkcj <CODE>pwauth</CODE>, aby przeprowadzi waciw
autentykacj. Przeprowadzi to take drug autentykacj jeli plik
shadow jest odpowiednio ustawiony.
<P>Funkcja <CODE>auth.c</CODE> po modyfikacji do obsugi hase
przesanianych:
<P>
<HR>
<PRE>
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* This function has been modified to support the Linux Shadow Password
* Suite if USE_SHADOW is defined.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
#ifdef USE_SHADOW
struct spwd *spwd;
struct spwd *getspnam();
#endif
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
#ifdef USE_SHADOW
spwd = getspnam(user);
if (spwd)
pw->pw_passwd = spwd->sp-pwdp;
#endif
/*
* XXX If no passwd, let NOT them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHNAK);
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}
#else
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
#endif
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
</PRE>
<HR>
<P>Po dokadnym przeledzaniu tego kodu okae si, e zrobilimy
jeszcze jedn zmian. Oryginalna wersja pozwalaa na dostp
(zwracaa <CODE>UPAP_AUTHACK</CODE>) jeli <B>nie byo</B> hasa w
pliku <CODE>/etc/passwd</CODE>. Nie jest to dobrze, poniewa popularnym
uyciem tej waciwoci programu <CODE>login</CODE> jest uywanie
jednego konta, na dostp do programu PPP, a potem sprawdzenie
identyfikatora i hasa dostarczonych przez PAP z tymi w plikach
<CODE>/etc/passwd</CODE> i <CODE>/etc/shadow</CODE>.
<P>Tak wic jeli ustwilibymy oryginaln wersj, aby uruchamiaa
powok dla uytkownika np. <CODE>ppp</CODE>, to kady mgby uzyska
poczenie ppp przez podanie identyfikatora ppp i pustego hasa.
<P>Poprawilimy to przez zwrcenie <CODE>UPAP_AUTHNAK</CODE> zamiast
<CODE>UPAP_AUTHACK</CODE> jeli pole z hasem jest puste.
<P>Interesujce jest to, e <CODE>pppd-2.2.0</CODE> ma ten sam problem.
<P>Nastpnie musimy zmodyfikowa plik <CODE>Makefile</CODE> tak, eby
pojawiy si dwie rzeczy:<BR>
<CODE>USE_SHADOW</CODE> musi by zdefiniowane i <CODE>libshadow.a</CODE>
musi by dodana w procesie "linkowania".
<P>Wyedytuj plik <CODE>Makefile</CODE> i dodaj:
<P>
<PRE>
LIBS = -lshadow
</PRE>
<P>Potem znajd lini:
<P>
<PRE>
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t
</PRE>
<P>i zmie j na:
<P>
<PRE>
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW
</PRE>
<P>Teraz kompilacja i instalacja.
<P>
<H2><A NAME="s9">9. Czsto zadawane pytania.</A></H2>
<P>
<P><I>P:</I> Kiedy kontrolowaem terminale z jakich mg si
logowa "root" przez plik <CODE>/etc/securettys</CODE>, teraz nie
wyglda na to eby dziaao. Co jest grane ?
<P><I>O:</I> Teraz kiedy pakiet <I>Shadow Suite</I> jest
zainstalowany plik <CODE>/etc/securettys</CODE> nie ma adnego
znaczenia. Terminale, z ktrych moe si zalogowa "root" s teraz
podawane w pliku konfiguracyjnym <CODE>/etc/login.defs</CODE>. Pozycja
w tym pliku moe wskazywa na jaki inny plik.
<P><I>P:</I> Zainstalowaem pakiet <I>Shadow Suite</I> i nie mog
si zalogowa, co przegapiem ?
<P><I>O;</I> Przypuszczalnie zainstalowae pakiet i zapomniae
uruchomi program <CODE>pwconv</CODE> albo zapomniae skopiowa
<CODE>/etc/npasswd</CODE> na <CODE>/etc/passwd</CODE> oraz
<CODE>/etc/nshadow</CODE> na <CODE>/etc/shadow</CODE>. Moesz musisz take
skopiowa <CODE>login.defs</CODE> do <CODE>/etc</CODE>.
<P><I>P:</I> W sekcji o "xlock-u" byo napisane, eby zmieni grup
pliku <CODE>/etc/shadow</CODE> na shadow, ale ja nie mam takiej grupy -
co mam zrobi ?
<P><I>O:</I> Moesz j doda. Po prostu wyedytuj plik
<CODE>/etc/group</CODE> i dodaj lini definiujc grup shadow. Musisz
si upewni, e numer grupy nie jest uywany przez adn inn i
musisz j doda przed pozycj <CODE>nogroup</CODE>. Albo po prostu
ustaw bit SUID dla programu <CODE>xlock</CODE>.
<P><I>P:</I> Jest jaka lista dyskusyjna dla Linux Shadow Password
Suite ?
<P><I>O:</I> Tak, ale jest ona dla rozwijajcych ten pakiet i dla
testujcych wersje BETA. Moesz si zapisa na t list
<A HREF="mailto:shadow-list-request@neptune.cin.net">wysyajc list</A> na adres <EM>shadow-list-request@neptune.cin.net</EM>
o tytule <I>subscribe</I>. Na licie tej dyskutuje si waciwie
o konkretnej serii <CODE>shadow-YYMMSS</CODE>. Powiniene si na ni
zapisa jeli chcesz by wczony do dalszego rozwoju albo jeli
zainstalowae sobie ten pakiet i chcesz wiedzie o nowszych
wersjach.
<P><I>P:</I> Zainstalowaem <I>Shadow Suite</I>, ale kiedy uywam
polecenia <CODE>userdel</CODE> dostaj: "userdel: cannot open shadow
group file" - co zrobiem le ?
<P><I>O:</I> Skompilowae pakiet z wczon opcj
<CODE>SHADOWGRP</CODE>, ale nie masz pliku <CODE>/etc/gshadow</CODE>.
Musisz albo wyedytowa plik <CODE>config.h</CODE> i skompilowa
ponownie pakiet albo stworzy plik <CODE>/etc/gshadow</CODE>. Zobacz
sekcj dotyczc przesanianych grup.
<P><I>P:</I> Zainstalowaem <I>Shadow Suite</I>, ale zakodowane
hasa pojawiaj si w pliku <CODE>/etc/passwd</CODE>, co jest ?
<P><I>O:</I> Albo waczye opcj <CODE>AUTOSHADOW</CODE> w pliku
<CODE>config.h</CODE>, albo twoja biblioteka <CODE>libc</CODE> bya
skompilowana z opcj <CODE>SAHDOW_COMPAT</CODE>. Musisz dowiedzie si,
ktre z tych dwch jest prawdziwe i skompilowa ponownie.
<P>
<H2><A NAME="s10">10. Prawa autorskie podzikowania i rne.</A></H2>
<H2>10.1 Prawa autorskie</H2>
<P>
<P>Linux Shadow Password HOWTO jest chronione prawami autorskimi
Michaela H. Jacksona.
<P>Dozwolone jest dystrybuowanie kopii tego dokumentu zakadajc, e
wzmianka o prawach autorskich i to pozwolenie jest zawarte we
wszystkich kopiach.
<P>Dozwolone jest dytrybuowanie i kopiowanie modyfikowanych wersji
tego dokumentu pod warunkami kopiowania z powyszego akapitu,
zakadajc, e zawarta jest jasna informacja, e jest to wersja
modyfikowana tego dokumentu.
<P>Dozwolone jest kopiowanie i dystrybucja tumacze tego dokumentu na
inne jzyki pod warunkami dla wersji modyfikowanych wymienionymi
wyej.
<P>Dozwolone jest konwertowanie tego dokumentu na inne media pod
warunkami podanymi powyej dla wersji modyfikowanych zakadajc, e
informacja o rdle nowego dokumentu jest zawarta przez oczywisty
odnonik do dokumentu rdowego w nowej wersji tego
dokumentu. Jeli wystpuj jakie wtpliowci co do sowa
"oczywiste", waciciel praw autorskich rezerwuje sobie prawo
decyzji.
<P>
<H2>10.2 Podzikowania i rne.</H2>
<P>
<P>Przykady kodw dla <CODE>auth.c</CODE> zostay wzite z pppd-1.2.1d i
ppp-2.1.0e, Copyright (c) 1993 and The Australian National
University oraz Copyright (c) 1989 Carnegie Mellon University.
<P>Podzikowania dla Marka Michakiewicza
<marekm@i17linuxb.ists.pwr.wroc.pl> za napisanie i opiek nad
pakietem <I>Shadow Suite</I> dla Linux-a oraz za przejrzenie i
komentarze do tego dokumentu.
<P>Podzikowania dla Rona Tidda <rtidd@tscnet.com> za jego
pomocne przejrzenie i testowanie.
<P>Podzikowania dla wszystkich, ktrzy przysali do mnie komentarze,
aby pomc w ulepszeniu tego dokumentu.
<P>Jeli masz jakie uwagi lub sugestie to napisz do mnie prosz,<BR><BR>
z powaaniem
<P>
<A HREF="mailto:mhjack@tscnet.com">Michael H. Jackson <mhjack@tscnet.com></A><P>
<H2><A NAME="tlum"></A> 10.3 Od tumacza.</H2>
<P>
<P>Tumaczenie to jest chronione prawami autorskimi © Bartosza
Maruszewskiego.
Dozwolone jest rozprowadzanie i dystrybucja na prawach takich
samych jak dokument oryginalny.
<P>Jeli znalaze jakie race bdy ortograficzne, gramatyczne,
skadniowe, techniczne to pisz do mnie:
<P>
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><P>Oficjaln stron tumacze HOWTO jest
<A HREF="http://www.jtz.org.pl/">http://www.jtz.org.pl/</A><P>Aktualne wersje przetumaczonych dokumentw znajduj si na
teje stronie. Dostpne s take poprzez anonimowe ftp pod adresem
<A HREF="ftp://ftp.jtz.org.pl/HOWTO/">ftp.jtz.org.pl</A> w katalogu <CODE>/HOWTO/</CODE>.
<P>Przetumaczone przeze mnie dokumenty znajduj si take na
<A HREF="http://www.jtz.org.pl/bartek/tlumaczenie.html">mojej stronie WWW.</A> S tam te odwoania do Polskiej Strony
Tumaczeniowej.
<P>Kontakt z nasz grup, grup tumaczy moesz uzyska poprzez list
dyskusyjn jtz@ippt.gov.pl. Jeli chcesz sie na ni zapisa, to
wylij list o treci <CODE>subscribe jtz Imi Nazwisko</CODE> na adres
<CODE>majordomo@ippt.gov.pl</CODE>
<P>Zmiany w tym dokumencie wprowadzone przez tumacza to:
<UL>
<LI>- "chmod 700 /etc/login/defs" na "chmod 600 /etc/login.defs"
plik ten nie musi by wykonywalny,</LI>
<LI>- "cp passwd ~passwd" na "cp passwd ~/passwd" - ewidentna
literwka autora</LI>
<LI>- "chmod 600 ~passwd" na "chmod 600 ~/passwd" - to samo</LI>
<LI>- przy zmianie grupy pliku /etc/shadow dodane "cd /etc"</LI>
<LI>- oraz polskie serwery WWW i ftp.</LI>
</UL>
<P>
</PHR>
<H3></H3>
</BODY>
</HTML>
|