Browse Source

Refresh gpg keys on client

Bob Mottram 8 years ago
parent
commit
110a2f08d4
1 changed files with 111 additions and 93 deletions
  1. 111
    93
      src/freedombone-client

+ 111
- 93
src/freedombone-client View File

@@ -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)
@@ -53,117 +53,135 @@ SSH_MACS=$(cat $MAIN_PROJECT_FILE | grep 'SSH_MACS=' | head -n 1 | awk -F '"' '{
53 53
 SSH_KEX=$(cat $MAIN_PROJECT_FILE | grep 'SSH_KEX=' | head -n 1 | awk -F '"' '{print $2}')
54 54
 SSH_HOST_KEY_ALGORITHMS=$(cat $MAIN_PROJECT_FILE | grep 'SSH_HOST_KEY_ALGORITHMS=' | head -n 1 | awk -F '"' '{print $2}')
55 55
 
56
+# refresh gpg keys every few hours
57
+REFRESH_GPG_KEYS_HOURS=2
58
+
59
+function refresh_gpg_keys {
60
+	if [ ! -f /usr/bin/gpg ]; then
61
+		sudo apt-get -y install gnupg
62
+	fi
63
+	sudo cp /etc/crontab ~/temp_crontab
64
+	sudo chown $CURR_USER:$CURR_USER ~/temp_crontab
65
+	if ! grep -q "gpg --refresh-keys" ~/temp_crontab; then
66
+		echo "0            */$REFRESH_GPG_KEYS_HOURS *   *   *   $CURR_USER /usr/bin/gpg --refresh-keys > /dev/null" >> ~/temp_crontab
67
+		sudo cp ~/temp_crontab /etc/crontab
68
+		chown root:root /etc/crontab
69
+	fi
70
+	rm ~/temp_crontab
71
+}
72
+
56 73
 # see https://stribika.github.io/2015/01/04/secure-secure-shell.html
57 74
 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
75
+	sudo awk '$5 > 2000' /etc/ssh/moduli > /home/$CURR_USER/moduli
76
+	sudo mv /home/$CURR_USER/moduli /etc/ssh/moduli
60 77
 }
61 78
 
62 79
 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 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 ''
