apt-get update
apt-get install make gcc linux-headers-$(uname -r)
tar -C /tmp -zxvf VMwareTools-*.tar.gz
cd /tmp/vmware-tools-distrib
./vmware-install.pl
poniedziałek, 10 grudnia 2012
Install VMware Tools on Debian Squeeze
środa, 5 grudnia 2012
SSLExplorer VPN over SSL OpenVPN ALS ADITO
Po restarcie usługa SSLExplorer nie podnosi się.
Objawy:
Dotyczy:
Rozwiązanie:
W logach występują błędy:
Błędna konfiguracja pliku:
Poprawna konfiguracja:
Test:
Projekty:
http://sourceforge.net/projects/openvpn-als/
http://sourceforge.net/projects/sslexplorer/
http://sourceforge.net/projects/sslexplorer-pam/
http://sourceforge.net/projects/aditoagentclien/
Źródła:
http://openvpn-als.sourceforge.net/
http://doc.ubuntu-fr.org/ssl-explorer
http://en.wikipedia.org/wiki/SSL-Explorer:_Community_Edition
http://www.r71.nl/kb/technical/331-adito-openvpn-als-a-great-vpn-appliance
http://lars.werner.no/?page_id=153
http://www.debian-administration.org/articles/444
http://www.debian-administration.org/articles/142
http://sourceforge.net/projects/openvpn-als/forums/forum/824507/topic/2858590
http://www.youtube.com/watch?v=GH38WNcfegY
Objawy:
Serwisy nie nasłuchują na porcie 80 i 443 tym samym brak możliwości nawiązania połączenia.
Dotyczy:
OpenVPN ALS v0.9.1 - adito-0.9.1
SSL-Explorer v1.0.0_RC17 - sslexplorer-1.0.0_RC17
Rozwiązanie:
Należy zmodyfikować plik konfiguracyjny:
/opt/sslexplorer/conf/webserver.properties
wszystkie znaki "\!\!" należy zamienić na "\!"
W logach występują błędy:
/opt/sslexplorer/logs/sslexplorer.log
04-12-2012 20:35:07 [WebServer] WARN ThreadedServer - Failed to start: main@192.168.1.50:443
04-12-2012 20:35:07 [WebServer] ERROR Main - Failed to start Jetty. Multiple exceptions
org.mortbay.util.MultiException[java.lang.IllegalArgumentException: ]
at org.mortbay.http.HttpServer.doStart(HttpServer.java:732)
at org.mortbay.util.Container.start(Container.java:71)
at com.sslexplorer.server.Main$5.run(Main.java:965)
java.lang.IllegalArgumentException:
at com.sun.net.ssl.internal.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:120)
at com.sun.net.ssl.internal.ssl.ProtocolList.(ProtocolList.java:36)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.setEnabledProtocols(SSLServerSocketImpl.java:182)
at com.sslexplorer.server.jetty.CustomJsseListener.newServerSocket(CustomJsseListener.java:142)
at org.mortbay.util.ThreadedServer.open(ThreadedServer.java:476)
at org.mortbay.util.ThreadedServer.start(ThreadedServer.java:502)
at org.mortbay.http.SocketListener.start(SocketListener.java:202)
at org.mortbay.http.HttpServer.doStart(HttpServer.java:762)
at org.mortbay.util.Container.start(Container.java:71)
at com.sslexplorer.server.Main$5.run(Main.java:965)
04-12-2012 20:35:08 [WebServer] INFO Main - Shutting down the server.
Błędna konfiguracja pliku:
/opt/sslexplorer/conf/webserver.properties
ssl.supportedCiphers=SSL_RSA_WITH_RC4_128_MD5\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_RSA_WITH_RC4_128_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_RSA_WITH_AES_128_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_DHE_RSA_WITH_AES_128_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_DHE_DSS_WITH_AES_128_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_RSA_WITH_3DES_EDE_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_DH_anon_WITH_RC4_128_MD5\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_DH_anon_WITH_AES_128_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSL_DH_anon_WITH_3DES_EDE_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_KRB5_WITH_RC4_128_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_KRB5_WITH_RC4_128_MD5\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_KRB5_WITH_3DES_EDE_CBC_SHA\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLS_KRB5_WITH_3DES_EDE_CBC_MD5
ssl.supportedProtocols=SSLv2Hello\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!SSLv3\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!TLSv1
Poprawna konfiguracja:
ssl.supportedCiphers=SSL_RSA_WITH_RC4_128_MD5\!SSL_RSA_WITH_RC4_128_SHA\!TLS_RSA_WITH_AES_128_CBC_SHA\!TLS_DHE_RSA_WITH_AES_128_CBC_SHA\!TLS_DHE_DSS_WITH_AES_128_CBC_SHA\!SSL_RSA_WITH_3DES_EDE_CBC_SHA\!SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA\!SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA\!SSL_DH_anon_WITH_RC4_128_MD5\!TLS_DH_anon_WITH_AES_128_CBC_SHA\!SSL_DH_anon_WITH_3DES_EDE_CBC_SHA\!TLS_KRB5_WITH_RC4_128_SHA\!TLS_KRB5_WITH_RC4_128_MD5\!TLS_KRB5_WITH_3DES_EDE_CBC_SHA\!TLS_KRB5_WITH_3DES_EDE_CBC_MD5
ssl.supportedProtocols=SSLv2Hello\!SSLv3\!TLSv1
Test:
# /etc/init.d/sslexplorer start
Starting SSL-Explorer...
# netstat -lnp | grep java
tcp 0 0 192.168.1.50:80 :::* LISTEN 2437/java
tcp 0 0 192.168.1.50:443 :::* LISTEN 2437/java
Projekty:
http://sourceforge.net/projects/openvpn-als/
http://sourceforge.net/projects/sslexplorer/
http://sourceforge.net/projects/sslexplorer-pam/
http://sourceforge.net/projects/aditoagentclien/
Źródła:
http://openvpn-als.sourceforge.net/
http://doc.ubuntu-fr.org/ssl-explorer
http://en.wikipedia.org/wiki/SSL-Explorer:_Community_Edition
http://www.r71.nl/kb/technical/331-adito-openvpn-als-a-great-vpn-appliance
http://lars.werner.no/?page_id=153
http://www.debian-administration.org/articles/444
http://www.debian-administration.org/articles/142
http://sourceforge.net/projects/openvpn-als/forums/forum/824507/topic/2858590
http://www.youtube.com/watch?v=GH38WNcfegY
piątek, 9 listopada 2012
VMWare Workstation - base and differential disk vmdk
Sposób tworzenia (klonowania) wirtualnych maszyn korzystających z jednego dysku bazowego oraz dysków różnicowych dla każdej z maszyn.
Przykład dla Windows XP, lecz można tą technikę zastosować do każdego systemu operacyjnego uwzględniając procedury po klonowaniu OS (np.: NewSID dla Windows: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx)
Tworzymy maszynę bazową "WindowsXPbase" o ustalonej konfiguracji. Dysk VMDK może być w jednym pliku (Store virtual disk as a single file).
Na "WindowsXPbase" instalujemy system (dobra praktyka mówi, aby jeden dysk VMDK był przeznaczony pod jedną partycję) i wstępnie konfigurujemy nasz bazowy system.
Po instalacji i konfiguracji wyłączamy maszynę "WindowsXPbase" a plik dysku WindowsXPbase.vmdk kopiujemy do katalogu wyżej. Resztę usuwamy.
Odczytujemy nr CID dysku "WindowsXPbase", można to zrobić przy pomocy Total Commandera (F3) - Ta funkcja podglądu nie wczytuje całego pliku, co w przypadku np 6GB plików dysku nie spowoduje wczytania całego pliku do ramu :)
Możemy też użyć narzędzi dsfok-tools ze strony
http://members.ozemail.com.au/%7Enulifetv/freezip/freeware/.
W celu odczytania CID wykonujemy eksport ustawień dysku za pomocą dsfo.exe do pliku WindowsXPbase_config.exe
Eksportujemy konfigurację:
Przed
Gotowe.
Jak odpalimy maszynę, system zostanie załadowany z dysku znajdującego się piętro wyżej "..\WindowsXPbase.vmdk", a wszelkie zmiany będą zapisywane w pliku maszyny wirtualnej "WindowsXPdifferential.vmdk"
Przykład dla Windows XP, lecz można tą technikę zastosować do każdego systemu operacyjnego uwzględniając procedury po klonowaniu OS (np.: NewSID dla Windows: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx)
Tworzymy maszynę bazową "WindowsXPbase" o ustalonej konfiguracji. Dysk VMDK może być w jednym pliku (Store virtual disk as a single file).
Na "WindowsXPbase" instalujemy system (dobra praktyka mówi, aby jeden dysk VMDK był przeznaczony pod jedną partycję) i wstępnie konfigurujemy nasz bazowy system.
Po instalacji i konfiguracji wyłączamy maszynę "WindowsXPbase" a plik dysku WindowsXPbase.vmdk kopiujemy do katalogu wyżej. Resztę usuwamy.
Odczytujemy nr CID dysku "WindowsXPbase", można to zrobić przy pomocy Total Commandera (F3) - Ta funkcja podglądu nie wczytuje całego pliku, co w przypadku np 6GB plików dysku nie spowoduje wczytania całego pliku do ramu :)
Możemy też użyć narzędzi dsfok-tools ze strony
http://members.ozemail.com.au/%7Enulifetv/freezip/freeware/.
W celu odczytania CID wykonujemy eksport ustawień dysku za pomocą dsfo.exe do pliku WindowsXPbase_config.exe
dsfo.exe WindowsXPbase.vmdk 512 1024 WindowsXPbase_config.txtNumer dysku WindowsXPbase.vmdk
CID=ef33191cTworzymy kolejną maszynę "WindowsXPdifferential" o takich samych parametrach jak poprzednia.
Eksportujemy konfigurację:
dsfo.exe WindowsXPdifferential.vmdk 512 1024 WindowsXPdifferential_config.txtWprowadzamy zmiany w konfiguracji (CID, createType, parentFileNameHint):
OK, 1024 bytes, 0.000s, MD5 = 4515b65e9d48cb2a1ba452b183528eb7
Przed
#Disk DescriptorFilePo
version=1
encoding="windows-1250"
CID=fffffffe
parentCID=ffffffff
isNativeSnapshot="no"
createType="monolithicSparse"
# Disk DescriptorFileImportujemy konfigurację:
version=1
encoding="windows-1250"
CID=fffffffe
parentCID=ef33191c
isNativeSnapshot="no"
createType="twoGbMaxExtentSparse"
parentFileNameHint="..\WindowsXPbase.vmdk"
dsfi.exe WindowsXPdifferential.vmdk 512 1024 WindowsXPdifferential_config.txt
OK, written 1024 bytes at offset 512
Gotowe.
Jak odpalimy maszynę, system zostanie załadowany z dysku znajdującego się piętro wyżej "..\WindowsXPbase.vmdk", a wszelkie zmiany będą zapisywane w pliku maszyny wirtualnej "WindowsXPdifferential.vmdk"
wtorek, 6 listopada 2012
fix rrd data
Naprawa błędnych dane w bazie rrd spowodowanych nieprawidłowym odczytem wartości przez skrypt.
1. wykonać eksport danych do xml'a (rrdtool dump)
2. podmienić nieprawidłowe wartości (sed)
3. wykonać import danych (rrdtool restore)
Wykres wygenerowany z pikami - przed naprawą:
Wykres wygenerowany po naprawie pliku rrd
Skrypt automatyzujący pracę:
fix_script_rrd.sh
#!/bin/sh
cp /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server.rrd-$(date +%Y-%m-%d-%s)
mv /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server.rrd
cp /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.rrd
rrdtool dump /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.rrd > /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-6.4146433246e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.2227638513e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.2606894794e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-6.3459103635e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-5.5899984061e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-5.0475658794e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.5594901404e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-4.7378915353e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.2606858468e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.0086951488e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-4.1772191908e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8516738435e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8025172614e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8024471851e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.5663505765e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
rrdtool restore /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd
rrdtool dump /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd > /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.xml
cp -f /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd
wtorek, 16 października 2012
SSH Keys - ssh: Exited: String too long
W celu wygenerowania pary kluczy do autoryzacji w usłudze ssh zainstalowałem OpenSSH keygen:
openssh-keygen - 5.8p2-2 - OpenSSH keygen.
Po wygenerowaniu pary kluczy przekopiowałem klucz publiczny na zdalny serwer
Niestety próba połączenia zwróciła błąd:
ssh -i /root/.ssh/id_rsa root@remotehost
ssh: Exited: String too long
Rozwiązanie:
Klucze trzeba wygenerowac za pomocą dostępnego w OpenWRT dropbearkey
localhost
dropbearkey -t rsa -f /root/.ssh/id_rsa
dropbearkey -y -f /root/.ssh/id_rsa | grep ssh-rsa > /root/.ssh/id_rsa.pub
scp /root/.ssh/id_rsa.pub root@remotehost:/root
Remotehost
cat /root/id_rsa.pub >> /etc/dropbear/authorized_keys
chmod 600 /etc/dropbear/authorized_keys
localhost
ssh -i /root/.ssh/id_rsa root@remotehost
BusyBox v1.15.3 (2011-11-11 18:03:51 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.
2011-11-12 - r28934
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
Backfire (10.03.x, latest version. Always.) -------
* 1/3 shot Kahlua In a shot glass, layer Kahlua
* 1/3 shot Bailey's on the bottom, then Bailey's,
* 1/3 shot Vodka then Vodka.
----------( by obsy, http://eko.one.pl/ )----------
Booted from internal flash
root@remotehost:~$
Do czego można to wykorzystać?
Np. Backup
tar czf - /overlay | ssh -i /root/.ssh/id_rsa root@backupserver "cat > /mnt/backupdir/backup-host1-$(date +%Y-%m-%d-%s).tgz"
wtorek, 15 maja 2012
Backup and Restore ACL NTFS with SetACL
Przeniesienie uprawnień NTFS (DACL) pomiędzy zasobami:
Backup uprawnień NTFS z server1
SetACL.exe -on "\\server1\c$\test" -ot file -actn list -lst "f:sddl;w:d,o,g" -rec cont -bckp "d:\tmp\acl-ntfs.txt"
Edytuj plik "acl-ntfs.txt"
Zmień ścieżki UNC z "\\?\UNC\server1\c$\test" na "\\?\UNC\server2\c$\test"
Restore uprawnień NTFS na server2
SetACL.exe -on "\\server2\c$\test" -ot file -actn restore -bckp "d:\tmp\acl-ntfs.txt" -log "log.txt"
Jeśli chcesz wykonać backup i restore uprawnień na zasobie sieciowym (SACL) to w sekcji -lst trzeba dodać "s", czyli:
-lst "f:sddl;w:d,s,o,g"
Strona projektu:
http://sourceforge.net/projects/setacl/
http://helgeklein.com/
Źródła:
http://bog.no/index.php/artikler/2-how-to-backup-ntfs-acl
Etykiety:
Active Directory,
Bezpieczeństwo,
Ku Pamięci,
Windows
sobota, 19 listopada 2011
OpenWRT (Backfire) + lighttpd + PHP5 + AUTH + SSL
Instalacja i konfiguracja lighttpd i php z autoryzacją typu digest (htdigest)
UPDATE: 2013-01-15
W skrócie:
Konfiguracja lighttpd wraz z php5, autoryzacją na poziomie serwera www oraz przekierowaniem wybranych katalogów z http na https, a po co ? A po to, żeby bezpiecznie się autoryzować.
Sprzęt:
TP-LINK TL-WR1043ND, alternatywny firmware ze strony http://eko.one.pl, OpenWrt Backfire 10.03.1-RC6 r28934 2011-11-12, skonfigurowany extroot 2GB
1. Instalacja i konfiguracja lighthttp
2. Instalacja i konfiguracja php
3. Włączenie https w lighttpd
4. Autoryzacja w lighttpd
5. Redirect z http na https
6. Firewall
7. Literatura
1. Instalacja i konfiguracja lighthttp
Instalujemy serwer
2. Instalacja i konfiguracja php
Instalujemy php i moduł do lighttpd
Aby interpretować skrypty sh dodajemy:
3. Włączenie https w lighttpd
Instalujemy openssl i generujemy certyfikat typu self-sign
Włączenie SSL można wykonać ją na 2 sposoby:
a. Za pomocą poniższej konfiguracji lighthttp przełączy się w tryb SSL-only, oznacza to, że będzie nasłuchiwał tylko i wyłącznie na porcie 443.
W dokumentacji jest napisane, ze prawdopodobnie trzeba będzie również zmienić server.port na 443, nic podobnego, w OpenWRT (lighttpd/1.4.28 (ssl)) serwer automatycznie zabindował się do portu 443
b. Aby włączyć SSL obok normalnego HTTP czyli równolegle serwować tą samą stronę po http i https, należy dodać socket do konfiga.
Instalacja modułu AUTH
Włączamy moduł auth
Tworzymy prosty skrypt dodający użytkowników do pliku o nazwie htdigest.sh
Instalacja modu REDIRECT
Jeśli chcemy przekierować wszystko z portu 80 na 443
6. Firewall
Na koniec wypuszczenie serwera w eter, odblokowanie portu 443 lub/i 80 na firewallu na interfejsie WAN
7. Literatura
http://eko.one.pl/?p=openwrt-php
http://eko.one.pl/?p=openwrt-http
http://redmine.lighttpd.net/wiki/lighttpd/Docs:SSL
http://redmine.lighttpd.net/wiki/lighttpd/HowToSimpleSSL
http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModAuth
http://redmine.lighttpd.net/wiki/lighttpd/HowToAuthenticationFromMultipleFiles
https://wiki.archlinux.org/index.php/Lighttpd_for_SSL_and_non-SSL
http://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectHttpToHttps
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectWww
UPDATE: 2013-01-15
W skrócie:
Konfiguracja lighttpd wraz z php5, autoryzacją na poziomie serwera www oraz przekierowaniem wybranych katalogów z http na https, a po co ? A po to, żeby bezpiecznie się autoryzować.
Sprzęt:
TP-LINK TL-WR1043ND, alternatywny firmware ze strony http://eko.one.pl, OpenWrt Backfire 10.03.1-RC6 r28934 2011-11-12, skonfigurowany extroot 2GB
1. Instalacja i konfiguracja lighthttp
2. Instalacja i konfiguracja php
3. Włączenie https w lighttpd
4. Autoryzacja w lighttpd
5. Redirect z http na https
6. Firewall
7. Literatura
1. Instalacja i konfiguracja lighthttp
Instalujemy serwer
opkg updateModyfikujemy plik konfiguracyjny
opkg install lighttpd
#/etc/lighttpd/lighttpd.confStartujemy serwer i sprawdzamy czy działa
server.document-root = "/www"
/etc/init.d/lighttpd startNastępnie stopujemy serwer WWW
/etc/init.d/lighttpd stop
2. Instalacja i konfiguracja php
Instalujemy php i moduł do lighttpd
opkg updateAby interpreter php pracował poprawnie w pliku konfiguracyjnym /etc/php.ini zmienna doc_root powinna być skonfigurowana identycznie jak zmienna server.document-root w konfiguracji lighttpd
opkg install lighttpd-mod-cgi
opkg install php5-cgi
#/etc/php.iniKonfiguracja lighttpd
doc_root = "/www"
#/etc/lighttpd/lighttpd.confTworzymy plik php i sprawdzamy czy działa
server.modules = (
...
"mod_cgi",
...
)
cgi.assign = ( ".php" => "/usr/bin/php-cgi" )
index-file.names = ( "index.html", "default.html", "index.htm", "default.htm", "index.php")
echo "<#? PHP phpinfo(); ?#>" >> /www/index.php# - usuń to - blogger parsuje kod
Aby interpretować skrypty sh dodajemy:
cgi.assign = ( ".sh" => "/bin/sh" )
3. Włączenie https w lighttpd
Instalujemy openssl i generujemy certyfikat typu self-sign
opkg update
opkg install openssl-util
cd /etc/lighttpd/
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
chown root:root server.pem
chmod 400 server.pem
Włączenie SSL można wykonać ją na 2 sposoby:
a. Za pomocą poniższej konfiguracji lighthttp przełączy się w tryb SSL-only, oznacza to, że będzie nasłuchiwał tylko i wyłącznie na porcie 443.
#/etc/lighttpd/lighttpd.conf
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/server.pem"
W dokumentacji jest napisane, ze prawdopodobnie trzeba będzie również zmienić server.port na 443, nic podobnego, w OpenWRT (lighttpd/1.4.28 (ssl)) serwer automatycznie zabindował się do portu 443
b. Aby włączyć SSL obok normalnego HTTP czyli równolegle serwować tą samą stronę po http i https, należy dodać socket do konfiga.
$SERVER["socket"] == ":443" {4. Autoryzacja w lighttpd
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/server.pem"
}
Instalacja modułu AUTH
opkg update
opkg install lighttpd-mod-auth
Włączamy moduł auth
#/etc/lighttpd/lighttpd.conf
server.modules = (
...
"mod_auth",
...
)
## debugging
# 0 for off, 1 for 'auth-ok' messages, 2 for verbose debugging
auth.debug = 2
# definiujemy metodę autoryzacji
auth.backend = "htdigest"
# wskazujemy plik z loginami i haslami
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd-htdigest.user"
#definiujemy gdzie obowiązuje autoryzacja: czyli katalog download, użytkownicy muszą zostać autoryzowani metodą digest, lecz zostaną wpuszczeni tylko ci, którzy należą do strefy "download area"
auth.require = ("/download/" =>
(
"method" => "digest",
"realm" => "download area",
"require" => "valid-user"
)
)
Tworzymy prosty skrypt dodający użytkowników do pliku o nazwie htdigest.sh
#!/bin/sh5. Redirect z http na https
user=$1
realm=$2
pass=$3
hash=`echo -n "$user:$realm:$pass" | md5sum | cut -b -32`
echo "$user:$realm:$hash"
#nadajemy prawa do wykonywania
chmod 755 htdigest.sh
#przykład użycia:
#./htdigest.sh[space]'login'[space]'realm'[space]'password'
./htdigest.sh 'piotr' 'download area' 'password' >>/etc/lighttpd/lighttpd-htdigest.user
Instalacja modu REDIRECT
opkg updateWłączamy moduł redirect i ustawiamy, aby podczas próby wejścia do katalogu download nastąpiło przekierowanie na ten sam adres lecz po protokole https
opkg install lighttpd-mod-redirect
#/etc/lighttpd/lighttpd.conf
server.modules = (
...
"mod_redirect",
...
)
#poniższy kod sprawi, że zostaniemy przekierowani z adresu http://serwerip/download/ na https://serwerip/download/
$SERVER["socket"] == ":80" {
$HTTP["url"] =~ "^/download/*" {
$HTTP["host"] =~ "(.*)" {
url.redirect = ( "^/(.*)" => "https://%1/$1" )
}
}
}
Jeśli chcemy przekierować wszystko z portu 80 na 443
$SERVER["socket"] == ":80" {
$HTTP["host"] =~ "(.*)" {
url.redirect = ( "^/(.*)" => "https://%1/$1" )
}
}
6. Firewall
Na koniec wypuszczenie serwera w eter, odblokowanie portu 443 lub/i 80 na firewallu na interfejsie WAN
#/etc/config/firewall
config rule
option src wan
option proto tcp
option dest_port 443
option target ACCEPT
config rule
option src wan
option proto tcp
option dest_port 80
option target ACCEPT
/etc/init.d/firewall restart
7. Literatura
http://eko.one.pl/?p=openwrt-php
http://eko.one.pl/?p=openwrt-http
http://redmine.lighttpd.net/wiki/lighttpd/Docs:SSL
http://redmine.lighttpd.net/wiki/lighttpd/HowToSimpleSSL
http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModAuth
http://redmine.lighttpd.net/wiki/lighttpd/HowToAuthenticationFromMultipleFiles
https://wiki.archlinux.org/index.php/Lighttpd_for_SSL_and_non-SSL
http://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectHttpToHttps
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectWww
Subskrybuj:
Posty (Atom)









