1 (edytowany przez oneiro 2016-04-22 11:44:27)

Temat: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Witam,

Normlanie otwieram port poprzez knockd, który uruchamia odpowiedni skrypt, ale w mojej pracy nie mogę zapukać (prawdopodobnie knock.exe jest zablokowany na wysyłanie danych w sieć).

Wobec tego chciałbym utworzyć prostą stronę www z guzikiem, który będzie uruchamiał skrypt z knockd. Czy mogę prosić o pomoc.

Dodam, że port otwiera się tylko na pukający IP na określony czas, wobec tego rozwiązanie powinno być na tyle inteligentne, aby udało się odczytać adres IP z którego loguję się do routera (do www).

Ewentualnie jak obejść problem.

Pozdrawiam, Krzysiek

2

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Napisz kawałek php'a tworzacy plik /tmp/costam i wrzucajacy do niego adres ktory php pobral, potem w cronie if adres to X.X.X.X iptables... Albo prosto z php'a to samo:)

3

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Może inaczej, teorie (chyba znam).

1. Miej uruchomioną usługę PHP oraz WWW - MAM
2. Utwórz skrypt bash przyjmujący parametry - MAM
3. Zrób stronę www/php - NIE MAM

Właśnie rozchodzi się i www/php - jestem kompletnie zielony w tych sprawach.

4

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Jak chcesz to Ci skrobnę wieczorem, tylko z pracy wrócę:)

5

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Byłbym wdzięczny

6 (edytowany przez Przmus 2016-04-22 13:14:15)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Nie wiem dokładnie o jaki skrypt chodzi, ale można zrobić coś w stylu: skrypt.sh > /tmp/jakisplik.txt i potem odczytać plik, lub np:

$costam = shell_exec("/sciezka/do/skryptu.sh");
echo $costam;

Jeśli skrypt w jakiś inny sposób się uruchamia i loguje do .txt, to:

$blablabla = file_get_contents('/tmp/jakisplik.txt');
echo $blablabla;

Trzeba pamiętać o tagach ?php, nie mogłem tutaj dodać do "code" bo wyskakiwał błąd 403.

7 (edytowany przez g0f3r 2016-04-22 13:25:01)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Dokładnie, plus sprawdzanie IP;
if ($_SERVER['REMOTE_ADDR'] == '1.1.1.1');
{
$costam = shell_exec('iptables -A INPUT -p tcp/udp --dport PORT -j ACCEPT');
echo $costam;
}

8 (edytowany przez oneiro 2016-04-22 13:42:49)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Moje obecne rozwiązanie (knockd) jest takie, że w pliku /etc/knockd.con po wystukaniu odpowiedniej sekwencji uruchamia się skrypt, kod odpowiedzialny za to:

/opensshport %IP%

Adres IP mam niejako "gratis", samo knockd je podaje.

Kod skryptu /opensshport to polecania IPTABLES plus zapisanie adresu IP do pliku

#!/bin/sh
iptables -I INPUT -p tcp  -i pppoe-wan --dport 22 -s $1 -j ACCEPT
echo $1>/ip
exit 0

Później na podstawie adresu w pliki /ip  uruchamiam inne skrypy w putty, które dają mi dostęp np. VPN.
Oczywiście mam jeszcze 2-gi skrypt zamykający porty uruchamiany też przez knockd po określonym czasie po uruchomieniu otwarcia portu.

Chodzi o to, że adres IP z którego wbijam się do routera nie jest stały.

9 (edytowany przez g0f3r 2016-04-22 13:51:13)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Czyli nadal chcesz korzystac z knockd tylko podmieniac mu %IP% na ten z którego stukniesz do skryptu php?
Bo nie bardzo rozumiem o co chodzi, knockd.exe nie działa bo pewnie masz zablokowane X,Y porty - także skorzystaj z tego kawałka PHP zamiast knocka smile Można oczywiście dodać zamykanie po drugim uruchomieniu skryptu czy inaczej.

"wobec tego rozwiązanie powinno być na tyle inteligentne, aby udało się odczytać adres IP z którego loguję się do routera (do www). "

Php + hasło a dalej pobierasz IP ze zmiennej  $_SERVER['REMOTE_ADDR']

10 (edytowany przez oneiro 2016-04-22 14:20:48)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

To od początku.

1. Teraz działa na routerze usługa knockd i jestem zadowolony z jego działania
2. Program, który wysyła pakiety (tzw. puka do routera) pod OS Widnows nazywa się knock.exe (pod *inux knock)
3. W pracy program knock.exe nie działa. Prawdopodobnie jest zablokowany na wysyłanie danych (jakieś reguły domenowe windowsa blokują to ewentualnie firewall - nie mam jak tego sprawdzić)
4. O dziwo w pracy działa putty, może dlatego, że uderzam na port 22? (wiem, bo jak permanentnie otworzę port na świat to loguję się w pracy do routera)
5. Aby wbić się router muszę otworzyć port na routerze
6. Stąd pomysł, aby wywołać (nowy?) skrypt SH poprzez stronę www, odpowiedzialny za otwarcie portu (i jego zamknięcie po zadanym czasie)
7. Skrypt SH mogę napisać/zmodyfikować pod siebie jak chcę (coś tam ogarniam smile )
8. Strony www/php nie zbuduje, bo nie mam żadnego doświadczenia, stąd prośba o kod źródłowy pliku strona.html lub strona.php, który umieszczę w katalogu root-www

PROFIT - mam dostęp do routera via SSH w pracy zachowując funkcjonalność otwierania portów na życzenie (poprzez przycisk na stornie www).

11

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

config 'uhttpd'
        option 'listen_http' '0.0.0.0:80'
        option 'home' '/www'
        option 'index_page' 'index.sh'
        list interpreter        ".sh=/bin/sh"

A plik /www/index.sh to

#!/bin/sh
echo "Content-type: text/html"
echo ""
knock -coś tam
exit 0

Wszystko na routerze. I gotowe...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12 (edytowany przez oneiro 2016-04-22 14:26:11)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Ok, prawdopodobnie zadziała, ale częściowo, bo skąd knock będzie wiedziało, skąd uderzam (jakie adres IP)?
Zauważ, że otwieram port tylko dla wskazanego adresu IP (czyli z którego uruchamiam przeglądarkę www - w moim przypadku adres IP zewnętrznego pracodawcy).

13

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

W zmiennych środowiskowych masz ip klienta który wywołał skrypt, więc możesz do odczytać. Zrób env zamiast knock i zobaczysz zmienne na stronie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Skro tak jest to w domu powalczę, dam znać....

15 (edytowany przez oneiro 2016-04-22 18:28:27)

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

@Cezary,

Generalnie działa, ale chciałbym po pewnym czasie zamkną połączenie, a poniższe powoduje, że strona www "kreci się" czekając na zakończenie.

kod otwierający port
sleep 60
kod zamykający port 

Jakoś nie mam pomysłu na zakończanie tego.
A da się zrobić tak, aby pytało o login/hasło przed wejściem na stronę?


@g0f3r 
Jakbyś miał chęć, to chętnie zobaczę Twoje rozwiązanie

16

Odp: Przycisk uruchamaiający skrypt, który dodatkowo odczyta IP

Raczej zrób sobie dwie oddzielne strony.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.