рд╕рд┐рд╕реНрдЯрдо рдХреА рддреИрдпрд╛рд░реА
aptitude update
aptitude install openssh-server mc mtr tracert nano tcpdump bind9 pppoe freeradius radiusclient1 rcconf php5
DNS рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк
рд╣рдо рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ
nano /etc/bind/named.conf.options
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
allow-transfer { none; };
allow-query { 10.128.0.0/16; localhost; }; //
allow-recursion { 10.128.0.0/16; localhost; }; //
version "My ISP DNS"; //
рдЖрдЗрдП рд╣рдорд╛рд░реЗ DNS рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЪреЗрд░реЛрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред DNS рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ - root-dns:
mkdir -p /root-dns/etc
mkdir /root-dns/dev
mkdir -p /root-dns/var/cache/bind
mkdir -p /root-dns/var/run/bind/run
/etc/init.d/bind9 stop
nano /etc/default/bind9
рд▓рд╛рдЗрди "рд╡рд┐рдХрд▓реНрдк =" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
OPTIONS="-u bind -t /root-dns"
mv /etc/bind /root-dns/etc
ln -s /root-dns/etc/bind /etc/bind
nano /etc/init.d/bind9
рд▓рд╛рдЗрди "рд╡рд┐рдХрд▓реНрдк =" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
OPTIONS="-u bind -t /root-dns"
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/init.d/rsyslogd
"RSYSLOGD_OPTIONS" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
RSYSLOGD_OPTIONS="-c3 -a /root-dns/dev/log"
рд╣рдо name.conf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрди рдФрд░ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВ:
chattr +i /root-dns/etc/bind/named.conf
рдиреЛрдЯред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ "i" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ (chattr -i ...)
mknod /root-dns/dev/null c 1 3
mknod /root-dns/dev/random c 1 8
chmod 666 /root-dns/dev/null /root-dns/dev/random
chown -R bind:bind /root-dns/var/*
chown -R bind:bind /root-dns/etc/bind
/etc/init.d/bind9 start
PPPoE рд╕рд░реНрд╡рд░
cd /tmp
apt-get build-dep pppoe
apt-get source pppoe
cd rp-pppoe-3.8/src
./configure
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano config.h
рдЕрдм рдмрд╕ рдмрдирд╛рдП рдЧрдП config.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
/* #undef HAVE_LINUX_KERNEL_PPPOE */
рд▓рд╛рдЗрди рдкрд░:
#define HAVE_LINUX_KERNEL_PPPOE 1
рд╣рдо рдмрд╛рд╣рд░ рд▓реЗ:
cd ..
./debian/rules PLUGIN_PATH=/usr/lib/pppd/2.4.4/rp-pppoe.so
./debian/rules binary
cd ..
dpkg -i pppoe_3.8-3_i386.deb
рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЛ рдлреНрд░реАрдЬ рдХрд░реЗрдВ:
echo pppoe hold | dpkg тАФset-selections
рдЕрдм рд╕реЗ, рдХрдо рд╕реЗ рдХрдо рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдПрдХ рдЕрджреНрдпрддрди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ pppoe рдХреЗ рд▓рд┐рдП рдЬреЛ рднреЗрджреНрдпрддрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдХреЛ рдирдП рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:
echo pppoe install | dpkg --set-selections
рдЕрдм рд╕рд┐рд╕реНрдЯрдо рдкрд░ PPPoE рд╕рд░реНрд╡рд░ рд╡рд╛рд▓рд╛ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ PPPoE рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрдорд╛рдВрдб рдореЗрдВ -k рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗрдВ: pppoe-server -I eth1 -L 192.168.0.1 -k
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pppoe-server-options
рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ:
logfile /var/log/pppoe.log
debug
mtu 1472
mru 1472
auth
require-pap
#require-chap
default-asyncmap
ktune
lcp-echo-interval 20
lcp-echo-failure 2
ms-dns 10.128.0.1
plugin radius.so
plugin radattr.so
10.128.0.1:
nobsdcomp
noccp
noendpoint
noipdefault
noipx
novj
receive-all
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/options
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рдЖрджрд┐ / ppp / рд╡рд┐рдХрд▓реНрдк рдореЗрдВ: рд╕рдм рдХреБрдЫ рдирд┐рдХрд╛рд▓реЗрдВ, рд╕реЗрдЯ рдХрд░реЗрдВ:
lock
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/init.d/pppoe-server
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/bash
# init file for rp-pppoe server
#
# description: PPPOE kernel mode server
#
# processname: pppoe-server
# chkconfig: - 45 45
# source function library
#. /etc/rc.status
case "$1" in
start)
echo -n "Starting PPPOE server: "
/usr/sbin/pppoe-server -I eth0 -L 10.128.0.1 -R 10.128.1.1 -k
# eth0 тАФ ,
#10.128.0.1 - IP PPPoE
#10.128.1.1 - IP
#touch /var/lock/subsys/pppoed
#rc_status -v
;;
stop)
echo -n "Shutting down PPPOE server: "
pkill pppoe-server
#rm -f /var/lock/subsys/pppoed
#rc_status -v
;;
restart)
$0 stop
$0 start
;;
status)
status pppoe-server
;;
*)
echo "Usage: pppoed {start|stop|restart|status}"
exit 1
esac
exit 0
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
rcconf
рдмрд╛рдБрдз рдЕрдХреНрд╖рдо рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╡рд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рд╕реВрдЪреА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рд╣рдорд╛рд░реЗ pppoe- рд╕рд░реНрд╡рд░ рд╣реИред рдЙрдирдореЗрдВ рдпрд╣ рдФрд░ рд╡рд╣ рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рдЖрдЙрдЯред
cd /root-dns/etc/bind
rndc-confgen -r /dev/urandom -a
chgrp bind rndc.key
chmod +r rndc.key
nano named.conf.options
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЬреЛрдбрд╝реЗрдВ:
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};
include "/etc/bind/rndc.key";
рдЕрдм рдЖрдкрдХреЛ рдЕрднреА рднреА рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ iptables рдирд┐рдпрдо рдХреЛ рд╣реБрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреИрд░рд╛рдореАрдЯрд░ sysctl.conf, iptables, рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/sysctl.conf
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рдирд╣реАрдВ рдерд╛:
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward=1
kernel.panic = 1
kernel.panic_on_oops = 1
kernel.panic_on_io_nmi = 1
kernel.panic_on_unrecovered_nmi = 1
рдЕрдВрддрд┐рдо 4 рд▓рд╛рдЗрдиреЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рдХреЗ рджреМрд░рд╛рди рд░рд┐рдмреВрдЯ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдмреВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рджреВрд╕рд░реЗ рд╢рд╣рд░ рдХреА рдпрд╛рддреНрд░рд╛ рди рдХрд░реЗрдВред рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛, рдлрд┐рд░ iptables рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реЗрдВ:
iptables -t nat -F
iptables-save > /etc/firewall.conf
nano rc.local
рдЕрдм r.local рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реЛрдЧрд╛:
ifconfig eth0 up
iptables-restore </etc/firewall.conf
рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдЖрджрд┐ / рдиреЗрдЯрд╡рд░реНрдХ / рдЗрдВрдЯрд░рдлреЗрд╕ - рдпрд╣рд╛рдБ eth0 рд╕реНрдерд╛рдиреАрдп рдирд┐рдХрд▓рд╛, рд╣рдо рдСрдЯреЛ eth0 рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред рдФрд░ eth1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЕрдЧрд░ рдпрд╣ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИ - рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдЖрдк SNAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ MASQUERADE, рдФрд░ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрдард┐рди рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/network/interfaces
config:
auto lo
iface lo inet loopback
auto eth0
auto eth1
allow-hotplug eth0 eth1
iface eth1 inet dhcp
рдЗрд╕ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, NAT1 рдиреИрдЯ рдФрд░ рдбреАрдПрдЪрд╕реАрдкреА рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ 1 рд╣реИред
PPPoE рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреАрдкреАрдкреАрдУрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, / etc / ppp / pppoe-server-options рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА 2 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pppoe-server-options
config:
#plugin radius.so
#plugin radattr.so
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pap-secrets
рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓реЗрдВ:
test * test 10.128.2.10
Pppoe-server рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
/etc/init.d/pppoe-server start
рд╕рд░реНрд╡рд░ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд┐рдпрд╛, рдкреАрдкреАрдкреАрдУрдИ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, PPPoE рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЦреИрд░, рдЬреИрд╕рд╛ рдерд╛ рд╡реИрд╕рд╛ рд╣реА рд▓реМрдЯрд╛:
iptables -t nat -F
FreeRadius
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/servers
рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
127.0.0.1 my-isp-radius
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/radiusclient.conf
рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
auth_order radius,local
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/radiusclient/issue
# RADIUS settings
authserver localhost:1812
acctserver localhost:1812
servers /etc/radiusclient/servers
dictionary /etc/radiusclient/dictionary
login_radius /usr/sbin/login.radius
# RADIUS server
seqfile /var/run/radius.seq
mapfile /etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/radiusd.conf
рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
# .
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/freeradius
# .
libdir = ${exec_prefix}/lib
# pid-. .
pidfile = ${run_dir}/freeradius.pid
# FreeRADIUS
user = freerad
group = freerad
# ( ) .
max_request_time = 30
# max_request_time
delete_blocked_requests = no
# ( ) reply NAS.
cleanup_delay = 5
# .
# 256.
# 1024.
max_requests = 5120
# ip . RADIUS
# ip .
bind_address = 127.0.0.1
# FreeRADIUS port. ,
# /etc/services
port = 0
# / ip dns .
# .
hostname_lookups = no
# / .
allow_core_dumps = no
# .
regular_expressions = yes
extended_expressions = yes
# User-Name .
log_stripped_names = no
# .
log_auth = yes
# .
# log_auth_badpass -
# log_auth_goodpass -
log_auth_badpass = yes
log_auth_goodpass = no
# / .
usercollide = no
# / .
lower_user = no
lower_pass = no
# / .
nospace_user = no
nospace_pass = no
# DoS .
security {
# RADIUS .
max_attributes = 200
# ( ) Access-Reject .
reject_delay = 1
# Status-Server
status_server = no
}
# RADIUS .
# .
$INCLUDE ${confdir}/clients.conf
# snmp .
snmp=no
# .
thread pool {
# .
start_servers = 5
# .
max_servers = 32
# .
min_spare_servers = 3
max_spare_servers = 10
# .
# RADIUS . 300,
# .
max_requests_per_server = 0
}
# .
modules {
# PAP .
# PAP .
# encryption_scheme .
# clear - .
pap {
encryption_scheme = clear
}
# CHAP .
# CHAP .
# authtype Auth-Type=CHAP
chap {
authtype = CHAP
}
# .
# .. .
preprocess {
# huntgroups - . huntgoups.
# hints - .
huntgroups = ${confdir}/huntgroups
hints = ${confdir}/hints
# Cisco VSA.
with_cisco_vsa_hack = no
}
# Microsoft CHAP .
# Microsoft CHAP v2
# authtype Auth-Type=MS-CHAP
# use_mppe = no VPN .
mschap {
authtype = MS-CHAP
use_mppe = no
}
# Livingston RADIUS .
# usersfile .
# .
# acctusersfile ().
# compat - . FreeRADIUS .
files {
usersfile = ${confdir}/users
compat = no
}
# .
detail {
detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
detailperm = 0600
}
# .
detail auth_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d
detailperm = 0600
}
# reply .
detail reply_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d
detailperm = 0600
}
# .
# NAS Acct-Session-ID.
# key Acct-Session-ID
acct_unique {
key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
}
#
# cakesql.conf
#$INCLUDE ${confdir}/sql.conf
#$INCLUDE ${confdir}/sql/mysql/counter.conf
}
#
# preprocess
# .
# chap mschap chap mschap .
authorize {
preprocess
chap
mschap
# .
# auth_log
files
#sql
}
#
# , .
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
}
# .
preacct {
preprocess
}
# .
accounting {
# Acct-Session-Id NAS .
acct_unique
# detail .
detail
#
#sql
}
# reply-.
post-auth {
# .
reply_log
}
log {
destination = files
file = ${logdir}/radius.log
syslog_facility = daemon
stripped_names = no
auth = no
auth_badpass = no
auth_goodpass = no
}
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/clients.conf
рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
client localhost {
ipaddr = 127.0.0.1
secret = my-isp-radius
require_message_authenticator = no
nastype = other
}
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/users
config:
steve Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 10.128.13.3,
Framed-IP-Netmask = 255.255.0.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
#
DEFAULT Framed-Protocol == PPP
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "CSLIP"
Framed-Protocol = SLIP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "SLIP"
Framed-Protocol = SLIP
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЛ MySQL рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрдкрдХреЛ Freeradius рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
/etc/init.d/freeradius restart
рдЕрдм рдЖрдкрдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧрддрд┐ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд░реЗрдбрд┐рдпрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ NAT рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВ? рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдХрдИ рдПрдирдПрдПрд╕ рдХреЗ рдмреАрдЪ рд▓реЛрдб рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ
рддреЛ, рддреИрдпрд╛рд░реАред Wondershaper рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
aptitude install wondershaper
рдпрд╣ рдкреИрдХреЗрдЬ рдПрдХ рдПрдХрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ CBQ / HTB рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рдпрди рдХреЙрд▓ рдкреНрд░рд╛рд░реВрдк рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
wondershaper ppp0 512 512
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, ppp0 рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкреАрдб рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ speedtest.net - рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╢реЗрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдЯрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрд░реНрдерд╛рдд, рдХрд┐рдХ), рд╣рдо рдХрд░рддреЗ рд╣реИрдВ
wondershaper clear ppp0
рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ WAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ "рдмрдбрд╝реЗ рднрд╛рдИ" рд╕реЗ рд▓реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЧрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдЧрддрд┐ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ (рдпрд╛рдиреА, рдЬреЛ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ parser /var/run/radattr.pppr.ppp) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐ рд╕реАрдорд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдлрд▓ рдкреАрдкреАрдкреА рдХрдиреЗрдХреНрд╢рди рдФрд░ рдЗрд╕рдореЗрдВ рд░реЗрдбрд┐рдпрд╕ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреАрдкреАрдкреАрдУрдИ рд╕рд░реНрд╡рд░ рдХреЛ рджреА рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдлрд╝рд╛рдЗрд▓ / etc / freeradius / рд╢рдмреНрджрдХреЛрд╢ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/dictionary
config:
# Limit session traffic
ATTRIBUTE Session-Octets-Limit 227 integer
# What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE Octets-Direction 228 integer
# Connection Speed Limit
ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
ATTRIBUTE Acct-Interim-Interval 85 integer
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ Raduisclient рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо / рдЖрджрд┐ / рддреНрд░рд┐рдЬреНрдпрд╛ / рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдВрдд рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/dictionary
config:
# Limit session traffic
ATTRIBUTE Session-Octets-Limit 227 integer
# What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out)
ATTRIBUTE Octets-Direction 228 integer
# Connection Speed Limit
ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer
ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
ATTRIBUTE Acct-Interim-Interval 85 integer
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдЕрдм рд╡реЗ (рдлреНрд░реАрд░реЗрдбрд┐рдпрд╕ рдФрд░ рд░реЗрдбрд┐рдпрд╕ рдХреНрд▓рд┐рдПрдВрдЯ) рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗред рддрджрдиреБрд╕рд╛рд░, рдлреНрд░реАрд░рд╛рдбрд┐рдпрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рдЖрд╡рдХ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЧрддрд┐ (рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ) рдХреА рд╕реАрдорд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред рдЙрджрд╛рд╣рд░рдг / etc / freeradius / рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/users
config:
steve Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 10.128.13.3,
Framed-IP-Netmask = 255.255.0.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
PPPD-Downstream-Speed-Limit = 1024,
PPPD-Upstream-Speed-Limit = 1024
#
DEFAULT Framed-Protocol == PPP
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "CSLIP"
Framed-Protocol = SLIP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "SLIP"
Framed-Protocol = SLIP
рдЕрдм NAS рдЧрддрд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/ip-up.d/0001shaper
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh
/root-scripts/shape-on $1 $5
exit 0
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/ip-down.d/0001shaper
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh
/root-scripts/shape-off $1 $5
exit 0
рдЬреИрд╕рд╛ рдХрд┐ рдЗрди рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдХрд╛рд░ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХреИрдВрд╕рд┐рд▓ред рдЗрд╕ рдкрд▓ рд╕реЗ - рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред $ 1 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдо рд╣реИ, рдЬреЛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ppp0 рд╣реИ, $ 5 рдлрд╝реНрд░реЗрдо-рдЖрдИрдкреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреАрдкреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ред рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбрд╛рд▓реЗрдВ:
mkdir /root-scripts
nano /root-scripts/shape-on
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh
if [ -f /var/run/radattr.$1 ]
then
DOWNSPEED=`awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
UPSPEED=`awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
wondershaper $1 $DOWNSPEED $UPSPEED
fi
iptables -A FORWARD -s $2 -j ACCEPT
iptables -A INPUT -s $2 -j ACCEPT
iptables -t nat -A POSTROUTING -s $2 -o eth1 -j MASQUERADE
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /root-scripts/shape-off
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh
iptables -D FORWARD -s $2 -j ACCEPT
iptables -D INPUT -s $2 -j ACCEPT
iptables -t nat -D POSTROUTING -s $2 -o eth1 -j MASQUERADE
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
chmod +x /root-scripts/*
рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, eth1 рдЕрднреА рднреА WAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ: рдЧреНрд░рд╛рд╣рдХ рдкреАрдкреАрдкреА рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреАрдкреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЖрдХрд╛рд░ рджреЗрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдХрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬрдм рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╕реНрдХрд╛рд░рд┐рдВрдЧ рдирд┐рдпрдо рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ wondershaper рдХреЛ pppx рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд╣реИрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд░рд▓ iptables рд╕рдВрд░рдХреНрд╖рдг
рдЕрдм рдЖрдЗрдП iptables рдФрд░ рд╕рд░реНрд╡рд░ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджреЗрдВред рдмрджрд▓реЗрдВ /etc/firewall.conf:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/firewall.conf
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/bash
#reset all
iptables -F
iptables -Z
iptables -t nat -F
iptables -t nat -Z
#iface config
INET_IFACE="eth1"
LO_IFACE="lo"
LO_IP="127.0.0.1"
#kernel modules
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_ftp
modprobe ip_nat_irc
#default policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#user chains
iptables -N bad_tcp_packets
iptables -N allowed
iptables -N tcp_packets
iptables -N udp_packets
iptables -N icmp_packets
iptables -N blocksshd
blocksshd --start
###bad_tcp_packets chain
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
#iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
###allowed chain
iptables -A allowed -p TCP --syn -j ACCEPT
iptables -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A allowed -p TCP -j DROP
###tcp_packets chain
iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j blocksshd
iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
iptables -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
#iptables -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
###udp_packets chain
iptables -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
###icmp chain
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
###input chain
iptables -A INPUT -p TCP -j bad_tcp_packets
iptables -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
iptables -A INPUT -p UDP -i $INET_IFACE -j udp_packets
iptables -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
#iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
###forward chain
iptables -A FORWARD -p tcp -j bad_tcp_packets
#custom rules
#iptables -A FORWARD -s 10.128.0.10/32 -d 192.168.1.1/32 -p tcp -j ACCEPT
iptables -A FORWARD -s 10.128.0.0/16 -d 192.168.1.1/32 -p tcp -j DROP
#/custom rules
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "
###OUTPUT chain
iptables -A OUTPUT -p tcp -j bad_tcp_packets
iptables -A OUTPUT -p ALL -j ACCEPT
#iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
###mangle
iptables -t mangle -A POSTROUTING -o $INET_IFACE -j TTL --ttl-set 64
рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рдпрдоред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ рдпрд╛ рдмрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ: рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЧреЗрдЯрд╡реЗ ADSL рдореЙрдбреЗрдо рдпрд╛ рд╡реЗрдм рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╡рд╣рд╛рдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдХреА рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реБрд░рдВрдЧреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЕрдЧрд▓рд╛ред рдРрд╕реЗ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдмреНрд░реВрдЯ-рдмрд▓ SSH рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
BlockSSHd
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ blockshd.sourceforge.net рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╣реАрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП wget рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрде - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - SourceForge рдкреГрд╖реНрда рд╕реЗ рдХрд╛рдЯрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕рдмрд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛:
cd /tmp
wget downloads.sourceforge.net/project/blocksshd/blocksshd/BlockSSHD%201.3/blocksshd-1.3.tar.gz?use_mirror=kent
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ, рдЪрд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:
cpan
upgrade
install Sys::Syslog
install Sys::Hostname
install File::Tail
install Tie::File
install Net::DNS
install Net::Subnets
install Getopt::Long
exit
рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреВрд░реА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, Cpan рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдЧрд╛ред рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ Enter рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА, рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
cd /tmp
tar -xvzf ./blocksshd-1.3.tar.gz
cd blocksshd-1.3
make install
рдЦреИрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдореИрдиреБрдЕрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдерд╛, рдпрд╛ рд╢рд╛рдпрдж рдХреЛрдИ рднреА, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/blocksshd.conf
config:
$cfg = {
os => 'linux', # Target OS - either linux or bsd
chain => 'blocksshd', # Name of iptables or pf chain
logfile => '/var/log/secure', # Log file to monitor
logcheck => '10', # How often to check the log file
max_attempts => '4', # Max number of failures
timeout => '360', # Reset IP count if no activity after time out in seconds
unblock => '1', # Enable unblocking
unblock_timeout => '43200', # Time in seconds after which to unblock a blocked IP address
restore_blocked => '0', # Turn on checking for previously blocked IPs
log_ips => '/etc/blocksshd.list', # Log file for blocked IPs
pid_file => '/var/run/blocksshd.pid', # Location of PID file
send_email => '0', # Enable the sending of email notifications
email => 'root', # Email address to send notifications
mail => '/bin/mail', # Location of mail binary
email_whois_lookup => '1', # enable whois lookup of the blocked ip addres in the sent email
whois => '/usr/bin/whois', # location of the whois binary
sed => '/bin/sed', # location of the sed binary
iptables => '/sbin/iptables', # Location of iptables binary - only for Linux
pfctl => '/sbin/pfctl', # Location of pfctl binary - only for BSD
whitelist => [qw{
127.0.0.1/32
}], # whitelist - list of IPs that will never be blocked - IPs must be specified in the form ad$
};
#leave 1; here!
1;
рдЗрд╕ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдкрддреЗ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреНрд░рдпрд╛рд╕ рд╣реИ, рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрдИрдкреА рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреМрдерд╛ - рд╣реИрдХрд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЕрдм рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред
рд╕рд░рд▓рддрдо рдирд┐рдЧрд░рд╛рдиреА
рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк "рдШреБрдЯрдиреЗ рдкрд░" рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд░рд▓ рд▓реЙрдиреНрдЪ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /root-scripts/clients
рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/usr/bin/php
<?
function time_since($original) {
$chunks = array(
array(60 * 60 * 24 , 'D '),
array(60 * 60 , 'h:'),
array(60 , 'min'),
);
$today = time();
$since = $today - $original;
for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];
$name = $chunks[$i][1];
if (($count = floor($since / $seconds)) != 0) {
break;
}
}
$print = "$count{$name}";
if ($i + 1 < $j) {
$seconds2 = $chunks[$i + 1][0];
$name2 = $chunks[$i + 1][1];
if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {
$print .= "$count2{$name2}";
}
}
return $print;
}
function execShellCmdRaw($cmd) {
ob_start();
passthru($cmd);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
function rawToArray($buffer) {
return empty($buffer)?array():preg_split('/[\r\n]+/', $buffer, -1, PREG_SPLIT_NO_EMPTY);
}
function execShellCmd($cmd) {
return rawToArray(execShellCmdRaw($cmd));
}
function getNATSources() {
$nat = execShellCmd('iptables -t nat -L | grep MASQUERADE');
$nats = array();
foreach ($nat as $s) {
$pos_start = strpos($s, '--') + 2;
$pos_end = strpos($s, 'anywhere');
$n = trim(substr($s, $pos_start, $pos_end - $pos_start));
$nats[$n] = $n;
}
return $nats;
}
function getTunnelMacAddr($pid) {
$pppdc = execShellCmd('ps -p '.$pid.' -f | grep pppd');
$pppdc = $pppdc[0];
$pos_start = strpos($pppdc, '-e ') + 3;
$pos_end = strpos($pppdc, '-S \'\'');
return trim(substr($pppdc, $pos_start, $pos_end - $pos_start));
}
function getPPPTunnels() {
$ifc = execShellCmd('ifconfig -a');
$tunnels = array();
$nat = getNATSources();
foreach ($ifc as $i => $s) {
if (substr($s, 0, 3) == 'ppp') {
$ppp = array();
$ppp['interface'] = substr($s, 0, 4);
$ppp['framed_ip'] = trim(substr($ifc[$i+1], strpos($ifc[$i+1], 'PtP:') + 6, 12));
$RXpos_start = strpos($ifc[$i+6], '(') + 1;
$RXpos_end = strpos($ifc[$i+6], ')');
$ppp['tx'] = substr($ifc[$i+6], $RXpos_start, $RXpos_end - $RXpos_start); //TX(user) = RX(server)
$tx_sub = substr($ifc[$i+6], $RXpos_end + 1);
$TXpos_start = strpos($tx_sub, '(') + 1;
$TXpos_end = strpos($tx_sub, ')');
$ppp['rx'] = substr($tx_sub, $TXpos_start, $TXpos_end - $TXpos_start);
$ppp['nat'] = array_key_exists($ppp['framed_ip'], $nat)?'on':'off';
$pidf = '/var/run/'.$ppp['interface'].'.pid';
if (file_exists($pidf)) {
$ppp['uptime'] = time_since(filemtime($pidf));
$ppp['pid'] = trim(file_get_contents($pidf));
$ppp['mac_addr'] = getTunnelMacAddr($ppp['pid']);
$ppp['username'] = 'detectedusername';
$tunnels[] = $ppp;
}
}
}
return $tunnels;
}
function clientTable($tunnels) {
printf("\n");
printf(" %15s | ","IP Address");
printf("%20s | ","MAC Address ");
printf("%3s | ","NAT");
printf("%16s | ","User name ");
printf("%9s | ","TX (up)");
printf("%9s | ","RX (down)");
printf("%11s","Uptime ");
printf("\n ");
for ($i = 0; $i < 101; $i++) printf("-");
printf("\n");
foreach($tunnels as $tun) {
printf(" %15s | ",$tun['framed_ip']);
printf("%20s | ",$tun['mac_addr']);
printf("%3s | ",$tun['nat']);
printf("%16s | ",$tun['username']);
printf("%9s | ",$tun['tx']);
printf("%9s | ",$tun['rx']);
printf("%11s",$tun['uptime']);
printf("\n");
}
printf("\n");
}
function addRadParams(&$tunnels = NULL) {
$radusers = rawToArray(file_get_contents('/etc/freeradius/users'));
$users = array();
foreach ($radusers as $i => $s) {
if (strpos($s, 'Cleartext-Password') !== FALSE) {
$user = array();
$user['username'] = trim(substr($s, 0, strpos($s, 'Cleartext-Password')));
$si = $i + 1;
while (strpos($radusers[$si], 'Framed-IP-Address') == FALSE) $si++;
$ip_raw = explode('=', $radusers[$si]);
$ip_raw = $ip_raw[1];
$users[trim($ip_raw, ' ,')] = $user;
}
}
foreach ($tunnels as $i => $tun) {
$tunnels[$i]['username'] = $users[$tun['framed_ip']]['username'];
}
return $tunnels;
}
$t = getPPPTunnels();
addRadParams($t);
clientTable($t);
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
chmod +x /root-scripts/clients
ln -s /root-scripts/clients /usr/bin/clients
clients
рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
IP Address | MAC Address | NAT | User name | TX (up) | RX (down) | Uptime
-----------------------------------------------------------------------------------------------------
10.128.1.7 | 1:00:19:66:df:39:26 | on | room56 | 507.4 MiB | 445.5 MiB | 16h:31min
10.128.1.3 | 23:00:13:8f:70:30:03 | on | room47 | 8.2 MiB | 137.8 MiB | 1h:14min
10.128.1.5 | 3:00:a1:b0:11:74:cf | on | room50 | 19.2 MiB | 500.2 MiB | 16h:30min
рдпрд╣ рд╕рдм, рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ 1 рдЬреАрдмреА рдбреАрдбреАрдЖрд░ 1 рдФрд░ 2 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд┐рд╕реНрдЯрдо рдпреВрдирд┐рдЯ 30 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП 16-рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдЪреИрдирд▓ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдореБрдЭреЗ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд┐рд╕реА рднреА рдиреЛрдЯрд┐рдХ рд▓реЛрдб рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!