рдПрдХ рдЫреЛрдЯреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде PPPoE рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдПрдХ рдмрд╛рд░ рджрд░реНрдЬрдиреЛрдВ рдХрдВрдкреНрдпреВрдЯрд░ (рдХрд╛рд░реНрдпрд╛рд▓рдп рдФрд░ рдШрд░) рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдерд╛ред рдмреЙрдХреНрд╕рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдпрд╛ рддреЛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбреЗрдмрд┐рдпрди рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрд╕реЗ рдЙрдард╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг "рдЦреБрдж рдХреЗ рд▓рд┐рдП" рдореИрдиреБрдЕрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдереЛрдбрд╝реЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдпрд╣ рдмрдЬрд╛рдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреАрдкреАрдкреАрдУрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд┐рддрд░рдг рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЖрдИрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ, рдЯреНрд░реИрдлрд┐рдХ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ, рдПрдХ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдФрд░ рдХрдВрд╕реЛрд▓ рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░реЛрдВ рдХреА рд╕рд░рд▓ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╣реЛрдЧрд╛ред





рд╕рд┐рд╕реНрдЯрдо рдХреА рддреИрдпрд╛рд░реА



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-рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдЪреИрдирд▓ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдореБрдЭреЗ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд┐рд╕реА рднреА рдиреЛрдЯрд┐рдХ рд▓реЛрдб рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред



рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!



All Articles