Pentru a realiza o autentificare pe baza de utilizator si parola pentru proxy-ul vostru, puteti folosi programul de mai jos.
Datele de autentificare sunt tinute intr-o baza de date mysql.
Programul este realizat in C.
Tot ce trebuie sa modificati este hostul la care se conecteaza (cel pe care ruleaza serverul de mysql), numele bazei de date, userul si parola pentru conectare la baza de date. Userul respectiv trebuie sa aiba cel putin drept de select in tabelul respectiv.
Inainte de a utiliza programul trebuie sa va creati baza de date si/sau tabelul respectiv in aceasta.
1. Creati baza de date dorita, daca nu doriti sa utilizati una deja existenta:
CREATE DATABASE authproxy;
2. Creati tabelul in care se vor tine useri si parolele care se pot autentifica la proxy:
USE authproxy;
CREATE TABLE autentificare (
squid_utilizator VARCHAR(15) NOT NULL PRIMARY KEY,
squid_parola VARCHAR(15) NOT NULL
);
Este necesar sa pastrati denumirea tabelului si a campurilor squid_utilizator si squid_parola.
3. Inserati in tabelul respectiv o inregistrare de test:
INSERT INTO squid_users (squid_utilizator,squid_parola) VALUES (‘usertest’,’parola’);
4. Copiati programul urmator intr-un fisier cu numele proxyauth.c
#include <stdio.h>
#include <string.h>
#include <mysql.h>
MYSQL *conexiune, mysql;
MYSQL_RES *rezultat;
MYSQL_ROW linie;
/* – Modifica aici – */
char host[256]="localhost";
char numedb[256]="squid";
char userdb[256]="squid";
char paroladb[256]="squid";
/* – Nu modifica nimic mai jos de aceasta linie – */
int main(int argc, char **argv)
{
char buf[256], *utilizator, *parola, *p, interogare[200], my_buf_utilizator[100], my_buf_parola[100];
int state;
setbuf(stdout, NULL);
while (fgets(buf, 256, stdin) != NULL) {
if ((p = strchr(buf, ‘\n’)) != NULL)
*p = ‘\0’; /* strip \n */
if ((utilizator = strtok(buf, " ")) == NULL) {
printf("Eroare\n");
continue;
}
if ((parola = strtok(NULL, "")) == NULL) {
printf("Eroare\n");
continue;
}
mysql_init(&mysql);
conexiune = mysql_real_connect(&mysql, host, userdb, paroladb,numedb, 0, 0, 0);
(void) mysql_escape_string (my_buf_utilizator, utilizator, strlen (utilizator));
(void) mysql_escape_string (my_buf_parola, parola, strlen (parola));
sprintf (interogare, "SELECT squid_utilizator FROM autentificare WHERE (squid_utilizator = ‘%s’ && squid_parola = ‘%s’)", my_buf_utilizator, my_buf_parola);
state = mysql_query(conexiune, interogare);
rezultat = mysql_store_result(conexiune);
linie = mysql_fetch_row(rezultat);
if (linie) {
(void) printf("OK\n");
} else {
(void) printf("Eroare\n");
}
mysql_close(conexiune);
}
return 0;
}
5. Modificati
char host[256]="localhost";
char numedb[256]="authproxy";
char userdb[256]="squid";
char paroladb[256]="squid";
cu datele voastre, pentru a va putea conecta la baza de date.
6. Compialti fisierul:
gcc proxyauth.c -o proxyauth -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient
avand grija sa puneti caile corect, asa cum sunt ele in sistemul vostru.
7. Puneti in fisierul de configurare squid.conf urmatoarea linie:
auth_param basic program /calea/spre/executabilul/proxyauth
bineinteles cu calea corecta din sistemul vostru.
8. Restartati proxy-ul. (Reload nu este suficient)
Daca totul este in regula, atunci ar trebui sa apara in browser o fereastra ca si cea din figura de mai jos, in care trebuie sa introduceti userul si parola, in cazul nostru user: usertest si parola: parola
Atentie: In baza de date, parola se tine in clar!
Articole asemanatoare:
- Au apărut
- FreeBSD–Server FTP cu SSL/TLS si utilizatori virtuali
- ZTE ZXR 10 2609
- Importanta cheilor primare in tabele MySql
- Logare mesaje server DHCP în baza de date MySQL
- Instalare Apache, PHP si MySQL pe Fedora Core
- Primii pasi in lumea FreeBSD-ului
- MySQL – schimbarea parolei uitate pentru root
- Atenționare automată prin apel vocal
- FreeBSD – server PPPoE – MPD5 + freeRADIUS