fix the structure of ejabberd. Please use our standard format for practical settings
[ach-master.git] / src / practical_settings / im.tex
1 %%\subsection{Instant Messaging Systems}
2 \subsubsection{XMPP / Jabber}
3
4
5 \subsubsection{General server configuration recommendations}
6
7 For servers, we mostly recommend to apply what's proposed by the {\it Peter's manifesto}\footnote{https://github.com/stpeter/manifesto}.
8
9 In short:
10 \begin{itemize}
11     \item require the use of TLS for both client-to-server and server-to-server connections
12     \item prefer or require TLS cipher suites that enable forward secrecy
13     \item deploy certificates issued by well-known and widely-deployed certification authorities (CAs)
14 \end{itemize}
15
16 The last point being out-of-scope for this section, we will only cover the first two points.
17
18 \paragraph{ejabberd}
19
20 \begin{description}
21 \item[Tested with Version:] Debian Wheezy 2.1.10-4+deb7u1
22
23 \item[Settings:] \mbox{}
24
25
26 ejabberd is one of the popular Jabber server.  In order to be compliant
27 with the manifesto, you should adapt your
28 configuration\footnote{\url{http://www.process-one.net/docs/ejabberd/guide_en.html}}:
29 \begin{lstlisting}[breaklines]
30 {listen,
31  [
32   {5222, ejabberd_c2s, [
33                         {access, c2s},
34                         {shaper, c2s_shaper},
35                         {max_stanza_size, 65536},
36                         starttls,
37                         starttls_required, 
38                         {certfile, "/etc/ejabberd/ejabberd.pem"}
39                        ]},
40   {5269, ejabberd_s2s_in, [
41                            {shaper, s2s_shaper},
42                            {max_stanza_size, 131072}
43                           ]},
44
45   %%% Other input ports
46 ]}.
47 {s2s_use_starttls, required_trusted}.
48 {s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
49 \end{lstlisting}
50
51 \item[Additional settings:]
52
53 Older Versions of ejabberd ($ < $ 2.0.0) need to be patched\footnote{\url{http://hyperstruct.net/2007/06/20/installing-the-startcom-ssl-certificate-in-ejabberd/}} to be able to parse all of the certificates in the CA chain.
54
55
56 \item[References:] 
57
58 \item[How to test:] \url{https://xmpp.net} is a practical website to test Jabber Server configurations.
59
60 \end{description}
61
62
63 \subsubsection{Chat privacy - Off-the-Record Messaging (OTR)}
64
65 The OTR protocol works on top of the Jabber protocol(\footnote{\url{https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html}}).  
66 It add to popular chat clients (Adium, Pidgin...) the following propoerties for chiffered chats:
67 \begin{itemize}
68     \item Authentification
69     \item Integrity
70     \item Confidentiality
71     \item Forward privacy
72 \end{itemize}
73
74 It bascially uses Diffie-Helleman, AES and SHA1. 
75
76 There are no specific configuration required but the protocol itself worth to be mentionned.
77
78 \subsubsection{IRC}
79
80 \todo{Quick draft -- to complete / review / validate}
81
82 There are numerous implementations of IRC servers.  In this section, we choose {\it Charybdis} which serve as basis for {\it ircd-seven}\footnote{https://dev.freenode.net/redmine/projects/ircd-seven}, developped and used by freenode. Freenode is actually the biggest IRC network\footnote{http://irc.netsplit.de/networks/top10.php}.  {\it Charybdis} is being part of the {\it Debian} \& {\it Ubuntu} distributions.
83
84 \begin{lstlisting}[breaklines]
85 /* Extensions */
86 # Some modules 
87 #loadmodule "extensions/chm_sslonly_compat.so";
88 loadmodule "extensions/extb_ssl.so";
89 # Some other modules
90
91 serverinfo {
92   /* Standard piece of information */
93   
94   ssl_private_key = "etc/test.key";
95   ssl_cert = "etc/test.cert";
96   ssl_dh_params = "etc/dh.pem";
97   # set ssld_count as number of cores - 1
98   ssld_count = 1; 
99 };
100
101 listen {
102   /* Standard ports */
103   sslport = 6697;
104
105   /* IPv6 configuration */
106 };
107 \end{lstlisting}
108
109
110 \subsubsection{SILC}
111
112
113