Fork me on GitHub

网络对抗原理实验二

网络对抗原理实验二

实验要求

  1. 用openldap搭建LDAP服务器,尝试对学生信息进行增删改查,信息包括但不限于学生id、密码、 邮箱、手机号、部门等。
  2. 配置 apache 服务器,配置 Basic 认证模块和需要认证的页面,使用用户名密码认证。
  3. 配置 apache 服务器,配置 LDAP 认证模块和需要认证的页面,使用 LDAP 存放的学生的用户名密码
    认证。
  4. 用freeradius搭建RADIUS服务器,尝试配置基于unix账号的认证,并用radtest验证服务有效。
  5. 配置apache服务器,配置RADIUS认证模块和需要认证的页面,使用unix/Linux本地用户名密码 认证。
  6. 在freeradius中配置ldap认证模块,和LDAP服务器互通,利用ldap账号密码认证用户身份,并用 radtest 测试通过。

实验环境:Ubuntu 16.04

安装并配置ldap

安装

1
2
sudo apt-get install slapd ldap-utils
sudo dpkg-reconfigure slapd

Omit OpenLDAP server configuration? => No

DNS domain name? => example.com

Organization name? => example

Administrator password? => {**}

Database backend? => MDB

Remove the database when slapd is purged? => No

Move old database? => Yes

Allow LDAPv2 protocol? => No

Done!

防火墙允许通过ldap程序端口

1
sudo ufw allow ldap

测试是否安装成功

1
ldapwhoami -H ldap:// -x

结果如下所示:

coin

输出为anonymous,所以ldap安装成功。

配置ldap

新建一个student.ldif写下如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
dn: ou=student,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: student

dn: uid=stu1,ou=student,dc=example,dc=com
objectclass: person
cn: 15069130025
sn: 15069130025
telephonenumber: 18300000000
userPassword: student1
objectclass: organizationalPerson
postalAddress: XD
objectclass: inetOrgPerson
uid: 001

dn: uid=stu2,ou=student,dc=example,dc=com
objectclass: person
cn: 1234567
sn: 1234567
telephonenumber: 18900000000
userPassword: student2
objectclass: organizationalPerson

coin

添加学生信息

  • 添加学生信息
1
ldapadd -xWD 'cn=admin,dc=example,dc=com' -f student.ldif
  • 查询学生信息
1
ldapsearch -xWD 'cn=admin,dc=example,dc=com' -b 'uid=stu1,ou=student,dc=example,dc=com'

coin

安装与配置apache服务器

  • 安装
1
2
3
sudo apt install apache2 apache2-dev
sudo service apache2 restart
sudo ufw allow in "Apache Full"
  • 配置Basic认证
1
sudo vim /etc/apache2/sites-enabled/000-default.conf

配置如下所示

1
2
3
4
5
6
7
8
9
10
11
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride authconfig
Order allow,deny
allow from all
AuthType Basic
AuthName 'santu'
AuthBasicProvider file
AuthUserFile /var/www/html/.valid_user
Require valid-user
</Directory>

coin

这里的注释是一会儿配置ldap时需要用到的

建立basic认证的密钥文件

1
sudo htpasswd -bc /var/www/html/.valid_user santu {[PASSWD]}

然后访问web

coin

配置apache使用ldap认证

修改apache2.conf

1
sudo vim /etc/apache2/apache2.conf

在apache2.conf文件开头中添加这一行导入模块

1
Include mods-available/ldap.*

重启apache服务器,加载模块

1
2
3
4
sudo service apache2 restart
a2enmod ldap
a2enmod authnz_ldap
sudo service apache2 restart

我这里已经加载了
coin

接着,修改000-default.conf(就是上文中提到的那个注释),我这里选择这里选择注释掉AuthUserFile密钥文件,如果以后需要恢复basic认证时只需取消注释,并且将AuthBasicProvider后改为file即可

1
2
3
4
5
6
7
8
9
10
11
12
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride authconfig
Order allow,deny
allow from all
AuthType Basic
AuthName 'santu'
AuthBasicProvider ldap
#AuthUserFile /var/www/html/.valid_user
AuthLDAPURL ldap://127.0.0.1/ou=student,dc=example,dc=com?uid
Require valid-user
</Directory>

coin

重启服务器

1
sudo service apache2 restart

现在,就可以用student.ldif中的学生信息进行登录验证了

coin

apache使用freeradius认证

  • 安装freeradius之前先要确保已经安装了mysql、因为后来要用到、没有安装使用apt-get来安装
1
sudo apt-get install mysql-server
  • 安装freeradius的部件
1
sudo apt install libssl-dev libapache2-mod-auth-radius freeradius freeradius-ldap mysql-server freeradius-mysql
  • 安装完成后freeradius就会自动启动了、由于我们要使用调试模式来启动freeradius、所以先关闭freeradius服务
1
sudo service freeradius stop
  • 修改/etc/freeradius/下的users文件

coin

把这几行反注释、也就是使用一个名为steve、密码为testing的用户来测试一下是否通则登录freeradius服务器、保存后退出然后启动radius的调试模式。

