Serwer UNIX na systemie iOS ( iPad / iPhone / iPod Touch )

Serwer na urządzieniach Apple z systemem iOS:
Autor: Jacek Wącior
Date: 2013.06.01
0. Sprawdzenie ustawień sieciowych i zapisanie adresu IP urządzenia:
-> Ustawienia -> Ogólne -> Sieć -> Wi-Fi -> wybieramy nazwę sieci i klikamy na niebieskie kółko z prawej strony
	W zakładce DCHP mamy napisany Adres IP, który został przydzielony. Jeśli chcemy żeby nasz adres IP był zawsze taki sam to:
a) możemy go dopisać do tablicy DHCPd na routerze, przypisując adres MAC urządzenia do określonego IP
b) ustawić statycznie adres IP, maskę podsieci , router, DNS itp. Wartości te możemy sprawdzić, sprawdzając w zakładce DHCP jakie zostały przydzielone i wpisując je ręcznie, lub sprawdzając za pomocą komputera który jest w tej samej sieci, za pomocą komendy ipconfig /all
	Dynamiczny wewnętrzny adres IP może być dokuczliwy, ponieważ jeśli chcemy wyprowadzić adres IP jako zewnętrzny poprzez ustawienie DMZ, to wtedy musimy ciągle aktualizować nowy wewnętrzny adres IP na routerze. 
1. Cydia
	Przy pierwszym uruchomieniu aplikacji Cydia, upewnijmy się, że zaznaczona została opcja „Who are you?” -  DEVELOPER. Jeśli niechcący zaznaczyliśmy nieprawidłowo inną opcje, możemy to zmienić wybierając opcje Manage → Settings → Developer. Zatwierdzamy nasz wybór przyciskiem DONE.
	Aktualizujemy wszystkie źródła i aplikacje na najnowsze. Po uruchomieniu Cydii czekamy, aż na górze skończy się "Downloading Packages" i wybieramy Complete Upgrade,a następnie Reboot Device. Jeśli występują jakiekolwiek problemy, upewnijmy się, że data i czas zostały ustawione prawidłowo → Ustawienia → Ogólne → Data i Czas – koniecznie muszą być wpisane aktaulne wartości.
	Pierwszą aplikacją, którą zainstalujemy będzie Insomnia PRO – bez tej aplikacji nasze połączenie z urządzeniem będzie przerywane gdy tylko urządzenie przejdzie w tryb uśpienia. Wybieray opcje Search i w górnym pasku wpisujemy „Insomnia PRO”. Aplikacja przez 7 dni jest darmowa, także po upłynięciu okresu próbnego warto wykupić ja na czas nielimitowany.
Po zainstalowaniu aplikacji, wybieramy na głównym ekranie „Insomnia Pro” i klikamy ON.
2. Veency - Zdalne sterowanie pulpitem
	Cała magia sterowania urządzeniem na systemie iOS odbędzie się, dzięki wykorzystaniu protokołu VNC (port 5900). W Cydii wybieramy Search → „Veency” → Install → Confirm. 
	Konfiguracja Veency nie jest skomplikowana. W głownym menu wybieramy 
Ustawienia → Veency. Zaznaczamy opcje Enabled oraz Show Cursor. W polu Password wpisujemy hasło, które będzie wymagane przy zdalnym połaczeniu z urządzeniem. Jeśli nie wpiszemy żadnego hasła, wtedy przy każdym polączeniu z urządzeniem będziemy musieli ręcznie zaakceptować przychodzące połączenie.
*) Utworzenie połączenia przez kabel USB (bez użycia Wifi)
Tworzymy tunnel USB, w przypadku Windows najlepsza aplikacja dzieki ktorej mozna utworzyć tunnel to iFunBox (w opcjach Advanced -> USB TUNNEL).
W przypadku MacOS jeszcze nie znalazłem dobrego rozwiązania.
a) Zdalne połączenie z systemu Windows
Użyjemy aplikacji TightVNC (  http://www.tightvnc.com/ ). 
-Po uruchomieniu aplikacji, w TightVNC Server wpisujemy adres IP urządzenia (podpunkt 0) (w przypadku połaczenia przez usb tunnel - 127.0.0.1 : 5900)
-Zatwierdzamy nasz adres IP wybierając opcje Connect. Wpisujemy hasło i naciskamy OK.
b) Zdalne połączenie z systemu MacOS
Użyjemy aplikacji „Chicken of the VNC” (  http://sourceforge.net/projects/cotvnc )
(w przypadku połaczenia przez usb tunnel - 127.0.0.1 : 5900)
-W polu host wpisujemy adres IP urządzenia (podpunkt 0) 
-Password – wpisujemy ustawione przez nas hasło. Zatwierdzamy klikając Connect
c) Zdalne połączenie z innego urządzenia na systemie iOS
Użyjemy aplikacji „VNC Viewer” - dostępna na AppStore.
-Wybieramy znaczek [+] w prawym górnym rogu i wpisujemy:
	Address – wpisujemy adres IP naszego urządzenia (podpunkt 0)
	Name – wpisujemy nazwe pod która chcemy zapisać nasze połączenie
