网络安全课程设计分析文档格式.docx
《网络安全课程设计分析文档格式.docx》由会员分享,可在线阅读,更多相关《网络安全课程设计分析文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
![网络安全课程设计分析文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/694b7f85-5f99-4ed4-b648-1162807dec8d/694b7f85-5f99-4ed4-b648-1162807dec8d1.gif)
i<
100000;
i++){
while(9*i%26==15){
k=i;
breaklab;
}
}
if(l_encryptKey.getText().lastIndexOf("
加密密钥"
)==-1){
l_encryptKey.setText("
加密密钥k="
+k+l_encryptKey.getText());
frame.repaint();
}
//求解密密码本算法
求解密密码本"
l_plaintxt.setText(tab.mingwen);
l_ciphertxt.setText(tab.miwen);
解密密钥"
l_encryptKey.setText(l_encryptKey.getText()+"
解密密钥1/k="
+tab.decryption_key);
//加密算法
加密"
Stringstr="
"
;
for(intn=0;
n<
txt_lowercase.getText().trim().length();
n++){
charc=txt_lowercase.getText().trim().charAt(n);
intkey=0;
for(inti=0;
i<
tab.cipher_map.size();
i++){
if(tab.cipher_map.get(i)==c){
key=tab.map.get(i);
charc1=tab.cipher_map.get(key);
str=str+c1+"
"
break;
}
l_Aciphertxt.setText(str);
frame.repaint();
//解密算法
密码本解密"
txt_mlowercase.getText().trim().length();
charc=txt_mlowercase.getText().trim().charAt(n);
//获取输入的待解密的密文字符所对应的序号
if(tab.cipher_map.get(i)==c){
for(intj=0;
j<
tab.map.size();
j++){
//获取密文字符序号所对应的明文字符序号
if(tab.map.get(j)==i){
//在序号和字符映射表cipher_map里找出明文字符序号所对应的字符
charc2=tab.cipher_map.get(j);
str=str+c2+"
}
}
}
l_Aplaintxt.setText(str);
}
2)存放明文密文的哈希map
//明文(26个小写字母)
Stringmingwen="
//密文(26个小写字母)
Stringmiwen="
//解密密钥
intdecryption_key=0;
HashMap<
Integer,
Character>
cipher_map;
Integer,
Integer>
map;
publicvoidtabOne(){
//存放明文的哈希map,键为明文的序号,值为小写字母
cipher_map=newHashMap<
Character>
();
//将26个小写字母放入map,并连成字符串赋给mingwen
for(inti=97;
123;
charc=(char)i;
cipher_map.put(i-97,c);
mingwen=mingwen+cipher_map.get(i-97)+"
//存放明文密文对应关系的哈希map
map=newHashMap<
Integer>
for(inti=0;
26;
map.put(i,i*19%26);
miwen=miwen+cipher_map.get(map.get(i))+"
lab:
for(intj=0;
10000;
while(map.get
(2)*j%26==2){
decryption_key=j;
breaklab;
}
2、置换加密法transposition
publicvoidactionPerformed(ActionEvente){
//存放明文:
已经加够长度(8的倍数)
//未改变的明文长度
intlength=txt_lowercase.getText().length();
//加入原始明文不是8的倍数,则加空格凑够
while(length%8!
=0){
txt_lowercase.setText(txt_lowercase.getText()+"
);
//加空格后的明文长度
length=txt_lowercase.getText().length();
//加空格后的明文
str=txt_lowercase.getText();
//存放密文字符串
Stringstrall="
//得到明文长度为8的几倍,将明文截成几段8位的数组进行加密,然后再将每段的密文拼起来
inth=str.length()/8;
//由上面得出的倍数,确定循环次数n<
h;
对每一段明文进行处理
h;
Strings="
//每一段明文都是8位
s=str.substring(n*8,(n+1)*8);
//调用处理的方法,将s作为参数
strall+=encrypte(s);
}
l_Aciphertxt.setText(strall);
System.out.println(strall);
//解密和加密的过程相同,只是调用的方法不同
解密"
intlength=txt_mlowercase.getText().length();
txt_mlowercase.setText(txt_mlowercase.getText()+"
length=txt_mlowercase.getText().length();
str=txt_mlowercase.getText();
strall+=decipher(s);
l_Aplaintxt.setText(strall);
//加密方法
publicStringencrypte(Stringstr1){
Stringstr="
Strings_c="
//明文数组
Stringarray_str[]=newString[8];
for(intn=0;
8;
//得到明文的每一位
charc=str1.charAt(n);
//转换为string类型
s_c=c+"
//放入明文数组中
array_str[n]=s_c;
}//这个for循环之后就把明文完全放入数组中了
/**
*找出第n+1位(map的键是从1开始的)的明文对应的密文序号get(n+1)-1;
这个序号就是在数组中的下标
*-1的原因是:
在数组中,下标是从0开始的
*/
Tabtab=newTab();
tab.funtion();
array_str.length;
str=str+array_str[tab.trans.get(n+1)-1]+"
returnstr;
//解密方法
publicStringdecipher(Stringstr1){
//密文数组,初始值都为空
Stringarray_str[]={"
"
};
Stringcipher="
86427531"
Stringc=str1.charAt(n)+"
//当前遍历到的这个明文在密文数组中的位置
intposition=Integer.parseInt(cipher.charAt(n)+"
)-1;
//将明文放入密文数组中
array_str[position]=c+"
}//这个for循环之后就把明文完全放入密文数组中了
//将密文一个个输出来拼接成字符串str
str+=array_str[i];
2)存放置换关系的哈希表
trans=newHashMap<
publicvoidfuntion(){
//置换表
str.length();
//拿到置换表的每一位
charc=str.trim().charAt(n);
Strings=c+"
//转换为int类型
inti=Integer.parseInt(s);
//放入哈希表(键:
密文下标;
值:
明文下标)
trans.put(n+1,i);
}
四、实验结果截图
(1)替代加密截图
(2)置换加密截图
Linux系统iptables防火墙
1、熟悉和掌握TCP/IP协议的基础概念和方法;
2、掌握防火墙的概念、功能分类及实现方法;
3、掌握Linux系统防火墙和iptables防火墙的配置方法。
二、实验原理
1、防火墙的任务
防火墙在实施安全的过程中是至关重要的。
一个防火墙策略要符合四个目标,而每个目标通常都不是一个单独的设备或软件来实现的。
大多数情况下防火墙的组件放在一起使用以满足公司安全目的需求。
防火墙要能满足以下四个目标:
1>
实现一个公司的安全策略
防火墙的主要意图是强制执行你的安全策略,比如你的安全策略需要对MAIL服务器的SMTP流量做限制,那么你要在防火墙上强制这些策略。
2>
创建一个阻塞点
防火墙在一个公司的私有网络和分网间建立一个检查点。
这种实现要求所有的流量都要经过这个检查点。
一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量。
网络安全中称为阻塞点。
通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实现安全目的。
3>
记录internet活动
防火墙还能强制记录日志,并且提供警报功能。
通过在防火墙上实现日志服务,管理员可以监视所有从外部网或互联网的访问。
好的日志是适当网络安全的有效工具之一。
4>
限制网络暴露
防火墙在你的网络周围创建了一个保护的边界。
并且对于公网隐藏了内部系统的一些信息以增加保密性。
当远程节点侦测你的网络时,他们仅仅能看到防火墙。
远程设备将不会知道你内部网络的布局以及都有些什么。
防火墙提高认证功能和对网络加密来限制网络信息的暴露。
通过对所能进入的流量进行检查,以限制从外部发动的攻击。
2、iptables及其命令格式
iptables是Linux2.4.X的内核防火墙
,其工作原理为对经过网络模块的数据包的处理,各数据包按流经位置进入相应的规则链,iptables逐条对比链内的
规则,如果满足条件,则进行相应的动作。
其
配置文件为/etc/sysconfig/iptables。
命令格式:
iptables指令+规则链+条件+动作
●iptables指令(对规则链的操作)
⏹–Achain--append添加到规则链中
⏹–Dchain--delete从规则链中删除匹配的规则
⏹–L[chain]--list列出在一条链或所有链上的规则(--line-numbers)
⏹–F[chain]--flush清除一条链或所有链上的规则
⏹-Pchaintarget--policy把一个规则链上的策略改变为目标
⏹iptables内置有三个表filter、nat、mangle,缺省为filter表,可使用-t参数来选择操作的表,用户可自定义表
●iptables规则链(chain)
●Iptables条件
⏹-sIP地址源地址
⏹-dIP地址目的地址
⏹-i接口名接收的接口
⏹-o接口名发送的接口
⏹-ptcp/udp/icmp/47协议
⏹--dport目的端口
⏹--sport源端口
⏹
--syn建立连接请求
⏹-mstateESTABLISHED/RELATED/NEW/INVALID状态包过滤
●iptables动作(policy)(对数据包的操作)
⏹-jACCEPT
⏹-jDROP
⏹-jREJECT(tcp-reset/icmp-port-unreachable)
三、实验步骤
3、准备工作
●同一局域网内的2台PC
a)A的操作系统为Linux,在A安装网络服务及配置iptables;
b)B对A的配置进行验证,主要使用基于icmp协议的ping命令和基于tcp协议的ftp相关命令或软件,假定其ip为10.10.96.123;
c)为避免与机房其他主机发生IP冲突,最好重设A、B地址为静态地址,A、B在同一网段,且不使用192.168.1.x等机房常用网段;
测试A、B可互ping通。
●在A:
1)启动vsftpd
2)增加1个一般用户,如abc
3)添加该新用户为ftp用户
编辑(可使用gedit等)/etc/vsftpd/vsftpd.conf,加入
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/ulis
编辑gedit/etc/vsftpd/ulis,加入
Abc
4)验证系统已启动iptables(默认为enable)
systemsetting->
serversetting->
serviceconfig->
iptables
●建议学习使用netstat命令,分析网络连接状态
4、配置Linux的系统防火墙
5)A:
start->
systemsetting->
securitylevel->
enableftp(only),允许系统建立ftp连接
6)B:
ftp测试之(使用userpswlslcdget等命令)
7)A:
disableftp,禁止系统建立ftp连接
8)B测试之
5、使用iptables命令配置防火墙,熟悉几类基本过滤原则的配置方法(有关ftp的操作,必须确认系统防火墙允许建立ftp连接,因其优先级高于iptables配置)
0>
备份/etc/sysconfig/iptables
阻塞某IP的连接
A:
阻塞
#iptables-AINPUT-s10.10.96.123-jDROP
B:
ping,测试之
取消阻塞
#iptables-DINPUT-s10.10.96.123-jDROP
(以下只列出实验过程的关键步骤,其他命令与测试请在实验过程中补足)
阻塞某网段的连接
#iptables-AINPUT-s10.10.96.1/24-jDROP
#iptables-DINPUT-s10.10.96.1/24-jDROP
阻塞某协议的连接,如icmp
#iptables-AINPUT-picmp-jDROP
#iptables-DINPUT-picmp-jDROP
4>
阻塞某端口的连接,如ftpcmd使用的21端口
#iptables-AINPUT-ptcp--dport21-jDROP
ftp,测试之
#iptables-DINPUT-ptcp--dport21-jDROP
5>
阻塞连接请求(基于状态的阻塞)
5.1阻塞本机到外部的连接
#iptables-AOUTPUT-ptcp--syn-jDROP
使用port模式(port模式:
服务器发起数据连接),连接A的ftp服务(使用IE,在“工具-internet选项-高级”里,去掉“使用被动FTP”前面的选定,在IE地址输入ftp:
//username:
password@IP_address_of_A)
A:
#iptables-DOUTPUT-ptcp--syn-jDROP
连接A的ftp服务并get文件(注意文件权限设置为对abc可读)
5.2阻塞外部主机到本机的连接
使用pasv模式(pasv模式:
客户端发起数据连接),连接A的ftp服务并get文件(使用IE,在“工具-internet选项-高级”里,选定“使用被动FTP”)
#iptables-AINPUT-ptcp--syn-jDROP(仅阻塞客户端新建的ftp数据连接,对已建立的21端口上的ftp命令连接无影响)
再次get文件
#iptables-DINPUT-ptcp--syn-jDROP
第三次get文件
5.3(选做)阻塞本机到外部的连接-2
连接B的其他服务,如www(以A为客户端,B为服务器)
6>
选择以上若干实验步骤,使用iptables动作REJECT代替DROP,比较它们的区别,思考使用DROP的优点。
答:
REJECT目标和DROP目标这两种行为有所不同。
REJECT会拒绝目标分组的进入,并给企图连接服务的用户返回一个connectionrefused的错误消息。
DROP会放弃分组,而对telnet用户不发出任何警告;
使用REJECT动作的话,对方可以知道请求被拒绝,而如果使用DROP不返回任何信息,则对方不知道发生什么情况。
7>
(选学)从‘iptables参