Path: blob/main/documentation/content/ja/books/handbook/security/_index.adoc
18098 views
---
title: 第13ç« ã»ãã¥ãªãã£
part: ããŒãIII. ã·ã¹ãã 管ç
prev: books/handbook/boot
next: books/handbook/disks
showBookMenu: true
weight: 17
params:
path: "/books/handbook/security/"
---
[[security]]
= ã»ãã¥ãªãã£
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/security/
ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
[[security-synopsis]]
== ãã®ç« ã§ã¯
ç©ççãããã¯ä»®æ³çã«é¢ãããã ã»ãã¥ãªãã£ã¯å¹
åºããããã¯ã§ããã æ¥çå
šäœãã»ãã¥ãªãã£ãšãšãã«æé·ããŠããŸãã ã·ã¹ãã ããã³ãããã¯ãŒã¯ãå®å
šã«ããæšæºçãªæ¹æ³ã¯æ°å€ãææžåãããŠããã FreeBSD ã®ãŠãŒã¶ãã æ»æã䟵å
¥è
ããå®ãæ¹æ³ãçè§£ããªããã°ãªããŸããã
ãã®ç« ã§ã¯ãã»ãã¥ãªãã£ã®åºç€ãæè¡ã«ã€ããŠèª¬æããŸãã FreeBSD ã·ã¹ãã ã¯ãè€æ°ã®ã¬ã€ã€ã«é¢é£ããã»ãã¥ãªãã£ãæäŸããŸãã ãããŠãå®å
šæ§ãé«ããããã«ãµãŒãããŒãã£è£œã®ãŠãŒãã£ãªãã£ãå©çšããããšãã§ããŸãã
ãã®ç« ãèªããšã以äžã®ããšãããããŸãã
* FreeBSD ã«ãããåºæ¬çãªã·ã¹ãã ã»ãã¥ãªãã£ã®èãæ¹
* FreeBSD ã§å©çšã§ããããŸããŸãªæå·åææ³
* ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãèªèšŒã®èšå®æ¹æ³
* man:inetd[8] ãšçµã¿åãã㊠TCP Wrappers ãèšå®ããæ¹æ³
* FreeBSD ã«ããã Kerberos ã®èšå®æ¹æ³
* IPsec ãèšå®ã㊠VPN ãæ§ç¯ããæ¹æ³
* FreeBSD ã«ãã OpenSSH ã®èšå®ããã³äœ¿ç𿹿³
* ãã¡ã€ã«ã·ã¹ãã ACL (ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ã) ã®äœ¿ç𿹿³
* Ports Collection ããã€ã³ã¹ããŒã«ããããµãŒãããŒãã£è£œãœãããŠã§ã¢ packages ã Portaudit ã䜿ã£ãŠç£æ»ããæ¹æ³
* FreeBSD ã»ãã¥ãªãã£å§åã®å©ç𿹿³
* ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ãã©ã®ãããªãã®ãã FreeBSD äžã§æå¹ã«ããæ¹æ³ã«ã€ããŠ
* ãªãœãŒã¹å¶éããŒã¿ããŒã¹ãšã¯äœãã ãã®ä»çµã¿ã䜿ã£ããŠãŒã¶è³æºã®ç®¡çæ¹æ³
ãã®ç« ãèªãåã«ã次ã®ããšãå¿
èŠã«ãªããŸãã
* FreeBSD ããã³ã€ã³ã¿ãŒãããã®åºæ¬æŠå¿µã®çè§£
[[security-intro]]
== ã¯ããã«
ã»ãã¥ãªãã£ãé«ããããšã¯ãã¹ãŠã®äººã®è²¬ä»»ã§ãã ã·ã¹ãã ã«åŒ±ã䟵å
¥ãã€ã³ããååšãããšã䟵å
¥è
ã¯éèŠãªæ
å ±ãåŸããã ãããã¯ãŒã¯å
šäœã«è¢«å®³ãåãŒãããšãã§ããããã«ãªããŸãã å€ãã®ã»ãã¥ãªãã£ã®ãã¬ãŒãã³ã°ã§ã¯ã æ
å ±ã·ã¹ãã ã®æ©å¯æ§ (confidentiality)ã å®å
šæ§ (integrity) ããã³å¯çšæ§ (availability) ãæå³ããã»ãã¥ãªãã£ã® 3 èŠçŽ ã§ãã CIA ãåãæ±ãããŸãã
CIA ã® 3 èŠçŽ ã¯ã ã³ã³ãã¥ãŒã¿ã»ãã¥ãªãã£ã®åºæ¬ãšãªãèãã§ãã 顧客ããšã³ããŠãŒã¶ã¯ãããŒã¿ã®ãã©ã€ãã·ãŒãæåŸ
ããŸãã 圌ãã¯ãããŒã¿ã倿Žãããªãããšãã æ
å ±ãé ãããŠããããšãæåŸ
ããŸãã 圌ãã¯ãŸãããã€ã§ãæ
å ±ã«ã¢ã¯ã»ã¹ã§ããããšãæåŸ
ããŸãã ãããã¯ãã·ã¹ãã ã®æ©å¯æ§ãå®å
šæ§ãå¯çšæ§ãæ§æããŸãã
ã»ãã¥ãªãã£ã®ãããã§ãã·ã§ãã«ã¯ãCIA ãå®ãããã«ãå€å±€é²è¡ã®æŠç¥ãæ¡çšããŸãã ãã®å€å±€é²è¡æŠç¥ã§ã¯ã»ãã¥ãªãã£ã®ã¬ã€ã¢ãè€æ°çšæããããšã§ã äžã€ã®ã¬ã€ã€ãç ŽãããŠãã ã»ãã¥ãªãã£ã·ã¹ãã å
šäœãç Žãããããšãé²ããŸãã ã·ã¹ãã ã®ç®¡çè
ã¯ããã¡ã€ã¢ãŠã©ãŒã«ãåã«æå¹ã«ããã ãã§ã¯ãªãã ãããã¯ãŒã¯ãããã¯ã·ã¹ãã ãå®å
šã«ä¿ã€å¿
èŠããããŸãã ã¢ã«ãŠã³ããç£æ»ãããã€ããªã®å®å
šæ§ã æªæã®ããããŒã«ãã€ã³ã¹ããŒã«ãããŠããªãããšã確èªããå¿
èŠããããŸãã ãã®ããã«ã 管çè
ã¯è
åšãã©ã®ãããªãã®ããçè§£ããå¿
èŠããããŸãã
[[security-threats]]
=== è
åš
ã³ã³ãã¥ãŒã¿ã»ãã¥ãªãã£ãããè
åšãšã¯äœã§ããããïŒ é·å¹Žãè
åšã¯ãªã¢ãŒãã®æ»æè
ã ããªãã¡é éããã®èš±å¯ã®ãªãã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ãäŒãŠã人ã
ãšèããããŠããŸããã 仿¥ã§ã¯ããã®å®çŸ©ã¯åŸæ¥å¡ãæªæã®ãããœãããŠã§ã¢ã äžæ£ãªãããã¯ãŒã¯ããã€ã¹ãèªç¶çœå®³ãã»ãã¥ãªãã£ã®è匱æ§ã ãããŠç«¶åããäŒç€Ÿã§ãããå«ããããã«æ¡åŒµãããŠããŸãã
æ¯æ¥ãæ°åãã®ã·ã¹ãã ããã³ãããã¯ãŒã¯ãæ»æããã æ°çŸãã®ã·ã¹ãã ãèš±å¯ãªãã¢ã¯ã»ã¹ãããŠããŸãã ç°¡åãªã¢ã¯ã·ãã³ããšãã£ããã®ããããªã¢ãŒãããã®æ»æã ç£æ¥ã¹ãã€ã§ãã£ããã以ååããŠããåŸæ¥å¡ããã®æ»æãšãã£ãã±ãŒã¹ããããŸãã ã·ã¹ãã ã®ãŠãŒã¶ãšããŠã¯ã ééããã»ãã¥ãªãã£éåã«ç¹ãã£ãå Žåã«ã¯ã å¯èœæ§ã®ããåé¡ãã»ãã¥ãªãã£ããŒã ã«å ±åããããšãéèŠã§ãã 管çè
ãšããŠã¯ãè
åšãææ¡ãã ãã®è
åšã®åœ±é¿ãå°ããããããã«æºåãããŠããããšãéèŠã§ãã
[[security-groundup]]
=== ããã ã¢ããã¢ãããŒã
ã»ãã¥ãªãã£ãèããäžã§ã ãã°ãã°ããã ã¢ããã¢ãããŒããäžçªè¯ãæ¹æ³ãšãªããŸãã ãã®èãã§ã¯ã管çè
ãåºæ¬çãªã¢ã«ãŠã³ããã·ã¹ãã èšå®ãè¡ã£ãŠããã ãµãŒãããŒãã£è£œãŠãŒãã£ãªãã£ã®èšå®ã ãããŠãããã¯ãŒã¯ã¬ã€ã€ã«èšå®ãåºããŠãããŸãã ã·ã¹ãã ããªã·ãŒããã³æç¶ããè¡ãäžã§ã¯ã ãã®ãããªèšå®ã®åŽé¢ããããŸãã
ããžãã¹ã®å€ãã®ç°å¢ã§ã¯ã 䜿çšããããã€ã¹ã®èšå®ã«å¯Ÿããã»ãã¥ãªãã£ããªã·ããã§ã«çå®ãããŠããŸãã ãã®ããªã·ã«ã¯ãæäœéãšã³ããŠãŒã¶ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã ãã¹ã¯ããããæºåž¯é»è©±ãã©ããããããšãã£ãã¢ãã€ã«ããã€ã¹ããã㳠補åããã³éçºãµãŒãã®äž¡æ¹ã«å¯Ÿããã»ãã¥ãªãã£ã®èšå®ãå«ãŸããŠããã¹ãã§ãã å€ãã®å Žåã«ã¯ãã³ã³ãã¥ãŒã¿ã®ã»ãã¥ãªãã£ãèããéã«ã æšæºäœæ¥æç¶æž (SOP) ããã§ã«ååšããŸãã ããããªããã°ãã»ãã¥ãªãã£ããŒã ã«å°ããŠãã ããã
[[security-accounts]]
=== ã·ã¹ãã ããã³ãŠãŒã¶ã¢ã«ãŠã³ã
ã·ã¹ãã ãå®å
šã«ããã«ããããæãé©åãªåºçºç¹ã¯ã ã¢ã«ãŠã³ãã®ç£æ»ã§ãã ã«ãŒãã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã匷åã§ããããšã ã·ã§ã«ã¢ã¯ã»ã¹ãå¿
èŠãšããªãã¢ã«ãŠã³ãã¯ç¡å¹ã«ããããšã確å®ã«ãããªã£ãŠãã ããã ãŸããæš©éãå¿
èŠãšãããŠãŒã¶ã«å¯ŸããŠã¯ã package:security/sudo[] ãã€ã³ã¹ããŒã«ããŠã ã¢ã¯ã»ã¹ãå¿
èŠãšãªãã¢ããªã±ãŒã·ã§ã³ã®ã¿ã«ã¢ã¯ã»ã¹ãèš±å¯ããããã«ããŠãã ããã root ãŠãŒã¶ã®ãã¹ã¯ãŒãã¯ã決ããŠå
±æãã¹ãã§ã¯ãããŸããã
ã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãç¡å¹ã«ããæ¹æ³ã¯äºéããããŸãã äžã€ç®ã®æ¹æ³ã¯ãã¢ã«ãŠã³ããããã¯ããæ¹æ³ã§ããäŸãšããŠã toor ã¢ã«ãŠã³ããããã¯ããæ¹æ³ã以äžã«ç€ºããŸãã
[source,shell]
....
# pw lock toor
....
ãã®ã³ãã³ãã¯ãã¢ã«ãŠã³ãã®èšå®ã "toor:*:0:0::0:0:Bourne-again Superuser:/root:" ãã "toor:*LOCKED**:0:0::0:0:Bourne-again Superuser:/root:" ãžãšå€æŽããŸãã
ãšãã«ã¯ (ãããã远å ã®ãµãŒãã¹ã®ããã«)ã ãã®æ¹æ³ã䜿ããªãå ŽåããããŸãã ãã®ãããªå Žåã«ã¯ã以äžã®äŸã®ããã«ã ã·ã§ã«ã /sbin/nologin ã«å€æŽããããšã§ã ãã°ã€ã³ã¢ã¯ã»ã¹ãæåŠã§ããŸãã
[source,shell]
....
# chsh -s /usr/sbin/nologin toor
....
[NOTE]
====
ä»ã®ãŠãŒã¶ã®ã·ã§ã«ã¯ãã¹ãŒããŒãŠãŒã¶ã®ã¿ã倿Žã§ããŸãã éåžžã®ãŠãŒã¶ãè¡ãããšãããšå€±æããŸãã
====
ã¢ã«ãŠã³ãæ
å ±ã¯ã以äžã®ããã«æåŸã®ãšã³ããªã "nologin" ã·ã§ã«ãšãªããŸãã
[.programlisting]
....
toor:*:0:0::0:0:Bourne-again Superuser:/root:/usr/sbin/nologin
....
[.filename]#/usr/sbin/nologin# ã·ã§ã«ã¯ã man:login[1] ã³ãã³ãããã®ãŠãŒã¶ã«ã·ã§ã«ãå²ãåœãŠãããšããããã¯ããŸãã
[[security-sudo]]
=== ã¢ã«ãŠã³ãã®æš©éãæ¡å€§ãã
å Žåã«ãã£ãŠã¯ã ã·ã¹ãã 管çè
ãžã®ã¢ã¯ã»ã¹ãä»ã®ãŠãŒã¶ãšå
±æããå¿
èŠããããŸãã FreeBSD ã¯ãã®ããã«äºã€ã®æ¹æ³ãçšæããŠããŸãã 第äžã®æ¹æ³ã¯æšå¥šãããŸãããã ã«ãŒãã®ãã¹ã¯ãŒããå
±æãããŠãŒã¶ã `wheel` ã°ã«ãŒãã«å ããæ¹æ³ã§ãã ãããè¡ãã«ã«ã¯ã[.filename]#/etc/group# ãç·šéãã æåã®ã°ã«ãŒãã®æåŸã«ãŠãŒã¶ã远å ããŠãã ããã ãŠãŒã¶ã¯ã«ã³ãåºåãã§ç®¡çãããŠããŸãã
æš©éã®æ¡å€§ãããé©åãªæ¹æ³ã¯ã package:security/sudo[] port ãäœ¿ãæ¹æ³ã§ãã ãã® port ã¯ã远å ã®ç£æ»ããããã现ãããŠãŒã¶ç®¡çãããã³ ãŠãŒã¶ã man:service[8] ã®ãããªæš©éãäžããããã³ãã³ã®ã¿ã®å®è¡ã«å¶éããããšãã§ããŸãã
ã€ã³ã¹ããŒã«ãçµãã£ããã `visudo` ã€ã³ã¿ãã§ãŒã¹ã䜿ã£ãŠ [.filename]#/usr/local/etc/sudoers# ãã¡ã€ã«ãç·šéããŠãã ããã 以äžã®äŸã§ã¯ãæ°ãã webadmin ã°ã«ãŒããäœæããã `trhodes` ãŠãŒã¶ããã®ã°ã«ãŒãã«è¿œå ãããŸãã ãã®åŸããŠãŒã¶ã« package:apache24[] ãåèµ·åããã¢ã¯ã»ã¹æš©éãäžããŸãã ãã®æç¶ãã¯ä»¥äžã®ããã«ãªããŸãã
[source,shell]
....
# pw groupadd webadmin -M trhodes -g 6000
....
[source,shell]
....
# visudo
....
[.programlisting]
....
%webadmin ALL=(ALL) /usr/sbin/service apache24 *
....
ããŒã«ã«ã®ãŠãŒã¶ç®¡çã«ãããŠã package:security/sudo[] ã¯ã éåžžã«è²ŽéãªãªãœãŒã¹ãæäŸããŸãã ãŸãããã¹ã¯ãŒããäžå¿
èŠã«ããŠãããã©ã«ãã man:ssh[1] éµã®æ¹æ³ã ãã«ããããšãã§ããŸãã man:sshd[8] çµç±ã®ãã¹ã¯ãŒãã«ãããã°ã€ã³ãç¡å¹ã«ãã `sudo` ãžã®ããŒã«ã«ãã¹ã¯ãŒãã®ã¿ã䜿ãããã«ããã«ã¯ã <<openssh>> ãã芧ãã ããã
[[security-passwords]]
=== ãã¹ã¯ãŒã
ãã¹ã¯ãŒãã¯ããã¯ãããžãŒã«ãããå¿
èŠæªã§ãã ãã¹ã¯ãŒãã¯æ¥µããŠè€éã§ããã ãã§ã¯ãªãã ãã¹ã¯ãŒããä¿è·ãã匷åãªããã·ã¥ã¡ã«ããºã ããŸãå¿
èŠãšãªããŸãã ãã®ææžãæžããŠããæç¹ã§ã¯ã FreeBSD 㯠`crypt()` ã©ã€ãã©ãªã§ DES, MD5, Blowfish, SHA256 ããã³ SHA512 ã«å¯Ÿå¿ããŠããŸãã ããã©ã«ã㯠SHA512 ã§ããã 匷床ã®åŒ±ãæå·ãžã¯å€æŽãã¹ãã§ã¯ãããŸããã ããããªãããBlowfish ã奜ããŠãŒã¶ããããŸãã DES ãé€ãåã¡ã«ããºã ã§ã¯ã éå§ã®æåã䜿çšããŠããããã·ã¥ã¡ã«ããºã ãèå¥å¯èœãªç¹åŸŽãæã£ãŠããŸãã MD5 ã¡ã«ããºã ã§ã¯ãã·ã³ãã«ã¯ "$" ã®ç¬Šå·ã§ãã SHA256 ãŸãã¯ã SHA512 ã§ã¯ãã·ã³ãã«ã¯ "$6$"ã ãã㊠Blowfish 㯠"$2a$" ã§ãã æå·åŒ·åºŠã®åŒ±ããã¹ã¯ãŒãã䜿çšããŠããå Žåã«ã¯ã 次åã®ãã°ã€ã³æã«ãŠãŒã¶ã man:passwd[1] ãå®è¡ããŠåããã·ã¥åããããšãä¿ãã¹ãã§ãã
[NOTE]
====
ãã®ææžãæžããŠããæç¹ã§ãBlowfish 㯠AES ã§ãªããã°ã FIPS (Federal Information Processing Standards) ã«æºæ ãããŠããŸããã ãã®ããã䜿çšã§ããªãç°å¢ããããŸãã
====
ãããã¯ãŒã¯ã«æ¥ç¶ããŠããã·ã¹ãã ã«ã€ããŠã¯ã äºèŠçŽ èªèšŒã䜿çšãã¹ãã§ãã ãã®èªèšŒã§ã¯ãéåžžããªããææããèŠçŽ ãšç¥ã£ãŠããèŠçŽ ãçšããããŸãã FreeBSD ã®ããŒã¹ã·ã¹ãã ã«å«ãŸããŠãã OpenSSH ããã³ ssh-keys ã§ã¯ã ãããã¯ãŒã¯ãžã®ãã¹ãŠã®ãã°ã€ã³ã«ãããäºèŠçŽ èªèšŒã®äº€æã§ã ãã¹ã¯ãŒãã䜿çšãã¹ãã§ã¯ãããŸããã ããè©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ããã³ãããã¯ã® <<openssh>> ç¯ãã芧ãã ããã Kerberose ã®ãŠãŒã¶ã¯ããããã¯ãŒã¯ã§ OpenSSH ãå®è£
ããããã«è¿œå ã®å€æŽãå¿
èŠã«ãªãã§ãããã
[[security-rkhunter]]
=== ããã¯ãã¢ããã³ã«ãŒãããã
ããã¯ãã¢ããã³ã«ãŒããããã¯ã ããããã€ã³ã¹ããŒã«ãããåŸã«è
åšãšãªããŸãã ã€ã³ã¹ããŒã«ããããšããã®æªæã®ãããœãããŠã§ã¢ã¯ã æ»æè
ã®ããã«äŸµå
¥å£ãèšçœ®ããŸãã å®éçã«ã¯ãã·ã¹ãã ãäžåºŠæ±æãããåŸã«ã調æ»ãè¡ããã æ¶å»ãããŸãã æ
éãªã»ãã¥ãªãã£ãã·ã¹ãã ãšã³ãžãã¢ã§ãããã æ»æè
ãæ®ãããœãããŠã§ã¢ãèŠéããŠããŸããšããæããããªã¹ã¯ãååšããŠããŸãã
ããã¯ãã¢ãŸãã¯ã«ãŒãããããœãããŠã§ã¢ã¯ã 管çè
ã«ãšã£ãŠåœ¹ã«ç«ã€ããšãäžã€ãããŸãã ããã¯ãäžåºŠæ€åºãããšã ã·ã¹ãã ã®ã©ãããå±éºã«åãããŠããããšã®çè·¡ãšãªããŸãã ããããéåžžãã®çš®ã®ã¢ããªã±ãŒã·ã§ã³ã¯ããšãŠãããŸãé ããŠããŸãã ããã¯ãã¢ããã³ã«ãŒãããããæ€åºããããŒã«ãååšããŠããã ãããã¡ã®äžã€ãã package:security/rkhunter[] ã§ãã
ã€ã³ã¹ããŒã«åŸã以äžã®ã³ãã³ãã§ã·ã¹ãã ããã§ãã¯ã§ããŸãã å®è¡ãããšå€ãã®æ
å ±ãåºåãããŸãã
[source,shell]
....
# rkhunter -c
....
ãã®ããã»ã¹ãå®è¡äžã« kbd:[ENTER] ããŒãäœåºŠãæŒãå¿
èŠããããŸãã å®äºãããšãã¹ããŒã¿ã¹ã¡ãã»ãŒãžãç»é¢ã«è¡šç€ºãããŸãã ãã®ã¡ãã»ãŒãžã¯ããã§ãã¯ãããã¡ã€ã«ã®éãçããããã¡ã€ã«ã®æ°ã å¯èœæ§ã®ããã«ãŒããããçã®æ
å ±ãå«ã¿ãŸãã ãã§ãã¯ã®æäžãé ããããã¡ã€ã«ã OpenSSH ãããã³ã«ã®éžæããããŠã æã«ã¯ãã€ã³ã¹ããŒã«ãããŠãããœãããŠã§ã¢ã®æŒžåŒ±æ§ã®ããŒãžã§ã³ã«é¢ããäžè¬çãªã»ãã¥ãªãã£ã®èŠåãåºåãããŸãã ããã«ããããã¯ãã詳现ãªè§£æãè¡ãããåŸã«ã察å¿ãå¯èœã§ãã
管çè
ã¯çã æ
åœããŠããã·ã¹ãã äžã§äœãå®è¡ãããŠããããææ¡ããŠããå¿
èŠããããŸãã rkhunter, lsof ã man:netstat[1] ããã³ man:ps[1] ãšãã£ããã€ãã£ãã®ããŒã«ã¯ã ã·ã¹ãã ã«é¢ããããªãå€ãã®æ
å ±ãäžããŠãããŸãã æ£åžžãªç¶æ
ãã©ã®ãããªç¶æ
ã§ããããææ¡ããŠããã æ¬æ¥ãšéãç¶æ³ã«ãªã£ãå Žåã«ã¯ã質åããããã çãæ·±ããªã£ãŠãã ããã ã»ãã¥ãªãã£ãç Žãããããšãé¿ããããšã¯çæ³ã§ããã ç Žãããããšãææ¡ããããšã¯å¿
é ã§ãã
[[security-ids]]
=== ãã€ããªæ€èšŒ
ã·ã¹ãã ãã¡ã€ã«ããã³ãã€ããªã®æ€èšŒã¯ã ã·ã¹ãã 管çè
ããã³ã»ãã¥ãªãã£ããŒã ã«å¯ŸããŠã ã·ã¹ãã ã®å€æŽã«é¢ããæ
å ±ãæäŸããŠãããããéèŠã§ãã ãããªãã·ã¹ãã ã«ãããŠããã·ã¹ãã 管çããŒã ã®ç¥ããªããšããã§ã å
éšã®ã³ãã³ããã¢ããªã±ãŒã·ã§ã³ã¯å€æŽãã¹ãã§ã¯ãããŸããã ã·ã¹ãã ã®å€æŽããã¢ãã¿ãªã³ã°ãããœãããŠã§ã¢ã¢ããªã±ãŒã·ã§ã³ã¯ã 䟵å
¥æ€ç¥ã·ã¹ãã (Intrusion Detection System) ãŸã㯠IDS ãšåŒã°ããŸãã
FreeBSD ã¯ãåºæ¬ç㪠IDS ã·ã¹ãã ããã€ãã£ãã§æäŸããŠããŸãã å®éã«ãæ¯æ©ã® man:periodic[8] ã»ãã¥ãªãã£ã«é¢ããã¡ãŒã«ã®äžã§ã¯ã 管çè
ã«å€æŽç¹ãéç¥ããŸãã æ
å ±ã¯ããŒã«ã«ã«ä¿åãããŠããã®ã§ã æªæã®ãããŠãŒã¶ã倿Žããæ
å ±ã "欺ã" å¯èœæ§ããããŸãã ãã®ããããã€ããªã®çœ²åã®å¥ã®ã»ãããäœæããŠã èªã¿åãå°çšã® root ææã®ãã£ã¬ã¯ããªãã§ããã°ã USB ãã£ã¹ã¯ãŸã㯠rsync ãµãŒããšãã£ãã·ã¹ãã ãšã¯å¥ã®ã·ã¹ãã ã«ä¿åããŠãã ããã
ãŸãæåã«ãã·ãŒããçæããå¿
èŠããããŸãã ããã¯ãæ°å€å®æ°ã§ãããã·ã¥å€ã®çæãããã·ã¥å€ã®æ€èšŒã§äœ¿ãããŸãã ãã®ã·ãŒãããªããšã ãã¡ã€ã«ã®ãã§ãã¯ãµã ã®å€ãåœã£ããæ€èšŒãå¯èœã«ãªããŸãã 以äžã®äŸã§ã¯ãã·ãŒã㯠`-s` ãã©ã°ã§æå®ãããŠããŸãã æåã«ä»¥äžã®ã³ãã³ããçšã㊠[.filename]#/bin# ã®ããã·ã¥å€ããã³ãã§ãã¯ãµã ãçæããŠãã ããã
[source,shell]
....
# mtree -s 3483151339707503 -c -K cksum,sha256digest -p /bin > bin_chksum_mtree
....
ãã®ã³ãã³ãã®åºåã¯ä»¥äžã®ããã«ãªããŸãã
[source,shell]
....
# mtree: /bin checksum: 3427012225
....
[.filename]#bin_cksum_mtree# ãã¡ã€ã«ãèŠããšã 以äžã®ãããªåºåãšãªããŸãã
[.programlisting]
....
# user: root
# machine: dreadnaught
# tree: /bin
# date: Mon Feb 3 10:19:53 2014
# .
/set type=file uid=0 gid=0 mode=0555 nlink=1 flags=none
. type=dir mode=0755 nlink=2 size=1024 \
time=1380277977.000000000
\133 nlink=2 size=11704 time=1380277977.000000000 \
cksum=484492447 \
sha256digest=6207490fbdb5ed1904441fbfa941279055c3e24d3a4049aeb45094596400662a
cat size=12096 time=1380277975.000000000 cksum=3909216944 \
sha256digest=65ea347b9418760b247ab10244f47a7ca2a569c9836d77f074e7a306900c1e69
chflags size=8168 time=1380277975.000000000 cksum=3949425175 \
sha256digest=c99eb6fc1c92cac335c08be004a0a5b4c24a0c0ef3712017b12c89a978b2dac3
chio size=18520 time=1380277975.000000000 cksum=2208263309 \
sha256digest=ddf7c8cb92a58750a675328345560d8cc7fe14fb3ccd3690c34954cbe69fc964
chmod size=8640 time=1380277975.000000000 cksum=2214429708 \
sha256digest=a435972263bf814ad8df082c0752aa2a7bdd8b74ff01431ccbd52ed1e490bbe7
....
ã³ã³ãã¥ãŒã¿ã®ãã¹ãåãçŸåšã®æ¥ä»ãšæéãman:mtree[8] ãå®è¡ãããŠãŒã¶ã®æ
å ±ãã¹ãŠããã®ã¬ããŒãã«ã¯å«ãŸããŠããŸãã ãŸããåãã€ããªã«å¯Ÿãããã§ãã¯ãµã ããµã€ãºãã¿ã€ã ã¹ã¿ã³ãããã³ SHA256 ãã€ãžã§ã¹ããå«ãŸããŠããŸãã
ãã€ããªçœ²åã®æ€èšŒã®ããã«ã 以äžã®ã³ãã³ããå®è¡ãããšãçŸåšã®çœ²åã®ãªã¹ããèªã¿èŸŒã¿ã çµæãåºåããŸãã
[source,shell]
....
# mtree -s 3483151339707503 -p /bin < bin_chksum_mtree >> bin_chksum_output
....
ãã®ã³ãã³ããå®è¡ãããšããã§ã«ãã§ãã¯ãµã ãçæããŠãã [.filename]#/bin# ã«å¯ŸããŠãåæ§ã®ãã§ãã¯ãµã ãçæããŸãã ãã®ã³ãã³ããå®è¡ããŠãã倿Žãè¡ãããŠããªãã®ã§ã [.filename]#bin_chksum_output# ãžã®äž»åã¯ç©ºãšãªããŸãã 倿Žãè¡ãããå Žåãã·ãã¥ã¬ãŒãããããã«ã [.filename]#/bin/cat# ãã¡ã€ã«ã®æ¥ä»ã man:touch[1] ã䜿ã£ãŠå€æŽããŠã å床æ€èšŒã®ã³ãã³ããå®è¡ããŠã¿ãŸãã
[source,shell]
....
# touch /bin/cat
....
[source,shell]
....
# mtree -s 3483151339707503 -p /bin < bin_chksum_mtree >> bin_chksum_output
....
[source,shell]
....
# cat bin_chksum_output
....
[.programlisting]
....
cat changed
modification time expected Fri Sep 27 06:32:55 2013 found Mon Feb 3 10:28:43 2014
....
package:security/aide[] ã®ãããªã ããé«åºŠãª IDS ã·ã¹ãã ããããŸããã ã»ãšãã©ã®ã±ãŒã¹ã«ãããŠã man:mtree[8] ã¯ç®¡çè
ãå¿
èŠãšããæ©èœãæäŸããŸãã æªæã®ãããŠãŒã¶ãã ã·ãŒãå€ããã³ãã§ãã¯ãµã ã®åºåãèŠããªãããã«ããããšãéèŠã§ãã
[[security-tuning]]
=== ã»ãã¥ãªãã£ã®ããã®ã·ã¹ãã ã®èª¿æŽ
ã·ã¹ãã ã®æ©èœã®å€ãã¯ãman:sysctl[8] ã䜿ã£ãŠèª¿æŽã§ããŸãã Denial of Service (DOS) ã¹ã¿ã€ã«ã®æ»æãé¿ããããã®ã»ãã¥ãªãã£æ©èœã«å¯ŸããŠãåæ§ã§ãã ãã®ç¯ã§ã¯ãããéèŠãªèª¿æŽã«ã€ããŠãè§ŠããŠããŸãã man:sysctl[8] ã«ãããèšå®ã倿Žãããæã¯ãã€ã§ãã æãŸãªãå±å®³ãèµ·ããå¯èœæ§ã¯é«ãŸãã ã·ã¹ãã ã®å¯çšæ§ã«åœ±é¿ããŸãã ã·ã¹ãã å
šäœã®èšå®ã倿Žããæã«ã¯ã ã·ã¹ãã ã® CIA ãèããå¿
èŠããããŸãã
以äžã§ã¯ãman:sysctl[8] ã®äžèЧã ããã³å€æŽãã·ã¹ãã ã«ã©ã®ããã«åœ±é¿ãããã説æããŸãã
ããã©ã«ãã§ã¯ãFreeBSD ã®ã«ãŒãã«ã¯ã»ãã¥ãªãã£ã¬ãã« -1 ã§èµ·åããŸãã ãã®ã»ãã¥ãªãã£ã¬ãã«ã¯ã 倿Žäžå¯ã®ãã¡ã€ã«ãã©ã°ãå€ãããã ãã¹ãŠã®ããã€ã¹ã«å¯ŸããŠèªã¿èŸŒã¿ããã³æžã蟌ã¿ãã§ãããããã®ã§ã "insecure mode" ãšåŒã°ããŸãã ãã®ã»ãã¥ã¢ã¬ãã«ã¯ã管çè
ãŸã㯠man:init[8] ã«ããèµ·åæã®ã¹ã¯ãªããã«ãã倿Žãããªãéã -1 ã®ãŸãŸã§ãã [.filename]#/etc/rc.conf# ã«ãããŠã `kern_securelevel_enable` ã `YES` ãšãã `kern_securelevel` ã«å¿
èŠãšããå€ãèšå®ããããšã§ã ã·ã¹ãã èµ·åæã«ã»ãã¥ã¢ã¬ãã«ãé«ããããšãã§ããŸãã ãããã®èšå®ã«ã€ããŠã®ããè©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ã man:security[7] ããã³ man:init[8] ãã芧ãã ããã
[WARNING]
====
`securelevel` ã倧ãããããããšã Xorg ãåããªããªã£ãããä»ã®åé¡ãèµ·ããå¯èœæ§ããããŸãã ãããã°ã®å¿ã¥ãããããŠãã ããã
====
ã€ãã«å€æŽãæ€èšãã¹ã man:sysctl[8] ã¯ã net.inet.tcp.blackhole ããã³ net.inet.udp.blackhole ã§ãã ããããèšå®ãããšãéããããŒãã«å¯ŸããŠå±ã SYN ãã±ããã¯ããããããã RST ã¬ã¹ãã³ã¹ãè¿ããŸããã éåžžã¯ãRST ãè¿ãã ãã®ããŒããéããããŠããããšãäŒããŸãã ããã«ãããã·ã¹ãã ã«å¯Ÿãã "ã¹ãã«ã¹" ã¹ãã£ã³ã«å¯ŸããããçšåºŠã®é²åŸ¡ãšãªããŸãã net.inet.tcp.blackhole ã "2"ã net.inet.udp.blackhole ã "1" ã«èšå®ããŠãã ããã è©³çŽ°ãªæ
å ±ã«ã€ã㊠man:blackhole[4] ãã芧ãã ããã
ããã«ãnet.inet.icmp.drop_redirect ããã³ net.inet.ip.redirect ãèšå®ãã¹ãã§ãã ããã 2 ã€ã® man:sysctl[8] ã¯ããªãã€ã¬ã¯ãæ»æãé²ãå©ããšãªãã§ãããã ãªãã€ã¬ã¯ãæ»æã¯ã æ
æã«éåžžã®ãããã¯ãŒã¯ã§ã¯å¿
èŠãšããªããããªå€§éã® ICMP ã¿ã€ã 5 ã®ãã±ãããçºçããŸãã ãã®ãã net.inet.icmp.drop_redirect ã "1"ã net.inet.ip.redirect ã "0" ã«èšå®ããŠäžããã
ãœãŒã¹ã«ãŒãã£ã³ã°ã¯ã å
éšãããã¯ãŒã¯äžã§ã«ãŒãã£ã³ã°ã§ããªãã¢ãã¬ã¹ãæ€åºãããã¢ã¯ã»ã¹ããããã®æ¹æ³ã§ãã éåžžã«ãŒãã£ã³ã°ã§ããªãã¢ãã¬ã¹ã¯ã æå³ããŠã«ãŒãã£ã³ã°ã§ããªãããã«ããŠããã®ã§ã ãã®èšå®ã¯ããããç¡å¹ã«ãã¹ãã§ãã ãã®æ©èœãç¡å¹ã«ããã«ã¯ã net.inet.ip.sourceroute ããã³ net.inet.ip.accept_sourceroute ã "0" ã«èšå®ããŠãã ããã
ãããŒããã£ã¹ãã¢ãã¬ã¹ã«å¯Ÿãããã¹ãŠã® ICMP ãšã³ãŒãªã¯ãšã¹ãã¯ãããããããŠãã ããã ãããã¯ãŒã¯äžã®ã³ã³ãã¥ãŒã¿ããµããããã«ãããã¹ãŠã®ãã¹ãã«ã¡ãã»ãŒãžãéãå¿
èŠãããå Žåã«ã¯ã ã¡ãã»ãŒãžã¯ãããŒããã£ã¹ãã¢ãã¬ã¹ã«éãããŸãã å€éšã®ãã¹ãã«ã€ããŠã¯ã ãã®ãããªéä¿¡ãããå¿
èŠã¯ãªãã®ã§ã å€éšãããããŒããã£ã¹ããžã®ãªã¯ãšã¹ãããã¹ãŠæåŠããããã«ã net.inet.icmp.bmcastecho ã "0" ã«èšå®ããŠãã ããã
ãŸã å€ãã® man:sysctl[8] ã man:security[7] ã§èª¬æãããŠããŸãã ããã«å€ãã®æ
å ±ã調ã¹ãããšãæšå¥šãããŸãã
[[one-time-passwords]]
== ã¯ã³ã¿ã€ã ãã¹ã¯ãŒã
ããã©ã«ãã§ãFreeBSD 㯠One-time Passwords In Everything (OPIE) ã«å¯Ÿå¿ããŠããŸãã OPIE ã¯ããã©ã«ãã§ã¯ MD5 ããã·ã¥ã䜿çšããŸãã
äžçš®é¡ã®ç°ãªãããã¹ã¯ãŒããããããŸãã ãŸãäžã€ç®ã¯ãéåžžã® UNIX(R) ã¹ã¿ã€ã«ãããã㯠Kerberos ã®ãã¹ã¯ãŒãã§ãã äºã€ç®ã¯ãman:opiekey[1] ã«ãã£ãŠçæããã man:opiepasswd[1] ããã³ãã°ã€ã³ããã³ãããåãä»ããã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã§ãã äžã€ç®ã®ãã¹ã¯ãŒãã¯ãman:opiekey[1] ãšå Žåã«ãã `opiepasswd` ã«å¯ŸããŠã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæããã®ã«äœ¿ããã "ç§å¯ã®ãã¹ã¯ãŒã" ã§ãã
ç§å¯ã®ãã¹ã¯ãŒãã¯ãUNIX(R) ãã¹ã¯ãŒããšäœã®é¢é£æ§ããããŸããã äž¡è
ãåäžã«èšå®ããããšã¯å¯èœã§ãããã奚ãããŸãããå€ã UNIX(R) ãã¹ã¯ãŒãã¯é·ãã 8 æåã«å¶éãããŠããŸãã ã ããã«å¯ŸããOPIE ã®ç§å¯ã®ãã¹ã¯ãŒãã«ã¯ 8 æåã®å¶éã¯ãããŸããã 6 èªãã 7 èªãããªããã¹ãã¬ãŒãºããµã€ãã§ããã»ãšãã©ã®éšåã§ã OPIE ã·ã¹ãã 㯠UNIX(R) ã®ãã¹ã¯ãŒãã·ã¹ãã ãšå®å
šã«ç¬ç«ããŠåäœããããã«ãªã£ãŠããŸãã
ãã¹ãã¬ãŒãºã«å ããOPIE ã·ã¹ãã ã«ãšã£ãŠéèŠãª 2 çš®é¡ã®ããŒã¿ããããŸããäžã€ã¯ "ã·ãŒã (seed: çš®)" ãŸã㯠"ã㌠(key: éµ)" ãšåŒã°ãããã®ã§ã2 ã€ã®æåãš 5 ã€ã®æ°åã§æ§æãããŸããããäžã€ã¯ "ã·ãŒã±ã³ã¹çªå· (iteration count)" ã§ã1 ãã 100 ãŸã§ã®æŽæ°ã§ãã OPIE ã¯ãããŸã§ã«è¿°ã¹ãããŒã¿ãå©çšããŠã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæããŸãã ãã®æ¹æ³ã¯ããŸãã·ãŒããšç§å¯ã®ãã¹ãã¬ãŒãºãé£çµãã ããã«å¯ŸããŠã·ãŒã±ã³ã¹çªå·ã®åæ°ã ã MD5 ããã·ã¥ãç¹°ãè¿ãèšç®ããŸãã ãããŠãã®çµæã 6 ã€ã®çãè±åèªã«å€æããŸãã ãã® 6 ã€ã®è±åèªãã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã§ãã èªèšŒã·ã¹ãã (䞻㯠PAM) ã¯ã ååæåŸã«åãä»ããã¯ã³ã¿ã€ã ãã¹ã¯ãŒããèšé²ããŠããŸãã ãããŠããã®ååã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããšã ãŠãŒã¶ãå
¥åããã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã 1 åããã·ã¥é¢æ°ã«ãããçµæãšãäžèŽããå Žåã«ã ãã®ãŠãŒã¶ã¯èªèšŒãããŸãã äžæ¹åããã·ã¥é¢æ°ã䜿ã£ãŠããã®ã§ã ããæ£ããèªèšŒãããã¯ã³ã¿ã€ã ãã¹ã¯ãŒããäžåçèŽããããšããŠãã æ¬¡å以éã«äœ¿ãããè€æ°ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæããããšã¯äžå¯èœã§ãã ã·ãŒã±ã³ã¹çªå·ã¯ãã°ã€ã³ãæåãããã³ã«äžã€ãã€æžããããŠã ãŠãŒã¶ãšãã°ã€ã³ããã°ã©ã ã®éã§åæãåãããŸãã ã·ãŒã±ã³ã¹çªå·ã 1 ãŸã§æžã£ããã OPIE ãå床åæåããå¿
èŠããããŸãã
ãã®ããã»ã¹ã«é¢é£ããããã€ãã®ããã°ã©ã ããããŸãã man:opiekey[1] ã¯ãã·ãŒã±ã³ã¹çªå·ãšãã·ãŒããšã ç§å¯ã®ãã¹ãã¬ãŒãºãåãä»ããŠãã¯ã³ã¿ã€ã ãã¹ã¯ãŒã 1 ã€ã ãŸãã¯äžé£ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã®äžèЧãçæããŸãã man:opiepasswd[1] ã¯ãOPIE ã®åæåã«å ãããã¹ã¯ãŒãã ã·ãŒã±ã³ã¹çªå·ãã·ãŒãã倿Žããããã«ã䜿çšãããŸãã ãã®ããã°ã©ã ãå®è¡ããã«ã¯ãç§å¯ã®ãã¹ãã¬ãŒãºãã ãŸãã¯ãã·ãŒã±ã³ã¹çªå·ãšã·ãŒããšã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã® 1 çµãã®ãã©ã¡ãããäžããŸãã man:opieinfo[1] ã¯ã èªèšŒãã¡ã€ã« ([.filename]#/etc/opiekeys#) ã調ã¹ãŠã ããã°ã©ã ãèµ·åãããŠãŒã¶ã®çŸåšã®ã·ãŒã±ã³ã¹çªå·ãšã·ãŒãã衚瀺ããŸãã
4 çš®é¡ã®ç°ãªãæäœããããŸãã 1 ã€ç®ã¯ãman:opiepasswd[1] ãä¿¡é Œã§ããéä¿¡è·¯äžã§å©çšããŠã æåã«ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããèšå®ãããã ç§å¯ã®ãã¹ãã¬ãŒãºãã·ãŒãã倿Žããæäœã§ãã 2 ã€ç®ã¯ãåãããšãè¡ãããã« man:opiepasswd[1] ãä¿¡é Œã§ããªãéä¿¡è·¯äžã§å©çšããæäœã§ãã ãã®å Žåã¯ä¿¡é Œã§ããéä¿¡è·¯çµç±ã® man:opiekey[1] ã䜵çšããŸãã3 ã€ç®ã¯ãman:opiekey[1] ã䜿ããä¿¡é Œã§ããªãéä¿¡è·¯ãéããŠãã°ã€ã³ããæäœã§ãã 4 çªç®ã¯ãman:opiekey[1] ã䜿ã£ãŠè€æ°ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããäžæ°ã«çæããæäœã§ãã ããã§çæããè€æ°ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã¯ã ã¡ã¢ãããå°å·ãããããŠæºåž¯ãã ä¿¡é Œã§ããéä¿¡è·¯ãäžåãªããšããããã®æ¥ç¶ã«å©çšã§ããŸãã (蚳泚: ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããèšé²ããçŽããªãããªãããš! é»è©±çªå·ã IP ã¢ãã¬ã¹ããŠãŒã¶åãäžç·ã«ã¡ã¢ããŠãããææªã§ã!!)
=== ä¿¡é Œã§ããéä¿¡è·¯ã§ã®åæå
OPIE ãåããŠåæåããã«ã¯ã man:opiepasswd[1] ãå®è¡ããŠãã ããã
[source,shell]
....
% opiepasswd -c
[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
....
`Enter new secret pass phrase:` ãŸã㯠`Enter secret password:` ãšããããã³ããã«å¯ŸããŠã ãã¹ã¯ãŒããŸãã¯ãã¹ãã¬ãŒãºãå
¥åããŠãã ããã ãã®ãã¹ã¯ãŒãã¯ã ãã°ã€ã³ãããšãã«äœ¿ãã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæããããã«äœ¿ããã®ã§ããã ãã°ã€ã³ã®ããã®ãã¹ã¯ãŒãã§ã¯ãããŸããã "ID" ããå§ãŸãè¡ã¯ã1 ååã®ãã©ã¡ãŒã¿ã§ã ãã°ã€ã³åãšã·ãŒã±ã³ã¹çªå·ãšã·ãŒãã§ãã ãã°ã€ã³ãããšãã«ã¯ã ã·ã¹ãã åŽããããã®ãã©ã¡ãŒã¿ãèŠããŠããŠè¡šç€ºããŠãããã®ã§ã ãããã®ãã©ã¡ãŒã¿ãèŠããŠããå¿
èŠã¯ãããŸããã æåŸã®è¡ããä»è¿°ã¹ããã©ã¡ãŒã¿ãšå
¥åãããç§å¯ã®ãã¹ã¯ãŒãããèšç®ãããã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã§ãã æ¬¡ã«ãã°ã€ã³ãããšãã«æã¡èŸŒãã¹ãã¯ã³ã¿ã€ã ãã¹ã¯ãŒããããã§ãã
=== ä¿¡é Œã§ããªãéä¿¡è·¯ã§ã®åæå
ä¿¡é Œã§ããªãéä¿¡è·¯ã䜿ã£ãŠç§å¯ã®ãã¹ãã¬ãŒãºãåæåãŸãã¯å€æŽããããã«ã¯ã man:opiekey[1] ãå®è¡ããããã®ä¿¡é Œã§ããéä¿¡è·¯ãçšæããŠããå¿
èŠããããŸãã ããšãã°ããã¯ã ä¿¡é Œã§ãããã·ã³ã®ã·ã§ã«ããã³ããã ã£ããããã§ãããã (蚳泚: ããã§ã®éä¿¡è·¯ãšã¯ãã·ã³ãã®ãã®ã«ãªããŸãã ä¿¡é Œã§ãããã·ã³ãšã¯ã ä¿¡é Œã§ãã人ããã£ãã管çããŠãããã·ã³ãšããããšã§ã)ã ä»ã«æºåããŠãããã®ãšããŠãã·ãŒã±ã³ã¹çªå· (100 ã¯é©åãªå€ãšãããã§ããã) ãšãå Žåã«ãã£ãŠã¯èªåã§èããã ãŸãã¯ã©ã³ãã ã«çæãããã·ãŒãããããŸãã ä¿¡é Œã§ããªãéä¿¡è·¯ã䜿ããšãã«ã¯ãman:opiepasswd[1] ã䜿ã£ãŠã³ã³ãã¥ãŒã¿ãåæåããŠãã ããã
[source,shell]
....
% opiepasswd
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
....
ããã©ã«ãã®ã·ãŒãã§æ§ããªããã°ãkbd:[Return] ãæŒããŠãã ãããã¢ã¯ã»ã¹ãã¹ã¯ãŒããå
¥ããåã«ã ãããããçšæããŠãããä¿¡é Œã§ããéä¿¡è·¯ãžç§»ã£ãŠã å
ã»ã©ãšåããã©ã¡ãŒã¿ãå
¥åããŸãã
[source,shell]
....
% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
....
ä¿¡é Œã§ããªãéä¿¡è·¯ã®æ¹ã«æ»ã£ãŠã çæãããã¯ã³ã¿ã€ã ãã¹ã¯ãŒããã³ããŒããŠå¯Ÿå¿ããããã°ã©ã ã«å
¥åããŸãã
=== ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããäžã€çæãã
OPIE ãåæåãããã ãã°ã€ã³æã«ã¯ä»¥äžã®ãããªããã³ãããåºãŠããã§ãããã
[source,shell]
....
% telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <ãŠãŒã¶å>
otp-md5 498 gr4269 ext
Password:
....
OPIE ã®ããã³ããã«ã¯äŸ¿å©ãªæ©èœãåãã£ãŠããŸãã ãã¹ã¯ãŒãããã³ããã«å¯ŸããŠã kbd:[Return] ãæŒããšãšã³ãŒã¢ãŒãã«åãæ¿ããã ã¿ã€ãããæåããã®ãŸãŸèŠããããã«ãªãã®ã§ãã ããã¯ã çŽã«å°å·ããŠãããããã¯ã³ã¿ã€ã ãã¹ã¯ãŒããæã§å
¥åããªããã°ãªããªãå Žåã«åœ¹ç«ã€æ©èœã§ãã
次ã«ã ãã®ãã°ã€ã³ããã³ããã«å¯ŸããŠå
¥åããã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæããŠãã ããã ããã¯ãman:opiekey[1] ããã°ã©ã ã䜿ããä¿¡é Œã§ãããã·ã³äžã§è¡ããªããã°ãªããŸããã ãã®ããã°ã©ã ã«ã¯ Windows(R), Mac OS(R) ããã³ FreeBSD çããããŸãã ã©ã¡ããã ã³ãã³ãã©ã€ã³ããã·ãŒã±ã³ã¹çªå·ãšã·ãŒããæå®ããªããã°ãªããŸããã ãã°ã€ã³ããããšããŠãããã·ã³ã®ãã°ã€ã³ããã³ããããçŽæ¥ã«ããã¢ã³ãããŒã¹ããããšæ¥œã§ãããã
ä¿¡é Œã§ããã·ã¹ãã ã§
[source,shell]
....
% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
....
ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæãããã®ã§ã ãã°ã€ã³ãç¶ããŠãã ããã
=== è€æ°ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæãã
éœåã«ãã£ãŠã¯ã ä¿¡é Œã§ãããã·ã³ãä¿¡é Œã§ããéä¿¡è·¯ãäžå確ä¿ã§ããªããããªããšãããã§ãããã ãã®ãããªå Žåã«ã¯ãman:opiekey[1] ã䜿ã£ãŠè€æ°ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããçæã§ããŸãã ããšãã°
[source,shell]
....
% opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
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
....
`-n 5` ãšããåŒæ°ã«ãã£ãŠ 5 åã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒããé ã«çæããŸãã ãŸã `30` ã¯ã æåŸã®ã·ãŒã±ã³ã¹çªå·ãšãªãã¹ãæ°åã§ããåºåã¯äœ¿ãé çªãšã¯ _é_ ã«åºåãããŠããããšã«æ³šæããŠãã ãã (蚳泚: äžçªæåã«äœ¿ãã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã¯äžçªæåŸã«åºåããããã®ã§ã)ã ããããªããã»ãã¥ãªãã£ã«åå·ãããªãã ãã®çµæãçŽãšéçã䜿ã£ãŠæã§æžãç§»ããæ¹ããããããããŸããã ããã§ãªããã°ããã®çµæãå°å·ãããšè¯ãã§ãããã ããã§ã åºåã®åè¡ã¯ã·ãŒã±ã³ã¹çªå·ãšããã«å¯Ÿå¿ããäžååã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãã§ãã æ¶è²»æžã¿ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãããã³ã§æ¶ããŠãã£ãŠãã ããã
=== UNIX(R) ãã¹ã¯ãŒãã®å©çšãå¶éãã
OPIE ã¯ããã°ã€ã³ã»ãã·ã§ã³ã® IP ã¢ãã¬ã¹ãããŒã¹ãšãã UNIX(R) ãã¹ã¯ãŒãã®äœ¿çšãå¶éã§ããŸãã é¢é£ãã¡ã€ã«ã¯ã[.filename]#/etc/opieaccess# ã§ã ããã©ã«ãã§çšæãããŠããŸãã ãã®ãã¡ã€ã«ã®è©³çްãã ãã®ãã¡ã€ã«ã䜿çšããéã«èæ
®ãã¹ãã»ãã¥ãªã£ã«ã€ããŠã¯ man:opieaccess[5] ã確èªããŠãã ããã
以äžã¯ [.filename]#opieaccess# ã®äŸã§ãã
[.programlisting]
....
permit 192.168.0.0 255.255.0.0
....
ãã®è¡ã§ã¯ã(ãªãããŸãããããã) IP ãœãŒã¹ã¢ãã¬ã¹ãã ããå€ããã¹ã¯ã«ããããããŠãŒã¶ã«å¯ŸããŠã UNIX(R) ãã¹ã¯ãŒãããã€ã§ãèš±å¯ããŸãã
ãã [.filename]#opieaccess# ã®ã©ã®ã«ãŒã«ã«ãäžèŽããªããã°ã ããã©ã«ãã§ã¯é OPIE ãã°ã€ã³ã¯äœ¿ããŸããã
[[tcpwrappers]]
== TCP Wrappers
TCP Wrappers ã¯ã ãã¹ãŠã®ãµãŒãããŒã¢ã³ã«å¯ŸãããµããŒãããã®ç®¡çäžã§æäŸã§ããããã«ã crossref:advanced-networking[network-inetd,ãinetd ãã¹ãŒããµãŒããã] ã®æ©èœãæ¡åŒµããŸãã ãã®æ¹æ³ã䜿ãããšã§ããã°ãžã®å¯Ÿå¿ã æ¥ç¶ã«å¯ŸããŠã¡ãã»ãŒãžãè¿ãããã å
éšã®æ¥ç¶ã ããèš±å¯ããããã«ããŒã¢ã³ãèšå®ããããšãå¯èœãšãªããŸãã ãããã®æ©èœã®ããã€ãã¯ãã¡ã€ã¢ãŠã©ãŒã«ã§ãå®è£
ã§ããŸããã TCP Wrappers ã¯ã ã·ã¹ãã ãå®ãããã®ã¬ã€ã€ã远å ãã ãã¡ã€ã¢ãŠã©ãŒã«ãæäŸãã以äžã®ç®¡çæ©èœãæäŸããŸãã
TCP Wrappers ã¯ã é©åã«èšå®ããããã¡ã€ã¢ãŠã©ãŒã«ã®çœ®ãæããšèããã¹ãã§ã¯ãããŸããã TCP Wrappers ã¯ã ãã¡ã€ã¢ãŠã©ãŒã«ãä»ã®ã»ãã¥ãªãã£åŒ·åã®ããŒã«ãšçµã¿åãããŠäœ¿ãã¹ãã§ãã
=== åæèšå®
FreeBSD äžã§ TCP Wrappers ãæå¹ã«ããã«ã¯ã [.filename]#rc.conf# ãã `-Ww` ãªãã·ã§ã³ã§ man:inetd[8] ãµãŒããèµ·åãããããšã確èªããŠãã ããã ãã®åŸã[.filename]#/etc/hosts.allow# ãé©åã«èšå®ããŠãã ããã
[NOTE]
====
ä»ã® TCP Wrappers ã®å®è£
ãšç°ãªãã [.filename]#hosts.deny# ã¯å»æ¢ãããŸããã ãã¹ãŠã®èšå®ãªãã·ã§ã³ã¯ [.filename]#/etc/hosts.allow# ã«æžãããŠããå¿
èŠããããŸãã
====
æãç°¡åãªèšå®ã«ãããããŒã¢ã³ã®æ¥ç¶ããªã·ã¯ã [.filename]#/etc/hosts.allow# ã®äžã§ã ãªãã·ã§ã³ããšã«èš±å¯ãŸãã¯ãããã¯ããããã«èšå®ãããšãããã®ã§ãã FreeBSD ã®ããã©ã«ãã®èšå®ã§ã¯ãman:inetd[8] ããèµ·åããããã¹ãŠã®ããŒã¢ã³ã®æ¥ç¶ãèš±å¯ããŸãã
åºæ¬çãªèšå®ã¯ãéåžž `daemon : address : action` ãšãã圢åŒã§ããããã§ã `daemon` ã¯ã man:inetd[8] ãèµ·åããããŒã¢ã³ã®ååã§ãã `address` ã®éšåã¯ãæå¹ãªãã¹ãåã IP ã¢ãã¬ã¹ãŸãã¯ã æ¬åŒ§ ([ ]) ã§å²ãŸãã IPv6 ã¢ãã¬ã¹ã§ãã `action` ã¯ã `allow` ãŸã㯠`deny` ã§ãã TCP Wrappers ã¯ã æåã«ãããããã«ãŒã«ãé©çšãããŸãã ããã¯ãèšå®ãã¡ã€ã«ã«å¯Ÿããã«ãŒã«ã«ããããããã©ããã®ã¹ãã£ã³ã¯ã æé ã«è¡ãããããšãæå³ããŠããŸãã ããããããšãã«ãŒã«ãé©çšããã æ€çŽ¢ã®ããã»ã¹ã¯çµäºããŸãã
äŸãšããŠãPOP3 ã®æ¥ç¶ã package:mail/qpopper[] ããŒã¢ã³çµç±ã§èš±å¯ããã«ã¯ã以äžã®è¡ã [.filename]#hosts.allow# ã«è¿œå ããŠãã ããã
[.programlisting]
....
# This line is required for POP3 connections:
qpopper : ALL : allow
....
ãã®è¡ã远å ãããã man:inetd[8] ãåèµ·åããŠãã ããã
[source,shell]
....
# service inetd restart
....
=== é«åºŠãªèšå®
TCP Wrappers ã¯ã æ¥ç¶ãåãæ±ã以äžã®å¶åŸ¡ãè¡ãé«åºŠãªèšå®ãæäŸããŠããŸãã ããæã¯ã æ¥ç¶ããŠãããã¹ããŸãã¯ããŒã¢ã³ã«ã³ã¡ã³ããè¿ãããšãé©åã§ããããšããããŸãã å¥ã®å Žåã§ã¯ããããããã°ãšã³ããªãèšé²ãããã 管çè
ã«ã¡ãŒã«ã§éãå¿
èŠãããããšãããã§ãããã ãŸããã®ä»ã®ç¶æ³ãšããŠã¯ã ãµãŒãã¹ãããŒã«ã«ã®æ¥ç¶ã®ã¿ã®äœ¿çšã«å¶éããå¿
èŠãããå ŽåããããŸãã ãããã¯ãã¹ãŠã`ã¯ã€ã«ãã«ãŒã` ãšåŒã°ããèšå®ã®ãªãã·ã§ã³ (æ¡åŒµæåããã³å€éšã³ãã³ãã®å®è¡) ã§å¯èœãšãªããŸãã
==== å€éšã³ãã³ã
æ¥ç¶ã¯æåŠããªããã°ãªããªããã ãã®çç±ãæ¥ç¶ã®ç¢ºç«ã詊ã¿ãçžæã«éãããç¶æ³ãèããŠãã ããã ãã®ã¢ã¯ã·ã§ã³ã¯ã`twist` ã䜿ãããšã§å®çŸå¯èœã§ãã æ¥ç¶ã詊ã¿ããããšã`twist` ã¯ã·ã§ã«ã³ãã³ããŸãã¯ã¹ã¯ãªãããå®è¡ããŸãã ãã®å Žåã®äŸã¯ã [.filename]#hosts.allow# ã«æžãããŠããŸãã
[.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."
....
ãã®äŸã§ã¯ã "You are not allowed to use `daemon` from `hostname`." ãšããã¡ãã»ãŒãžãã ã¢ã¯ã»ã¹ãã¡ã€ã«ã®äžã§èšå®ãããŠããªããã¹ãŠã®ããŒã¢ã³ã«å¯ŸããŠè¿ããŸãã æ¥ç¶å
ã«å¯Ÿãã 確ç«ãããæ¥ç¶ãç Žæ£ãããçŽåŸã«è¿çããããšã¯æå¹ã§ãã è¿ä¿¡ã«äœ¿ãããã¡ãã»ãŒãžã¯ãåŒçšç¬Š (`"`) ã§å²ã _å¿
èŠ_ ããããŸãã
[WARNING]
====
æ»æè
ãæ»æè
ã®ã°ã«ãŒãã¯ã ãããã®ããŒã¢ã³ã®æ¥ç¶ã®ãªã¯ãšã¹ãã§ããµããããããšã«ããã ãµãŒãã«å¯Ÿã㊠DoS æ»æã仿ããããšãã§ããŸãã
====
ä»ã®å¯èœæ§ã¯ `spawn` ã䜿ãããšã§ãã `twist` ãšåæ§ã«ã `spawn` ã¯ãæé»ã®ãã¡ã«æ¥ç¶ãæåŠãã å€éšã®ã·ã§ã«ã³ãã³ããã¹ã¯ãªãããå®è¡ã§ããŸãã `twist` ãšç°ãªãã`spawn` ã¯ã æ¥ç¶ã確ç«ããçžæã«å¯Ÿããè¿äºãè¿ãããšã¯ãããŸããã ããšãã°ã以äžã®ãããªèšå®ã®è¡ãèããŠã¿ãŠãã ããã
[.programlisting]
....
# We do not allow connections from example.com:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: deny
....
ãã®è¡ã¯ã`*.example.com` ããã®æ¥ç¶ããã¹ãŠæåŠããŸãã ãã¹ãåãIP ã¢ãã¬ã¹ããã³ã¢ã¯ã»ã¹ã詊ã¿ãããŒã¢ã³ãã [.filename]#/var/log/connections.log# ã«èšé²ãããŸãã
ãã®äŸã§ã¯ã眮ææå `%a` ããã³ `%h` ã䜿ãããŠããŸãã 眮ææåã®å®å
šãªäžèŠ§ã¯ man:hosts_access[5] ãã芧ãã ããã
==== ã¯ã€ã«ãã«ãŒããªãã·ã§ã³
`ALL` ãªãã·ã§ã³ã¯ã ããŒã¢ã³ããã¡ã€ã³ãŸã㯠IP ã¢ãã¬ã¹ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã®ã©ããã«ããããããã©ããã«äœ¿ãããŸãã ä»ã®ã¯ã€ã«ãã«ãŒãã¯ãåœé ããã IP ã¢ãã¬ã¹ãæäŸãããã¹ãã«ããããããã©ããã«çšãããã `PARANOID` ã§ãã ããšãã°ã`PARANOID` ã䜿ãããšã§ã ãã¹ãåãšç°ãªã IP ã¢ãã¬ã¹ããã®æ¥ç¶ããã£ãæã®ã¢ã¯ã·ã§ã³ãå®çŸ©ã§ããŸãã 以äžã®äŸã§ã¯ããã¹ãåããæ€çŽ¢ããã IP ã¢ãã¬ã¹ãšç°ãªã IP ã¢ãã¬ã¹ãæã€ man:sendmail[8] ãžã®æ¥ç¶ã®ãã¹ãŠã®ãªã¯ãšã¹ããæåŠããŸãã
[.programlisting]
....
# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : deny
....
[CAUTION]
====
ã¯ã©ã€ã¢ã³ããããã¯ãµãŒãã® DNS ã®èšå®ãééã£ãŠããå Žåã«ã `PARANOID` ã¯ã€ã«ãã«ãŒãã䜿ããšã ãµãŒãããšãŠã䜿ãã¥ãããªããŸãã 管çè
ã®æ
éããæ±ããããŸãã
====
ã¯ã€ã«ãã«ãŒãããã³é¢é£ããæ©èœã«ã€ããŠãã£ãšç¥ãããå Žåã«ã¯ã man:hosts_access[5] ãã芧ãã ããã
äžèšã®èšå®ãåäœããã«ã¯ã[.filename]#hosts.allow# ã®äžã§ã æåã®èšå®ã®è¡ãã³ã¡ã³ãã¢ãŠããããŠããå¿
èŠããããŸãã
[[kerberos5]]
== Kerberos5
Kerberos ã¯ã ãµãŒãã®ãµãŒãã¹ã«ãã£ãŠãŠãŒã¶ãå®å
šã«èªèšŒãåããããããã«ããããã®ã ãããã¯ãŒã¯ã®ä»å ã·ã¹ãã ããã³ãããã³ã«ã§ãã Kerberos ã¯ã 身å
確èªãããã·ã·ã¹ãã ãã ä¿¡é Œããã第 3 è
èªèšŒã·ã¹ãã ãšã説æãããŸãã ãŠãŒã¶ã Kerberos ã䜿ã£ãŠèªèšŒãè¡ã£ãåŸã¯ã éä¿¡ã¯æå·åããã ãã©ã€ãã·ããã³ããŒã¿ã®å®å
šæ§ãä¿èšŒããããšãã§ããŸãã
Kerberos ã®å¯äžã®æ©èœã¯ã ãããã¯ãŒã¯äžã®ãŠãŒã¶ã®å®å
šãªèªèšŒãæäŸããããšã§ãã æ¿èª (ã©ã®ãŠãŒã¶ãèš±å¯ãããŠããã) ãç£æ» (ãŠãŒã¶ãã©ã®ãããªäœæ¥ãè¡ã£ãŠããã) ã®æ©èœã¯æäŸããŸããã Kerberos ã䜿ãéã¯ã æ¿èªããã³ç£æ»ãµãŒãã¹ãæäŸããä»ã®ã»ãã¥ãªãã£ã®ææ®µãšã®å©çšãã æšå¥šãããŸãã
ãã®ç¯ã§ã¯ãFreeBSD çšãšããŠé
åžãããŠãã Kerberos ãã»ããã¢ããããéã®ã¬ã€ããæäŸããŸãã å®å
šãªèª¬æãå¿
èŠãªå Žåã«ã¯ã ããã¥ã¢ã«ããŒãžãåç
§ããŠãã ããã
ãã®ç¯ã«ããã Kerberos ã®ã€ã³ã¹ããŒã«ã®ãã¢ã§ã¯ã以äžã®ãããªåå空éã䜿ãããŸãã
* DNS ãã¡ã€ã³ ("ãŸãŒã³") ã¯ã `example.org` ã§ãã
* Kerberos ã®é åã¯ã `EXAMPLE.ORG` ã§ãã
[NOTE]
====
Kerberos ã®èšå®ã§ã¯ã å
éšã§ã®äœ¿çšã§ãå®éã®ãã¡ã€ã³åã䜿ã£ãŠãã ããã DNS ã®åé¡ãé¿ããããšãã§ãã ä»ã® Kerberos ã®ã¬ã«ã (realm) ãšã®çžäºéçšãä¿èšŒããŸãã
====
=== æŽå²
Kerberos ã¯ã ãããã¯ãŒã¯ã®ã»ãã¥ãªãã£åé¡ã解決ããããã«ã MIT ã§éçºãããŸããã Kerberos ãããã³ã«ã¯ã å¿
ãããå®å
šã§ã¯ãªãã€ã³ã¿ãŒãããæ¥ç¶ã«ãããŠãã ãµãŒãã«å¯Ÿã㊠(éããŸãåæ§ã«)ã 匷ãæå·ã䜿ã£ãŠèº«å
ã蚌æããŸãã
Kerberos ã¯ã ãããã¯ãŒã¯èªèšŒãããã³ã«ã®ååã§ããã Kerberos telnet ã®ããã«ã ãã®ããã°ã©ã ãå®è£
ããŠããããã°ã©ã ã衚ãããã®åœ¢å®¹è©ã§ããããŸãã ãããã³ã«ã®çŸåšã®ããŒãžã§ã³ã¯ããŒãžã§ã³ 5 ã§ã RFC 1510 ãšããŠææžåãããŠããŸãã
ãã®ãããã³ã«ã®ããã€ãã®ããªãŒã®å®è£
ãã ããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§å©çšã§ããŸãã æåã® Kerberos ãéçºããããµãã¥ãŒã»ããå·¥ç§å€§åŠ (MIT) ã¯ã éçºãã Kerberos ããã±ãŒãžãç¶ç¶çã«ä¿å®ããŠããŸãã ã¢ã¡ãªã«åè¡åœã§ã¯æå·è£œåãšããŠè¯ã䜿ãããŠããŸããã æŽå²çã«ã¯ã ã¢ã¡ãªã«åè¡åœ ã®èŒžåºèŠå¶ã«ããå¶éãããŠããŸããã MIT ã§å®è£
ããã Kerberos ã¯ã package:security/krb5[] package ãŸã㯠port ããå©çšã§ããŸãã ããŒãžã§ã³ 5 ã®ããäžã€ã®å®è£
ãã Heimdal Kerberos ã§ãã ãã®å®è£
ã¯ãã¢ã¡ãªã«åè¡åœã®å€ã§éçºãããããã 茞åºã®å¶éãé¿ããããšãã§ããŸãã Heimdal Kerberos 㯠package:security/heimdal[]> package ãŸã㯠port ããã€ã³ã¹ããŒã«ã§ããŸãããæå°æ§æã¯ FreeBSD ã® base ã€ã³ã¹ããŒã«ã«å«ãŸããŠããŸãã
以äžã®èª¬æã§ã¯ FreeBSD ã«å«ãŸããŠãã Heimdal ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®äœ¿çšãæ³å®ããŠããŸãã
=== Heimdal KDC ã®èšå®
éµé
åžã»ã³ã¿ãŒ (KDC) ã¯ã Kerberos ãæäŸããäžå¿çãªèªèšŒãµãŒãã¹ã§ã Kerberos ãã±ãããçºè¡ããã³ã³ãã¥ãŒã¿ã§ãã KDC ã¯ã Kerberos ã®ã¬ã«ã ã®äžã®ãã¹ãŠã®ã³ã³ãã¥ãŒã¿ãã "ä¿¡é Œ"ãããŠããŸãã ãã®ãããå³éãªã»ãã¥ãªãã£ã«å¯Ÿããé
æ
®ãå¿
èŠãšãªããŸãã
Kerberos ãµãŒãã®å®è¡ã«ã³ã³ãã¥ãŒã¿ã®ãªãœãŒã¹ã¯ã»ãšãã©å¿
èŠãããŸãããã ã»ãã¥ãªãã£ã®èгç¹ãããKDC ãšããŠã®ã¿æ©èœããå°çšã®ã³ã³ãã¥ãŒã¿ãæšå¥šãããŸãã
KDC ãèšå®ããã«ããã£ãŠã KDC ãšããŠåäœããããã«ã é©åã« [.filename]#/etc/rc.conf# ãèšå®ãããŠããããšã確èªããŠãã ããã å¿
èŠã«å¿ããŠã ã·ã¹ãã ã®èšå®ãåæ ããããã«ãã¹ã調æŽããå¿
èŠããããŸãã
[.programlisting]
....
kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
....
次ã«ã[.filename]#/etc/krb5.conf# ã以äžã®ããã«ç·šéããŠãã ããã
[.programlisting]
....
[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORG
....
[.filename]#/etc/krb5.conf# ã®äžã§ã KDC ã¯ã å®å
šä¿®é£Ÿããããã¹ãå `kerberos.example.org` ã䜿ãããšãæ³å®ãããŠããŸãã KDC ãç°ãªããã¹ãåãæã€å Žåã«ã¯ã ååã®è§£æ±ºãè¡ãããããã«ãé©åã« CNAME (ãšã€ãªã¢ã¹) ãšã³ããªããŸãŒã³ãã¡ã€ã«ã«è¿œå ããŠãã ããã
[NOTE]
====
é©åã« DNS ãµãŒããèšå®ãããŠãã倧ããªãããã¯ãŒã¯ã§ã¯ã äžèšã®äŸã¯ã以äžã®ããã«æŽçãããŸãã
[.programlisting]
....
[libdefaults]
default_realm = EXAMPLE.ORG
....
ãããŠã`example.org` ãŸãŒã³ãã¡ã€ã«ã«ã¯ã以äžã®è¡ãä»ãå ããããŸãã
[.programlisting]
....
_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORG
....
====
[NOTE]
====
ã¯ã©ã€ã¢ã³ããã Kerberos ãµãŒãã¹ãèŠã€ããããã«ã¯ã [.filename]#/etc/krb5.conf# ãå®å
šã«èšå®ãããã [.filename]#/etc/krb5.conf# ãæäœéã«èšå®ãã _ããã«_ DNS ãµãŒããé©åã«èšå®ãã _å¿
èŠ_ ããããŸãã
====
次㫠Kerberos ããŒã¿ããŒã¹ãäœæããŠãã ããã ãã®ããŒã¿ããŒã¹ã«ã¯ã ãã¹ã¿ãŒéµã«ããæå·åããããã¹ãŠã®ããªã³ã·ãã«ã®éµãå«ãŸããŠããŸãã ãã®ãã¹ã¯ãŒãã¯ã [.filename]#/var/heimdal/m-key# ã«ä¿åãããããã èŠããå¿
èŠã¯ãããŸããã ãã¹ã¿ãŒéµãäœæããã«ã¯ãman:kstash[8] ãå®è¡ããŠã ãã¹ã¯ãŒããå
¥åããŠãã ããã
ãã¹ã¿ãŒéµãäœæãããã`kadmin -l` ã䜿ã£ãŠããŒã¿ããŒã¹ãåæåããŠãã ããã ãã®ãªãã·ã§ã³ã䜿ããšãman:kadmin[8] ã¯ã man:kadmind[8] ãããã¯ãŒã¯ãµãŒãã¹ã䜿ããã ããŒã«ã«ã®ããŒã¿ããŒã¹ãã¡ã€ã«ãçŽæ¥å€æŽããŸãã ããã«ããã ããŒã¿ããŒã¹ãäœæããåã«ãããŒã¿ããŒã¹ãžã®æ¥ç¶ã詊ã¿ãŠããŸããšããã åµãå
ãé¶ãå
ããšããåé¡ãåé¿ã§ããŸãã man:kadmin[8] ããã³ããã§ã `init` ã䜿ã£ãŠã ã¬ã«ã ã«é¢ããåæã®ããŒã¿ããŒã¹ãäœæããŠãã ããã
æåŸã«ãman:kadmin[8] ããã³ããã§ `add` ã䜿ã£ãŠæåã®ããªã³ã·ãã«ãäœæããŠäžããã å·®ãåœããã¯ã ããªã³ã·ãã«ã«å¯Ÿããããã©ã«ãã®ãªãã·ã§ã³ã«åŸã£ãŠãã ããã åŸã§ `modify` ã䜿ãããšã§ã 倿Žããããšãã§ããŸãã man:kadmin[8] ããã³ããã§ `?` ãšå
¥åãããšã å©çšå¯èœãªãªãã·ã§ã³ã確èªã§ããŸãã
ããŒã¿ããŒã¹äœæã®ã»ãã·ã§ã³ã®äŸã¯ä»¥äžã®ããã«ãªããŸãã
[source,shell]
....
# kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
# kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxx
....
次㫠KDC ãµãŒãã¹ãèµ·åããŠãã ããã `service kerberos start` ããã³ `service kadmind start` ãå®è¡ããŠãµãŒãã¹ãèµ·åããŠãã ããã ãã®æç¹ã§ãkerberos åãããããŒã¢ã³ãèµ°ã£ãŠããªããŠãã KDC ã®ã³ãã³ãã©ã€ã³ãããäœæããã°ããã® (ãŠãŒã¶) ããªã³ã·ãã«ã®ãã±ãããå
¥æãããã äžèЧã衚瀺ããããšãã§ããããšã確èªã§ããŸãã
[source,shell]
....
% kinit tillman
[email protected]'s Password:
% klist
Credentials cache: FILE:/tmp/krb5cc_500
Principal: [email protected]
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/[email protected]
....
å¿
èŠããªããªã£ãæã«ã¯ããã±ãããç Žæ£ã§ããŸãã
[source,shell]
....
% kdestroy
....
=== Heimdal Kerberos ãµãŒãã¹ãæå¹ã«ããã
æåã« [.filename]#/etc/krb5.conf# ã KDC ããã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãžã man:scp[1] ãŸãã¯ç©ççã«ãªã ãŒããã«ãã£ã¹ã¯ã䜿ããšãã£ãå®å
šãªæ¹æ³ã§ã³ããŒããŠãã ããã
次㫠[.filename]#/etc/krb5.keytab# ãäœæããŠãã ããã ããã Kerberos åãããããŒã¢ã³ãæäŸãããµãŒããšã¯ãŒã¯ã¹ããŒã·ã§ã³ã®éã§ã®å€§ããªéãã§ã: ãµãŒãã«ã¯ [.filename]#keytab# ã眮ãããŠããå¿
èŠããããŸãã ãã®ãã¡ã€ã«ã«ã¯ããµãŒãã®ãã¹ãéµãå«ãŸããŠããŸãã ãã®éµã«ããããã¹ãããã³ KDC ãä»ã®èº«å
ã®æ€èšŒãã§ããŸãã éµãå
¬éãããŠããŸããšã ãµãŒãã®ã»ãã¥ãªãã£ãç ŽãããŠããŸãããã ãã®ãã¡ã€ã«ã¯å®å
šã«ãµãŒãã«è»¢éããªããã°ãªããŸããã
äžè¬çã«ã¯ãman:kadmin[8] ã䜿ã£ãŠã [.filename]#keytab# ããµãŒãã«è»¢éããŸãã ãã¹ãããªã³ã·ãã« (KDC åŽã® [.filename]#krb5.keytab#) ã man:kadmin[8] ã䜿ã£ãŠäœæããã®ã§äŸ¿å©ã§ãã
ãã§ã«ãã±ãããå
¥æãããã®ãã±ããã¯ã man:kadmin[8] ã€ã³ã¿ãã§ãŒã¹ã§äœ¿çšã§ããããšã [.filename]#kadmind.acl# ã§èš±å¯ãããŠããå¿
èŠããããŸãã ã¢ã¯ã»ã¹ã³ã³ãããŒã«ãªã¹ãã®èšèšã®è©³çްã«ã€ããŠã¯ã `info heimdal` ã® "Remote administration" ãšããã¿ã€ãã«ã®ç« ãã芧ãã ããã ãªã¢ãŒãããã® `kadmin` ã¢ã¯ã»ã¹ãæå¹ã«ãã代ããã«ã 管çè
ã¯ãããŒã«ã«ã³ã³ãœãŒã«ãŸã㯠man:ssh[1] ãçšããŠå®å
šã« KDC ã«æ¥ç¶ãã `kadmin -l` ã䜿çšããŠã ããŒã«ã«ã§ç®¡çäœæ¥ãè¡ãããšãã§ããŸãã
[.filename]#/etc/krb5.conf# ãã€ã³ã¹ããŒã«ãããã Kerberos ãµãŒããã `add --random-key` ã䜿ã£ãŠãã ããã ãã®ã³ãã³ãã¯ããµãŒãã®ãã¹ãããªã³ã·ãã«ã远å ããŸãã ãããŠã`ext` ãçšããŠã ãµãŒãã®ãã¹ãããªã³ã·ãã«ã keytab ã«æœåºããŠãã ããã 以äžã¯ã䜿çšäŸã§ãã
[source,shell]
....
# kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exit
....
`ext` ã¯ãããã©ã«ãã§ã¯ãæœåºãããéµã [.filename]#/etc/krb5.keytab# ã«ä¿åããŸãã
KDC äžã§ man:kadmind[8] ãèµ°ãããŠããªãå Žåã§ã ãªã¢ãŒããã man:kadmin[8] ã«æ¥ç¶åºæ¥ãªãå Žåã«ã¯ã ãã¹ãããªã³ã·ãã« (`host/myserver.EXAMPLE.ORG`) ãçŽæ¥ KDC äžã§è¿œå ãã ãã®åŸã以äžã®ããã« KDC äžã® [.filename]#/etc/krb5.keytab# ã®äžæžããé¿ããããã äžæãã¡ã€ã«ã«æœåºããŠãã ããã
[source,shell]
....
# kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exit
....
ãã®åŸãman:scp[1] ãŸãã¯ãªã ãŒããã«ãã£ã¹ã¯ã䜿ã£ãŠã keytab ãå®å
šã«ãµãŒãã³ã³ãã¥ãŒã¿ã«ã³ããŒããŠãã ããã KDC äžã® keytab ãäžæžãããããšãé¿ããããã ããã©ã«ããšã¯ç°ãªãååãæå®ããŠãã ããã
ããã§ãµãŒãã¯ã [.filename]#krb5.conf# ã䜿ã£ãŠ KDC ãšéä¿¡ãã§ããããã«ãªããŸããã ãããŠã[.filename]#krb5.keytab# ã«ãã£ãŠèº«å
ã蚌æã§ããããã«ãªã£ãã®ã§ã Kerberos ãµãŒãã¹ãæå¹ã«ããæºåãåºæ¥ãŸããã ãã®äŸã§ã¯ã man:telnetd[8] ãµãŒãã¹ã [.filename]#/etc/inetd.conf# ã§æå¹ã«èšå®ããã `service inetd restart` ã«ãã£ãŠã man:inetd[8] ãµãŒãã¹ãåèµ·åããŸãã
[.programlisting]
....
telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user
....
éèŠãªå€æŽç®æã¯ã`-a` èªèšŒããŠãŒã¶ã«èšå®ãããŠããããšã§ãã 詳现ã«ã€ããŠã¯ã man:telnetd[8] ãåç
§ããŠãã ããã
=== Heimdal Kerberos ã¯ã©ã€ã¢ã³ããæå¹ã«ãã
ã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ã®èšå®ã¯ç°¡åã§ãã [.filename]#/etc/krb5.conf# ã®ã¿ãå¿
èŠã§ãã ãã®ãã¡ã€ã«ãã»ãã¥ãªãã£çã«å®å
šãªæ¹æ³ã§ãKDC ããã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãžã³ããŒããŠãã ããã
ã¯ã©ã€ã¢ã³ããããman:kinit[1], man:klist[1] ããã³ man:kdestroy[1] ã䜿çšãã äžèšã§äœæããããªã³ã·ãã«ã«å¯Ÿãããã±ããã®å
¥æã衚瀺ã åé€ãè¡ããã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ã詊éšããŠãã ããã Kerberos ã¢ããªã±ãŒã·ã§ã³ã䜿ã£ãŠ Kerberos ãæå¹ãªãµãŒãã«æ¥ç¶ããããšãã§ããã¯ãã§ãã ããããŸãæ©èœããªãå Žåã§ãããã±ãããå
¥æã§ããã®ã§ããã°ã åé¡ã¯ãããããµãŒãã«ããã ã¯ã©ã€ã¢ã³ããŸã㯠KDC ã®åé¡ã§ã¯ãªããšèããããŸãã
Kerberos åãããã¢ããªã±ãŒã·ã§ã³ã詊éšããéã«ã¯ã man:tcpdump[1] ãšãã£ããã±ããã¹ããã¡ã䜿çšããŠã ãã¹ã¯ãŒããå¹³æã§éãããŠããªãããšã確èªããŠãã ããã
ã³ã¢ä»¥å€ã® ããŸããŸãª Kerberos ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãå©çšå¯èœã§ãã FreeBSD ã® "æå°" ã€ã³ã¹ããŒã«ã§ã¯ã ã€ã³ã¹ããŒã«ããã Kerberos åãããå¯äžã®ãµãŒãã¹ã¯ãman:telnetd[8] ã§ãã
Heimdal port ã¯ã Kerberos åãããŠãã man:ftpd[8], man:rshd[8], man:rcp[1], man:rlogind[8] ããã³ä»ã®ããŸãäžè¬çã§ã¯ãªãããã°ã©ã ãã€ã³ã¹ããŒã«ããŸãã MIT port ãããã¹ãŠã® Kerberos ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŸãã
=== ãŠãŒã¶èšå®ãã¡ã€ã«: [.filename]#.k5login# ããã³ [.filename]#.k5users#
ã¬ã«ã ã®ãŠãŒã¶ã¯ãäžè¬çã«ã¯ã ããŒã«ã«ãŠãŒã¶ã¢ã«ãŠã³ãã«å¯Ÿå¿ãã Kerberos ããªã³ã·ãã«ãæã¡ãŸãã ããããªãããæã
Kerberos ããªã³ã·ãã«ã«å¯Ÿå¿ããªãããŒã«ã«ãŠãŒã¶ã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãå¿
èŠãšãªãããšããããŸãã ããšãã°ã `[email protected]` ããããŒã«ã«ãŠãŒã¶ã¢ã«ãŠã³ã `webdevelopers` ãžã®ã¢ã¯ã»ã¹ãå¿
èŠãšãªãããšããããŸãããããŠã ä»ã®ããªã³ã·ãã«ãåãããŒã«ã«ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ãå¿
èŠã«ãªãããšããããŸãã
ãŠãŒã¶ã®ããŒã ãã£ã¬ã¯ããªã«çœ®ããã [.filename]#.k5login# ããã³ [.filename]#.k5users# ãã¡ã€ã«ã䜿ãããšã§ã ãã®åé¡ãè§£æ±ºåºæ¥ãŸãã ããšãã°ã以äžã®è¡ãå«ã [.filename]#.k5login# ã `webdevelopers` ã®ããŒã ãã£ã¬ã¯ããªã«çœ®ããšã äžèЧã«ããäž¡æ¹ã®ããªã³ã·ãã«ã¯ã å
±æã®ãã¹ã¯ãŒããå¿
èŠãšããªããŠãã ãã®ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹åºæ¥ãŸãã
[source,shell]
....
[email protected]
[email protected]
....
[.filename]#.k5users# ã®è©³çްã«ã€ããŠã¯ã man:ksu[1] ãåç
§ããŠãã ããã
=== Kerberos Tips, Tricks, ããã³ãã©ãã«ã·ã¥ãŒãã£ã³ã°
* Heimdal ãŸã㯠MITKerberos ports ã®ã©ã¡ãã䜿ãå Žåã§ãã `PATH` ã¯ã Kerberos çã®ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ãã ã·ã¹ãã ã«ããã¢ããªã±ãŒã·ã§ã³ããå
ã«èŠã€ããããã«èšå®ãããŠããããšã確èªããŠãã ããã
* ã¬ã«ã ã«ãããã¹ãŠã®ã³ã³ãã¥ãŒã¿ã®éã§æå»ãåæããŠããªããšã èªèšŒã«å€±æããŠããŸããŸãã NTP ãçšãããæå»ã®åææ¹æ³ã«ã€ããŠã¯ã crossref:advanced-networking[network-ntp,ãNTPã] ãã芧ãã ããã
* MIT ããã³ Heimdal éã®éçšã¯ã æšæºåãããŠããªã man:kadmin[8] ãé€ãã°ããŸãæ©èœããŸãã
* ãã¹ãåã倿Žãããå Žåã¯ã `host/` ããªã³ã·ãã«ã倿Žããkeytab ãã¢ããããŒãããå¿
èŠããããŸãã Apache ã® package:www/mod_auth_kerb[] ã§äœ¿ããã `www/` ããªã³ã·ãã«ã®ãããªç¹å¥ãª keytab ãšã³ããªã§ãå¿
èŠãšãªããŸãã
* ã¬ã«ã ã®äžã®ãã¹ãŠã®ãã¹ãã¯ãDNSã ãããã¯ãæäœé [.filename]#/etc/hosts# ã«ãããŠæ£åŒãããã³éåŒãäž¡æ¹ã§åå解決ã§ããå¿
èŠããããŸãã CNAME ã¯åäœããŸãããA ããã³ PTR ã¬ã³ãŒãã¯ã æ£ããé©åãªäœçœ®ã«èšè¿°ãããŠããå¿
èŠããããŸãã ååã解決ã§ããªãå Žåã®ãšã©ãŒã¡ãã»ãŒãžã¯ã 次ã®äŸã®ããã«ãçŽæçã«åå ãåãããããªãã®ã§ã¯ãããŸããã `Kerberos5 refuses authentication because Read req failed: Key table entry not found`.
* KDC ã«å¯Ÿãã¯ã©ã€ã¢ã³ããšããŠæ¯ãèããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®äžã«ã¯ã man:ksu[1] ã«å¯ŸããŠã `root` æš©éã« setuid ãèš±å¯ããªããã®ããããŸãã ãã®èšå®ã§ã¯ã man:ksu[1] ã¯åäœããªãããšãæå³ããŸãã ãã㯠KDC ã®ãšã©ãŒã§ã¯ãããŸããã
* MITKerberos ã«ãããŠã ããªã³ã·ãã«ããããã©ã«ãã® 10 æéãè¶
ãããã±ããã®æå¹æéãšãããå Žåã«ã¯ã man:kadmin[8] ã®ããã³ããã§ `modify_principal` ã䜿ã£ãŠã 察象ã®ããªã³ã·ãã«ããã³ `krbtgt` ããªã³ã·ãã«äž¡æ¹ã®æå¹æéã®æå€§å€ã倿ŽããŠãã ããã ããªã³ã·ãã«ã¯ã `kinit -l` ã䜿çšããŠã é·ãæå¹æéã®ãã±ãããèŠæ±ã§ããŸãã
*
[NOTE]
====
ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«ã KDC ã§ãã±ããã¹ããã¡ãèµ°ããã äžæ¹ã§ãã¯ãŒã¯ã¹ããŒã·ã§ã³ã«ãã㊠man:kinit[1] ãå®è¡ãããšã man:kinit[1] ãå®è¡ãããããªãã ãã¹ã¯ãŒããå
¥åãçµããåã§ãã Ticket Granting Ticket (TGT) ãéãããŠããŸãã ããã«é¢ãã説æã¯ã以äžã®éãã§ãã Kerberos ãµãŒãã¯ã ãããªãæªæ¿èªã®ãªã¯ãšã¹ãã«å¯ŸããŠã èªç±ã« TGT ãéä¿¡ããŸãã ããããªããããã¹ãŠã® TGT ã¯ã ãŠãŒã¶ã®ãã¹ã¯ãŒãããçæãããéµã«ãããæå·åãããŠããŸãã ãã®ããããŠãŒã¶ããã¹ã¯ãŒããå
¥åããæã«ã¯ã ãã¹ã¯ãŒã㯠KDC ã«ã¯éãããŸããã ãã®ä»£ãããã®ãã¹ã¯ãŒãã¯ãman:kinit[1] ããã§ã«å
¥æãã TGT ã®åŸ©å·åã«äœ¿ãããŸãã ããã埩å·åã®çµæã æå¹ãªãã±ããã§æå¹ãªã¿ã€ã ã¹ã¿ã³ãã®å Žåã«ã¯ã ãŠãŒã¶ã¯ãæå¹ãª Kerberos ã¯ã¬ãã³ã·ã£ã«ãæã¡ãŸãã ãã®ã¯ã¬ãã³ã·ã£ã«ã«ã¯ã Kerberos ãµãŒãèªèº«ã®éµã«ããæå·åãããå®éã® TGT ãšãšãã«ãå°æ¥ Kerberos ãµãŒããšå®å
šãªéä¿¡ã確ç«ããããã®ã»ãã·ã§ã³éµãå«ãŸããŠããŸãã ãã®æå·ã® 2 çªç®ã®ã¬ã€ã€ã¯ã Kerberos ãµãŒããã å TGT ã®çåœã®æ€èšŒãå¯èœã«ããŠããéšåã§ãã
====
* ããšãã°äžé±éãšãã£ãé·ãæå¹æéã®ãã±ããã䜿ãããå Žåã§ã OpenSSH ã䜿ã£ãŠã ãã±ãããä¿åãããŠããã³ã³ãã¥ãŒã¿ã«æ¥ç¶ããããšããå Žåã¯ã Kerberos `TicketCleanup` ã [.filename]#sshd_config# ã«ãã㊠`no` ãšèšå®ãããŠãããã ãã±ãããããã°ã¢ãŠãæã«åé€ãããããšã確èªããŠãã ããã
* ãã¹ãããªã³ã·ãã«ã¯é·ãæå¹æéã®ãã±ãããæã€ããšãã§ããŸãã ããããŠãŒã¶ããªã³ã·ãã«ã 1 é±éã®æå¹æéãæã¡ã æ¥ç¶ããŠãããã¹ããã9 æéã®æå¹æéãæã£ãŠããå Žåã«ã¯ã ãŠãŒã¶ãã£ãã·ã¥ã¯æå¹æéãåãããã¹ãããªã³ã·ãã«ãæã€ããšã«ãªãã æ³å®ããããã«ã ãã±ãããã£ãã·ã¥ãæ¯ãèããªãããšãèµ·ããããŸãã
* man:kadmind[8] ã§èª¬æãããŠãããããªã ç¹å®ã®åé¡ã®ãããã¹ã¯ãŒãã䜿ãããããšãé¿ããããã« [.filename]#krb5.dict# ãèšå®ããæã«ã¯ã ãã¹ã¯ãŒãããªã·ãå²ãåœãŠãããããªã³ã·ãã«ã«ã®ã¿é©çšãããããšãèŠããŠããŠãã ããã [.filename]#krb5.dict# ã§äœ¿ãããŠãã圢åŒã§ã¯ã äžè¡ã«äžã€ã®æååã眮ãããŠããŸãã [.filename]#/usr/share/dict/words# ã«ã·ã³ããªãã¯ãªã³ã¯ãäœæããããšã¯ãæå¹ã§ãã
=== MIT port ãšã®éãã«ã€ããŠ
MIT ãš Heimdal çã®å€§ããªéãã¯ã man:kadmin[8] ã«é¢é£ããŠããŸãã ãã®ããã°ã©ã ã¯ãç°ãªã (ãã ãç䟡ãª) ã³ãã³ã矀ãæã¡ããããŠã ç°ãªããããã³ã«ã䜿çšããŸãã ãã KDC ã« MIT ã䜿çšããŠããå Žåã«ã¯ã Heimdal çã® man:kadmin[8] ã䜿ã£ãŠ KDC ããªã¢ãŒããã (éãåæ§ã«) 管çã§ããªãããšãæå³ããŠããŸãã
ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåãã¿ã¹ã¯ãè¡ãéã«ã è¥å¹²ç°ãªãã³ãã³ãã©ã€ã³ã®ãªãã·ã§ã³ã䜿ãããããšããããŸãã MIT Kerberos link:http://web.mit.edu/Kerberos/www/[ãŠã§ããµã€ã] ã«æžãããŠããã¬ã€ãã«åŸãããšãæšå¥šãããŸãã path ã®åé¡ã«ã€ããŠæ³šæããŠãã ããã MIT port ã¯ããã©ã«ãã§ [.filename]#/usr/local/# ã«ã€ã³ã¹ããŒã«ããŸãã ãã®ããããã `PATH` ã«ãããŠã·ã¹ãã ã®ãã£ã¬ã¯ããæåã«æžãããŠããå Žåã«ã¯ã MIT çã§ã¯ãªãã"éåžžã®" ã·ã¹ãã ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠããŸããŸãã
[NOTE]
====
FreeBSD ã® MITpackage:security/krb5[] port ã«ãããŠã man:telnetd[8] ããã³ `klogind` çµç±ã§ã®ãã°ã€ã³ãå¥åŠãªæ¯ãèããããããšãçè§£ããã«ã¯ã port ããã€ã³ã¹ããŒã«ããã [.filename]#/usr/local/share/doc/krb5/README.FreeBSD# ãèªãã§äžããã "incorrect permissions on cache file" ã®æ¯ãèããä¿®æ£ããã«ã¯ã ãã©ã¯ãŒããããã¯ã¬ãã³ã·ã£ãªã³ã°ã®æææš©ãé©åã«å€æŽã§ããããã«ã `login.krb5` ãã€ããªãèªèšŒã«äœ¿ãããå¿
èŠããããŸãã
====
[.filename]#rc.conf# ã以äžã®ããã«å€æŽããå¿
èŠããããŸãã
[.programlisting]
....
kerberos5_server="/usr/local/sbin/krb5kdc"
kadmind5_server="/usr/local/sbin/kadmind"
kerberos5_server_flags=""
kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
....
ãããè¡ãã®ã¯ã MIT Kerberos ã®ã¢ããªã±ãŒã·ã§ã³ã¯ã [.filename]#/usr/local# æ§é ã®äžã«ã€ã³ã¹ããŒã«ãããããã§ãã
=== Kerberos ã§èŠã€ãã£ãå¶éãç·©åãã
==== Kerberos ã¯ãAll or Nothing ã¢ãããŒãã§ãã
ãããã¯ãŒã¯äžã§æå¹ãªãã¹ãŠã®ãµãŒãã¹ã¯ã Kerberos åããããã ãŸãã¯ããããã¯ãŒã¯æ»æã«å¯ŸããŠå®å
šã§ããã¹ãã§ãã ãããªããšããŠãŒã¶ã®ã¯ã¬ãã³ã·ã£ã«ãçãŸãã å©çšãããããšãèµ·ãããããããŸããã ãã®äŸã¯ã Kerberos åããããã¹ãŠã®ãªã¢ãŒãã·ã§ã«ã§ãã ãã¹ã¯ãŒããå¹³æã§éããã㪠POP3 ã¡ãŒã«ãµãŒãã¯å€æããŠããŸããã
==== Kerberos ã¯ã ã·ã³ã°ã«ãŠãŒã¶ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã§ã®äœ¿çšãæ³å®ããŠããŸãã
ãã«ããŠãŒã¶ã®ç°å¢ã§ã¯ã Kerberos ã¯å®å
šã§ã¯ãããŸããã ãã±ãã㯠[.filename]#/tmp# ã«ä¿ç®¡ããã ãã®ãã±ããã¯ããã¹ãŠã®ãŠãŒã¶ãèªãããšãã§ããããã§ãã ããããŠãŒã¶ãã³ã³ãã¥ãŒã¿ãä»ã®ãŠãŒã¶ãšåæã«å
±æããŠãããšã ä»ã®ãŠãŒã¶ã¯ããã®ãŠãŒã¶ã®ãã±ãããçãã ãã ã³ããŒãåºæ¥ãŠããŸããŸãã
ãã®åé¡ã¯ã`-c` ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãŸãã¯ã奜ãŸãã㯠`KRB5CCNAME` ç°å¢å€æ°ã«ãã£ãŠå
æãããŸãã ãã®åé¡ãžã®å¯Ÿå¿ã«ã¯ã ãã±ããããŠãŒã¶ã®ããŒã ãã£ã¬ã¯ããªã«ä¿åãã ãã¡ã€ã«ã®èš±å¯å±æ§ãèšå®ããããšãäžè¬çã«è¡ãããŸãã
==== KDC ã¯ãåäžé害ç¹ã§ãã
èšèšäžãKDC ã¯ã ãã¹ã¿ãŒãã¹ã¯ãŒãã®ããŒã¿ããŒã¹ãšåæ§ã«å®å
šã§ããå¿
èŠããããŸãã KDC ã§ã¯ã 絶察ã«ä»ã®ãµãŒãã¹ãèµ°ãããã¹ãã§ã¯ãããŸãããã ç©ççã«å®å
šã§ããã¹ãã§ãã Kerberos ã¯ã KDC äžã§ããã¡ã€ã«ãšããŠä¿åãããŠããåã "ãã¹ã¿ãŒ" éµã§æå·åããããã¹ãŠã®ãã¹ã¯ãŒããä¿åããŠããã®ã§ã éåžžã«å±éºã§ãã
ãã¹ã¿ãŒéµãæŒæŽ©ããŠãã æžå¿µããã»ã©æªãããšã«ã¯ãªããŸããã ãã¹ã¿ãŒéµã¯ãKerberos ããŒã¿ããŒã¹ã®æå·æã«ã®ã¿ã ä¹±æ°ãçæããããã®ã·ãŒããšããŠäœ¿ãããŸãã KDC ãžã®ã¢ã¯ã»ã¹ãå®å
šã§ããéãã«ãããŠã¯ã ãã¹ã¿ãŒéµãçšããŠãããã»ã©å€ãã®ããšã¯ã§ããŸããã
ããã«ãKDC ãå©çšã§ããªããšã èªèšŒãã§ããªãããããããã¯ãŒã¯ãµãŒãã¹ãå©çšã§ããªããªããŸãã ãã®æ»æã«ãã被害ã¯ã ã²ãšã€ã®ãã¹ã¿ KDC ãšã²ãšã€ãŸãã¯ãã以äžã®ã¹ã¬ãŒãã ãããŠãã»ã«ã³ããªããã㯠PAM ãçšãããã©ãŒã«ããã¯èªèšŒãæ³šææ·±ãå®è£
ããããšã«ãã軜æžã§ããŸãã
==== Kerberos ã®æ¬ ç¹
Kerberos ã¯ã ãŠãŒã¶ããã¹ãããã³ãµãŒãã¹ã®éã§ã®èªèšŒãå¯èœã«ããŸããã KDC ãšãŠãŒã¶ã ãã¹ããŸãã¯ãµãŒãã¹ãšã®éã®èªèšŒã®ã¡ã«ããºã ã¯æäŸããŸããã ããã¯ãããã€ã®æšéŠ¬ã® man:kinit[1] ãã ãã¹ãŠã®ãŠãŒã¶åãšãã¹ã¯ãŒããèšé²ã§ããããšãæå³ããŠããŸãã package:security/tripwire[] ã®ãããªããã¡ã€ã«ã·ã¹ãã ã®å®å
šæ§ã確èªããããã®ããŒã«ã«ããã ãã®å±éºæ§ã軜æžããããšãã§ããŸãã
=== Kerberos ããã³ man:ssh[1] ãçšããã¢ã¯ã»ã¹ã®åé¡
Kerberos ãš man:ssh[1] ã䜿ãå Žåã«ã¯ã äž¡è
ã«é¢ããŠç¥ã£ãŠãããã°ãªããªãåé¡ãããã€ããããŸãã Kerberos ã¯å€§å€åªããèªèšŒãããã³ã«ã§ãããKerberos åããã man:telnet[1] ããã³ man:rlogin[1] ã«ã¯ã ãã€ããªã¹ããªãŒã ãæ±ãã®ã«äžåãã«ãªããããªãã°ããããŸãã ããã©ã«ãã§ã¯ãKerberos 㯠`-x` ã䜿ããªãéãã»ãã·ã§ã³ãæå·åããŠãããŸããã äžæ¹ man:ssh[1] ã§ã¯ã ããã©ã«ãã§ãã¹ãŠãæå·åããŠãããŸãã
man:ssh[1] ã¯ãšãŠãè¯ãåäœããŸããã ããã©ã«ãã§æå·éµã転éããŠããŸããŸãã ãã®ãããman:ssh[1] ãå®å
šãªã¯ãŒã¯ã¹ããŒã·ã§ã³ããã å®å
šã§ãªããã·ã³ãžã®ã¢ã¯ã»ã¹ã«äœ¿ã£ãŠãããŠãŒã¶ã«ã ã»ãã¥ãªãã£ãªã¹ã¯ãåŒãèµ·ãããŸãã éµãã®ãã®ãèŠããŠããŸãããã§ã¯ãããŸãããã man:ssh[1] 㯠login ããŠããéã転éçšããŒããäœããŸãã æ»æè
ãå®å
šã§ãªããã·ã³ã® `root` ãç Žã£ããã ãã®ããŒãã䜿ã£ãŠã ãã®æå·éµã§ããã¯ãå€ããä»ã®ãã·ã³ãžã®ã¢ã¯ã»ã¹ãåŸãŠããŸããŸãã
å¯èœãªæã¯ãã€ã§ããã¹ã¿ããã®ãã°ã€ã³ã«ã¯ Kerberos ãçµã¿åãã man:ssh[1] ã䜿çšããããšãå§ããŸãã man:ssh[1] ã¯ãKerberos å¯Ÿå¿æ©èœãšäžç·ã«ã³ã³ãã€ã«ã§ããŸãã ãã®ããã«ããããšã§ãèŠããŠããŸãå¯èœæ§ã®ãã SSH éµãžã®äŸåãæžããã äžæ¹ã§ãKerberos çµç±ã«ãããã¹ã¯ãŒããä¿è·ãããŸãã éµã¯ãå®å
šãªãã·ã³ããã®èªååãããã¿ã¹ã¯ã®ã¿ã«äœ¿çšãã¹ãã§ãã Kerberos ã¯ãã®çšéã«ã¯äžåãã§ãã ãŸããSSH ã®èšå®ã§éµè»¢éãããªãããã«ãããã ããã㯠[.filename]#authorized_keys# ã® `from=IP/DOMAIN` ã䜿çšããŠã ç¹å®ã®ãã·ã³ãããã°ã€ã³ããŠãããšãã®ã¿éµãæå¹ã«ããããšããå§ãããŸãã
=== ãªãœãŒã¹ããã³ä»ã®æ
å ±æº
* http://www.faqs.org/faqs/Kerberos-faq/general/preamble.html[The Kerberos FAQ]
* http://web.mit.edu/Kerberos/www/dialogue.html[Designing an Authentication System: a Dialog in Four Scenes]
* http://www.ietf.org/rfc/rfc1510.txt?number=1510[RFC 1510, The Kerberos Network Authentication Service (V5)]
* http://web.mit.edu/Kerberos/www/[MIT Kerberos home page]
* http://www.pdc.kth.se/heimdal/[Heimdal Kerberos home page]
[[openssl]]
== OpenSSL
FreeBSD ã«ã¯ãOpenSSL ããŒã«ããããå«ãŸããŠããŸãã OpenSSL ã¯ã éåžžã®éä¿¡å±€ã®äžäœã«ãããã©ã³ã¹ããŒãå±€ãæå·åãã å€ãã®ãããã¯ãŒã¯ã¢ããªã±ãŒã·ã§ã³ããã³ãµãŒãã¹ãšçµã¿åãããŠäœ¿çšã§ããŸãã
OpenSSL ã¯ã ã¡ãŒã«ã¯ã©ã€ã¢ã³ãã®æå·åãããèªèšŒã ã¯ã¬ãžããã«ãŒãã§ã®æ¯æããšãã£ããŠã§ãããŒã¹ã®ååŒãªã©ã§äœ¿ãããŸãã package:www/apache22[] ããã³ package:mail/claws-mail[] ãšãã£ãå€ãã® port ã§ã¯ã OpenSSL ãšãšãã«æ§ç¯ããã³ã³ãã€ã«ã«å¯Ÿå¿ããŠããŸãã
[NOTE]
====
å€ãã®å ŽåãPorts Collection ã¯ã make ã® `WITH_OPENSSL_BASE` ãæç€ºçã« "yes" ã«èšå®ãããŠããªããšã package:security/openssl[] port ã®æ§ç¯ã詊ã¿ãŸãã
====
FreeBSD ã«å«ãŸããŠãã OpenSSL ãã®ããŒãžã§ã³ã¯ãSecure Sockets Layer v2/v3 (SSLv2/SSLv3) ããã³ Transport Layer Security v1 (TLSv1) ãããã¯ãŒã¯ã»ãã¥ãªãã£ãããã³ã«ã«å¯Ÿå¿ããŠããã å€ç®çãªæå·åã©ã€ãã©ãªãšããŠäœ¿ãããšãã§ããŸãã
[NOTE]
====
OpenSSL ã¯ã IDEA ã¢ã«ãŽãªãºã ã«å¯Ÿå¿ããŠããŸããã åè¡åœã®ç¹èš±ã«ãããããã©ã«ãã§ã¯ç¡å¹ã«ãªã£ãŠããŸãã ãã䜿çšãããã®ã§ããã°ãã©ã€ã»ã³ã¹æ¡é
ãå¿
ã確èªãã ã©ã€ã»ã³ã¹æ¡é
ã«åèŽããã®ã§ããã°ã [.filename]#/etc/make.conf# ã«ãã㊠`MAKE_IDEA` 倿°ãèšå®ããŠãã ããã
====
æãäžè¬ç㪠OpenSSL ã®å©ç𿹿³ã®ã²ãšã€ã¯ã ãœãããŠã§ã¢ã¢ããªã±ãŒã·ã§ã³ã䜿ããããã«èšŒææžãæäŸããããšã§ãã ãããã®èšŒææžã«ãããäŒç€ŸãŸãã¯å人ã®å
¬ééµãã æ¹ããããªãããŸããè¡ãããŠããªãããšã確èªã§ããŸãã ããåé¡ãšãªã£ãŠããèšŒææžãã"èªèšŒå±" (CA) ã«ããæ€èšŒãããªããã°ã èŠåã衚瀺ãããŸãã CA ã¯ãlink:http://www.verisign.com[VeriSign] ã®ãããªäŒç€Ÿã§ãå人ãŸãã¯äŒç€Ÿã®å
¬ééµã®æ€èšŒãè¡ããããã«ã èšŒææžã«çœ²åãè¡ããŸãã èšŒææžãäœæããã«ã¯è²»çšããããã èšŒææžã®äœ¿çšã¯å¿
èŠæ¡ä»¶ã§ã¯ãããŸãããã èšŒææžã䜿ãããšã§ã ãŠãŒã¶ãå®å¿ãããããšãã§ããŸãã
=== èšŒææžã®äœæ
以äžã®ã³ãã³ãã«ãããèšŒææžãäœæã§ããŸãã
[source,shell]
....
# openssl req -new -nodes -out req.pem -keyout cert.pem
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]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another Name
....
"Common Name" ããã³ããçŽåŸã«è¡šç€ºãããŠããã®ã¯ã ãã¡ã€ã³åã§ãã ãã®ããã³ããã§ã¯ãæ€èšŒãããµãŒãåã®å
¥åãå¿
èŠãšãªããŸãã ãã¡ã€ã³å以å€ãå
¥åãããšã圹ã«ç«ããªãèšŒææžãäœæãããŸãã ä»ã®ãªãã·ã§ã³ãšããŠãæå¹æéãæå®ãããã å¥ã®æå·åã¢ã«ãŽãªãºã ãéžæããããšãã§ããŸãã ãªãã·ã§ã³ã®å®å
šãªãªã¹ãã¯ã man:openssl[1] ã§èª¬æãããŠããŸãã
ãã®ã³ãã³ããå®è¡ãããã£ã¬ã¯ããªã«ã¯ã 2 ã€ã®ãã¡ã€ã«ãäœæãããŠããã¯ãã§ãã 1 ã€ã¯ãèšŒææžèŠæ± [.filename]#req.pem# ã§ãã ãã®ãã¡ã€ã«ã CA ã«éããšã CA ã¯å«ãŸããŠããå
å®¹ãæ€èšŒãã æ€èšŒã«æåãããšãèšŒææžèŠæ±ã«çœ²åãè¡ãã äœæãããèšŒææžãéãè¿ããŸãã ããã²ãšã€ã[.filename]#cert.pem# ãšåŒã°ãããã¡ã€ã«ãçæãããŸãã ããã¯èšŒææžã®ç§å¯éµã§ããã ã©ã®ãããªããšããã£ãŠãä¿è·ããªããŠã¯ãªããŸããã ãããä»ã®äººã®æã«æž¡ããšãæã«å
¥ãã人ã¯ã ãŠãŒã¶ãŸãã¯ãµãŒãã«ãªãããŸãããšãã§ããŠããŸããŸãã
CA ã®çœ²åãå¿
èŠãªãå Žåã«ã¯ã èªå·±çœ²åèšŒææžãäœæã§ããŸãã æåã« RSA ã®éµãçæããŠãã ããã
[source,shell]
....
# openssl dsaparam -rand -genkey -out myRSA.key 1024
....
次ã«ãCA éµãçæããŠãã ããã
[source,shell]
....
# openssl gendsa -des3 -out myca.key myRSA.key
....
ãã®éµã䜿ã£ãŠèšŒææžãäœæããŠãã ããã
[source,shell]
....
# openssl req -new -x509 -days 365 -key myca.key -out new.crt
....
æ°ãã 2 ã€ã®ãã¡ã€ã«ããã®ãã£ã¬ã¯ããªã«äœæãããŸãã ãã©ã€ããŒãéµ [.filename]#myca.key# ããã³ èšŒææž [.filename]#new.crt# ã§ãã ãããã®ãã¡ã€ã«ãã奜ãŸãã㯠[.filename]#/etc# 以äžã§ã `root` ã®ã¿ãèªãããšã®ã§ãããã£ã¬ã¯ããªã«çœ®ãå¿
èŠããããŸãã èš±å¯å±æ§ã¯ 0700 ãé©åã§ãã èš±å¯å±æ§ã¯ man:chmod[1] ã䜿ã£ãŠèšå®ã§ããŸãã
=== èšŒææžã®äœ¿çš
èšŒææžã®äžã€ã®å©ç𿹿³ã¯ãSendmailMTA ãžã®æ¥ç¶ãæå·åããããšã§ãã ããã«ããã ããŒã«ã«ã® MTA çµç±ã§ã¡ãŒã«ãéä¿¡ãããŠãŒã¶ãã ããã¹ãèªèšŒã䜿çšããªããŠãããããã«ãªããŸãã
[NOTE]
====
ããã€ãã® MUA ã¯ã ãŠãŒã¶ãèšŒææžãããŒã«ã«ã«ã€ã³ã¹ããŒã«ããŠããªããšã ãšã©ãŒãåºåããŸãã èšŒææžã®ã€ã³ã¹ããŒã«ã«é¢ããè©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ã ãœãããŠã§ã¢ã«ä»éã®ææžãåç
§ããŠãã ããã
====
Sendmail ãèšå®ããã«ã¯ã以äžã®è¡ãããŒã«ã«ã® [.filename]#.mc# ãã¡ã€ã«ã«å«ããŠãã ããã
[.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
....
ãã®äŸã§ã¯ã ããŒã«ã«ã§èšŒææžããã³éµãã¡ã€ã«ã¯ãããŒã«ã«ã® [.filename]#/etc/certs/# ã«çœ®ãããŠããŸãã ãã¡ã€ã«ã®ç·šéãä¿åãçµãã£ããã [.filename]#/etc/mail# ã«ãã㊠`make install` ãšå
¥åããããšã§ãããŒã«ã«ã® [.filename]#.cf# ãã¡ã€ã«ãåæ§ç¯ããå¿
èŠããããŸãã ãã®åŸã`make restart` ãšå
¥åããŠãSendmail ããŒã¢ã³ãåèµ·åããŠãã ããã
ãã¹ãŠãããŸããã£ãŠããã°ã [.filename]#/var/log/maillog# ã«ã¯ãšã©ãŒã¡ãã»ãŒãžã¯åºåãããã Sendmail ãããã»ã¹ã®äžèЧã«è¡šç€ºãããŸãã
以äžã¯ç°¡åãªè©Šéšã®äŸã§ãman:telnet[1] ã䜿ã£ãŠã ã¡ãŒã«ãµãŒãã«æ¥ç¶ããŠããŸãã
[source,shell]
....
# telnet example.com 25
Trying 192.0.34.166...
Connected to example.com
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
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
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.
....
åºåã« "STARTTLS" è¡ã衚瀺ãããã°ã ãã¹ãŠãé©åã«æ©èœããŠããŸãã
[[ipsec]]
== VPN over IPsec
=== IPsec ãçè§£ãã
ãã®ç¯ã§ã¯ãIPsec ãèšå®ããéçšã説æããŸãã IPsec ãèšå®ããããã«ã¯ã ã«ã¹ã¿ã ã«ãŒãã«ã®æ§ç¯æ¹æ³ãããç¥ã£ãŠããå¿
èŠããããŸã (crossref:kernelconfig[kernelconfig,FreeBSD ã«ãŒãã«ã®ã³ã³ãã£ã°ã¬ãŒã·ã§ã³] ãã芧ãã ãã)ã
_IPsec_ ã¯ãã€ã³ã¿ãŒããããããã³ã« (IP) ã¬ã€ã€ã®ãããã«ãããããã³ã«ã§ãã äºã€ãããã¯ãã以äžã®ãã¹ãéã§å®å
šã«éä¿¡ããããšãå¯èœã«ããŸãã FreeBSD ã® IPsec "ãããã¯ãŒã¯ã¹ã¿ãã¯" ã¯ã IPv4 ããã³ IPv6 ã®äž¡æ¹ã«å¯Ÿå¿ããŠãã http://www.kame.net/[KAME] å®è£
ãããŒã¹ãšããŠããŸãã
IPsec ã¯äºã€ã®ãµããããã³ã«ããæ§æãããŸãã
* _Encapsulated Security Payload (ESP)_: ãã®ãããã³ã«ã¯ãBlowfish, 3DES ãšãã£ã察称æå·ã¢ã«ãŽãªãºã ã䜿ã£ãŠããŒã¿ãæå·åããããšã§ã ãµãŒãããŒãã£ã®ã€ã³ã¿ãã§ãŒã¹ãã IP ãã±ããããŒã¿ãä¿è·ããŸãã
* _Authentication Header AH(AH)_: ãã®ãããã³ã«ã¯ãæå·ãã§ãã¯ãµã ãèšç®ããIP ãã±ããã®ããããã£ãŒã«ããå®å
šãªããã·ã¥é¢æ°ã§ããã·ã¥åããããšã§ã IP ãã±ãããããããµãŒãããŒãã£ã®ã€ã³ã¿ãã§ãŒã¹ããªãããŸãããå®ããŸãã ããã·ã¥ãå«ã远å ã®ãããã远å ããã ãã±ããæ
å ±ã®æ€èšŒãå¯èœã«ãªããŸãã
ESP ããã³ AH ã¯ã䜿çšããç°å¢ã«åãããŠã äžç·ã«äœ¿ãããšãå¥ã
ã«äœ¿ãããšãã§ããŸãã
IPsec ã¯ãçŽæ¥äºã€ã®ãã¹ãéã®ãã©ãã£ãã¯ãæå·åãã _Transport Mode_ãããã㯠"virtual tunnels" ãæ§ç¯ãã _Tunnel Mode_ ã®ã©ã¡ãã§ãçšããããšãã§ããŸãã åŸè
ã®ã¢ãŒãã¯ããäžè¬çã«ã¯ã _Virtual Private Network (VPN)_ ãšããŠç¥ãããŠããŸãã FreeBSD ã§ã® IPsec ãµãã·ã¹ãã ã«é¢ããããè©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ã man:ipsec[4] ãåç
§ããŠãã ããã
ã«ãŒãã«ã« IPsec ã®ãµããŒãã远å ããã«ã¯ã ã«ã¹ã¿ã ã«ãŒãã«ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãã¡ã€ã«ã«ä»¥äžã®ãªãã·ã§ã³ã远å ããŠãã ããã
[source,shell]
....
options IPSEC #IP security
device crypto
....
IPsec ã®ãããã°ãµããŒããå¿
èŠã§ããã°ã 以äžã®ã«ãŒãã«ãªãã·ã§ã³ã远å ããŠãã ããã
[source,shell]
....
options IPSEC_DEBUG #debug for IP security
....
=== å®¶åºãšäŒç€Ÿéã® VPN
VPN ã®æ§æã«ã€ããŠã®æšæºã¯ãããŸããã VPN ã¯ãæ°å€ãã®æè¡ãšå
±ã«å®è£
ããããšãå¯èœã§ãã ãã®åæè¡ã«ã¯ãããèªèº«ã®é·æãšçæããããŸãã ãã®ç¯ã§ã¯ã以äžã®ã·ããªãªã«å¯Ÿã㊠VPN ãå®è£
ããæŠç¥ã«ã€ããŠèª¬æããŸãã
* å°ãªããšã 2 ã€ã®ãµã€ããããã ããããã®ãµã€ãã¯å
éšã§ IP ã䜿ã£ãŠããŸãã
* 2 ã€ã®ãµã€ãã¯ãFreeBSD ã§éçšãããŠããã²ãŒããŠã§ã€ãéããŠã ã€ã³ã¿ãŒãããã«æ¥ç¶ããŠããŸãã
* ããããã®ãããã¯ãŒã¯ã®ã²ãŒããŠã§ã€ã¯ã å°ãªããšãäžã€ã®ãããªã㯠IP ã¢ãã¬ã¹ãæã£ãŠããŸãã
* 2 ã€ã®ãããã¯ãŒã¯ã®å
éšã¢ãã¬ã¹ã¯ã ãããªãã¯ã§ããã©ã€ããŒã IP ã¢ãã¬ã¹ã§ãæ§ããŸããã ããããªãããã¢ãã¬ã¹ç©ºéã¯è¡çªããŠã¯ãããŸããã ããšãã°ãäž¡æ¹ã®ãããã¯ãŒã¯ã `192.168.1.x` ã䜿ã£ãŠã¯ãããŸããã
==== FreeBSD äžã§ IPsec ãèšå®ããã
æåã« Ports Collection ãã package:security/ipsec-tools[] ãã€ã³ã¹ããŒã«ããŠãã ããã ãã®ãœãããŠã§ã¢ã¯ã èšå®ããµããŒãããæ°å€ãã®ã¢ããªã±ãŒã·ã§ã³ãæäŸããŸãã
次ã«ããã±ããããã³ããªã³ã°ãã äž¡æ¹ã®ãããã¯ãŒã¯ãé©åã«éä¿¡ããããã«ã 2 ã€ã® man:gif[4] ç䌌ããã€ã¹ãäœæããŸãã `root` æš©éã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã ãã ããå®è¡ããéã«ã¯ã以äžã®ã³ãã³ãã®äžã® _internal_ ããã³ _external_ ãã 2 ã€ã®ã²ãŒããŠã§ã€ã®å
éšããã³å€éšã€ã³ã¿ãã§ãŒã¹ã®å®éã® IP ã¢ãã¬ã¹ã«çœ®ãæããŠãã ããã
[source,shell]
....
# ifconfig gif0 create
....
[source,shell]
....
# ifconfig gif0 internal1 internal2
....
[source,shell]
....
# ifconfig gif0 tunnel external1 external2
....
ãã®äŸã§ã¯ãäŒç€Ÿã® LAN ã®å€éš IP ã¢ãã¬ã¹ã `172.16.5.4`ã å
éš IP ã¢ãã¬ã¹ã `10.246.38.1` ãšããŸãããŸããå®¶åº LAN ã®å€éš IP ã¢ãã¬ã¹ã `192.168.1.12`ã å
éšã®ãã©ã€ããŒã IP ã¢ãã¬ã¹ã `10.0.0.5` ãšããŸãã
ãã®èª¬æã§åããã«ããå Žåã¯ã以äžã® man:ifconfig[8] ã³ãã³ãã®åºåäŸãã芧ãã ããã
[.programlisting]
....
Gateway 1:
gif0: flags=8051 mtu 1280
tunnel inet 172.16.5.4 --> 192.168.1.12
inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6
inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00
Gateway 2:
gif0: flags=8051 mtu 1280
tunnel inet 192.168.1.12 --> 172.16.5.4
inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00
inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4
....
èšå®ãå®äºããããäž¡æ¹ã®å
éš IP ã¢ãã¬ã¹ã¯ãman:ping[8] ã§å°éã§ããããã«ãªã£ãŠããã¯ãã§ãã
[.programlisting]
....
priv-net# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5): 56 data bytes
64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms
--- 10.0.0.5 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms
corp-net# ping 10.246.38.1
PING 10.246.38.1 (10.246.38.1): 56 data bytes
64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms
64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms
64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms
64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms
64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms
--- 10.246.38.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms
....
äºæ³éãããã©ã€ããŒãã¢ãã¬ã¹ã䜿ã£ãŠã äž¡æ¹ã®ãããã¯ãŒã¯ãã ICMP ãã±ãããéåä¿¡ã§ããŸãã æ¬¡ã«ãã©ã¡ãã®ãããã¯ãŒã¯ãããã¡ãã»ãŒãžãéä¿¡ã§ããããã«ã ãã±ããã®ã«ãŒãã£ã³ã°æ
å ±ãäž¡æ¹ã®ã²ãŒããŠã§ã€ã«èšå®ããå¿
èŠããããŸãã ããã¯ä»¥äžã®ã³ãã³ãã§èšå®ã§ããŸãã
[source,shell]
....
# corp-net# route add 10.0.0.0 10.0.0.5 255.255.255.0
....
[source,shell]
....
# corp-net# route add net 10.0.0.0: gateway 10.0.0.5
....
[source,shell]
....
# priv-net# route add 10.246.38.0 10.246.38.1 255.255.255.0
....
[source,shell]
....
# priv-net# route add host 10.246.38.0: gateway 10.246.38.1
....
ããã§ããããã¯ãŒã¯å
ã®ã³ã³ãã¥ãŒã¿ã¯ã ã²ãŒããŠã§ã€ããã³ã²ãŒããŠã§ã€ã®å¥¥ã®ã³ã³ãã¥ãŒã¿ããå°éå¯èœãšãªã£ãŠããŸãã ããäžåºŠ man:ping[8] ã§ç¢ºèªããŠãã ããã
[.programlisting]
....
corp-net# ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8): 56 data bytes
64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms
64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms
64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms
64 bytes from 10.0.0.8: icmp_seq=3 ttl=63 time=22.241 ms
64 bytes from 10.0.0.8: icmp_seq=4 ttl=63 time=174.705 ms
--- 10.0.0.8 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms
priv-net# ping 10.246.38.107
PING 10.246.38.1 (10.246.38.107): 56 data bytes
64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms
64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms
64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms
64 bytes from 10.246.38.107: icmp_seq=3 ttl=64 time=21.145 ms
64 bytes from 10.246.38.107: icmp_seq=4 ttl=64 time=36.708 ms
--- 10.246.38.107 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 ms
....
ãã³ããªã³ã°ã®èšå®ã¯ä»¥äžã®ããã«ç°¡åã§ããã ãªã³ã¯ãå®å
šã«ããã«ã¯ãããå°ãæãäžããèšå®ãå¿
èŠãšãªããŸãã 以äžã®èšå®ã§ã¯ãäºåå
±æ (PSK) RSA éµã䜿ããŸãã IP ã¢ãã¬ã¹ãé€ãã°ãäž¡æ¹ã®ã²ãŒããŠã§ã€ã® [.filename]#/usr/local/etc/racoon/racoon.conf# ã¯åãã§ã以äžã®ããã«ãªããŸãã
[.programlisting]
....
path pre_shared_key "/usr/local/etc/racoon/psk.txt"; #location of pre-shared key file
log debug; #log verbosity setting: set to 'notify' when testing and debugging is complete
padding # options are not to be changed
{
maximum_length 20;
randomize off;
strict_check off;
exclusive_tail off;
}
timer # timing options. change as needed
{
counter 5;
interval 20 sec;
persend 1;
# natt_keepalive 15 sec;
phase1 30 sec;
phase2 15 sec;
}
listen # address [port] that racoon will listen on
{
isakmp 172.16.5.4 [500];
isakmp_natt 172.16.5.4 [4500];
}
remote 192.168.1.12 [500]
{
exchange_mode main,aggressive;
doi ipsec_doi;
situation identity_only;
my_identifier address 172.16.5.4;
peers_identifier address 192.168.1.12;
lifetime time 8 hour;
passive off;
proposal_check obey;
# nat_traversal off;
generate_policy off;
proposal {
encryption_algorithm blowfish;
hash_algorithm md5;
authentication_method pre_shared_key;
lifetime time 30 sec;
dh_group 1;
}
}
sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any) # address $network/$netmask $type address $network/$netmask $type ( $type being any or esp)
{ # $network must be the two internal networks you are joining.
pfs_group 1;
lifetime time 36000 sec;
encryption_algorithm blowfish,3des,des;
authentication_algorithm hmac_md5,hmac_sha1;
compression_algorithm deflate;
}
....
å©çšå¯èœãªãªãã·ã§ã³ã®èª¬æã«ã€ããŠã¯ã racoon ã®ããã¥ã¢ã«ããŒãžãåç
§ããŠãã ããã
FreeBSD ããã³ racoon ããã¹ãéã®ãããã¯ãŒã¯ãã©ãã£ãã¯ãæå·åã 埩å·åã§ããããã«ããã«ã¯ã Security Policy Database (SPD) ã®èšå®ãå¿
èŠã§ãã
ããã¯ãäŒç€Ÿã®ã²ãŒããŠã§ã€äžã§ã 以äžã®ãããªã·ã§ã«ã¹ã¯ãªããã§èšå®ã§ããŸãã ãã®ãã¡ã€ã«ãã·ã¹ãã ã®åæåäžã«äœ¿ãããããã«ããã«ã¯ã [.filename]#/usr/local/etc/racoon/setkey.conf# ã«ä¿åããå¿
èŠããããŸãã
[.programlisting]
....
flush;
spdflush;
# To the home network
spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use;
spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;
....
èšå®ãã¡ã€ã«ãé©åã«çœ®ããšã以äžã®ã³ãã³ãã«ããã äž¡æ¹ã®ã²ãŒããŠã§ã€äžã§ racoon ãèµ·åã§ããŸãã
[source,shell]
....
# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log
....
åºåã¯ä»¥äžã®ããã«ãªãã§ãããã
[.programlisting]
....
corp-net# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf
Foreground mode.
2006-01-30 01:35:47: INFO: begin Identity Protection mode.
2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon
2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon
n2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a
2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2)
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=47784998(0x2d92426)
2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b)
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)
....
ãã³ããªã³ã°ãé©åã«è¡ãããŠãããã©ããã確èªããããã å¥ã®ã³ã³ãœãŒã«äžã§ man:tcpdump[1] ã䜿ãã 以äžã®ãããªã³ãã³ãã§ãããã¯ãŒã¯ã®éä¿¡ã確èªããŠãã ããã ãã ãã以äžã®äŸã® `em0` ã®éšåã¯ã å¿
èŠã«å¿ããŠäœ¿çšããŠãããããã¯ãŒã¯ã€ã³ã¿ãã§ãŒã¹ã«çœ®ãæããŠãã ããã
[source,shell]
....
# tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12
....
以äžã®ãããªããŒã¿ãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã ããã衚瀺ãããªãå Žåã¯ãèšå®ã«äœãåé¡ãããã®ã§ã 衚瀺ãããããŒã¿ã䜿ã£ãŠãããã°ããå¿
èŠããããŸãã
[.programlisting]
....
01:47:32.021683 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xa)
01:47:33.022442 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xb)
01:47:34.024218 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xc)
....
ããã§ 2 ã€ã®ãããã¯ãŒã¯ã¯ã 1 ã€ã®ãããã¯ãŒã¯ã®ããã«å©çšã§ããŸãã å€ãã®å Žåã äž¡æ¹ã®ãããã¯ãŒã¯ã¯ãã¡ã€ã¢ãŠã©ãŒã«ã«ããä¿è·ãããŠããŸãã äž¡æ¹ãæµããéä¿¡ãèš±å¯ããã«ã¯ã ãã±ãããäž¡æ¹ãè¡ãæ¥ã§ããããã«ã«ãŒã«ã远å ããå¿
èŠããããŸãã man:ipfw[8] ã䜿ã£ããã¡ã€ã¢ãŠã©ãŒã«ã®å Žåã¯ã ãã¡ã€ã¢ãŠã©ãŒã«ã®èšå®ãã¡ã€ã«ã«ã以äžã®è¡ã远å ããŠãã ããã
[.programlisting]
....
ipfw add 00201 allow log esp from any to any
ipfw add 00202 allow log ah from any to any
ipfw add 00203 allow log ipencap from any to any
ipfw add 00204 allow log udp from any 500 to any
....
[NOTE]
====
ã«ãŒã«çªå·ã¯ã çŸåšã®ãã¹ãã®èšå®ã«ãã£ãŠã¯å€æŽããå¿
èŠãããã§ãããã
====
man:pf[4] ãŸã㯠man:ipf[8] ã䜿çšããŠããã·ã¹ãã ã§ã¯ã 以äžã®ã«ãŒã«ã§äžæãããã§ãããã
[.programlisting]
....
pass in quick proto esp from any to any
pass in quick proto ah from any to any
pass in quick proto ipencap from any to any
pass in quick proto udp from any port = 500 to any port = 500
pass in quick on gif0 from any to any
pass out quick proto esp from any to any
pass out quick proto ah from any to any
pass out quick proto ipencap from any to any
pass out quick proto udp from any port = 500 to any port = 500
pass out quick on gif0 from any to any
....
æåŸã«ãã·ã¹ãã ã®åæåäžã« VPN ãèµ·åããããã«ã以äžã®è¡ã [.filename]#/etc/rc.conf# ã«è¿œå ããŠãã ããã
[.programlisting]
....
ipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/setkey.conf" # allows setting up spd policies on boot
racoon_enable="yes"
....
[[openssh]]
== OpenSSH
OpenSSH ã¯ãªã¢ãŒããã·ã³ãžã®ã»ãã¥ã¢ãªã¢ã¯ã»ã¹ã«äœ¿ããããããã¯ãŒã¯æ¥ç¶ããŒã«ã®éåã§ãã ãŸããTCP/IP æ¥ç¶ã OpenSSH æ¥ç¶çµç±ã§ã»ãã¥ã¢ã«ãã³ãã«/ãã©ã¯ãŒãããããšãã§ããŸãã OpenSSH ã¯ãã¹ãŠã®ãã©ãã£ãã¯ãæå·åãã çèŽãæ¥ç¶ã®ä¹ã£åãçã®ãããã¯ãŒã¯ã¬ãã«ã®æ»æãäºå®äžç¡å¹åããŸãã
OpenSSH 㯠OpenBSD ãããžã§ã¯ãã«ãã£ãŠç¶æç®¡çãããŠããã FreeBSD ã«ã¯ããã©ã«ãã§ã€ã³ã¹ããŒã«ãããŠããŸãã OpenSSH ã¯ã SSH ããŒãžã§ã³ 1 ãš 2 ã®äž¡æ¹ã«äºææ§ããããŸãã
=== OpenSSH ã䜿ãããšã®å©ç¹
ããŒã¿ããããã¯ãŒã¯ãå¹³æã§æµããŠããŸããšã ãããã¯ãŒã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãã®éã®ã©ããã§çèŽããããšã§ã ããªãã®ãŠãŒã¶/ãã¹ã¯ãŒãæ
å ±ãã»ã·ã§ã³äžãæµããããŒã¿ãçãããšãå¯èœã§ãã OpenSSH ã¯ããããäºé²ããçºã«ããŸããŸãªèªèšŒãšæå·åã®æ¹æ³ãæäŸããŸãã
=== SSH ãµãŒããæå¹ã«ãã
man:sshd[8] ãæå¹ã«ãªã£ãŠãããã©ããã確èªããã«ã¯ã [.filename]#/etc/rc.conf# ã®ä»¥äžã®è¡ã確èªããŠãã ããã
[.programlisting]
....
sshd_enable="YES"
....
ãã®èšå®ã«ãããæ¬¡ã®ã·ã¹ãã ã®åæåæã« OpenSSH ã®ããŒã¢ã³ããã°ã©ã ã§ãã man:sshd[8] ãèµ·åããŸãã ããã㯠man:service[8] ã䜿ã£ãŠãããã« OpenSSH ãèµ·åããããšãã§ããŸãã
[source,shell]
....
# service sshd start
....
=== SSH ã¯ã©ã€ã¢ã³ã
man:ssh[1] ã䜿ã£ãŠã man:sshd[8] ãåããŠããã·ã¹ãã ã«æ¥ç¶ããã«ã¯ã ãã°ã€ã³ããããŠãŒã¶åãšãã¹ããæå®ããŠãã ããã
[source,shell]
....
# ssh [email protected]
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
[email protected]'s password: *******
....
SSH ã¯ã¯ã©ã€ã¢ã³ããæ¥ç¶ããæã ãµãŒãã®ä¿¡é Œæ§ã®æ€èšŒã®ããã«éµæçŽã·ã¹ãã (key fingerprint system) ãå©çšããŸãã åããŠã®æ¥ç¶ã®éã«ããŠãŒã¶ã¯ `yes` ãšå
¥åããããšãèŠæ±ãããŸãã ãã以éã® login ã§ã¯ä¿åãããŠãã鵿çŽãç
§åããããšã§æ€èšŒãè¡ããã man:ssh[1] ã¯ã©ã€ã¢ã³ãã¯ä¿åãããŠãã鵿çŽã login ããããšããéã«éãããŠãããã®ãšç°ãªã£ãŠããå Žåã«ã¯èŠåã衚瀺ããŸãã æçŽã¯ [.filename]#~/.ssh/known_hosts# ã«ä¿åãããŸãã
ããã©ã«ãã§ã¯ãman:sshd[8] ã®æè¿ã®çã§ã¯ SSH v2 ã®æ¥ç¶ã®ã¿ãåãä»ããããã«èšå®ãããŠããŸãã ã¯ã©ã€ã¢ã³ãã¯å¯èœã§ããã°ããŒãžã§ã³ 2 ãçšãã ããŒãžã§ã³ 1 ã«ãã©ãŒã«ããã¯ããŸãã ã¯ã©ã€ã¢ã³ãã¯ããããã³ã« v1 ãš v2 ã«ã€ããŠãããããåŒæ° `-1` ãŸã㯠`-2` ãæž¡ãããšã§ãå©çšãããããã³ã«ãæå®ã§ããŸãã ã¯ã©ã€ã¢ã³ãã«ãããããŒãžã§ã³ 1 ãžã®äºææ§ã¯ã å€ãããŒãžã§ã³ãžã®äžäœäºæã®ããã«ç¶æãããŠããŸãã
=== Secure copy
ããŒã«ã«ã®ãã¡ã€ã«ããªã¢ãŒããã·ã³ãžã ãããã¯ãªã¢ãŒããã·ã³ã®ãã¡ã€ã«ãããŒã«ã«ã«å®å
šãªæ¹æ³ã§ã³ããŒããã«ã¯ã man:scp[1] ã䜿çšããŠãã ããã
[source,shell]
....
# scp [email protected]:/COPYRIGHT COPYRIGHT
[email protected]'s password: *******
COPYRIGHT 100% |*****************************| 4735
00:00
#
....
ååã®äŸã§ãã®ãã¹ãã®æçŽããã§ã«ä¿åãããŠããã° ãã® man:scp[1] ã䜿ãæã«æ€èšŒãè¡ãªãããŸãã
man:scp[1] ã«æž¡ãããåŒæ°ã¯ãman:cp[1] ã®ãã®ãšäŒŒãŠãããã³ããŒãããã¡ã€ã« (1 ã€ãŸãã¯è€æ°) ã 1 ã€ãã®åŒæ°ã«ãªããã³ããŒå
ã 2 ã€ãã®åŒæ°ã«ãªããŸãã ãã¡ã€ã«ã¯ãããã¯ãŒã¯è¶ãã« SSH æ¥ç¶ãéããŠéãããã®ã§ã åŒæ°ã«æå®ãããã¡ã€ã«ã« `user@host:<path_to_remote_file>` ãšãã圢åŒããšããã®ããããŸãã
=== èšå®
ã·ã¹ãã å
šäœã®èšå®ãã¡ã€ã«ã¯ãOpenSSH ããŒã¢ã³ãã¯ã©ã€ã¢ã³ãã®äž¡æ¹ãšã [.filename]#/etc/ssh# ã«ãããŸãã
[.filename]#ssh_config# ã¯ã¯ã©ã€ã¢ã³ãã®åäœèšå®ã [.filename]#sshd_config# ã¯ããŒã¢ã³ã®åäœèšå®ãè¡ãªããŸãã ããããã®ãã¡ã€ã«æ¯ã«ããã¥ã¢ã«ããŒãžãçšæãããŠããã å©çšå¯èœãªèšå®ãªãã·ã§ã³ã«ã€ããŠèª¬æãããŠããŸãã
[[security-ssh-keygen]]
=== man:ssh-keygen[1]
ãã¹ã¯ãŒãã®ä»£ããã« man:ssh-keygen[1] ã䜿ã£ãŠãŠãŒã¶ã®èªèšŒçšã® DSA ãŸã㯠RSA æå·éµãäœãããšãã§ããŸãã
[source,shell]
....
% ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 [email protected]
....
man:ssh-keygen[1] ã¯èªèšŒã«äœ¿ãçºã®å
¬ééµãšç§å¯éµã®ãã¢ãäœããŸãã DSA ãŸã㯠RSA éµã«å¿ããŠã ç§å¯éµã¯ [.filename]#~/.ssh/id_dsa# ãŸã㯠[.filename]#~/.ssh/id_rsa# ã«ä¿åããã å
¬ééµã¯ [.filename]#~/.ssh/id_dsa.pub# ãŸã㯠[.filename]#~/.ssh/id_rsa.pub# ã«ããããä¿åãããŸãã å
¬ééµã¯ã»ããã¢ããã®ããã«ã DSA ãŸã㯠RSA ã®ã©ã¡ãã䜿ãå Žåã«ãã ãªã¢ãŒããã·ã³ã® [.filename]#~/.ssh/authorized_keys# ã«å«ãŸããŠãªããã°ãªããŸããã
ãã®èšå®ã«ããããã¹ã¯ãŒãã«ä»£ããã SSH éµã䜿ã£ãŠãªã¢ãŒããã·ã³ã«æ¥ç¶ã§ããããã«ãªããŸãã
[WARNING]
====
å€ãã®ãŠãŒã¶ã¯ãéµãèšèšäžå®å
šãšä¿¡ãã ãã¹ãã¬ãŒãºãªãã«éµãå©çšããŠããŸãã ãã®ãããªäœ¿ç𿹿³ã¯ _å±éº_ ã§ãã 管çè
ãéµã«ãã¹ãã¬ãŒãºãèšå®ãããŠãããã確èªããæ¹æ³ã¯ã æåã§éµã調ã¹ãæ¹æ³ã§ãã ç§å¯éµã®ãã¡ã€ã«ã« `ENCRYPTED` ãšããåèªãå«ãŸããŠããå Žåã«ã¯ã éµã®ææè
ã¯ããã¹ãã¬ãŒãºã䜿çšããŠããŸãã 匱ããã¹ãã¬ãŒãºã䜿ãããŠããéã å°ãªããšãã·ã¹ãã ãå±éºã«ãããããŠãããšãã«ã¯ã ä»ã®ãµã€ããžã®ã¢ã¯ã»ã¹ã«ã¯ã ããã¬ãã«ã§ã®ãã¹ã¯ãŒã顿šãå¿
èŠãšãªããŸãã ããã«ãå
¬ééµãã¡ã€ã«ã« `from` ãå«ããããšã§ã ãšã³ããŠãŒã¶ãããå®å
šã«ã§ããŸãã ããšãã°ã `ssh-rsa` ãŸã㯠`rsa-dsa` ã®åã«ã `from="192.168.10.5` ãå ããããšã§ã ãã® IP ãæã€ãã¹ãããã®ãŠãŒã¶ã®ã¿ãã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
====
man:ssh-keygen[1] ã§ãã¹ãã¬ãŒãºã䜿ã£ãŠããå Žåã¯ã ç§å¯éµã䜿ãããã«ãŠãŒã¶ã¯æ¯åãã¹ãã¬ãŒãºãå
¥åããå¿
èŠããããŸãã é·ããã¹ãã¬ãŒãºãæ¯åå
¥åããªããŠã¯ãªããªãè² æ
ã¯ã man:ssh-agent[1] ã䜿ããšè»œæžã§ããŸãã ããã«ã€ããŠã¯ã <<security-ssh-agent>> ã§èª¬æãããŠããŸãã
[WARNING]
====
OpenSSH ã®ããŒãžã§ã³ã«ãã£ãŠã ãªãã·ã§ã³ããã¡ã€ã«ã«éããåºãŠããããšããããŸãã man:ssh-keygen[1] ãåç
§ããŠã åé¡ãèµ·ããããšãé¿ããŠãã ããã
====
[[security-ssh-agent]]
=== SSH Agent ã«ããéµã®ãã£ãã·ã¥
ãã¹ãã¬ãŒãºãæ¯åå
¥åããããšãªãã«ã SSH éµãå©çšã§ããããã«ã¡ã¢ãªã«èªã¿èŸŒãã«ã¯ã man:ssh-agent[1] ããã³ man:ssh-add[1] ã䜿çšããŠãã ããã
man:ssh-agent[1] ã¯ã èªã¿èŸŒãŸããç§å¯éµã«ããèªèšŒãåãæ±ããŸãã man:ssh-agent[1] ã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ã®èµ·åã«çšããããå¿
èŠããããŸãã åºæ¬çãªã¬ãã«ã§ã¯ã·ã§ã«ã ãŸãã¯ãŠã£ã³ããŠãããŒãžã£ãèµ·åããŸãã
ã·ã§ã«äžã§ man:ssh-agent[1] ã䜿ãã«ã¯ã åŒæ°ãšããŠã·ã§ã«ãèµ·åããŠãã ããã æ¬¡ã«ãman:ssh-add[1] ãå®è¡ãã ç§å¯éµã®ãã¹ãã¬ãŒãºãå
¥åããããšã«ããã éµã远å ããŠãã ããã äžåºŠãã®éçšãçµããŠããŸãã°ããŠãŒã¶ã¯ã 察å¿ããå
¬ééµã眮ãããŠãããã¹ãã« man:ssh[1] ã§ãã°ã€ã³ã§ããããã«ãªããŸãã 以äžã¯ãã®äŸã§ãã
[source,shell]
....
% ssh-agent csh
% ssh-add
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
%
....
Xorg äžã§ man:ssh-agent[1] ã䜿ãã«ã¯ã man:ssh-agent[1] ãžã®åŒã³åºãã [.filename]#~/.xinitrc# ã«çœ®ãããŠããå¿
èŠããããŸãã ããã«ãããXorg äžã§èµ·åããããã¹ãŠã®ããã°ã©ã ã«ãããŠã man:ssh-agent[1] ãµãŒãã¹ãæäŸãããããã«ãªããŸãã [.filename]#~/.xinitrc# ã®äŸã¯ä»¥äžãšãªããŸãã
[.programlisting]
....
exec ssh-agent startxfce4
....
ããã§ãXorg ãéå§ãããšãã«ã¯ãã€ã§ã man:ssh-agent[1] ãèµ·åããã ãã®ããã°ã©ã ãã XFCE ãèµ·åãããŸãã Xorg ãåèµ·åããåŸã¯æå¹ã«ãªããŸãã®ã§ã man:ssh-add[1] ãå®è¡ããŠã ãã¹ãŠã® SSH éµãèªã¿èŸŒãŸããŠãã ããã
[[security-ssh-tunneling]]
=== SSH ãã³ããªã³ã°
OpenSSH ã¯æå·åãããã»ãã·ã§ã³ã®äžã«ä»ã®ãããã³ã«ãã«ãã»ã«åãããã³ãã«ãäœãããšãã§ããŸãã
以äžã®ã³ãã³ã㯠man:ssh[1] ã§ man:telnet[1] çšã®ãã³ãã«ãäœæããŸãã
[source,shell]
....
% ssh -2 -N -f -L 5023:localhost:23 [email protected]
%
....
ãã®äŸã§ã¯ã以äžã®ãªãã·ã§ã³ã䜿ã£ãŠããŸãã
`-2`::
ãµãŒããžã®æ¥ç¶ã« man:ssh[1] ããŒãžã§ã³ 2 ã䜿ãããšãæç€ºããŸãã
`-N`::
ã¯ãã³ãã«ã ãã§ã³ãã³ãã¯ãªãããšã瀺ããŸãã çç¥ããããš man:ssh[1] ã¯éåžžã®ã»ãã·ã§ã³ãéå§ããŸãã
`-f`::
man:ssh[1] ã«ããã¯ã°ã©ãŠã³ãå®è¡ã匷å¶ããŸãã
`-L`::
ããŒã«ã«ãã³ãã«ã _localport:remotehost:remoteport_ ãšãã圢åŒã§æå®ããŸãã
`[email protected]`::
æå®ãããªã¢ãŒã SSH ãµãŒããžãã°ã€ã³ã«çšãããã°ã€ã³åã
SSH ã®ãã³ãã«ã¯ `localhost` ã®æå®ãããããŒãã« listen ãããœã±ãããäœãããšã§å®çŸãããŠããŸãã SSH ã¯ããŒã«ã«ã®ãã¹ã/ããŒãã§åããæ¥ç¶ãã¹ãŠã SSH æ¥ç¶çµç±ã§æå®ããããªã¢ãŒããã¹ãã®ããŒããžè»¢éããŸãã
ãã®äŸã§ã¯ã`localhost` ã®ããŒã _5023_ ããªã¢ãŒããã·ã³ã® `localhost` ã®ããŒã _23_ ã«è»¢éãããããã«ãªã£ãŠããŸãã _23_ 㯠man:telnet[1] ã§çšããããã®ã§ããã㯠SSH ãã³ãã«ãéãæå·åããã man.telnet.1; ã»ãã·ã§ã³ãäœããŸãã
ãã®ããã«ã㊠SMTP ã POP3 ããã³ FTP ãšãã£ãã»ãã¥ã¢ã§ã¯ãªã TCP ãããã³ã«ãã«ãã»ã«åã§ããŸãã
.man:ssh[1] ãçšãã SMTP çšã®å®å
šãªãã³ãã«ã®äœæ
[example]
====
[source,shell]
....
% ssh -2 -N -f -L 5025:localhost:25 [email protected]
[email protected]'s password: *****
% telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP
....
man:ssh-keygen[1] ãšå¥ã®ãŠãŒã¶ã¢ã«ãŠã³ããçµã¿åãããŠäœ¿ãããšã§ããééç㪠SSH ã®ãã³ãã«ç°å¢ãäœãããšãã§ããŸãã ãã¹ã¯ãŒããå
¥åãããšããã§æå·éµã䜿ãã ãã³ãã«ã¯å¥ã®ãŠãŒã¶æš©éã§å®è¡ããããšãå¯èœã§ãã
====
==== å®çšç㪠SSH ãã³ãã«ã®äŸ
===== POP3 ãµãŒããžã®å®å
šãªæ¥ç¶
ããã§ã®äŸã¯ãå€éšããã®æ¥ç¶ãåãã SSH ãµãŒãããããšããŸãã åããããã¯ãŒã¯ã«ã¯ãPOP3 ãµãŒããåããŠããã¡ãŒã«ãµãŒãããããšããŸãã é»åã¡ãŒã«ãå®å
šãªããæ¹ã§èŠãããã«ããã«ã¯ã SSH ãµãŒããžã® SSH æ¥ç¶ãè¡ãã ã¡ãŒã«ãµãŒããžã®ãã³ãã«ãäœæããããšã§ãã
[source,shell]
....
% ssh -2 -N -f -L 2110:mail.example.com:110 [email protected]
[email protected]'s password: ******
....
ãã³ãã«ãäœæãããŠåäœãããã ã¡ãŒã«ã¯ã©ã€ã¢ã³ãã«å¯Ÿã `localhost` ã®ããŒã 2110 ã« POP3 ãªã¯ãšã¹ããéãããã«æç€ºããŠãã ããã ãããžã®æ¥ç¶ã¯ããã³ãã«ãçµç±ããŠå®å
šã« `mail.example.com` ã«è»¢éãããŸãã
===== 峿 Œãªãã¡ã€ã¢ãŠã©ãŒã«ãããæãã
å
åãããã³å€åãã®æ¥ç¶äž¡æ¹ããã£ã«ã¿ãããã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ã課ããããã¯ãŒã¯ç®¡çè
ãããŸãã ããšãã°ã ãªã¢ãŒãã®ãã·ã³ããã®ã¢ã¯ã»ã¹ã«ãman:ssh[1] ããã³ web ãµãŒãã£ã³ã®ããã® 22 çªããã³ 80 çªããŒãã«ããæ¥ç¶ãããŠããããªããããããŸããã ãã®å Žå 22 ãŸã㯠80 çªä»¥å€ã䜿ãä»ã®ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ã劚ããŸãã
ããã«å¯Ÿãã解決çã¯ã ããªããæ¥ç¶ããŠãããããã¯ãŒã¯ã®ãã¡ã€ã¢ãŠã©ãŒã«ã®å€éšã«ãããã·ã³ã«å¯Ÿã㊠SSH æ¥ç¶ãè¡ãã åžæãããµãŒãã¹ãžã®ãã³ãã«ã«å©çšããããšã§ãã
[source,shell]
....
% ssh -2 -N -f -L 8888:music.example.com:8000 [email protected]
[email protected]'s password: *******
....
ãã®äŸã§ã¯ãã¹ããªãŒãã³ã° Ogg Vorbis ã¯ã©ã€ã¢ã³ãã `localhost` ã® 8888 çªããŒãã«åãããšã `music.example.com` ã® 8000 çªããŒãã«è»¢éããããã¡ã€ã¢ãŠã©ãŒã«ãããæããããŸãã
=== `AllowUsers` ãªãã·ã§ã³
ãã°ã€ã³ã§ãããŠãŒã¶ãæ¥ç¶å
ã `AllowUsers` ã䜿ã£ãŠå¶éããããšã¯ãéåžžã¯è¯ãèãã§ãã ããšãã°ã `root` ã `192.168.1.32` ããã®ã¿ãã°ã€ã³ã§ããããã«ããã«ã¯ã 以äžã®è¡ã [.filename]#/etc/ssh/sshd_config# ã«è¿œå ããŠãã ããã
[.programlisting]
....
AllowUsers [email protected]
....
`admin` ãã©ãããã§ããã°ã€ã³ã§ããããã«ããã«ã¯ã ãŠãŒã¶åãã®ãã®ãèšè¿°ããŠãã ããã
[.programlisting]
....
AllowUsers admin
....
è€æ°ã®ãŠãŒã¶ã¯ã以äžã®ããã«åãè¡ã«è¿œå ããŠãã ããã
[.programlisting]
....
AllowUsers [email protected] admin
....
[NOTE]
====
泚æãã¹ãããšã¯ã ãã®ã³ã³ãã¥ãŒã¿ã«ãã°ã€ã³ããå¿
èŠã®ãããã¹ãŠã®ãŠãŒã¶ãæå®ããããšã§ãã èšå®ãããŠããªããšããã®ãŠãŒã¶ã¯ãã°ã€ã³ã§ããªããªããŸãã
====
[.filename]#/etc/ssh/sshd_config# ãžã®å€æŽãçµãã£ããã 以äžãå®è¡ããŠãèšå®ãã¡ã€ã«ã man:sshd[8] ã«èªã¿èŸŒãŸããŠãã ããã
[source,shell]
....
# service sshd reload
....
=== ãã£ãšè©³ããç¥ããã人ãž
http://www.openssh.com/[OpenSSH] ãŠã§ããµã€ã
ã¯ã©ã€ã¢ã³ããªãã·ã§ã³ã«ã€ã㊠man:ssh[1], man:scp[1], man:ssh-keygen[1], man:ssh-agent[1], man:ssh-add[1] ããã³ man:ssh_config[5]
ãµãŒããªãã·ã§ã³ã«ã€ã㊠man:sshd[8], man:sftp-server[8], man:sshd_config[5]
[[fs-acl]]
== ãã¡ã€ã«ã·ã¹ãã ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ã (ACL)
ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ã (ACL) ã¯ãæšæºç㪠UNIX(R) ã®ããŒããã·ã§ã³ã¢ãã«ãã POSIX(R).1e ã«äºæããæ¹æ³ã§æ¡åŒµããŠããŸãã ããã«ããã管çè
ãããæŽç·Žãããã»ãã¥ãªãã£ã¢ãã«ãå©çšãã ãã®æ©æµãåããããããã«ãªããŸãã
FreeBSD ã® [.filename]#GENERIC# ã«ãŒãã«ã¯ã UFS ãã¡ã€ã«ã·ã¹ãã çšã® ACL ãµããŒããæäŸããŸãã ã«ã¹ã¿ã ã«ãŒãã«ãã³ã³ãã€ã«ããŠäœ¿çšãããŠãŒã¶ã¯ã ã«ã¹ã¿ã ã«ãŒãã«ã®ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ãã¡ã€ã«ã«ä»¥äžã远å ããŠãã ããã
[.programlisting]
....
options UFS_ACL
....
ãããã®ãªãã·ã§ã³ãçµã¿èŸŒãŸããŠããªããã°ãACL ã«å¯Ÿå¿ãããã¡ã€ã«ã·ã¹ãã ãããŠã³ãããããšãããšã èŠåã衚瀺ãããŸããACL ã¯ããã¡ã€ã«ã·ã¹ãã ã®æ¡åŒµå±æ§ãæå¹ã«ãªã£ãŠããããšã«äŸåããŠããŸãã æ¡åŒµå±æ§ã¯ãUFS2 ã§ãã€ãã£ã察å¿ãããŠããŸãã
[NOTE]
====
UFS1 ã«æ¡åŒµå±æ§ãä»ãããã«èšå®ããã®ã¯ã UFS2 ãããé«ãã¬ãã«ã®ç®¡çãªãŒãããããå¿
èŠã«ãªããŸãã ãŸããUFS2 ã«ãããæ¡åŒµå±æ§ã®ããã©ãŒãã³ã¹ã倧ããäžãã£ãŠããŸãã ãã®ãããã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ããå©çšããäžã§ã¯ UFS2 ã䜿ãããšãæšå¥šãããŸãã
====
ACL ã¯ãããŠã³ãæã®ç®¡çãã©ã° `acls` ã§æå¹ã«ãããŸãã ãã㯠[.filename]#/etc/fstab# ã«èšè¿°ã§ããŸãã ããŠã³ãæã®ãã©ã°ã¯ãman:tunefs[8] ã䜿ã£ãŠããã¡ã€ã«ã·ã¹ãã ãããã®ã¹ãŒããããã¯ã«ãã ACL ãã©ã°ã倿Žãããšããæ¹æ³ã§ã åžžã«èªåã§èšå®ãããããã«ãªããŸããäžè¬çã«ã¯ã äžèšã®çç±ããã¹ãŒããããã¯ãã©ã°ãäœ¿ãæ¹ãããã§ãããã
* ããŠã³ãæã«æå®ãã ACL ãã©ã°ã¯ `mount -u` ã«ããåããŠã³ãã§ã¯å€æŽã§ããŸããã å®å
šã« man:umount[8] ããäžã§ãæ°ãã« man:mount[8] ãããããããŸãããããã¯ãèµ·ååŸã«ã«ãŒããã¡ã€ã«ã·ã¹ãã ã§ ACL ãæå¹ã«ã§ããªãããšãæå³ããŸãã ãŸãããã¡ã€ã«ã·ã¹ãã ãå©çšãå§ããåŸã§ã¯ã ãã®é
åãå€ããããªãããšãæå³ããŠããŸãã
* ã¹ãŒããããã¯ãã©ã°ãèšå®ãããšã[.filename]#fstab# ã«èšè¿°ãããŠããªãã£ãããããã€ã¹ã®é çªãå€ãã£ãŠããŸã£ãŠããåžžã« ACL ãæå¹ãªç¶æ
ã§ããŠã³ããããŸãã ããããããšã§ããã¡ã€ã«ã·ã¹ãã ã ACL ãæå¹ã«ããªããŸãŸããŠã³ãããŠããŸããACL ãæ£ãããªãããã¡ã§åŒ·å¶ãããã»ãã¥ãªãã£ã®åé¡ãé²ããŸãã
[NOTE]
====
äºæãã ACL ãæå¹ã«ããªãã§ããŠã³ãããŠããŸãããšãé²ãããšãæãŸããŸãã ACL ãæå¹ã«ãããã®åŸç¡å¹ã«ããŠããã æ¡åŒµå±æ§ãåãæ¶ããªãã§ãŸãæå¹ã«ããŠããŸããšã 倧å€ãªç¶æ³ã«ãªã£ãŠããŸããŸãã äžè¬çã«ã¯ãäžåºŠãã¡ã€ã«ã·ã¹ãã ã§ ACL ãæå¹ã«ããããç¡å¹ã«ãã¹ãã§ã¯ãããŸãããããããŠããŸããšã ãã¡ã€ã«ä¿è·ãã·ã¹ãã ã®ãŠãŒã¶ã®æå³ãšéœéœ¬ããããå¯èœæ§ãããã°ãããã ACL ãå床æå¹ã«ãããšã ãããŸã§ããŒããã·ã§ã³ã倿ŽãããŠãããã¡ã€ã«ã«å€ã ACL ãå²ãåœãŠãŠããŸãã äºæ³ããªãåäœã«ã€ãªããããšãèããããŸãã
====
ACL ãæå¹ã«ãããã¡ã€ã«ã·ã¹ãã ã¯ã ããŒããã·ã§ã³èšå®ã®è¡šç€ºã« `+` (ãã©ã¹) èšå·ãã€ããŸããäŸãã°ã次ã®ããã«ãªããŸãã
[.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
....
ãã®äŸã§ã¯ããã£ã¬ã¯ã㪠[.filename]#directory1#, [.filename]#directory2# ããã³ [.filename]#directory3# ã®ãã¹ãŠã§ ACL ãåããŠããŸãã äžæ¹ [.filename]#public_html# ã¯å¯Ÿè±¡å€ã§ãã
=== ACL ãå©çšãã
man:getfacl[1] ã¯ã ãã¡ã€ã«ã·ã¹ãã ã® ACL ã衚瀺ããŸãã ããšãã°ã[.filename]#test# ã® ACL èšå®ã衚瀺ããã«ã¯ã 以äžã®ã³ãã³ããå®è¡ããŠãã ããã
[source,shell]
....
% getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--
....
ãã®ãã¡ã€ã«ã® ACL èšå®ã倿Žããã«ã¯ã man:setfacl[1] ã䜿çšããŠãã ããã
[source,shell]
....
% setfacl -k test
....
ãã¡ã€ã«ãŸãã¯ãã¡ã€ã«ã·ã¹ãã ããã çŸåšèšå®ãããŠãã ACL ããã¹ãŠåãé€ãã«ã¯ã`-k` ã䜿ã£ãŠãã ããã ããããªããããã奜ãŸããæ¹æ³ã¯ã `-b` ãäœ¿ãæ¹æ³ã§ãã ãã®ãªãã·ã§ã³ã䜿ããšãACL ãåäœããã®ã«å¿
èŠãªåºæ¬ã®ãã£ãŒã«ãã¯æ®ããŸãã
[source,shell]
....
% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test
....
ãã®äŸã§ã¯ã`-m` ã¯ãããã©ã«ã ACL ãšã³ããªãä¿®æ£ããããã«äœ¿ãããŠããŸãã å
ã»ã©ã®ã³ãã³ãã§èšå®ã¯åé€ãããããã å®çŸ©ããããšã³ããªã¯ãããŸããã ãã®ã³ãã³ãã¯ãããã©ã«ããªãã·ã§ã³ã«æ»ãã æå®ãããªãã·ã§ã³ãå²ãåœãŠãŸãã ã·ã¹ãã ã«ååšããªããŠãŒã¶ãŸãã¯ã°ã«ãŒãã远å ãããšã `Invalid argument` ãšã©ãŒãåºåãããŠããŸããŸãã
[[security-portaudit]]
== ãµãŒãããŒãã£è£œãœãããŠã§ã¢ã®ã»ãã¥ãªãã£åé¡ãç£èŠãã
è¿å¹Žãã»ãã¥ãªãã£ã®åéã§ã¯ã è匱æ§ã®è©äŸ¡æ¹æ³ã«é¢ããŠå€ãã®æ¹åãè¡ããŠããŸãã 仿¥ã§ã¯ã©ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãããŠãã ã·ã¹ãã ãžã®äŸµå
¥ã®è
åšã¯ã ãµãŒãããŒãã£è£œãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ãã èšå®ããã»ã©ã«å¢å ããŠãããŸãã
è匱æ§ãè©äŸ¡ããããšã¯ãã»ãã¥ãªãã£ã«ãããŠäž»èŠãªèŠçŽ ã§ãã FreeBSD ã¯ãããŒã¹ã·ã¹ãã ã«å¯ŸããŠå§åãçºè¡ããŠããŸããã ãã¹ãŠã®ãµãŒãããŒãã£è£œãŠãŒãã£ãªãã£ã«å¯ŸããŠå§åãçºè¡ããããšã¯ã FreeBSD ãããžã§ã¯ãã®èœåãè¶
ããŠããŸãã ãµãŒãããŒãã£è£œãŠãŒãã£ãªãã£ã«é¢ããè匱æ§ã軜æžãã 管çè
ã«å¯Ÿããæ¢ç¥ã®ã»ãã¥ãªãã£åé¡ã«ã€ããŠèŠåããæ¹æ³ãååšããŸãã FreeBSD ã«ã¯ãportaudit ãšåŒã°ãã远å ã®ãŠãŒãã£ãªãã£ãã ãã®ç®çã®ããã«çšæãããŠããŸãã
package:ports-mgmt/portaudit[] port ã¯ãFreeBSD ã»ãã¥ãªãã£ããŒã ããã³ ports éçºè
ãã¢ããããŒããã管çããŠããã æ¢ç¥ã®ã»ãã¥ãªãã£åé¡ã«å¯ŸããããŒã¿ããŒã¹ãå
¥æããŸãã
Ports Collection ãã portaudit ãã€ã³ã¹ããŒã«ããã«ã¯ã以äžã®ããã«å®è¡ããŠãã ããã
[source,shell]
....
# cd /usr/ports/ports-mgmt/portaudit && make install clean
....
ã€ã³ã¹ããŒã«ã®éäžã§ã man:periodic[8] ã®èšå®ãã¡ã€ã«ã¯ã¢ããããŒãããã æ¯æ¥ã®ã»ãã¥ãªãã£ã«é¢ããã¹ã¯ãªããã®å®è¡äžã« portaudit ãåºåããããã«èšå®ãããŸãã æ¯æ¥ã®ã»ãã¥ãªãã£ã«é¢ããã¹ã¯ãªããã®å®è¡çµæã®ã¡ãŒã«ãèªããããšã確èªããŠãã ããã ãã®ã¡ãŒã«ã¯ã`root` ã¢ã«ãŠã³ãã«éãããŸãã ä»ã®èšå®ã¯å¿
èŠãããŸããã
ã€ã³ã¹ããŒã«ãçµãã£ããã管çè
ã¯ä»¥äžã®ã³ãã³ããå®è¡ããããšã§ã ããŒã¿ããŒã¹ãã¢ããããŒãããã€ã³ã¹ããŒã«ãããŠãã package ã®è匱æ§ã調ã¹ãããšãã§ããŸãã
[source,shell]
....
# portaudit -Fda
....
[NOTE]
====
ããŒã¿ããŒã¹ã¯ã man:periodic[8] ã®å®è¡äžã«èªåçã«ã¢ããããŒããããŸãã å
çšã®ã³ãã³ãã®å®è¡ã¯ä»»æã§ã ããŒã¿ããŒã¹ãæåã§çŽã¡ã«ã¢ããããŒããããšãã«äœ¿ãããŸãã
====
Ports Collection ããã€ã³ã¹ããŒã«ããããµãŒãããŒãã£è£œãŠãŒãã£ãªãã£ãç£æ»ããã«ã¯ã 管çè
ã¯ä»¥äžã®ã³ãã³ããå®è¡ããå¿
èŠããããŸãã
[source,shell]
....
# portaudit -a
....
portaudit ã¯ãã€ã³ã¹ããŒã«ãããŠãã package ã®äžã§ã è匱æ§ã®ãããã®ã«ã€ããŠä»¥äžã®ãããªã¡ãã»ãŒãžãåºåããŸãã
[.programlisting]
....
Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>
1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.
....
衚瀺ãããŠãã URL ããŠã§ããã©ãŠã¶ã§éããšã管çè
ã¯ã è匱æ§ã«ã€ããŠããå€ãã®æ
å ±ãåŸãããšãã§ããŸãã ããã§ã®åºåã§ã¯ã圱é¿ããããŒãžã§ã³ã FreeBSD ã® port ããŒãžã§ã³ã«ãã瀺ããã ã»ãã¥ãªãã£å§åãå«ãä»ã®ãŠã§ããµã€ããå«ãŸããŠããŸãã
portaudit ã¯åŒ·åã§ã portmaster port ãšå
±ã«äœ¿ããšããããŠæçšãªãŠãŒãã£ãªãã£ã§ãã
[[security-advisories]]
== FreeBSD ã»ãã¥ãªãã£å§å
å€ãã®é«å質ãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãããžã§ã¯ãåæ§ã FreeBSD ãããžã§ã¯ãã¯ã»ãã¥ãªãã£ããŒã ãæã£ãŠããŸãã
ãã®ããŒã ã¯è²¬ä»»ããã£ãŠãå FreeBSD ãªãªãŒã¹ã«å¯Ÿããä¿å®çµäº (End-of-Life (EoL)) æ¥ã決ãããããµããŒããããŠãããªãªãŒã¹ã«å¯ŸããŠãEoL ãŸã§ã»ãã¥ãªãã£ã¢ããããŒããæäŸããŠããŸãã
FreeBSD ã»ãã¥ãªãã£ããŒã ããã³ãµããŒããããŠãããªãªãŒã¹ã«ã€ããŠã®æ
å ±ã¯ãlink:https://www.FreeBSD.org/ja/security[FreeBSD ã»ãã¥ãªãã£ããŒãž] ã§æäŸãããŠããŸãã
ã»ãã¥ãªãã£ããŒã ã®ä»äºã® 1 ã€ã¯ FreeBSD ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã»ãã¥ãªãã£è匱æ§ã«å¯Ÿå¿ããããšã§ãã
è匱æ§ã確èªããããšãã»ãã¥ãªãã£ããŒã ã¯è匱æ§ãä¿®æ£ããããã«å¿
èŠãšãªãæç¶ããæ€èšŒããä¿®æ£ãå«ããããã«ãœãŒã¹ã³ãŒããã¢ããããŒãããŸãã
ãã®åŸã詳现ã "ã»ãã¥ãªãã£å§å" ãšããŠçºè¡ããŠããŸãã
ã»ãã¥ãªãã£å§åã¯ã link:https://www.FreeBSD.org/ja/security/advisories/[FreeBSD ãŠã§ããµã€ã] ã§å
¬éããã {freebsd-security-notifications}, {freebsd-security}, ããã³ {freebsd-announce} ã¡ãŒãªã³ã°ãªã¹ãã«æçš¿ãããŸãã
ãã®ç« ã§ã¯ãã»ãã¥ãªãã£å§åãšã¯ã©ã®ãããªãã®ã説æããŸãã
=== ã»ãã¥ãªãã£å§åã¯ã©ã®ãããªãã®ãïŒ
以äžã¯ FreeBSD ã»ãã¥ãªãã£å§åã®äŸã§ãã
[.programlisting]
....
=============================================================================
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
=============================================================================
FreeBSD-SA-14:04.bind Security Advisory
The FreeBSD Project
Topic: BIND remote denial of service vulnerability
Category: contrib
Module: bind
Announced: 2014-01-14
Credits: ISC
Affects: FreeBSD 8.x and FreeBSD 9.x
Corrected: 2014-01-14 19:38:37 UTC (stable/9, 9.2-STABLE)
2014-01-14 19:42:28 UTC (releng/9.2, 9.2-RELEASE-p3)
2014-01-14 19:42:28 UTC (releng/9.1, 9.1-RELEASE-p10)
2014-01-14 19:38:37 UTC (stable/8, 8.4-STABLE)
2014-01-14 19:42:28 UTC (releng/8.4, 8.4-RELEASE-p7)
2014-01-14 19:42:28 UTC (releng/8.3, 8.3-RELEASE-p14)
CVE Name: CVE-2014-0591
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit <URL:http://security.FreeBSD.org/>.
I. Background
BIND 9 is an implementation of the Domain Name System (DNS) protocols.
The named(8) daemon is an Internet Domain Name Server.
II. Problem Description
Because of a defect in handling queries for NSEC3-signed zones, BIND can
crash with an "INSIST" failure in name.c when processing queries possessing
certain properties. This issue only affects authoritative nameservers with
at least one NSEC3-signed zone. Recursive-only servers are not at risk.
III. Impact
An attacker who can send a specially crafted query could cause named(8)
to crash, resulting in a denial of service.
IV. Workaround
No workaround is available, but systems not running authoritative DNS service
with at least one NSEC3-signed zone using named(8) are not vulnerable.
V. Solution
Perform one of the following:
1) Upgrade your vulnerable system to a supported FreeBSD stable or
release / security branch (releng) dated after the correction date.
2) To update your vulnerable system via a source code patch:
The following patches have been verified to apply to the applicable
FreeBSD release branches.
a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.
[FreeBSD 8.3, 8.4, 9.1, 9.2-RELEASE and 8.4-STABLE]
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch.asc
# gpg --verify bind-release.patch.asc
[FreeBSD 9.2-STABLE]
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch.asc
# gpg --verify bind-stable-9.patch.asc
b) Execute the following commands as root:
# cd /usr/src
# patch < /path/to/patch
Recompile the operating system using buildworld and installworld as
described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
Restart the applicable daemons, or reboot the system.
3) To update your vulnerable system via a binary patch:
Systems running a RELEASE version of FreeBSD on the i386 or amd64
platforms can be updated via the man:freebsd-update[8] utility:
# freebsd-update fetch
# freebsd-update install
VI. Correction details
The following list contains the correction revision numbers for each
affected branch.
Branch/path Revision
- -------------------------------------------------------------------------
stable/8/ r260646
releng/8.3/ r260647
releng/8.4/ r260647
stable/9/ r260646
releng/9.1/ r260647
releng/9.2/ r260647
- -------------------------------------------------------------------------
To see which files were modified by a particular revision, run the
following command, replacing NNNNNN with the revision number, on a
machine with Subversion installed:
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
Or visit the following URL, replacing NNNNNN with the revision number:
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
VII. References
<URL:https://kb.isc.org/article/AA-01078>
<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0591>
The latest revision of this advisory is available at
<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:04.bind.asc>
-----BEGIN PGP SIGNATURE-----
iQIcBAEBCgAGBQJS1ZTYAAoJEO1n7NZdz2rnOvQP/2/68/s9Cu35PmqNtSZVVxVG
ZSQP5EGWx/lramNf9566iKxOrLRMq/h3XWcC4goVd+gZFrvITJSVOWSa7ntDQ7TO
XcinfRZ/iyiJbs/Rg2wLHc/t5oVSyeouyccqODYFbOwOlk35JjOTMUG1YcX+Zasg
ax8RV+7Zt1QSBkMlOz/myBLXUjlTZ3Xg2FXVsfFQW5/g2CjuHpRSFx1bVNX6ysoG
9DT58EQcYxIS8WfkHRbbXKh9I1nSfZ7/Hky/kTafRdRMrjAgbqFgHkYTYsBZeav5
fYWKGQRJulYfeZQ90yMTvlpF42DjCC3uJYamJnwDIu8OhS1WRBI8fQfr9DRzmRua
OK3BK9hUiScDZOJB6OqeVzUTfe7MAA4/UwrDtTYQ+PqAenv1PK8DZqwXyxA9ThHb
zKO3OwuKOVHJnKvpOcr+eNwo7jbnHlis0oBksj/mrq2P9m2ueF9gzCiq5Ri5Syag
Wssb1HUoMGwqU0roS8+pRpNC8YgsWpsttvUWSZ8u6Vj/FLeHpiV3mYXPVMaKRhVm
067BA2uj4Th1JKtGleox+Em0R7OFbCc/9aWC67wiqI6KRyit9pYiF3npph+7D5Eq
7zPsUdDd+qc+UTiLp3liCRp5w6484wWdhZO6wRtmUgxGjNkxFoNnX8CitzF8AaqO
UWWemqWuz3lAZuORQ9KX
=OQzQ
-----END PGP SIGNATURE-----
....
ãã¹ãŠã®ã»ãã¥ãªãã£å§åã¯ä»¥äžã®ãã©ãŒãããã«åºã¥ããŠããŸãã
* åã»ãã¥ãªãã£å§åã«ã¯ãã»ãã¥ãªãã£ãªãã£ãµã® PGP éµã«ãã眲åãããŠããŸããã»ãã¥ãªãã£ãªãã£ãµã®å
¬ééµã¯ãcrossref:pgpkeys[pgpkeys,OpenPGP éµ] ã§æ€èšŒã§ããŸãã
* FreeBSD ã®ã»ãã¥ãªãã£å§åã®ååã¯åžžã« `FreeBSD-SA-` ã§å§ãŸããæ¬¡ã«å¹Žã衚ã 2 æ¡ã®æ°å (`14:`)ã幎æ¯ã®å§åã®çªå· (`04.`) ããããŠåœ±é¿ããã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµãã·ã¹ãã ã®åå (`bind`) ãç¶ããŸãããã®äŸã¯ã2014 幎㮠4 çªç®ã®å§åã§ BIND ã«åœ±é¿ããè匱æ§ã«å¯Ÿããå§åãæå³ããŠããŸãã
* `Topic` ãã£ãŒã«ãã§ã¯ãè匱æ§ã«ã€ããŠæèšãããŠããŸãã
* `Category` ã§ã¯ãè匱æ§ãã·ã¹ãã ã®ã©ã®éšåã«åœ±é¿ãããã瀺ããŸãã `core`, `contrib` ãŸã㯠`ports` ã®ã©ããã瀺ãããŸãã `core` ã«ããŽãªã¯ã FreeBSD ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã® `core` ã³ã³ããŒãã³ãã«åœ±é¿ããè匱æ§ã§ããããšãæå³ããŸãã `contrib` ã«ããŽãªã¯ãBIND ã®ããã« FreeBSD ã«åã蟌ãŸããŠãããœãããŠã§ã¢ã«åœ±é¿ããè匱æ§ã§ããããšãæå³ããŸãã `ports` ã«ããŽãªã¯ãPorts Collection ããã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ã«åœ±é¿ããè匱æ§ã§ããããšã瀺ããŠããŸãã
* `Module` ãã£ãŒã«ãã¯ã 圱é¿ããã³ã³ããŒãã³ãã«ã€ããŠèšåããŸãã ãã®äŸã§ã¯ `bind` ã¢ãžã¥ãŒã«ã«åœ±é¿ããããšãããããŸãã ãã®ããããã®è匱æ§ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšãšãã«ã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ããŸãã
* `Announced` ãã£ãŒã«ãã«ã¯ãã»ãã¥ãªãã£å§åãçºè¡ãããæ¥ãèšèŒãããŠããŸãã ã»ãã¥ãªãã£ããŒã ã«ãããã®åé¡ãååšããããšã確èªããããããã FreeBSD ãœãŒã¹ã³ãŒããªããžããªã«ã³ããããããããšãæå³ããŸãã
* `Credits` ãã£ãŒã«ãã¯ãè匱æ§ãçºèŠããå ±åããå人ãŸãã¯çµç¹ã瀺ããŸãã
* `Affects` ãã£ãŒã«ãã¯ããã®è匱æ§ãã©ã® FreeBSD ãªãªãŒã¹ã«åœ±é¿ãããã瀺ããŠããŸãã
* `Corrected` ãã£ãŒã«ãã«ã¯ãè匱æ§ãä¿®æ£ãããæ¥ãæéãã¿ã€ã ãŸãŒã³ãããã³ãªãªãŒã¹ã瀺ãããŸãããã®æ¬åŒ§ã®äžã§ã¯ãä¿®æ£ãããŒãžãããåãã©ã³ããããã³ãã®ãã©ã³ãã§å¯Ÿå¿ãããªãªãŒã¹ã®ããŒãžã§ã³çªå·ã瀺ãããŠããŸãããªãªãŒã¹ã®èå¥åã«ã¯ãããŒãžã§ã³çªå·ãå¯èœãªå Žåã¯ãããã¬ãã«ãå«ãŸããŠããŸãããããã¬ãã«ã¯ `p` ã«çªå·ãç¶ãããã®ã§ãããã®çªå·ã¯ãããã®ã·ãŒã±ã³ã¹çªå·ã§ããã®çªå·ã確èªããããšã§ããŠãŒã¶ã¯ã©ã®ããããŸã§ãã·ã¹ãã ã«é©çšãããŠãããã远跡ã§ããŸãã
* `CVE Name` ãã£ãŒã«ãã¯ã該åœããè匱æ§ã http://cve.mitre.org[cve.mitre.org] ã»ãã¥ãªãã£è匱æ§ããŒã¿ããŒã¹ã«ååšããå Žåã«ãè匱æ§ã®çªå·äžèЧã瀺ããŸãã
* `Background` ãã£ãŒã«ãã¯ã圱é¿ããŠããã¢ãžã¥ãŒã«ã«é¢ããæ
å ±ã瀺ããŸãã
* `Problem Description` ãã£ãŒã«ãã¯ãè匱æ§ã«ã€ããŠèª¬æããŸãã åé¡ã®ããã³ãŒãã®æ
å ±ãããã®ãŠãŒãã£ãªãã£ãã©ã®ããã«æªæã®ãã䜿ããæ¹ãããããããšãã£ãããšã瀺ãããŸãã
* `Impact` ãã£ãŒã«ãã¯ã ãã®åé¡ãã·ã¹ãã ã«å¯ŸããŠã ã©ã®ãããªåœ¢åŒã®åœ±é¿ãäžãããã«ã€ããŠç€ºããŸãã
* `Workaround` ãã£ãŒã«ãã¯ãäœããã®çç±ã«ãããããã«ã·ã¹ãã ã«ããããåœãŠãããšã®ã§ããªãã·ã¹ãã 管çè
ã«å¯ŸããŠãåé¿æ¹æ³ãååšããå Žåã«ãã®æ¹æ³ãæäŸããŸãã
* `Solution` ãã£ãŒã«ãã¯ã圱é¿ã®ããã·ã¹ãã ã«ããããåœãŠãæé ãæäŸããŸããããã§ã¯ã¹ãããããšã«ã·ã¹ãã ã«ããããåœãŠãå®å
šã«åäœããããã«ã詊éšããæ€èšŒãããæ¹æ³ãèšèŒãããŸãã
* `Correction Details` ãã£ãŒã«ãã¯ã圱é¿ããå Subversion ãã©ã³ãã«å¯Ÿããä¿®æ£ãããã³ãŒããåã蟌ãŸãããªããžã§ã³çªå·ãã瀺ããŸãã
* `References` ãã£ãŒã«ãã¯ãè匱æ§ã«é¢é£ããä»ã®æ
å ±ãžã®ãœãŒã¹ãæäŸããŸãã
[[security-accounting]]
== ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°
ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ã¯ã 管çè
ã䜿çšãããŠããã·ã¹ãã ã®ãªãœãŒã¹ãèšé²ãããã ãªãœãŒã¹ã®ãŠãŒã¶ãžã®å²ãåœãŠã ã·ã¹ãã ã®ã¢ãã¿ãªã³ã°ããã³ãŠãŒã¶ã®ã³ãã³ãã®æäœéã®èšé²ãæäŸããŸãã
ããã¯å®éã«ã¯ãé·æãšçæããããŸãã é·æã®äžã€ã¯ã䟵å
¥ãå
¥ãå£ã®æç¹ã§çµãããšãã§ããŸãã çæã¯ãããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ã«ããçæããããã°ã®éã§ã å€ãã®ãã£ã¹ã¯å®¹éãå¿
èŠãšããŸãããã®ç¯ã§ã¯ã 管çè
ã察象ã«ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ã®åºç€ã説æããŸãã
=== ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ãæå¹ã«ãã
ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ã䜿çšããåã«ã 以äžã®ã³ãã³ãã䜿ã£ãŠã ããã»ã¹ã¢ã«ãŠã³ãã£ã³ã°ãæå¹ã«ããŠããå¿
èŠããããŸãã
[source,shell]
....
# touch /var/account/acct
# chmod 600 /var/account/acct
# accton /var/account/acct
# echo 'accounting_enable="YES"' >> /etc/rc.conf
....
äžåºŠæå¹ã«èšå®ãããšãã¢ã«ãŠã³ãã£ã³ã°ã¯ã CPU ã®çµ±èšã å®è¡ãããã³ãã³ãã®æ
å ±ã®è¿œè·¡ãéå§ããŸãã ãã¹ãŠã®ã¢ã«ãŠã³ãã£ã³ã°ãã°ã¯ã 人ãèªãããããªåœ¢åŒã§ã¯ãªãã man:sa[8] ã䜿ã£ãŠèŠãããšãã§ããŸãã ãªãã·ã§ã³ãèšå®ããã«å®è¡ãããšã man:sa[8] ã¯ãŠãŒã¶ã³ãŒã«ã®æ°ãå
šçµéæé (å)ã å
š CPUããŠãŒã¶ã®æé (å)ãããã³ I/O æäœã®å¹³åæ°ãªã©ãåºåããŸãã
å®è¡ãããã³ãã³ãã«é¢ããæ
å ±ãèŠãã«ã¯ã man:lastcomm[1] ã䜿ã£ãŠãã ããã ãã®ã³ãã³ãã¯ã ãŠãŒã¶ãç¹å®ã® man:ttys[5] ã§å®è¡ããã³ãã³ããåºåããŸãã ããšãã°ã以äžã®ã³ãã³ã㯠`ttyp1` ã¿ãŒããã«äžã§ `trhodes` ãå®è¡ãã man:ls[1] ã®äœ¿çšã«ã€ããŠãèšé²ãããŠãããã¹ãŠç€ºããŸãã
[source,shell]
....
# lastcomm ls trhodes ttyp1
....
ä»ã«ãæçšãªãªãã·ã§ã³ãå€ãããã man:lastcomm[1], man:acct[5] ããã³ man:sa[8] ã§èª¬æãããŠããŸãã
[[security-resourcelimits]]
== ãªãœãŒã¹ã®å¶é
FreeBSD ã¯ãåã
ã®ãŠãŒã¶ãå©çšã§ããã·ã¹ãã ã®ãªãœãŒã¹å®¹éãå¶éããæ¹æ³ãããã€ãçšæããŠããŸãã
ãã£ã¹ã¯ã¯ã©ãŒã¿ã¯ãŠãŒã¶ã䜿çšã§ãããã£ã¹ã¯å®¹éãå¶éããŸãã
ã¯ã©ãŒã¿ã«ã€ããŠã¯ crossref:disks[quotas,ããã£ã¹ã¯ã¯ã©ãŒã¿ã] ã§èª¬æãããŠããŸãã
ãã®ä»ã®ãªãœãŒã¹ã®å¶éãšã¯ããŠãŒã¶ãæ¶è²»ã§ãã CPUãã¡ã¢ãªãªã©ã®ãªãœãŒã¹ãå¶éããææ®µã®ããšã§ãã
ãã©ãããã¡ã€ã«ãŸãã¯ã³ãã³ãã«ãããªãœãŒã¹ã®å¶éã«é¢ããããŒã¿ããŒã¹ã管çã§ããŸãã
äŒçµ±çãªæ¹æ³ã§ã¯ããã°ã€ã³ã¯ã©ã¹ã [.filename]#/etc/login.conf# ãç·šéããããšã«ããå®çŸ©ããŸãã
ãã®æ¹æ³ã¯ãçŸåšã§ã䜿ãããŠããŸããã倿Žãè¡ãã«ã¯ããã®ãã¡ã€ã«ã®ç·šéããªãœãŒã¹ããŒã¿ããŒã¹ã®åæ§ç¯ã [.filename]#/etc/master.passwd# ãžã®å¿
èŠãªå€æŽãããã«ããã¹ã¯ãŒãããŒã¿ããŒã¹ã®åæ§ç¯ãšãã£ããè€æ°åã«æž¡ãããã»ã¹ãå¿
èŠã§ãã
ãã®è€æ°åã«æž¡ãããã»ã¹ã¯ã å€ãã®ãŠãŒã¶ã«ã€ããŠèšå®ããå¿
èŠãããå Žåã«ã¯ã 倧å€ãªæéã®æµªè²»ã«ã€ãªããå¯èœæ§ããããŸãã
`rctl` ãçšãããšããããã现ãã«ãªãœãŒã¹ã®å¶éã管çããæ¹æ³ãæäŸã§ããŸãã
ãã®ã³ãã³ãã¯ããŠãŒã¶ã ãã§ã¯ãªããããã»ã¹ããã³ jails ã«å¯ŸããŠããªãœãŒã¹ãå¶éã§ããŸãã
ãã®ç¯ã§ã¯ããªãœãŒã¹ã管çããæ¹æ³ã«ã€ããŠäŒçµ±çãªæ¹æ³ãšé«åºŠãªæ¹æ³ã®äž¡æ¹ã«ã€ããŠèª¬æããŸãã
[[users-limiting]]
=== ãã°ã€ã³ã¯ã©ã¹ã®èšå®
äŒçµ±çãªæ¹æ³ã§ã¯ããã°ã€ã³ã¯ã©ã¹ããã³ãã°ã€ã³ã¯ã©ã¹ã«é©çšãããªãœãŒã¹ã®å¶é㯠[.filename]#/etc/login.conf# ã§å®çŸ©ããŸãã
åãŠãŒã¶ã¢ã«ãŠã³ãã«ã¯ãã°ã€ã³ã¯ã©ã¹ãå²ãåœãŠãããŠããŸã (ããã©ã«ãã§ã¯ `default` ã§ã)ã
ããããã®ãã°ã€ã³ã¯ã©ã¹ã«ã¯é¢é£ãããã°ã€ã³ã±ãŒãããªãã£ã®éåãå²ãåœãŠãããŠããŸãã
ãã°ã€ã³ã±ãŒãããªãã£ãšã¯ã `åç§°=å€` ã®çµã®ããšã§ã_åç§°_ ã¯åšç¥ã®èå¥åã_å€_ ã¯ã_åç§°_ ã«å¿ããŠåŠçãããä»»æã®æååã§ãã
[NOTE]
====
[.filename]#/etc/login.conf# ãç·šéããæã«ã¯ [.filename]#/etc/login.conf.db# ãæ¬¡ã®ã³ãã³ããå®è¡ããŠã¢ããããŒãããå¿
èŠããããŸãã
[source,shell]
....
# cap_mkdb /etc/login.conf
....
====
ãªãœãŒã¹ã®å¶éã¯ã 2 ã€ã®ç¹ã§æšæºçãªãã°ã€ã³ã±ãŒãããªãã£ãšç°ãªã£ãŠããŸãã
第äžã«ãã©ã®å¶éã«ã€ããŠãã _ãœãã_ ãªããããš _ããŒã _ãªãããããããŸãã
ãœãããªãããã¯ããŠãŒã¶ãã¢ããªã±ãŒã·ã§ã³ã調æŽã§ããŸããã ããŒããªããããè¶
ããããšã¯ã§ããŸããã
ãŠãŒã¶ã¯ããŒããªããããäžããããšã¯ã§ããŸããã äžããããšã¯ã¹ãŒããŠãŒã¶ã®ã¿ãã§ããŸãã
第äºã«ãã»ãšãã©ã®ãªãœãŒã¹ã®å¶éã¯ç¹å®ã®ãŠãŒã¶ã«å¯ŸããŠããã»ã¹æ¯ã«é©çšããããã®ã§ãã
<<resource-limits>> ãæããã䜿ããããªãœãŒã¹ã®å¶éã§ãã
å©çšå¯èœãªãã¹ãŠã®ãªãœãŒã¹ã®å¶éããã³ã®ãã°ã€ã³ã±ãŒãããªãã£ã®è©³çްã«ã€ããŠã¯ã man:login.conf[5] ã«æžãããŠããŸãã
[[resource-limits]]
.ãã°ã€ã³ã¯ã©ã¹ã®ãªãœãŒã¹ã®å¶é
[cols="20%,80%", frame="none", options="header"]
|===
| ãªãœãŒã¹ã®å¶é
| 説æ
|coredumpsize
|ããã°ã©ã ãçæãã core ãã¡ã€ã«ã®ãµã€ãºã«ãããå¶éã¯ã `filesize` ããã£ã¹ã¯ã¯ã©ãŒã¿ãªã©ã®ã ã»ãã®ãã£ã¹ã¯äœ¿çšã«é¢ããå¶éã«åŸå±ããŸãã
ãã®å¶éã¯ããã£ã¹ã¯é åã®æ¶è²»ãå¶åŸ¡ããããŸãå³ãããªãææ®µãšããŠãã䜿ãããŠããŸãã
ãŠãŒã¶ã¯ core ãã¡ã€ã«ãèªåã§çæããããã§ã¯ãªããåé€ããªãããšãå€ãã®ã§ã ãããèšå®ããã°å€§ããªããã°ã©ã ãç°åžžçµäºããŠããã£ã¹ã¯ã®ç©ºãããªããªããã«æžã¿ãŸãã
|cputime
|ãã®ãŠãŒã¶ã®ããã»ã¹ãæ¶è²»ã§ãã CPU æéã®äžéã§ãã
ãããè¶
ããããã»ã¹ã¯ãã«ãŒãã«ã«ããçµäºãããŸãã
ããã¯ãæ¶è²»ããã CPU _æé_ ã«ã€ããŠã®å¶éã§ãã£ãŠã`top` ã `ps` ã®ãã£ãŒã«ãã§è¡šç€ºããã CPU ã®å²åã«é¢ãããã®ã§ã¯ãããŸããã
|filesize
|ãŠãŒã¶ãææã§ãããã¡ã€ã«ã®å€§ããã®äžéã§ãã
ãã£ã¹ã¯ã¯ã©ãŒã¿ (crossref:disks[quotas,ããã£ã¹ã¯ã¯ã©ãŒã¿ã) ãšéãããã®å¶éã¯ãŠãŒã¶ã®ãã¡ã€ã«ããã¹ãŠãŸãšããéåã«ã§ã¯ãªããåã
ã®ãã¡ã€ã«ã«ããããŸãã
|maxproc
|ãŠãŒã¶ãå®è¡ã§ãããã©ã¢ã°ã©ãŠã³ããšããã¯ã°ã©ãŠã³ãããã»ã¹æ°ã®äžéã§ãã
ãã®äžéã¯ã`kern.maxproc` ã§æå®ãããã·ã¹ãã ã®å¶éãè¶
ããããšã¯ã§ããŸããã
ãã®å€ãããŸãå°ããªå€ã«èšå®ãããšã倧ããªããã°ã©ã ãã³ã³ãã€ã«ããå Žåã®ããã«ãè€æ°ã®ããã»ã¹ãå®è¡ããããããªã¿ã¹ã¯ã«ãããŠããŠãŒã¶ã®çç£æ§ãæªåããå¯èœæ§ããããŸãã
|memorylocked
|1 ã€ã®ããã»ã¹ã man:mlock[2] ã«ããã¡ã€ã³ã¡ã¢ãªã«ããã¯ãããããšãèŠæ±ã§ããã¡ã¢ãªã®æå€§å®¹éã§ãã
man:amd[8] ã®ãããªã·ã¹ãã ã§éèŠãªããã°ã©ã ã¯ã ã¡ã€ã³ã¡ã¢ãªãžããã¯ããŠãã·ã¹ãã ãã¹ã¯ããããéã«ã ãã£ã¹ã¯ã®ã¹ã©ãã·ã³ã°ãåŒãèµ·ãããªãããã«ããŸãã
|memoryuse
|ã©ã®æç¹ããåãããããããã»ã¹ãæ¶è²»ã§ããæå€§ã®ã¡ã¢ãªå®¹éã§ãã
ããã¯ãã¡ã€ã³ã¡ã¢ãªãšã¹ã¯ããã®äœ¿çšéãåããããã®ã§ãã
ã¡ã¢ãªæ¶è²»ãæããããã®å
æ¬çãªå¶éã§ã¯ãããŸããããæå§ãã«ã¯ããã§ãããã
|openfiles
|ããããã»ã¹ãéããŠãããæå€§ã®ãã¡ã€ã«æ°ã§ãã
FreeBSD ã§ã¯ããã¡ã€ã«ã¯ããœã±ããã IPC ãã£ã³ãã«ã衚ããã®ã«ã䜿ãããŠããã®ã§ãããŸãäœãå€ã«èšå®ããªãããæ³šæããŠãã ããã
ããã«å¯Ÿå¿ããã·ã¹ãã å
šäœã®å¶é㯠man:sysctl[8] `kern.maxfiles` ã§å®çŸ©ãããŸãã
|sbsize
|ãããŠãŒã¶ãæ¶è²»ã§ãããããã¯ãŒã¯ã¡ã¢ãªã®äžéã®éã§ãã
ããã¯ããããã¯ãŒã¯éä¿¡ãå¶éããã®ã«äœ¿ããŸãã
|stacksize
|ããã»ã¹ã®ã¹ã¿ãã¯ãµã€ãºã®äžéã§ãã
ããããã°ã©ã ã䜿çšãããã¡ã¢ãªã®éãå¶éããã«ã¯ãããã ãã§ã¯ååã§ã¯ãªãã®ã§ãä»ã®å¶éãšçµã¿åãããŠäœ¿ããªããã°ãªããŸããã
|===
ãªãœãŒã¹ã®å¶éãèšå®ããã«ããããã»ãã«ãããã€ãèŠããŠãããªããã°ãªããªãããšããããŸãã
* ã·ã¹ãã èµ·åæã« [.filename]#/etc/rc# ããèµ·åãããããã»ã¹ã¯ã`daemon` ãã°ã€ã³ã¯ã©ã¹ã«å²ãåœãŠãããŸãã
* ã·ã¹ãã ã«ä»å±ããŠãã [.filename]#/etc/login.conf# ã¯ã»ãšãã©ã®å¶éã«ã€ããŠåŠ¥åœãªå€ã«ãªã£ãŠããŸããããã¹ãŠã®ã·ã¹ãã ã«ãããŠãµãããããšããããã§ã¯ãããŸããã
å¶éãããŸãç·©ããããšã·ã¹ãã ãæªçšããããããŠããŸããŸãããå³ãããããããšçç£æ§ãæªåãããŠããŸããŸãã
* Xorg ã¯å€ãã®ãªãœãŒã¹ã䜿ãã ãã§ãªããããå€ãã®ããã°ã©ã ã䞊è¡ããŠäœ¿ãããšããŠãŒã¶ã«ä¿ããŸãã
* å€ãã®å¶éã¯åã
ã®ããã»ã¹ã«ããããã®ã§ãäžäººã®ãŠãŒã¶ã«ãŸãšããŠããããã®ã§ã¯ãããŸããã
äŸãã°ã`openfiles` ã 50 ã«èšå®ããããšã¯ããŠãŒã¶ãåããããããã®ããã»ã¹ãæå€§ 50 åã®ãã¡ã€ã«ãéãããšããããšã§ãã
ãããŠãŒã¶ãéãããã¡ã€ã«ã®ç·æ°ã¯ã `openfiles` ã®å€ã« `maxproc` ãããããã®ã«ãªããŸãã
åãããšãã¡ã¢ãªæ¶è²»éã«ãããŠã¯ãŸããŸãã
ãªãœãŒã¹ã®å¶éãšããã°ã€ã³ã¯ã©ã¹ã ãã°ã€ã³ã±ãŒãããªãã£äžè¬ã«ã€ããŠã®è©³ããæ
å ±ã¯ã man:cap.mkdb[1], man:getrlimit[2] ããã³ man:login.conf[5] ãã芧ãã ããã
=== ãªãœãŒã¹ã®å¶éãæå¹ã«ããŠèšå®ãã
`kern.racct.enable` ããŒã以å€ã®å€ã«èšå®ããŠãã ããã
ã«ã¹ã¿ã ã«ãŒãã«ã«ã¯ä»¥äžã®ãããªç¹å¥ãªèšå®ãå¿
èŠãšãªããŸãã
[.programlisting]
....
options RACCT
options RCTL
....
ã·ã¹ãã ãåèµ·åããŠæ°ããã«ãŒãã«ã§ç«ã¡äžãããšã`rctl` ãçšããŠã·ã¹ãã ã«ã«ãŒã«ãèšå®ã§ããããã«ãªããŸãã
ã«ãŒã«ã®æ§æã¯ã subject, subject-id, resource ããã³ action ã䜿ã£ãŠç®¡çãããŸãã
以äžã®ã«ãŒã«ã®äŸãåç
§ããŠãã ããã
[.programlisting]
....
user:trhodes:maxproc:deny=10/user
....
ãã®äŸã§ã¯ãsubject 㯠`user`ãsubject-id 㯠`trhodes`ãresource ã® `maxproc` ã¯ããã»ã¹ã®æå€§æ°ããã㊠action 㯠`deny` ãšèšå®ãããŠããã æ°ããããã»ã¹ã®çæããããã¯ãããŸãã
ããã¯ããŠãŒã¶ `trhodes` ã®ããã»ã¹ã¯ `10` åã«å¶éããããã以äžã®ããã»ã¹ã¯äœæã§ããªãããšãæå³ããŠããŸãã
ä»ã«ã¯ãã³ã³ãœãŒã«ã«ãã°ãåºåãããã man:devd[8] ã«å¯Ÿãéç¥ããããããã»ã¹ã« sigterm ãéã£ãããšãã£ã action ãå©çšã§ããŸãã
ã«ãŒã«ã远å ããéã«ã¯ã泚æãã¹ãç¹ãããã€ããããŸãã
äžã®äŸã§ã¯ãããã»ã¹ã®æ°ã `10` ã«å¶éãããŠããããããã°ã€ã³ã㊠`screen` ã»ãã·ã§ã³ãå®è¡ããŠããŸããšããŠãŒã¶ã«ããä»ã®ã¿ã¹ã¯ã®å®è¡ã¯ãããã¯ãããŠããŸãã§ãããã
ãªãœãŒã¹ã®å¶éãé©å¿ããããšããšã©ãŒãåºåãããŸãã
ãã®äŸã§ã¯ä»¥äžã®ãããªåºåãè¡ãããŸãã
[source,shell]
....
% man test
/usr/bin/man: Cannot fork: Resource temporarily unavailable
eval: Cannot fork: Resource temporarily unavailable
....
ä»ã®äŸãšããŠã¯ãjail ãã¡ã¢ãªã®å¶éãè¶
ããããšãé²ãããšãã§ããŸãã
ãã®ã«ãŒã«ã¯ä»¥äžã®ããã«æžãããšãã§ããŸãã
[source,shell]
....
# rctl -a jail:httpd:memoryuse:deny=2G/jail
....
ã«ãŒã«ã [.filename]#/etc/rctl.conf# ã«è¿œå ãããšãåèµ·åããŠãã«ãŒã«ã¯æç¶ããŸãã
ãã©ãŒãããã¯ãã«ãŒã«ããæåã®ã³ãã³ãã®éšåãé€ãããã®ãšãªããŸãã
ããšãã°ãäžã®ã«ãŒã«ã远å ããã«ã¯ã以äžã®ããã«è¿œå ããŠãã ããã
[.programlisting]
....
# Block jail from using more than 2G memory:
jail:httpd:memoryuse:deny=2G/jail
....
ã«ãŒã«ãåé€ããã«ã¯ã`rctl` ã«å¯Ÿãããªã¹ãããåé€ããããã«æå®ããŠãã ããã
[source,shell]
....
# rctl -r user:trhodes:maxproc:deny=10/user
....
man:rctl[8] ã«ã¯ãã«ãŒã«ããã¹ãŠåé€ããæ¹æ³ãèšèŒãããŠããŸãã
ããããªãããç¹å®ã®ãŠãŒã¶ã®ã«ãŒã«ããã¹ãŠåé€ããã«ã¯ã以äžã®ãããªã³ãã³ããå®è¡ããŠãã ããã
[source,shell]
....
# rctl -r user:trhodes
....
`subjects` ãã³ã³ãããŒã«ãããªãœãŒã¹ã¯ä»ã«ãå€ãçšæãããŠããŸãã
ãããã«ã€ããŠç¥ãã«ã¯ãman:rctl[8] ãã芧ãã ããã