第一次接触asterisk,心里还是有点担心的,怕自己做不出来,上网查资料,发现现在的版本和那些资料所说的版本有很大的区别,看的不是很明白,于是去看《电话未来之路》,越看越不懂,只好自己上官网,全是英文,不过还好,看着官网上的资料,经过两个多星期的不懈努力,终于被我做出来了,于是想把它记录下来,希望帮到有需要的人!
一、 环境准备
a) CentOS 操作系统一台
b) 需接入公网
c) 关闭selinux
d) 关闭防火墙
e) 安装webserver(Aapche)
f) 安装DNS
g) 安装Mail Server
h) 安装Mysql
二、 安装支持包
a) yum update �Cy
b) shutdown -r now
c) yum install bison
yum install bison-devel
yum install ncurses
yum install ncurses-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
yum install gnutls-devel
yum install gcc
yum install gcc-c++
d) yum install -y epel-release dmidecode gcc-c++ ncurses-devel libxml2-devel make wget openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devel
e) yum install libtiff-devel php-gd php-mysql php-pear kernel-devel kernel-smp-develaudiofile-devel mysql-devel �Cy
f) uname �Cr
rpm �Cqa | grep kernel
对比系统版本和kernel版本,只有一样才行
三、 安装PJSIP
a) cd /usr/src
b) wget http://www.pjsip.org/release/2.3/pjproject-2.3.tar.bz2
c) tar �Cjxvf pjproject-2.3.tar.bz2
d) cd pjproject-2.3.tar.bz2
e) ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
f) Make dep && Make && make install
g) Ldconfig
h) Ldconfig �Cp | grep pj
四、 安装配置Asterisk
a) Cd /usr/src
b) wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-
asterisk-13.1-current.tar.gz
c) tar �Czxvf certified-asterisk/certified- asterisk-13.1-current.tar.gz
d) cd certified-asterisk-13.1-cert1
e) ./configure --libdir=/usr/lib64
f) make menuselect(可以选择PJSIP)
g) make && make install
h) make samples
i) make config
j) asterisk &
k) asterisk �Cr
l) pjsip reload(查看是否加载成功)
五、 数据库设置
a) /etc/init.d/mysqld restart
b) Chkconfig mysqld on
c) Mysqladmin �Cu root password newpassword
d) Useradd �Cc “Asterisk PBX” �Cd /var/lib/asterisk asterisk
e) Mysqladmin �Cu root �Cp create asterisk
f) Mysqladmin �Cu root �Cp create asteriskcdrdb
g) Cd /usr/src
h) tar �Czxvf freePBX.tar.gz
i) cd freePBX/SQL
j) mysql �Cu root �Cp asterisk < newinstall.sql
k) mysqld �Cu root �Cp asteriskcdrdb
l) mysql �Cu root �Cp
m) grant all pivileges on asterisk.* to asterisk@localhost identified by ‘freepbxdbpassword’
n) grant all pivileges on asteriskcdrdb.* to asterisk@localhost identified by ‘freepbxdbpassword’
o) flush privileges;
p) \q
六、 设置文件访问权限
a) sed �Ci “s/User apache/User asterisk/g” /etc/httpd/conf/httpd.conf
b) sed �Ci “s/Group apache/Group asterisk/g” /etc/httpd/conf/httpd.conf
c) sed �Ci “s/AllowOverride None/AllowOverride All/g” /etc/httpd/conf/httpd.conf
d) sed �Ci “s/astrundir => \/var\/run\/asterisk => \/var\/run\/asterisk/g” /etc/asterisk/asterisk.conf
e) mkdir /var/run/asterisk
f) sed �Ci “s/post_max_size = 8M/post_max_size = 20M/g” /etc/php.ini
g) sed �Ci “s/upload_max_filesize = 2M/upload_max_filesize = 20M/g” /etc.php.ini
h) chown �CR asterisk:asterisk /var/spool/asterisk/ *
i) chown �CR asterisk:asterisk /var/log/asterisk/ *
j) chown �CR asterisk:asterisk /var/run/asterisk/ *
七、 安装FreePBX
a) Cd /usr/src/freePBX
b) ./install_amp install
Root 输入数据库的用户名
Mysql 输入数据库的密码
………… 直接回车
AMP web root(/var/www/)
AMP web-admin(服务器地址)
………… 直接回车
c) echo “/usr/local/sbin/amportal start” >>/etc/rc.local
八、 FreePBX配置(web)
a) 使用服务器地址在web中登录freepbx图形化界面
b) 加载、升级模块
i. 点击admin,选择module admin
ii. Check for updates online
iii. 点击模块名称,选择down and install(update)
iv. 点击process 执行
v. 当所有模块更新完毕之后,点击”Apply”应用,确认更改
c) 添加分机号
i. 点击Applications,选择extensions
ii. 选择Generic PJSIP device
iii. User extension(分机号码)
iv. Display name(该分机对应的名字)
v. 点击chan_pjsip(将协议改成pjsip)
vi. Secret(密码)
vii. 点击submit保存配置,并点击”Apply”应用
九、 客机注册
a) 下载一个软电话(如zoiper)
b) 将分机号的信息以及服务器地址对应填入zoiper中,保存即可
十、 安全考虑
a) 由于服务器放在公网,任何网络都可能扫描、注册我们的话机,这会引起电话被偷打,通话质量下降以及服务器崩溃,为了尽量减少这种情况,需要安装fail2ban服务
b) 值得注意的是,最新版的fail2ban需要在Python 2.4以上,即使系统自带的Python版本是2.4以上的,也可以指定安装在自己新建的目录中,一面引起混乱
c) 安装Python
i. 下载安装包
ii. 解压安装包
iii. 指定编译位置
iv. 编译
v. 创建一个软链接
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar -zxvf Python-2.5.2.tgz
cd Python-2.5.2
./configure �Cprefix=/usr/local/python-2.5.2
make && make install
cd /usr/local/
ln -s python-2.5.2 python
d) 安装fail2ban
i. 下载fail2ban安装包
ii. 解压安装包
iii. 编译
iv. 移动生成的可执行文件/usr/bin/
v. 拷贝启动文件到/etc/init.d下
vi. 安装fail2ban支持包(需要从光盘中拷贝)
vii. 需要拷贝jail.local fail2ban.local到/etc/fail2ban/下(可以从别的地方拷贝,安装时是没有的)
wget http://nchc.dl.sourceforge.net/sourceforge/fail2ban/fail2ban-0.8.3.tar.bz2
tar -xvf fail2ban-0.8.3.tar
mv fail2ban-0.8.3 fail2ban
cd fail2ban
python setup.py install
mv /usr/local/python/bin/fail2ban-* /usr/bin
cp fail2ban/files/redhat-init /etc/ini.t/
mv /etc/init.d/redhat-init fail2ban
chmod 0755 /etc/init.d/fail2ban
cp fail2ban.local jail.local /etc/fail2ban/
rpm �Civh fail2ban-0.8.8-107.shmz65.1.118.noarch �Cforce
viii. 配置文件
vi /etc/fail2ban/jail.conf
loglevel = 3 默认日志级别
logtarget = /var/log/fial2ban.log 日志文件地址
socket =/tmp/fail2ban.sock socket位置
ignoreip = 127.0.0.1 忽略ip,在该清单中的ip不会被屏蔽
bantime = 600 屏蔽时间
findtime = 600 发现时间,在此期间内重试超过规定次数,会激活fail2ban
maxretry = 3 尝试次数
backend = auto 日志修改检测机制
[ssh-iptables]
Enabled = true 激活
filter = sshd 所采用的工作,按照名字可在action.d目录下找到
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois[name=SSH, dest=root]
logpath = /var/log/secure 目的分析日志
maxretry = 5 覆盖全局重试次数
bantime = 3600 覆盖全局屏蔽时间
service fail2ban restart 重启fail2ban
iptables �CL �Cn 查看有很多策略(注意:在启动fail2ban之前,必须把自己本地的防火墙关闭)
fail2ban-client status 查看状态,发现jail list下有拦截的服务