-Zatwierdzamy przyciskiem Save, a następnie wybieramy Connect.
-Odznaczamy „Warn me every time” i wybieramy opcje Connect. 
-Wpisujemy hasło i zaznaczamy „Remember Password” i klikamy Done. 
-Wybieramy Mouse Control i ponownie zatwierdzamy Done.
3. SSH (Secure Shell)
Aby zainstalować obsługę protokołu SSH (port 22), uruchamiamy Cydia, a następnie  
-> Search -> OpenSSH. W prawym górnym rogu wybieramy Install i Confirm.
Po zakończeniu instalacji, możemy połączyc się zdalnie z naszym urządzeniem.
A) Aplikacja SSH dla systemu Windows
Użyjemy aplikacji: Putty
-Hostname: wpisujemy adres IP (podpunkt 0)
-Port:22
-Saved sessions: wpisujemy nazwe wg naszego uznania
-Klikamy Save
-Klikamy Open
Czekamy około 60 sekund, gdy pojawi się komunikat Putty Security Alert, naciskamy Tak/Yes. Gdy juz połączymy się z urządzeniem wpisujemy:
Login as: root
Password: alpine
B) Aplikacja SSH dla systemu MacOS:
Użyjemy aplikacji zintegorwanej z systemem -  Terminal oraz SSH.
-Uruchamiamy Terminal, a następnie wpisujemy „ssh adres_IP -l root” 
 (-l to parametr od login). Czekamy około 60 sekund.
