33#
44# c't-Raspion, a Raspberry Pi based all in one sniffer
55# for judging on IoT and smart home devices activity
6- # (c) 2019-2020 c't magazin, Germany, Hannover
7- # see: https://ct.de/-123456 for more information
8- #
6+ # (c) 2019-2023 c't magazin, Germany, Hannover
7+ # see: https://ct.de/-4606645 for more information
8+ #
99
1010set -e
1111
1212WD=$( pwd)
1313LOG=/var/log/raspion.log
1414NEWLANG=de_DE.UTF-8
15- [[ -f .version ]] && source ./.version || VER=$( git rev-parse --short HEAD)
15+ [[ -f .version ]] && source ./.version
16+ if [ " $VER " == " " ]; then
17+ type git > /dev/null 2>&1 && VER=$( git rev-parse --short HEAD)
18+ fi
19+ source ./.defaults
1620sudo touch $LOG
1721sudo chown pi:pi $LOG
1822
@@ -22,17 +26,53 @@ error_report() {
2226}
2327
2428echo " ==> Einrichtung des c't-Raspion ($VER )" | tee -a $LOG
29+ source /etc/os-release
30+ if [ " $VERSION_ID " != " 10" ]; then
31+ echo " Sorry, Installation funktioniert nur auf Pi OS Legacy (Buster, Version 10)"
32+ exit 0
33+ fi
2534
26- echo " * Raspbian aktualisieren ..." | tee -a $LOG
35+ echo " * Wifi einschalten" | tee -a $LOG
36+ sudo rfkill unblock wifi >> $LOG 2>&1
37+
38+ echo " * Hilfspakete hinzufügen, Paketlisten aktualisieren" | tee -a $LOG
39+ sudo dpkg -i $WD /debs/raspion-keyring_2019_all.deb >> $LOG 2>&1
40+ # dont' install expired apt-ntop_1.0.190416-469_all.deb from debs dir
41+ # fast fix: download and install a fresh one:
42+ pushd /tmp >> $LOG 2>&1
43+ wget https://packages.ntop.org/RaspberryPI/apt-ntop.deb >> $LOG 2>&1
44+ sudo dpkg -i apt-ntop.deb >> $LOG 2>&1
45+ popd >> $LOG 2>&1
2746sudo apt-get update >> $LOG 2>&1
28- sudo apt-get -y dist-upgrade >> $LOG 2>&1
47+ # the former called apt-get update in postinst
48+
49+ echo " * Firewallregeln vorbereiten, Module laden" | tee -a $LOG
50+ sudo iptables -t nat -F POSTROUTING >> $LOG 2>&1
51+ sudo ip6tables -t nat -F POSTROUTING >> $LOG 2>&1
52+ sudo iptables -t nat -F PREROUTING >> $LOG 2>&1
53+ sudo ip6tables -t nat -F PREROUTING >> $LOG 2>&1
54+ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE >> $LOG 2>&1
55+ sudo ip6tables -t nat -A POSTROUTING -o eth0 -s $IPv6NET /64 -j MASQUERADE >> $LOG 2>&1
56+ sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1
57+ sudo ip6tables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1
58+
59+ echo " * Pakete vorkonfigurieren ..." | tee -a $LOG
60+ sudo debconf-set-selections debconf/wireshark >> $LOG 2>&1
61+ sudo debconf-set-selections debconf/iptables-persistent >> $LOG 2>&1
62+ sudo apt-get install -y iptables-persistent >> $LOG 2>&1
63+
64+ echo " * Firewall-Regeln speichern ..." | tee -a $LOG
65+ sudo netfilter-persistent save >> $LOG 2>&1
2966
30- echo " * Raspbian Sprachanpassungen ..." | tee -a $LOG
67+ echo " * Pi OS aktualisieren ..." | tee -a $LOG
68+ sudo apt-get -y --allow-downgrades dist-upgrade >> $LOG 2>&1
69+
70+ echo " * Pi OS Sprachanpassungen ..." | tee -a $LOG
3171sudo debconf-set-selections debconf/keyboard-configuration >> $LOG 2>&1
3272sudo cp files/keyboard /etc/default >> $LOG 2>&1
3373sudo dpkg-reconfigure -fnoninteractive keyboard-configuration >> $LOG 2>&1
3474
35- sudo sed -e " /^[# ]*$NEWLANG /s/^[# ]*//" /etc/locale.gen >> $LOG 2>&1
75+ sudo sed -i - e " /^[# ]*$NEWLANG /s/^[# ]*//" /etc/locale.gen >> $LOG 2>&1
3676sudo dpkg-reconfigure -fnoninteractive locales >> $LOG 2>&1
3777sudo update-locale LANG=$NEWLANG >> $LOG 2>&1
3878
@@ -41,39 +81,24 @@ sudo ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime >> $LOG 2>&1
4181sudo cp files/timezone /etc >> $LOG 2>&1
4282sudo dpkg-reconfigure -fnoninteractive tzdata >> $LOG 2>&1
4383
44- echo " * Pakete vorkonfigurieren ..." | tee -a $LOG
45- sudo debconf-set-selections debconf/wireshark >> $LOG 2>&1
46- sudo debconf-set-selections debconf/iptables-persistent >> $LOG 2>&1
47-
4884echo " * Pakete installieren ..." | tee -a $LOG
49- sudo apt-get install -y --no-install-recommends --allow-change-held-packages \
50- hostapd mitmproxy bridge-utils ipv6calc iptables-persistent radvd \
51- shellinabox nmap xsltproc lighttpd tcpreplay pwgen wireshark-gtk >> $LOG 2>&1
52- cd /tmp
53- wget http://packages.ntop.org/RaspberryPI/apt-ntop_1.0.190416-469_all.deb >> $LOG 2>&1
54- sudo dpkg -i apt-ntop_1.0.190416-469_all.deb >> $LOG 2>&1
55- sudo apt-get install -y --no-install-recommends ntopng >> $LOG 2>&1
56- sudo dpkg -i $WD /debs/* .deb >> $LOG 2>&1
57- sudo apt-mark hold wireshark-gtk >> $LOG 2>&1
58- sudo apt-mark hold libgtk-3-0 >> $LOG 2>&1
59- sudo apt-mark hold libgtk-3-common >> $LOG 2>&1
60- sudo apt-mark hold libgtk-3-bin >> $LOG 2>&1
61-
62- sudo cp $WD /sbin/* /usr/local/sbin >> $LOG 2>&1
63- sudo chmod +x /usr/local/sbin/* .sh >> $LOG 2>&1
64- sudo cp $WD /files/prefix_delegation /etc/dhcp/dhclient-exit-hooks.d >> $LOG 2>&1
65- sudo chmod +x /etc/dhcp/dhclient-exit-hooks.d/prefix_delegation >> $LOG 2>&1
85+ sudo apt-get install -y --allow-downgrades raspion --no-install-recommends >> $LOG 2>&1
6686
6787echo " * Softwaregrundkonfiguration ..." | tee -a $LOG
6888sudo usermod -a -G wireshark pi >> $LOG 2>&1
6989sudo usermod -a -G www-data pi >> $LOG 2>&1
7090sudo cp $WD /files/ntopng.conf /etc/ntopng >> $LOG 2>&1
91+ sudo sed -i " s/^-m=#IPv4NET#/-m=$IPv4NET /" /etc/ntopng/ntopng.conf >> $LOG 2>&1
7192sudo cp $WD /files/interfaces /etc/network >> $LOG 2>&1
93+ sudo sed -i " s/^ address #IPv4HOST#/ address $IPv4HOST /" /etc/network/interfaces >> $LOG 2>&1
94+ sudo sed -i " s/^ address #IPv6HOST#/ address $IPv6HOST /" /etc/network/interfaces >> $LOG 2>&1
7295sudo cp $WD /files/hostapd.conf /etc/hostapd >> $LOG 2>&1
96+ sudo sed -i " s/^ssid=#SSID#/ssid=$SSID /" /etc/hostapd/hostapd.conf >> $LOG 2>&1
7397sudo cp $WD /files/ipforward.conf /etc/sysctl.d >> $LOG 2>&1
7498sudo cp $WD /files/hostname /etc/ >> $LOG 2>&1
7599sudo cp $WD /files/raspion-sudo /etc/sudoers.d/ >> $LOG 2>&1
76100sudo cp $WD /files/radvd.conf /etc/ >> $LOG 2>&1
101+ sudo sed -i " s/^ RDNSS #IPv6HOST#/ RDNSS $IPv6HOST /" /etc/radvd.conf >> $LOG 2>&1
77102sudo mkdir -p /root/.mitmproxy >> $LOG 2>&1
78103sudo cp $WD /files/config.yaml /root/.mitmproxy >> $LOG 2>&1
79104mkdir -p /home/pi/.config/wireshark >> $LOG 2>&1
@@ -88,17 +113,7 @@ sudo -s <<HERE
88113echo "wpa_passphrase=$PW " >> /etc/hostapd/hostapd.conf
89114HERE
90115
91- echo " * Firewall-Regeln setzen und speichern ..." | tee -a $LOG
92- sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE >> $LOG 2>&1
93- sudo ip6tables -t nat -A POSTROUTING -o eth0 -s fd00:24::/64 -j MASQUERADE >> $LOG 2>&1
94- sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1
95- sudo ip6tables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1
96- sudo netfilter-persistent save >> $LOG 2>&1
97-
98116echo " * systemd-Units vorbereiten ..." | tee -a $LOG
99- sudo cp $WD /files/mitmweb.service /etc/systemd/system >> $LOG 2>&1
100- sudo cp $WD /files/broadwayd.service /etc/systemd/system >> $LOG 2>&1
101- sudo cp $WD /files/wireshark.service /etc/systemd/system >> $LOG 2>&1
102117sudo systemctl enable mitmweb.service >> $LOG 2>&1
103118sudo systemctl unmask hostapd >> $LOG 2>&1
104119sudo systemctl enable radvd >> $LOG 2>&1
@@ -109,18 +124,26 @@ echo "* Weboberfläche hinzufügen ..." | tee -a $LOG
109124cd /etc/lighttpd/conf-enabled >> $LOG 2>&1
110125sudo ln -sf ../conf-available/10-userdir.conf 10-userdir.conf >> $LOG 2>&1
111126sudo ln -sf ../conf-available/10-proxy.conf 10-proxy.conf >> $LOG 2>&1
127+ sudo ln -sf ../conf-available/15-fastcgi-php.conf 15-fastcgi-php.conf >> $LOG 2>&1
112128sudo cp $WD /files/10-dir-listing.conf . >> $LOG 2>&1
113- sudo cp $WD /files/20-extport.conf . >> $LOG 2>&1
114- mkdir -p /home/pi/public_html/scans >> $LOG 2>&1
115- mkdir -p /home/pi/public_html/caps >> $LOG 2>&1
129+ sudo -s << HERE
130+ echo '\$ SERVER["socket"] == ":81" {
131+ server.document-root = "/home/pi/public_html"
132+ dir-listing.encoding = "utf-8"
133+ \$ HTTP["url"] =~ "^/caps(\$ |/)" {
134+ dir-listing.activate = "enable"
135+ }
136+ \$ HTTP["url"] =~ "^/scans(\$ |/)" {
137+ dir-listing.activate = "enable"
138+ }
139+ \$ HTTP["url"] =~ "^/admin" {
140+ proxy.server = ( "" => (( "host" => "'$IPv4HOST '", "port" => "80")) )
141+ }
142+ }' > /etc/lighttpd/conf-enabled/20-extport.conf
143+ HERE
116144sudo chmod g+s /home/pi/public_html/caps >> $LOG 2>&1
117145sudo chmod 777 /home/pi/public_html/caps >> $LOG 2>&1
118146sudo chgrp www-data /home/pi/public_html/caps >> $LOG 2>&1
119- cp $WD /files/* .png /home/pi/public_html >> $LOG 2>&1
120- cp $WD /files/* .php /home/pi/public_html >> $LOG 2>&1
121- cp $WD /files/* .css /home/pi/public_html >> $LOG 2>&1
122- cp $WD /files/* .js /home/pi/public_html >> $LOG 2>&1
123- cp $WD /files/* .ico /home/pi/public_html >> $LOG 2>&1
124147
125148echo " * Pi-hole installieren ..." | tee -a $LOG
126149if ! id pihole > /dev/null 2>&1 ; then
129152sudo mkdir -p /etc/pihole >> $LOG 2>&1
130153sudo chown pihole:pihole /etc/pihole >> $LOG 2>&1
131154sudo cp $WD /files/setupVars.conf /etc/pihole >> $LOG 2>&1
155+ sudo sed -i " s/IPV4_ADDRESS=#IPv4HOST#/IPV4_ADDRESS=$IPv4HOST /" /etc/pihole/setupVars.conf >> $LOG 2>&1
156+ sudo sed -i " s/IPV6_ADDRESS=#IPv6HOST#/IPV6_ADDRESS=$IPv6HOST /" /etc/pihole/setupVars.conf >> $LOG 2>&1
157+ sudo sed -i " s/DHCP_ROUTER=#IPv4HOST#/DHCP_ROUTER=$IPv4HOST /" /etc/pihole/setupVars.conf >> $LOG 2>&1
158+ sudo sed -i " s/DHCP_START=#DHCPv4START#/DHCP_START=$DHCPv4START /" /etc/pihole/setupVars.conf >> $LOG 2>&1
159+ sudo sed -i " s/DHCP_END=#DHCPv4END#/DHCP_END=$DHCPv4END /" /etc/pihole/setupVars.conf >> $LOG 2>&1
132160sudo -s << HERE
133161curl -sSL https://install.pi-hole.net | bash /dev/stdin --unattended >> $LOG 2>&1
134162HERE
135- sudo chattr -f -i /etc/init.d/pihole-FTL >> $LOG 2>&1
136- sudo cp $WD /files/pihole-FTL /etc/init.d/ >> $LOG 2>&1
137- sudo chattr -f +i /etc/init.d/pihole-FTL >> $LOG 2>&1
138163sudo systemctl daemon-reload >> $LOG 2>&1
139- sudo systemctl restart pihole-FTL >> $LOG 2>&1
140164sudo pihole -f restartdns >> $LOG 2>&1
141165sudo cp $WD /files/hosts /etc/ >> $LOG 2>&1
142166
0 commit comments