>
>Как можно не допустить подмену IP адреса на чужой машине? Раньше эта
>проблема решалась с помощью жёсткой привязки мас-адреса к ip адресу через
>arp -s, но теперь встретился с фактом, что можно на некоторых
>картах прямо в их настройках вручную изменять MAC. Можно ли как-либо
>ещё что-то сделать, чтобы избежать такого проникновения? Я сделал так:
Для пользователей под маскарадингом все просто -
1. Открывается аккаунт, пользователю шеллом ставится intmasq (см ниже)
2. Скрипт billmas в кроне на одну минуту по циклу
3. Каталог юзверя содержит:
intmasq
userdata
flag
----------
intmasq:
#! /usr/bin/perl -w
#programma START/STOP Inet
open (flags1,"/home/user/flag.txt");
$usl = <flags1>;
if ($usl == 1){
print "Inet DOWN";
open(flags1,">/home/user/flag.txt"); #esli flag=1 to NET vkluchen - otkluchaem
print flags1 0,"\n"; #sbrasivaem flag
close(flags1);
open (userfile1,"> /home/user/userdata"); #ustanavlivaem flag dla billmas.pl
print userfile1 0 , "\n"; #otrubaem NET
close userfile1;
}
else{
print "Inet UP";
open(flags1,">/home/user/flag.txt"); #NET vikluchen - vkluchaem
print flags1 1,"\n"; #ustanavlivaem flag
close(flags1);
open (userfile1,"> /home/user/userdata");
print userfile1 1 , "\n";
close userfile1;
}
-------------
billmas:
#! /usr/bin/perl -w
# Eta programma vipolnaetsa pod ROOT i vkl/vikl cepochki IPCHAINS
# po zapusku skriptov START/STOP v katalogah polzovatelej
# Etot variant TOLKO DLA MASKARADINGA!
system ("ipchains -L forward -n -v > /internet/forward.txt");
open (datafile1, "/internet/forward.txt") || die "Fuck off!!!";
OUTER:
system ("/sbin/ipchains -L output -n -v > /internet/chains.txt");
open (userfile4, "/home/user/userdata") || die;
$data = <userfile4>;
close (userfile4);
if ($data==1) { #
while (defined ($line = <datafile1>))
{
chomp $line;
#ichem sovpadenie
if ($line =~ /\b192.168.1.2\b/) {
print "inet UP - not duble";
goto dfg56rtmetka;
};
}
open (userfile1, ">> /internet/userstat") || die; #
print userfile1 "----------" , "\n" ; #
close (userfile1); #
system ("date >> /internet/userstat"); #pishem datu vhoda v Inet
system ("/bin/grep 192.168.1.2 /internet/chains.txt > /internet/statuser/user/tmp.grp");
open (traf1, "/internet/statuser/user/tmp.grp") || die; #blok zapisi statistiki START
$line=<traf1>;
close(traf1);
open (userfile1, ">> /internet/userstat") || die; #
print userfile1 $line; #
close (userfile1); #
open (userfile2, "> /home/user/userdata") || die; #
print userfile2 2 , "\n" ; #pishem flag "NOP"
close (userfile2); #
system ("/sbin/ipchains -A forward -i eth0 -s 192.168.1.2 -j MASQ") #razreshaem MASQ
};
if ($data==0) { #flag vihoda iz Inet
system ("/bin/grep 192.168.1.2 /internet/chains.txt > /internet/statuser/user/tmp.grp");
open (traf1, "/internet/statuser/user/tmp.grp") || die; #blok zapisi statistiki START
$line=<traf1>;
close(traf1);
open (userfile1, ">> /internet/userstat") || die; #
print userfile1 $line; #
close (userfile1); #
system ("date >> /internet/userstat"); #
open (userfile3, "> /home/user/userdata") || die; #
print userfile3 2 , "\n" ; #
close (userfile3); #
system ("/sbin/ipchains -D forward -i eth0 -s 192.168.1.2 -j MASQ") #zaprechaem MASQ
};
#------------------------------------------------------------------------------
Авторизация юзеров по SSH , не коннектясь на сервер лазят только внутри локалки...
Скрипты написаны коряво конечно, но программер я хреновый...