Fix issues
[ach-master.git] / src / practical_settings / im.tex
1 %%\subsection{Instant Messaging Systems}
2 \subsubsection{XMPP / Jabber}
3
4 \subsubsection{Server configuration}
5
6 For servers, we mostly recommend to apply what's proposed by the {\it Peter's manifesto}\footnote{https://github.com/stpeter/manifesto}.
7
8 In short:
9 \begin{itemize}
10     \item require the use of TLS for both client-to-server and server-to-server connections
11     \item prefer or require TLS cipher suites that enable forward secrecy
12     \item deploy certificates issued by well-known and widely-deployed certification authorities (CAs)
13 \end{itemize}
14
15 The last point being out-of-scope for this section, we will only cover the first two points.
16
17 \paragraph{ejabberd}
18
19 ejabberd is one of the popular Jabber server.  In order to be compliant
20 with the manifesto, you should adapt your
21 configuration\footnote{\url{http://www.process-one.net/docs/ejabberd/guide_en.html}}:
22 \begin{lstlisting}[breaklines]
23 {listen,
24  [
25   {5222, ejabberd_c2s, [
26                         {access, c2s},
27                         {shaper, c2s_shaper},
28                         {max_stanza_size, 65536},
29                         starttls,
30                         starttls_required, 
31                         {certfile, "/etc/ejabberd/ejabberd.pem"}
32                        ]},
33   {5269, ejabberd_s2s_in, [
34                            {shaper, s2s_shaper},
35                            {max_stanza_size, 131072}
36                           ]},
37
38   %%% Other input ports
39 ]}.
40 {s2s_use_starttls, required_trusted}.
41 {s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
42 \end{lstlisting}
43
44
45 \subsubsection{Chat privacy - Off-the-Record Messaging (OTR)}
46
47 The OTR protocol works on top of the Jabber protocol(\footnote{https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html}).  
48 It add to popular chat clients (Adium, Pidgin...) the following propoerties for chiffered chats:
49 \begin{itemize}
50     \item Authentification
51     \item Integrity
52     \item Confidentiality
53     \item Forward privacy
54 \end{itemize}
55
56 It bascially uses Diffie-Helleman, AES and SHA1. 
57
58 There are no specific configuration required but the protocol itself worth to be mentionned.
59
60 \subsubsection{IRC}
61
62 \todo{Quick draft -- to complete / review / validate}
63
64 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.
65
66 \begin{lstlisting}[breaklines]
67 /* Extensions */
68 # Some modules 
69 #loadmodule "extensions/chm_sslonly_compat.so";
70 loadmodule "extensions/extb_ssl.so";
71 # Some other modules
72
73 serverinfo {
74   /* Standard piece of information */
75   
76   ssl_private_key = "etc/test.key";
77   ssl_cert = "etc/test.cert";
78   ssl_dh_params = "etc/dh.pem";
79   # set ssld_count as number of cores - 1
80   ssld_count = 1; 
81 };
82
83 listen {
84   /* Standard ports */
85   sslport = 6697;
86
87   /* IPv6 configuration */
88 };
89 \end{lstlisting}
90
91
92 \subsubsection{SILC}
93
94
95