-Zatwierdzamy – YES, a następnie wpisujemy password: alpine
C) Aplikacja SSH dla urządzenia na systemie iOS:
Z Cydii zrzucamy aplikacje o nazwie: MobileTerminal (->Search->MobileTerminal)
-Uruchamiamy aplikacje Mobile Terminal i wpisujemy komendę: „ssh adres_IP -l root”.
-Zatwierdzamy – YES, a następnie wpisujemy password: alpine (domyślne haslo jest zawsze alpine)
Po połączeniu z urządzeniem, koniecznie musimy zmienić hasło na użytkownika root (administratora), tak aby nikt niepowołany nie mógł zmieniać ustawień naszego serwera.
Wpisujemy komendę „passwd root”, a następnie dwa razy wpisujemy hasło.
4. Zainstalowanie podstawowych komend systemu UNIX: ( serwer apt.saurik.com)
Aby zainstalować podstawowe komendy systemu UNIX, uruchamiamy Cydie, wybieramy zakadke Manage-> Sources->  Cydia/Teleshporeo ( http://apt.saurik.com/) 
Wyszukujemy poniższe Packages, dzięki którym poszerzymy nasz system o dodatkowe komendy i aplikacje.
-apt 0.7 strict – między innymi uzyskami komende apt-get
-adv-cmds - komendy: finger, fingerd, last, lscfs, md, ps
-basic-cmds - msg, uudecode, uuencode, write
-diskdev-cmds - mount, quota, fsck , fastyp, fdisk, tunerfs (podstawowe komendy odnoszace sie do czynnosci zwiazanych z plikami i zarzadzaniem dyskiem ) - domyślnie zainstalowane
-file-cmds - komendy : chflags, compress, ipcrm, ipcs , pax
-network-cmds - podstawowe komendy sieciowe: arp, ifconfig, netstat, route, traceroute
-shell-cmds - killall , mktemp, renice, time , which - domyślnie zainstalowane
-system-cmds - iostat, login , passwd, sync , sysctl - domyślnie zainstalowane
-inetutils - ftp, inetd, ping, rlogin, telnet, tftp
-screen - aplikacja dzieki ktorej mozemy uruchomić apikacje/proces w tle 
-Midnight Commander  Norton Commander pod UNIX
-ed - standardowy edytor tekstu
-top – sprawdzanie wolnej pamięci oraz uruchomionych procesów
-whois - sprawdzanie domen
-unrar – umożliwia rozpakowywanie plików typu RAR
-unzip – umożliwia rozpakowywanie plików typu ZIP
-wget – pobieranie plików z adresu FTP/WWW
5. Poruszanie sie po katalogach:
- cd , ls 
- mkdir - tworzenie katalogow , rmdir - usuwanie katalogow
- Uruchamiamy aplikacje Midnight Commander – komenda „mc” - znacznie nam ułatwi przemieszczanie się między katalogami i wyswietlanie plików
6. FTP - Instalacja serwera FTP – vsFTP,  oraz instalacja klienta FTP - ncftp 
A) Serwer FTP – vsFTP
Instalujemy – vsftpd (Manage-> Sources->  Cydia/Teleshporeo ( http://apt.saurik.com/) )
-Plik konfiguracyjny znajduje się w /etc/vsftpd.conf. 
-Tworzymy katalog : „mkdir /usr/share/empty”
-Wpisujemy komende „vsftpd /etc/vsftpd.conf , lub restartujemy urzadzenie, by automatycznie uruchomić serwer FTP.
-Jeśli chcemy zmienić wiadomość powitalna to w pliku vsftpd.conf ustawiamy:
	ftpd_banner=
-Jeśli chcemy mieć oddzielnych uzytkowników FTP, to musimy przejść do działu z dodawaniem kont shellowych.
-Dokladne parametry i ustawienia plikow vsftpd.conf znajdziemy w poniższym adresie:
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ftp-vsftpd-conf.html
-Zauwazylem ze jeśli mamy oddzielnie dodane konta shellowe i ustawimy inną powłokę niż /bin/sh to nie chce przyjąć wtedy użytkownika
B) Klient FTP – aplikacja ftp oraz ncftp
-Standardowa aplikacja w systemie UNIX – ftp
-Komenda „ftp adres_IP”
-Dodatkowa aplikacja, instalujemy - ncftp 
-Komenda: „ncftp adres_ftp -u uzytkownik -p haslo7. Instalacja serwera WWW - lighhtpd , oraz instalacja przegladarek tekstowych WWW – links oraz lynx
A) Serwer WWW – aplikacja lighttpd
-Instalujemy - lighttpd 
-Instalujemy - lighttpd settings
Po zainstalowaniu , przechodzimy do „Ustawienia -> lighttpd” i upewniamy się, że jest ustawione Enabled.
-Instalujemy dodatkowe pakiety:
apt-get install php
apt-get install ruby
apt-get install python
apt-get install perl
apt-get install sqlite3  
-Tworzymy dwa katalogi:
mkdir /var/www
mkdir /var/log/lighttpd
-Tworzymy plik /etc/lighttpd.conf z zawartoscia: 
server.document-root = "/var/www/"
server.port = 80 # Default
server.modules = ( "mod_cgi","mod_indexfile","mod_dirlisting", "mod_accesslog" )
server.tag = "iPhone lighttpd"
server.name = "localhost"
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.activate = "enable"
dir-listing.external-css = "/.dirlist/iphonedirlist.css"
accesslog.filename = "/var/log/lighttpd/access.log"
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.html", "index.htm", "index.php", "index.py", "index.pl", "index.cgi", "default.html", "/.dirlist/dir-generator.py" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py" )
cgi.assign = ( ".pl" => "/usr/bin/perl", ".py" => "/usr/bin/python", ".rb" => "/usr/bin/ruby", ".cgi" => "", ".sh" => "", ".php" => "/usr/bin/php-cgi" )
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
# default mime type
"" => "application/octet-stream",
)
-Uruchamiamy:  lighttpd -f /etc/lighttpd.conf
-By zatrzymac serwer, wpisujemy komende „killall lighttpd”, albo odznaczamy w ustawienia ->lighttpd
-Po restarcie urządzenia, serwer WWW sam się odpali.
-Głowna strona przechowywana jest w /var/www (chyba ze zmienimy to w ustawieniach lighttpd.conf - server.document-root = "/var/www/" ) 
-Jeśli chcemy zmienić podpis na dole na stronie, to zmieniamy wpis server.tag
B) Instalacja tekstowych przeglądarek WWW:
-Instalujemy - links
-Instalujemy - lynx
8. Serwer IRC – ngircd,  oraz klient IRC - BitchX oraz irssi
A) Serwer IRC - ngircd (nextGeneration IRC deamon)
-Instalujemy ngircd
-Po zainstalowaniu plik konfiguracyjny jest w /etc/ngircd.conf
-Ustawiamy Listen = 0.0.0.0
-Tworzymy katalog /var/run/ngircd/
B) Klient IRC – BitchX oraz irssi
-instalujemy BitchX
-Komenda: BitchX username ircserver
-instalujemy irssi 
-Komenda: irssi username ircserver
9. Aplikacje sieciowe - sniffery, skanery portow itp
-nmap – skanowanie otwartych portów
-My Traceroute - traceroute
-sniffit - przechwytuje pakiety
10. Dodawanie kont shellowych
-Zaczynamy od zrobienia kopii zapasowej poniższych plików:
/private/etc/group
/private/etc/passwd
/private/etc/master.passwd
-Wpisujemy komende:
fullname="RoyalBlue" "Your Full Name"
user="RoyalBlue" "username"
group=$user
uid=1000
gid=1000
home=/var/$user
echo "$group:*:$gid:$user" >> /private/etc/group
echo "$user::$uid:$gid::0:0:$fullname:$home:/bin/bash" >> /private/etc/master.passwd
passwd $user
mkdir $homea
chown $user:$group $home
11. Konfiguracja routera zeby urzadzenie bylo na zewnetrznym IP
DMZ - The DMZ(Demilitarized Zone) option provides you with an option to set a single computer on your network outside of the router. If you have a computer that cannot run Internet applications successfully from behind the router, then you can place the computer into the DMZ for unrestricted Internet access. 
ADVANCED->Firewall & DMZ → Enable DMZ Host  , DMZ IP Address : wpisujemy adres IP z urzadzenia iOS

Posted by jackvonthor