80
+	#sudo sed -i 's/#   PasswordAuthentication.*/   PasswordAuthentication no/g' /etc/ssh/ssh_config
81
+	#sudo sed -i 's/#   ChallengeResponseAuthentication.*/   ChallengeResponseAuthentication no/g' /etc/ssh/ssh_config
82
+	sudo sed -i "s/#   HostKeyAlgorithms.*/   HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS/g" /etc/ssh/ssh_config
83
+	sudo sed -i "s/#   Ciphers.*/   Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
84
+	sudo sed -i "s/#   MACs.*/   MACs $SSH_MACS/g" /etc/ssh/ssh_config
85
+	if ! grep -q "HostKeyAlgorithms" /etc/ssh/ssh_config; then
86
+		sudo cp /etc/ssh/ssh_config ~/ssh_config
87
+		sudo chown $CURR_USER:$CURR_USER ~/ssh_config
88
+		echo "   HostKeyAlgorithms $SSH_HOST_KEY_ALGORITHMS" >> ~/ssh_config
89
+		sudo mv ~/ssh_config /etc/ssh/ssh_config
90
+		sudo chown root:root /etc/ssh/ssh_config
91
+	fi
92
+	sudo sed -i "s/Ciphers.*/Ciphers $SSH_CIPHERS/g" /etc/ssh/ssh_config
93
+	if ! grep -q "Ciphers " /etc/ssh/ssh_config; then
94
+		sudo cp /etc/ssh/ssh_config ~/ssh_config
95
+		sudo chown $CURR_USER:$CURR_USER ~/ssh_config
96
+		echo "   Ciphers $SSH_CIPHERS" >> ~/ssh_config
97
+		sudo mv ~/ssh_config /etc/ssh/ssh_config
98
+		sudo chown root:root /etc/ssh/ssh_config
99
+	fi
100
+	sudo sed -i "s/MACs.*/MACs $SSH_MACS/g" /etc/ssh/ssh_config
101
+	if ! grep -q "MACs " /etc/ssh/ssh_config; then
102
+		sudo cp /etc/ssh/ssh_config ~/ssh_config
103
+		sudo chown $CURR_USER:$CURR_USER ~/ssh_config
104
+		echo "   MACs $SSH_MACS" >> ~/ssh_config
105
+		sudo mv ~/ssh_config /etc/ssh/ssh_config
106
+		sudo chown root:root /etc/ssh/ssh_config
107
+	fi
108
+
109
+	# Create ssh keys
110
+	if [ ! -f /home/$CURR_USER/.ssh/id_ed25519 ]; then
111
+		ssh-keygen -t ed25519 -o -a 100
112
+	fi
113
+	if [ ! -f /home/$CURR_USER/.ssh/id_rsa ]; then
114
+		ssh-keygen -t rsa -b 4096 -o -a 100
115
+	fi
116
+
117
+	ssh_remove_small_moduli
118
+
119
+	if [ ! -d ~/.ssh ]; then
120
+		mkdir ~/.ssh
121
+	fi
122
+	echo 'Host *.onion' > ~/.ssh/config
123
+	echo '  ServerAliveInterval 60' >> ~/.ssh/config
124
+	echo '  ServerAliveCountMax 3' >> ~/.ssh/config
125
+	echo "  ProxyCommand connect -R remote -5 -S 127.0.0.1:9050 %h %p" >> ~/.ssh/config
126
+	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
127
+	echo 'Host *' >> ~/.ssh/config
128
+	echo '  ServerAliveInterval 60' >> ~/.ssh/config
129
+	echo '  ServerAliveCountMax 3' >> ~/.ssh/config
130
+	echo '#  ProxyCommand monkeysphere ssh-proxycommand %h %p' >> ~/.ssh/config
131
+
132
+	echo ''
133
+	echo $'Copy the following into a file called /home/username/.ssh/authorized_keys on the Freedombone server'
134
+	echo ''
135
+	echo $(cat /home/$CURR_USER/.ssh/id_rsa.pub)
136
+	echo $(cat /home/$CURR_USER/.ssh/id_ed25519.pub)
137
+	echo ''
121 138
 }
122 139
 
123 140
 function configure_monkeysphere {
124
-    sudo apt-get -y install tor connect-proxy monkeysphere
141
+	sudo apt-get -y install tor connect-proxy monkeysphere
125 142
 }
126 143
 
127 144
 function show_help {
128
-    echo ''
129
-    echo $"${PROJECT_NAME}-client --mesh [yes|no]"
130
-    echo ''
131
-    exit 0
145
+	echo ''
146
+	echo $"${PROJECT_NAME}-client --mesh [yes|no]"
147
+	echo ''
148
+	exit 0
132 149
 }
133 150
 
134 151
 while [[ $# > 1 ]]
135 152
 do
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
153
+	key="$1"
154
+
155
+	case $key in
156
+		-h|--help)
157
+			show_help
158
+			;;
159
+		--essid)
160
+			shift
161
+			WIFI_SSID="$1"
162
+			;;
163
+		--channel)
164
+			shift
165
+			WIFI_CHANNEL=${1}
166
+			;;
167
+		--mesh)
168
+			shift
169
+			MESH_CLIENT_INSTALL=${1}
170
+			;;
171
+		*)
172
+			# unknown option
173
+			;;
174
+	esac
175
+	shift
159 176
 done
160 177
 
161 178
 echo $'Configuring client'
179
+refresh_gpg_keys
162 180
 configure_ssh_client
163 181
 configure_monkeysphere
164 182
 if [[ $MESH_CLIENT_INSTALL == $'yes' || $MESH_CLIENT_INSTALL == $'y' || $MESH_CLIENT_INSTALL == $'on' ]]; then
165
-    ${PROJECT_NAME}-mesh-install batman_client
166
-    ${PROJECT_NAME}-mesh-install babel_client
183
+	${PROJECT_NAME}-mesh-install batman_client
184
+	${PROJECT_NAME}-mesh-install babel_client
167 185
 fi
168 186
 echo $'Configuration complete'
169 187
 exit 0