注意点一:这里需要补充一点使用ubtuntu的apt-get方式来安装freeradius的位置会和源码不同、源码安装的默认位置是/usr/local/etc/raddb/而使用ubuntu的apt-get方式的配置文件则安置在/etc/freeradius/,我这里是使用apt-get来安装的,所以默认安装位置为/etc/freeradius/

  • 开启调试模式
1
freeradius –X

coin

  • 然后打开另一个终端、使用radtest来测试用户是否能够通过
1
radtest steve testing localhost 1812 testing123

注意点:这里的测试就是上述的users文件里面默认的用户名和密码,只在还没启动mysql之前测试有效,而因为我已经启用了mysql中我自己的用户,所以这个就无效了。
这句前steve和testing代表用户和密码、localhost和1812则是freeradius的IP地址和端口号、testing123则是freeradius服务端与客户端之间通讯的key、由/etc/freeradius目录下的clients.conf定义、在client localhost字段的secret参数。
radtest成功通过后则会显示Access-Accept状态。另外,如果你一个不好运、确实在linux系统中存在steve的用户、这样子的话freeradius服务器则会跳过你现在的用户配置直接去查询系统的配置、这时的密码就会以系统密码为准、这里在users文件中定义的密码就会失效、而且如果改用户是禁止在linux上登录的话、则会直接把用户打回成 Access-Reject

  • 以下是我在mysql中创建了santu用户(下面会说)之后成功的验证

coin

  • 服务器端代码为

coin
coin
coin

  • mysql与freeradius连接

建立radius数据库

coin

然后建立radius数据库

1
create database radius;

之后使用exit退出mysql、然后建立一系统的表格、freeradius已经自带有sql脚本、我们执行这些脚本就可以自行建立了,首先定位到这些脚本所在目录

1
cd /etc/freeradius/sql/mysql

导入admin.sql

1
mysql -uroot -p[PASSWORD] radius < admin.sql

schema.sql同样也是照此格式来执行导入到数据库,如果结果正常的话,可以使用radius账户进入mysql数据库

coin

这里默认密码为radpass
这样我们就可以看到一些tables了

配置freeradius

  • 修改/etc/freeradius/radiusd.conf 定位到该行

coin

将其反注释,启动sql.conf

  • 然后编辑/etc/freeradius/sql.conf

coin

默认情况下、使用apt-get命令来安装freeradius会自动检测到已经安装了mysql而自动把database设置为mysql、如果迩的不是这样显示请设置成mysql、然后再再看password这个参数、如果你之前已经更改了radius用户的密码、这里要做相应的修改、其余的参数就默认好了

  • 修改了sql.conf、再设置相应的设备通知其使用mysql作为数据存储设备

coin

把authorize{}字段下的file注释掉、反注释sql、这里的file指的就是usrs文件、将不再把用户信息写在users而使用mysql来存储用户信息
把accounting{} 字段下的sql反注释、启用sql来记录统计信息
把session{}字段下的sql反注释、启用用户同时登录限制功能、这里还需要修改其它地方、一会再说
把post-auth{} 字段的sql反注释、启用用户登录后进行数据记录功能

  • 接下来开启启用用户同时登录限制功能

coin

将这几行反注释

coin

这样整个对mysql的radius配置就已经完成了

  • 测试是否连接成功,在radius数据库建立几条用户信息以测试mysql+freeradius的用户认证是否成功,添上这几句

coin

结果为

coin

这就解释了一开始用radtest santu [**] localhost 1812 testing123命令会出现如下的应答

coin

注意:这些数据类型的属性值attribute都是特定的字符、不是随随便便自己写上去的、要查看定义这些属性的文件请查看迩当前配置文件的dictionary目录、其实里面也啥内容没定义到、只是写上了路径、一般会写上包含在

1
$INCLUDE /usr/share/freeradius/dictionary

这里的意思就是整个dictionary文件被放置在这个文件中、其实这个文件也是个路径信息、所以真正定义的dictionary文件是放在/usr/share/freeradius/这个目录、比如Framed-IP-Address属性被定义在dictionary.rfc2865文件中、Cleartext-Password被定义在dictionary.freeradius.internal文件中

注意点:注意之前的freeradius服务必须先停掉、不然会出现冲突、然后再使用以上用户来测试

coin

返回Access-Accept状态的同时会返回相应reply表格的内容、先返回radreply的用户返回信息、再返回radgroupreply的所属组返回信息、返回成功就表示配置已经正确了。

配置freeradius-ldap

  • 配置/etc/freeradius/modules/ldap

coin

这里,apache2使用freeradius进行认证,并且radius和ldap连接,我们使用student.ldif中学生信息就可完成radtest认证。

coin

至此实验二大功告成!

本文标题:网络对抗原理实验二

文章作者:Santu

发布时间:2019年01月13日 - 22:48:57

最后更新:2019年01月13日 - 22:58:15

原始链接:https://hmy626.github.io/网络安全实验/网络对抗原理实验二/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束------
显示 Gitment 评论