После того, как я настроил pppd для доступа извне офиса к локальной
сети и интернет, мне захотелось большего:
* ограничить время работы удалённых юзеров (ибо их много, а
модемов мало)
* разграничить доступ к ресурсам сети (кого-то пускать везде,
кого-то только к прокси-серверу..)
Итак, чем я пользовался:
* mgetty 1.1.28-9
* ppp 2.4.1-3
* mysql 3.23.49-3
* mysql-server-3.23.49-3
Разграничение доступа к сети firewall'ом
1. Скрипт для создания dial-in юзеров выглядит так:
------------------------------------------
#!/bin/sh
name=$1
if [ -z $name ]
then
echo Username??
exit
fi
if [ $name == " *"]
then
echo Username??
exit
fi
echo Add user "$name"
cmd="/usr/sbin/useradd -c "Dial-in 2 $name" -d /dev/null -g dial-in-users -M -s /bin/false $name"
echo $cmd
/usr/sbin/useradd -c "Dial-in 2 $name" -d /dev/null -g dial-in-users -M -s /bin/false $name
if [ $? -eq 0 ]
then
echo Add pap-secrets entry..
echo $name $HOSTNAME "" * >> /etc/ppp/pap-secrets
addscript="INSERT INTO users VALUES ( '$name', '3600');"
echo Add time-limit..
mysql -B -s -h localhost -e "$addscript" dial_in
echo Set passwd user "$name"
passwd $name
fi
------------------------------------------
Группа dial-in-users должна существовать!
2. /etc/ppp/ip-up.local
При подъёме ppp+ интерфейса выполняется настройка firewall и
дополнительная проверка:
Подразумевается, что firewall наш на базе iptables, и что последнее
правило в цепочках INPUT и FORWARD (policy DROP) изменению не подлежит
(у меня там LOG).
LAN_IP - IP-адрес, к которому даём полный доступ
WINS1,WINS2 - WINS-сервера в локальной сети
------------------------------------------
#!/bin/sh
mydirname="/etc/ppp/dial-in"
# Setup firewall rulezz 2 new PPP link
PEERNAME=$1
IFNAME=$2
export IFNAME
LAN_IP=192.168.10.202
WINS1=192.168.10.200
WINS2=192.168.10.201
# Сначала грохнем старые правила
# Наоборот сортированный список N правил, которые надобно грохнуть
inp=`iptables -L INPUT -n -v --line-number|grep $IFNAME|awk '{print $1}'|sort -n -r`
for i in $inp
do
echo $i
iptables -D INPUT $i
done
inp=`iptables -L FORWARD -n -v --line-number|grep $IFNAME|awk '{print $1}'|sort -n -r`
for i in $inp
do
echo $i
iptables -D FORWARD $i
done
/etc/ppp/dial-in/statistika
------------------------------------------
#!/bin/sh
#mysql_user=" -u nobody "
script1="select * from current_sessions"
#script2="select * from done_sessions"
script2="select peername,count(id),sum(length_session) from done_sessions group by peername"
echo Current sessions
mysql -B -h localhost $mysql_user -e "$script1" dial_in
echo Done sessions
mysql -B -h localhost $mysql_user -e "$script2" dial_in
------------------------------------------
Доступ к базе либо от root (дополнительных настроек не потребуется),
либо от простого юзера (раскомментируем строчки с mysql_user,
настраиваем права доступа)
1132 Прочтений • [Настройка dial-in сервера под Red Hat linux (dial-in redhat linux ppp billing statistic limit mgetty mysql)] [08.05.2012] [Комментариев: 0]