|
@@ -40,11 +40,11 @@ VERSION="1.01"
|
40
|
40
|
# get the main project file, so that some values can be extracted
|
41
|
41
|
MAIN_PROJECT_FILE=/usr/local/bin/${PROJECT_NAME}
|
42
|
42
|
if [ ! -f $MAIN_PROJECT_FILE ]; then
|
43
|
|
- MAIN_PROJECT_FILE=/usr/bin/${PROJECT_NAME}
|
|
43
|
+ MAIN_PROJECT_FILE=/usr/bin/${PROJECT_NAME}
|
44
|
44
|
fi
|
45
|
45
|
if [ ! -f $MAIN_PROJECT_FILE ]; then
|
46
|
|
- echo "The main project file $MAIN_PROJECT_FILE was not found"
|
47
|
|
- exit 72529
|
|
46
|
+ echo "The main project file $MAIN_PROJECT_FILE was not found"
|
|
47
|
+ exit 72529
|
48
|
48
|
fi
|
49
|
49
|
|
50
|
50
|
# ssh (from https://stribika.github.io/2015/01/04/secure-secure-shell.html)
|
|
@@ -55,114 +55,115 @@ SSH_HOST_KEY_ALGORITHMS=$(cat $MAIN_PROJECT_FILE | grep 'SSH_HOST_KEY_ALGORITHMS
|
55
|
55
|
|
56
|
56
|
# see https://stribika.github.io/2015/01/04/secure-secure-shell.html
|
57
|
57
|
function ssh_remove_small_moduli {
|
58
|
|
- sudo awk '$5 > 2000' /etc/ssh/moduli > /home/$CURR_USER/moduli
|
59
|
|
- sudo mv /home/$CURR_USER/moduli /etc/ssh/moduli
|
|
58
|
+ sudo awk '$5 > 2000' /etc/ssh/moduli > /home/$CURR_USER/moduli
|
|
59
|
+ sudo mv /home/$CURR_USER/moduli /etc/ssh/moduli
|
60
|
60
|
}
|
61
|
61
|
|
62
|
62
|
function configure_ssh_client {
|
63
|
|
- #sudo sed -i 's/# PasswordAuthentication.*/ PasswordAuthentication no/g' /etc/ssh/ssh_config
|
64
|
|
- #sudo sed -i 's/# ChallengeResponseAuthentication.*/ ChallengeResponseAuthentication no/g' /etc/ssh/ssh_config
|
65
|
|
- sudo sed -i "s/# HostKeyAlgorithms.*/ HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS/g" /etc/ssh/ssh_config
|
66
|
|
- sudo sed -i "s/# Ciphers.*/ Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
|
67
|
|
- sudo sed -i "s/# MACs.*/ MACs $SSH_MACS/g" /etc/ssh/ssh_config
|
68
|
|
- if ! grep -q "HostKeyAlgorithms" /etc/ssh/ssh_config; then
|
69
|
|
- sudo cp /etc/ssh/ssh_config ~/ssh_config
|
70
|
|
- sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
71
|
|
- echo " HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS" >> ~/ssh_config
|
72
|
|
- sudo mv ~/ssh_config /etc/ssh/ssh_config
|
73
|
|
- sudo chown root:root /etc/ssh/ssh_config
|
74
|
|
- fi
|
75
|
|
- sudo sed -i "s/Ciphers.*/Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
|
76
|
|
- if ! grep -q "Ciphers " /etc/ssh/ssh_config; then
|
77
|
|
- sudo cp /etc/ssh/ssh_config ~/ssh_config
|
78
|
|
- sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
79
|
|
- echo " Ciphers $SSH_CIPHERS" >> ~/ssh_config
|
80
|
|
- sudo mv ~/ssh_config /etc/ssh/ssh_config
|
81
|
|
- sudo chown root:root /etc/ssh/ssh_config
|
82
|
|
- fi
|
83
|
|
- sudo sed -i "s/MACs.*/MACs $SSH_MACS/g" /etc/ssh/ssh_config
|
84
|
|
- if ! grep -q "MACs " /etc/ssh/ssh_config; then
|
85
|
|
- sudo cp /etc/ssh/ssh_config ~/ssh_config
|
86
|
|
- sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
87
|
|
- echo " MACs $SSH_MACS" >> ~/ssh_config
|
88
|
|
- sudo mv ~/ssh_config /etc/ssh/ssh_config
|
89
|
|
- sudo chown root:root /etc/ssh/ssh_config
|
90
|
|
- fi
|
91
|
|
-
|
92
|
|
- # Create ssh keys
|
93
|
|
- if [ ! -f /home/$CURR_USER/.ssh/id_ed25519 ]; then
|
94
|
|
- ssh-keygen -t ed25519 -o -a 100
|
95
|
|
- fi
|
96
|
|
- if [ ! -f /home/$CURR_USER/.ssh/id_rsa ]; then
|
97
|
|
- ssh-keygen -t rsa -b 4096 -o -a 100
|
98
|
|
- fi
|
99
|
|
-
|
100
|
|
- ssh_remove_small_moduli
|
101
|
|
-
|
102
|
|
- if [ ! -d ~/.ssh ]; then
|
103
|
|
- mkdir ~/.ssh
|
104
|
|
- fi
|
105
|
|
- echo 'Host *.onion' > ~/.ssh/config
|
106
|
|
- echo ' ServerAliveInterval 60' >> ~/.ssh/config
|
107
|
|
- echo ' ServerAliveCountMax 3' >> ~/.ssh/config
|
108
|
|
- echo " ProxyCommand sh -c 'monkeysphere ssh-proxycommand --no-connect %h %p ; connect -R remote -5 -S 127.0.0.1:9050 %h %p'" >> ~/.ssh/config
|
109
|
|
- echo 'Host *' >> ~/.ssh/config
|
110
|
|
- echo ' ServerAliveInterval 60' >> ~/.ssh/config
|
111
|
|
- echo ' ServerAliveCountMax 3' >> ~/.ssh/config
|
112
|
|
- echo ' ProxyCommand monkeysphere ssh-proxycommand %h %p' >> ~/.ssh/config
|
113
|
|
-
|
114
|
|
- echo ''
|
115
|
|
- echo $'Copy the following into a file called /home/username/.ssh/authorized_keys on the Freedombone server'
|
116
|
|
- echo ''
|
117
|
|
- echo $(cat /home/$CURR_USER/.ssh/id_rsa.pub)
|
118
|
|
- echo $(cat /home/$CURR_USER/.ssh/id_ed25519.pub)
|
119
|
|
- echo ''
|
|
63
|
+ #sudo sed -i 's/# PasswordAuthentication.*/ PasswordAuthentication no/g' /etc/ssh/ssh_config
|
|
64
|
+ #sudo sed -i 's/# ChallengeResponseAuthentication.*/ ChallengeResponseAuthentication no/g' /etc/ssh/ssh_config
|
|
65
|
+ sudo sed -i "s/# HostKeyAlgorithms.*/ HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS/g" /etc/ssh/ssh_config
|
|
66
|
+ sudo sed -i "s/# Ciphers.*/ Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
|
|
67
|
+ sudo sed -i "s/# MACs.*/ MACs $SSH_MACS/g" /etc/ssh/ssh_config
|
|
68
|
+ if ! grep -q "HostKeyAlgorithms" /etc/ssh/ssh_config; then
|
|
69
|
+ sudo cp /etc/ssh/ssh_config ~/ssh_config
|
|
70
|
+ sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
|
71
|
+ echo " HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS" >> ~/ssh_config
|
|
72
|
+ sudo mv ~/ssh_config /etc/ssh/ssh_config
|
|
73
|
+ sudo chown root:root /etc/ssh/ssh_config
|
|
74
|
+ fi
|
|
75
|
+ sudo sed -i "s/Ciphers.*/Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
|
|
76
|
+ if ! grep -q "Ciphers " /etc/ssh/ssh_config; then
|
|
77
|
+ sudo cp /etc/ssh/ssh_config ~/ssh_config
|
|
78
|
+ sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
|
79
|
+ echo " Ciphers $SSH_CIPHERS" >> ~/ssh_config
|
|
80
|
+ sudo mv ~/ssh_config /etc/ssh/ssh_config
|
|
81
|
+ sudo chown root:root /etc/ssh/ssh_config
|
|
82
|
+ fi
|
|
83
|
+ sudo sed -i "s/MACs.*/MACs $SSH_MACS/g" /etc/ssh/ssh_config
|
|
84
|
+ if ! grep -q "MACs " /etc/ssh/ssh_config; then
|
|
85
|
+ sudo cp /etc/ssh/ssh_config ~/ssh_config
|
|
86
|
+ sudo chown $CURR_USER:$CURR_USER ~/ssh_config
|
|
87
|
+ echo " MACs $SSH_MACS" >> ~/ssh_config
|
|
88
|
+ sudo mv ~/ssh_config /etc/ssh/ssh_config
|
|
89
|
+ sudo chown root:root /etc/ssh/ssh_config
|
|
90
|
+ fi
|
|
91
|
+
|
|
92
|
+ # Create ssh keys
|
|
93
|
+ if [ ! -f /home/$CURR_USER/.ssh/id_ed25519 ]; then
|
|
94
|
+ ssh-keygen -t ed25519 -o -a 100
|
|
95
|
+ fi
|
|
96
|
+ if [ ! -f /home/$CURR_USER/.ssh/id_rsa ]; then
|
|
97
|
+ ssh-keygen -t rsa -b 4096 -o -a 100
|
|
98
|
+ fi
|
|
99
|
+
|
|
100
|
+ ssh_remove_small_moduli
|
|
101
|
+
|
|
102
|
+ if [ ! -d ~/.ssh ]; then
|
|
103
|
+ mkdir ~/.ssh
|
|
104
|
+ fi
|
|
105
|
+ echo 'Host *.onion' > ~/.ssh/config
|
|
106
|
+ echo ' ServerAliveInterval 60' >> ~/.ssh/config
|
|
107
|
+ echo ' ServerAliveCountMax 3' >> ~/.ssh/config
|
|
108
|
+ echo " ProxyCommand connect -R remote -5 -S 127.0.0.1:9050 %h %p" >> ~/.ssh/config
|
|
109
|
+ echo "# ProxyCommand sh -c 'monkeysphere ssh-proxycommand --no-connect %h %p ; connect -R remote -5 -S 127.0.0.1:9050 %h %p'" >> ~/.ssh/config
|
|
110
|
+ echo 'Host *' >> ~/.ssh/config
|
|
111
|
+ echo ' ServerAliveInterval 60' >> ~/.ssh/config
|
|
112
|
+ echo ' ServerAliveCountMax 3' >> ~/.ssh/config
|
|
113
|
+ echo '# ProxyCommand monkeysphere ssh-proxycommand %h %p' >> ~/.ssh/config
|
|
114
|
+
|
|
115
|
+ echo ''
|
|
116
|
+ echo $'Copy the following into a file called /home/username/.ssh/authorized_keys on the Freedombone server'
|
|
117
|
+ echo ''
|
|
118
|
+ echo $(cat /home/$CURR_USER/.ssh/id_rsa.pub)
|
|
119
|
+ echo $(cat /home/$CURR_USER/.ssh/id_ed25519.pub)
|
|
120
|
+ echo ''
|
120
|
121
|
}
|
121
|
122
|
|
122
|
123
|
function configure_monkeysphere {
|
123
|
|
- sudo apt-get -y install tor connect-proxy monkeysphere
|
|
124
|
+ sudo apt-get -y install tor connect-proxy monkeysphere
|
124
|
125
|
}
|
125
|
126
|
|
126
|
127
|
function show_help {
|
127
|
|
- echo ''
|
128
|
|
- echo $"${PROJECT_NAME}-client --mesh [yes|no]"
|
129
|
|
- echo ''
|
130
|
|
- exit 0
|
|
128
|
+ echo ''
|
|
129
|
+ echo $"${PROJECT_NAME}-client --mesh [yes|no]"
|
|
130
|
+ echo ''
|
|
131
|
+ exit 0
|
131
|
132
|
}
|
132
|
133
|
|
133
|
134
|
while [[ $# > 1 ]]
|
134
|
135
|
do
|
135
|
|
- key="$1"
|
136
|
|
-
|
137
|
|
- case $key in
|
138
|
|
- -h|--help)
|
139
|
|
- show_help
|
140
|
|
- ;;
|
141
|
|
- --essid)
|
142
|
|
- shift
|
143
|
|
- WIFI_SSID="$1"
|
144
|
|
- ;;
|
145
|
|
- --channel)
|
146
|
|
- shift
|
147
|
|
- WIFI_CHANNEL=${1}
|
148
|
|
- ;;
|
149
|
|
- --mesh)
|
150
|
|
- shift
|
151
|
|
- MESH_CLIENT_INSTALL=${1}
|
152
|
|
- ;;
|
153
|
|
- *)
|
154
|
|
- # unknown option
|
155
|
|
- ;;
|
156
|
|
- esac
|
157
|
|
- shift
|
|
136
|
+ key="$1"
|
|
137
|
+
|
|
138
|
+ case $key in
|
|
139
|
+ -h|--help)
|
|
140
|
+ show_help
|
|
141
|
+ ;;
|
|
142
|
+ --essid)
|
|
143
|
+ shift
|
|
144
|
+ WIFI_SSID="$1"
|
|
145
|
+ ;;
|
|
146
|
+ --channel)
|
|
147
|
+ shift
|
|
148
|
+ WIFI_CHANNEL=${1}
|
|
149
|
+ ;;
|
|
150
|
+ --mesh)
|
|
151
|
+ shift
|
|
152
|
+ MESH_CLIENT_INSTALL=${1}
|
|
153
|
+ ;;
|
|
154
|
+ *)
|
|
155
|
+ # unknown option
|
|
156
|
+ ;;
|
|
157
|
+ esac
|
|
158
|
+ shift
|
158
|
159
|
done
|
159
|
160
|
|
160
|
161
|
echo $'Configuring client'
|
161
|
162
|
configure_ssh_client
|
162
|
163
|
configure_monkeysphere
|
163
|
164
|
if [[ $MESH_CLIENT_INSTALL == $'yes' || $MESH_CLIENT_INSTALL == $'y' || $MESH_CLIENT_INSTALL == $'on' ]]; then
|
164
|
|
- ${PROJECT_NAME}-mesh-install batman_client
|
165
|
|
- ${PROJECT_NAME}-mesh-install babel_client
|
|
165
|
+ ${PROJECT_NAME}-mesh-install batman_client
|
|
166
|
+ ${PROJECT_NAME}-mesh-install babel_client
|
166
|
167
|
fi
|
167
|
168
|
echo $'Configuration complete'
|
168
|
169
|
exit 0
|