1.描述sendmail原理及通讯机制
sendmail程序接受到待发邮件后,通过关键字@判断邮件的格式是否符合要求,匹配成功后提取邮件后缀域名信息并查询DNS数据库相关MX(邮件专用)记录,若有匹配信息多于一条,选择优先级更高的主机IP进行投递,如果没有查询到相关域名的MX记录则尝试与其根域名(163.com)25端口通讯并投递邮件,成功连接则投递信件,失败则将邮件打包退还发件者。
2.A,B,C三类的私有IP地址范围
A:10.0.0.0 ~ 10.255.255.255
B:172.16.0.0 ~ 172.31.255.255
C:192.168.0.0 ~ 192.168.255.255
3.主流的防病毒厂商和产品(国内,外各三个)
国外:Mcafee,AVAST,BitDefender,Kaspersky,ESET Nod32,Symantec,AVIRA(小红伞),Dr.web
网内:金山,江民,微点,瑞星,360,VRV背信源,安铁诺,可牛,超级巡警
Mcafee:Intel antivirus software,迈克菲。
AVAST:avast是一款来自捷克的杀毒软件,已有数十年的历史,avast在国外市场一直处于领先地位。avast分为家庭版、商业版、手机版以及专为Linux和Mac设计的版本等等众多版本。avast的实时监控功能十分强大,免费版的avast杀毒软件拥有八大防护模块:文件系统防护、网页防护、邮件防护、网络防护、P2P防护、即时消息防护、行为防护、脚本防护。免费版的需要每年注册一次,注册是免费的!
BitDefender:BitDefender(中文名:比特梵德,简称BD)是来自罗马尼亚的老牌杀毒软件,拥有超大病毒库,防病毒引擎被业界公认领先,独有游戏免打扰模式,TopTenREVIEWS网站全球杀毒软件评比排名第一!用户遍及100多个国家和地区,以小于4小时的新病毒响应时间在众多防病毒软件中独占鳌头。
Kaspersky:卡巴斯基
ESET Nod32:ESET这一名称最早来源于埃及神话中的女神Isis。
4.使用过的主流漏扫产品,其优缺点
nessus:漏洞扫描器提供几个重要的扫描特性,比如高速发现、资产概况和漏洞分析。
Nmap:是一个用于网络检测或安全审计的免费开源工具。
SAINT:漏洞扫描器只提供集成漏洞评估和渗透测试工具。
metasploit:Metasploit Project 是已经催生了大量工具的一系列项目的总和,这些工具用途广泛,几乎可以完成从击败法规约束到躲避对其最著名软件 —— Metasploit Framework —— 的探测的任何任务。Metasploit 的设计初衷并不是作为一个黑客工具,尽管它听起来就像是一个黑客工具。实际上,这个工具的主要目标是研究安全性。但是,就像这种类型的其他工具一样,它的用途取决于使用者。记住,“权力越大,责任越大”,因此,请小心使用
ps:
什么是漏洞扫描器?
简言之,漏洞扫描器 是专门设计用于查找和暴露应用程序和操作系统中的弱点的软件。每个扫描器可能都有自己的扫描和探测方法,但它们的结果都大同小异:报告所发现的问题或输出信息。
本地漏洞扫描器 host scaner有:COPS,tripewire,tiger只能扫描本地存在的漏洞。
网络漏洞扫描器:nsfocus的极光远程安全评估系统,优点:硬件设备,扫描不占系统资源,快速高效准确。缺点:付费产品且较贵。
漏洞扫描过程可以划分为一系列步骤,每个步骤都是查找应用程序或操作系统中的弱点所需的关键任务:
- 向扫描软件提供活动系统的主机名和 IP。这样,扫描器可以发现开放端口、响应的服务和当前可能正在系统上运行的任意应用程序。
- 扫描器生成一个报告,告知您所发现的问题。如果扫描器在这个步骤就结束,它提供的信息也许不太具有操作性并需要更多研究。使用其它扫描器,这个步骤可能只显示端口、服务和正在运行的应用程序,以便软件继续进行下一步。
- 扫描软件针对第 2 步中发现的端口和服务运行探测,目标是显示关于补丁级别、软件修改或任意潜在缺陷的信息。现代漏洞扫描器包含一些插件,它们设计用于在新的漏洞出现时发现它们。因此,也许今天运行扫描器没有发现问题,那么明天执行更新后可能就会发现问题。
- 这个扫描器可能试图研究漏洞(如果支持该特性),但这取决于扫描器的先进程度。事实上,某些现代扫描器可以在这个步骤配置它们的攻击程度,以免扫描器的攻击性太强,以至于在扫描过程中导致系统崩溃(它们具有这种能力,而且这种情况也发生过)。
5.经常访问的国内外的网络安全方面的网址
www.nsfocus.com
forum.eviloctal.com
www.xfocus.net
www.hackline.net
www.chinacissp.com
6.tcp和udp的区别
连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端
接收方发送的确认信息中包含了自己剩余的缓冲区尺寸
剩余缓冲区空间的数量叫做窗口
tcp建立需要三次握手,断开需要四次挥手。包头结构:
源端口 16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码 6位
窗口大小 16位
偏移量 16位
校验和 16位
选项 32位(可选)
这样我们得出了TCP包头的最小长度,为20字节。
udp 用户数据包协议
(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
UDP的包头结构:
源端口 16位
目的端口 16位
长度 16位
校验和 16位
区别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
系统资源 多 少
结构 复杂 简单
数据正确性 有序 无序
速度 慢 快
7.防火墙的三种技术
1).应用代理技术
2).电路层网关技术
3).自适应代理技术
8.使用linux的安全风险有哪些?
多用户系统带来的账户及权限安全。包括多用户带来的账户权限,文件归属管理的难度。linux自身安全及上端应用程序所面临的威胁。未经过专业人员安全加固过的厨师linux系统在攻击者面前,显得很脆弱,运行在上端的开源程序有着跟新维护不及时,存在漏洞的情况。系统自身服务安全性,运行在linux上的默认服务有着相互依存,安全设置有相互独立的现象,对于广大普通用户来说,根本无法制定出适合且有效的安全策略。
9.主流的防火墙厂商和产品
国外:1.checkpoint firewall-1
2.Cisco cisco pix
3.Netscreen netscreen
国内:1.360 360安全卫士
2.联想 网御
3.天融信 网络卫士
4.中网 黑客愁
10.使用select查询语句的不安全之出在哪?
例如db_datareader,它授予对数据库里面所有对象的select权限。虽然你可以用db_datareader角色授予select权限,然后有选择地对个别用户或组拒绝select权限,但使用这种方法时,你可能忘记为某个用户或者对象设置权限。
11.实现纯文本操作
要求:程序可新建文件,打开文件,查看文件,在某一行插入文件,删除某行的文字,运行时的显示菜单。提示用户选择操作或退出操作,输入文件名,行号或文字,选择退出,程序结束,否则完成后应返回菜单继续。
/**
* File name :file.c
* Author :kangkangliang
* File desc :file operator
* Mail :liangkangkang@yahoo.com
* Create time :2016-09-19
*/
/**
* headfile
*/
#include <stdio.h>
#include <stdlib.h>
void show()
{
printf("------------------\n");
printf("1.show line code\n");
printf("2.insert line code\n");
printf("3.delete line code\n");
printf("4.show all line code\n");
printf("0.exit\n");
printf("------------------\n");
}
void printLine(FILE *fp ,int line)
{
int count = 0;
char buf[1024];
// read line
while(!feof(fp)){
if(count == line){
fgets(buf,1024,fp);
printf("%d %s\n", line,buf);
break;
}
if(fgets(buf,1024,fp) != NULL)
++count;
else if(fgets(buf,1024,fp) == NULL && count < line){
printf("your line too big over file line number");
break;
}
}
}
void insertLine(FILE *fp,int line,char *buf)
{
int count = 0;
// 保证在行的范围内
// read line
while(!feof(fp)){
if(count == line){
fprintf(fp, "%s\n", buf);
break;
}
if(fgets(buf,1024,fp) != NULL)
++count;
}
}
void deleteLine(FILE *fp,int line)
{
/*
* 一、最简单的办法,建议读到链表里,删除其中一个节点。然后再覆盖写回到文件。
二、找到要删除的位置,fseek到该位置,将之后需要保留的文件内容,从这里开始写。
三、利用内存映射,将文件映射到内存,直接对内存修改,但是对内存修改,也是需要类似于方法2,将需要保留的内容重新移动位置。
*/
int count = 0;
char buf[1024];
// 保证在行的范围内
// read line
while(!feof(fp)){
if(count == line){
break;
}
if(fgets(buf,1024,fp) != NULL)
++count;
}
}
void showAll(FILE *fp)
{
char buf[1024];
int count = 0;
while(!feof(fp)){
count++;
fgets(buf,1024,fp);
printf("%d %s",count, buf);
}
}
/**
* main function
*/
int
main(int argc,char **argv)
{
char file_name[10];
printf("please input filename:\n");
scanf("%s",file_name);
FILE *fp;
if((fp = fopen(file_name,"rw")) == NULL){
printf("open file error\n");
exit(-1);
}
int code;
int line;
char buf[1024];
while(1){
fseek(fp,0,0);
// rewind(fp); // 把文件内部的位置指针移到文件开头的地方,该函数没有返回值
show();
printf("input operateor code:");
scanf("%d",&code);
if(0 == code)
break;
switch(code){
case(1): {
printf("input line number:");
scanf("%d",&line);
if(line <= 0){
printf("your line invalid\n");
break;
}
printLine(fp,line);
break;
}
case(2): {
printf("input line context:");
scanf("%s",buf);
insertLine(fp,line,buf);
break;
}
case(3): {
printf("input delete line number:");
scanf("%d",&line);
deleteLine(fp,line);
break;
}
case(4): {
showAll(fp);
break;
}
default:
printf("input error\n");
break;
}
}
return 0;
}
12.linuxshell 实现
假设主机没有防火墙,该主机ip地址由命令带人,判断主机哪些端口开放,并将结果输入到文件中
使用netstat命令,就可以解决这个问题
# netstat -tln
netstat -tln 命令是用来查看linux的端口使用情况
/etc/init.d/vsftp start 是用来启动ftp端口~!
看文件/etc/services
netstat
查看已经连接的服务端口(ESTABLISHED)
netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
sudo netstat -ap
查看所有的服务端口并显示对应的服务程序名
nmap <扫描类型><扫描参数>
13.139端口和445端口
139端口: NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。
445端口:445端口是一个毁誉参半的端口,他和139端口一起是IPC$入侵的主要通道。有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉!我们所能做的就是想办法不让黑客有机可乘,封堵住445端口漏洞。
15.Cisco中哪个命令可以让登陆密码是明文显示
service password xxxxx
16.指定ping数据包的大小
默认是4个数据包,我们可以通过-n来指定:ping baidu.com -n 100
17.ACL列表number分别支持的协议
1-99 基于IP的标准访问控制列表
100-199 基于IP的扩展访问控制列表
200-299 基于协议类型码的访问控制列表
18.列举Unix,Linux,FreeBSD各个版本的历史发行版本
Unix:V1,V4,V6,V7
著名,流行的Linux发行版本:Red hat Centos SUSE,Debian,GNU/Linux,Ubuntu,Fedora
FreeBSD:1.x 从386BSD0.1发展而来,2.x版从4.4BSD lite而来。
19.名词解释
Ddos:(Distirbuted Denial of service)分布式拒绝服务
Worm:蠕虫,网络传播类计算机恶意代码
IP Spoof:IP欺骗,伪装成可信任的IP地址,对目标实施信息欺骗以达到目的。
SYN Flood:SYN洪水攻击,拒绝服务攻击的一种。通过大量伪造TCP三次握手中的SYN包达到对目标拒绝服务攻击的目的。
Brute Attack:强力攻击
Social Engineering:社会工程学,通过非技术的其他任意手段达到最终的目的
Honeybot:蜜罐系统,通常指通过对不设防的虚拟主机(蜜罐)进行监控,达到追踪攻击者(蜜蜂)的目的
ShellCode:溢出代码,通常指能对某系统溢出漏洞获取特定权限的指针位代码
20.网络安全的标准
iso9000:ISO9000质量管理体系是企业发展与成长之根本,ISO9000不是指一个标准,而是一类标准的统称。是由TC176(TC176指质量管理体系技术委员会)制定的所有国际标准,是ISO12000多个标准中最畅销、最普遍的产品。
BS7799:BS 7799(ISO/IEC17799):即国际信息安全管理标准体系,2000年12月,国际标准化组织ISO正式发布了有关信息安全的国际标准ISO17799,这个标准包括信息系统安全管理和安全认证两大部分,是参照英国国家标准BS7799而来的。
sql注入:
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击. 20.数据库的漏洞如何挖掘
原理
攻击
21.一次典型的网络攻击分为几个阶段,每个阶段采用什么技术
攻击的基本步骤:搜集信息 实施入侵 上传程序、下载数据 利用一些方法来保持访问,如后门、特洛伊木马 隐藏踪迹 【 信息搜集 】 在攻击者对特定的网络资源进行攻击以前,他们需要了解将要攻击的环境,这需要搜集汇总各种与目标系统相关的信息,包括机器数目、类型、操作系统等等。踩点和扫描的目的都是进行信息的搜集。
攻击者搜集目标信息一般采用7个基本步骤,每一步均有可利用的工具,攻击者使用它们得到攻击目标所需要的信息。找到初始信息 找到网络的地址范围 找到活动的机器 找到开放端口和入口点 弄清操作系统 弄清每个端口运行的是哪种服务 画出网络图
22.知道的扫描器有哪些?
Retina:Retina是eEye公司(www.eeye.com)的产品,强大的网络漏洞检测技术可以有效的检测并修复各种安全隐患和漏洞,并且生成详细的安全检测报告,兼容各种主流操作系统、防火墙、路由器等各种网络设备。曾在国外的安全评估软件的评测中名列第一。
iss:(internet security scanner)ISS公司开发和维护的商业漏洞扫描程序,它的可移植性和灵活性很强,众多的UNIX的平台上都可以运行ISS。
22.动态路由和静态路由
静态路由
是在路由器中设置的固定的路由表。除非网络管理员干预,否则静态路由不会发生变化由于静态路由不能对网络的改变作出反映,一般用于网络规模不大、拓扑结构固定的网络中。静态路由的优点是简单、高效、可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准
动态路由
是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程。它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。