Toon posts:

[RH 7.2] Inlog script

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een scriptje gemaakt om bepaalde IP's geen toegang meer te geven tot internet.
Dit wouden mijn ouders om mijn broertje of te sluiten van internet. (Speelde te veel games online). Tussen bepaalde tijden mag hij wel internetten. Maar dat is simple met crontab te fixen.
Maar nu wil ik dat mijn pa dat script ook kan runnen.
Kan natuurlijk heel simpel door een account aan te maken en hem rechten voor dat script te geven maar wat ik eigenlijk wil is dit:

Je maakt via ssh verbinding en daar vraagt die om je gebruikersnaam & wachtwoord. Vervolgens wil ik dat die om 2 dingen vraagt. Het IP en of het geblockt moet worden of de block moet op heffen.
Als daar antwoord is op gegevens dan voert die dat script uit en disconnect die meteen.

Kan dit? En zo ja: Hoe ?
al vast bedankt

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 08:09
Kan volgens mij redelijk makkelijk.

Ik weet niet hoe je de toegang tot internet blokkeert voor de andere mensen.

Stel je voegt een niet-bestaande route toe:
code:
1
route add <blocked-ip> gw <niet-bestaand ip adres in je netwerk>

Je kunt met bash simpel dingen opvragen dacht ik mbv read.
Was iets als "read ipadres". Dan zet hij de invoer van de gebruiker in de environmentvariabele ipadres.

Verder vraag of daarna of hij geblokt moet worden of vrijgegeven. Indien geblokt:
code:
1
route add ...

indien je de blokkade wilt opheffen gebruik je:
code:
1
route del ...

Dit kun je dus allemaal in een simpel bash-scriptje zetten. Dan voeg je een extra account toe en die geef je als shell dit gemaakt bash-scriptje....

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


Verwijderd

Topicstarter
Dit is het script dat ik gemaakt heb.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#/bin/sh

ARG=$1
IP=$2

case $ARG in
      block)
            if test $IP -eq 2
            then
            echo DACHT HET NIET HE !!!
            else

            iptables -I FORWARD -s 192.168.0.$IP -j DROP
            echo Het IP 192.168.0.$IP  heeft geen internet toegang meer
            fi
            ;;
      unblock)
            iptables -D FORWARD -s 192.168.0.$IP -j DROP
            echo Het IP 192.168.0.$IP heeft weer internet toegang
            ;;
      -S)
            iptables -L
            ;;
      -s)     iptables -L
            ;;
      *)    echo "Syntax: ./ipblock [<block>/<unblock>] [Last nummer of IP]"
            echo "Type: ./ipblock -S  to see all the chain rules"
esac

werkt dus zo

syntax staat er in :)
Dit kun je dus allemaal in een simpel bash-scriptje zetten. Dan voeg je een extra account toe en die geef je als shell dit gemaakt bash-scriptje....
Script had ik al zoals in mijn 1ste post stond.
Maar hoe werkt het dan met die argumenten die ik mee geef?
Script zelf laat alleen de syntax zien als er geen argument mee worden gegeven.

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 08:09
Met het commando read kun je invoer aan de gebruiker vrager en die in een environment variabele zetten.

Krijg je dus iets als:
Geef IP-adres:
Blokken of niet:

Hierbij moet de gebruiker dus invoer invullen....

met "read foo" lees je dus 1 regel van de invoer van de gebruiker in de environmentvariabele $foo.

Kijk verder even in man read

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


  • MikeN
  • Registratie: April 2001
  • Laatst online: 08:28
Je kan dus een apart shell-scriptje maken waarin je read gebruikt, daarin laat je ip/block enz. inlezen en vervolgens laat je dat andere script uitvoeren.

Vervolgens stel je dit in als shell van de user. Moet lukken. Maar dan moet de user die het uitvoert volgens mij wel superuser rechten hebben. Anders mag je niet in je firewall klooien.

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 08:09
Op zondag 31 maart 2002 12:51 schreef MikeN het volgende:
Maar dan moet de user die het uitvoert volgens mij wel superuser rechten hebben. Anders mag je niet in je firewall klooien.
Hoeft niet helemaal, is ook nog iets van sudo. Hiermee kon je dacht ik als superuser bepaalde users rechten geven om bepaalde dingen te doen....

Wat je ook zou kunnen doen (is misschien niet helemaal veilig) is het scriptje setuid root te zetten, dan draait het scriptje altijd met rootrechten (maar denk niet dat dit de meest veilige oplossing is...)

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker

Pagina: 1