文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>网络安全

网络安全

时间:2006-06-19  来源:wumu888

网络安全  1 防火墙的原理  2 netfilter的架构  3 iptables命令  4 NAT地址转换    防火墙原理:       作用:过滤网络之间的数据包.目的就是保护局域网中的主机,避免局域中的主机受到外网主机的侵扰,     防火墙有软件实现和硬件二类,这里以linux内核的netfilter实现,   netfilte加构的结构为从其它主机到本机的是INPUT链,如不是本机的数据包则会经过FORWARD链,由本机发出的数据包是OUTPUT链,这样防火墙就是在此三个链中加则所匹配的条件组成了一些规则.从而达到过滤危险数据的目的,FORWARD过滤的是一个局域网,比如.你用ssh管理你的服务器时,就会从本机<OUTPUT>链对服务器做出ssh请求,而服务器所在的局域中会接收到你的请求,而网卡地址不匹配不会做出回应,而你的服务器收到了则会回应你,回应你的数据你将会在<INPUT>收到,如果在INPUT,OUTPUT做出一些阻碍规则,就会产生失败,包最常用的处理方式有<DROP,ACCEPT,REJECT,LOG...>    我们现在对ssh做出一个过滤规则,但一定要对命令有所了解, -A 表示的是追加.追加的对向有<INPUT,OUTPUT,FORWARD>, -D 表示的是删除,也可以用条件或编号 -I 表示插入规则, -R 表示替换.表示替换的规则,后跟要替换的编号 -L 表示查看,默认是查看全部. -F 表示清空全部规则,可跟链<INPUT,...> -N 新建一个新的链 -X 删除用户自定义的链 -P 默认情况下数据包在经过链上如何处理, 条件命令; -p 指定一个协议,<tcp,udp,icmp>可用"!"排除某种情况, -s 包的源地地址, -d 目的地 -i 进入时的接口,网卡或tcp设备 -j 跳转.<ACCEPT,REJECT,DORP.LOG> -m 指定扩展 -n 以数字名称显示 -o 表示出去时的接口, -t 表示的是一张表,默认的是的filter --line-number 编号 示范的命令:iptables -A INPUT -p icmp -j DROP  其中的A就是新增可见上面的命令,新增的链名有<INPUT,OUTPUT,FORWARD,>  p就是pcoto协议,upd.tcp.icmp  j表示的是跳转<jump>,跳转的方向有<DROP,ACCEPT,REJECT,LOG...>  上面的示范命令就是让你把ping命令给禁用了,试一下,任何人都不会ping到你的机器,不会做出回应, 查看我们所做的规则可用:iptables -L -n --line-numbers 清空我们所做的规则可用:iptables -F 注意的是数据是有来有回的,如.ssh在本机会发现一个数据包请求服务器的22端口,服务器收到请求会回复你一个数据,则你一定要接收到,否则失败, 这里以本机开启ftp 服务,并且使ssh远程管理,为了保证我们与远程服务器的链接,首先把服务器ssh的端口22打开,再次开启ftp服务, 示范:iptables -A INPUT -p tcp --dport 22 -j ACCEPT     这样我们的请求就可能会达到服务器那儿,就是到达不了,也不是我们的事了,想成功前提是服务器那儿有开启此端口和允许你连接,由于我们管理服务器多或是服务器是动态IP,不需要指定服务器地址,但我们还需要开OUTPUT. 示范:iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT <前后无所谓> 这样保证了我们与服务器的连接,那么我们就把默认链的属性改为关闭状态, 示范:iptables -P INPUT DORP     iptables -P  OUTPUT DORP     iptables -P FORWARD DORP    注意的是这一步必须在上一步的后边,否则你会失去远程主机的连接,只能跑去机房,,你可不想这样吧,下面开启ftp服务,  示范: iptables -A INPUT -p tcp --dport 21 -j ACCEPT 我们现在的环境就是服务器,所以进入的主机地址就不用写了.访问的本机端口是21, 我们ACCEPT,别人访问了,那服务器就要回应别人,否则就沟通不了, iptables -A OUTPUT --sport 21 -p tcp -j ACCETP 由于是本机发送的包,是一个源地址,则发送的端口也成了源端口<我就是这么理解的,不知道对不对,原理就应该是这样的> 下面我们就要保存我们的劳动成果,service iptables save 这样一个简单的ftp服务器就完成了,但有些不完美,我们要优化和更高级的配置一下,   虽然是配好了我们的安全的ftp,但由于系统服务也会有所阻碍,会影响本机的系统,所以我们要允许本机<127.0.0.1>的请求,   示范:iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT       iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT  在网络中的任何主机都要有域名解析服务,在上面中我们把dns服务所使用的端口给关闭了,会造成系统十分缓慢或会造成提供不了服务的现象,我们需要开启dns所使用的53端口.要是不相信你现在用ping试一下,会发现无法解析域名,    示范: iptables -A OUTPUT -p udp --dport 53 -j ACCEPT          iptables -A INPUT -p udp --sport 53 -j ACCEPT   这一点需要大家一定要明了,否则会出错,上面那个ssh服务是系统本身的服务,所以在数据包出去<OUTPUT>的时候是本机<--sport>,接收的时候<INPUT>是本机--dport,因为这个系统是提供ssh服务的,而现在这个dns是别的机子提供的服务,所以我们一定要注意,出去<OUTPUT>的数据包应该是<--dport>本机的53,因为它要去访问dns服务器,dns常用的协议是udp,不知道说的对不对,欢迎大家踊跃提出自己的看法,<由于本对网络协议了解的不太深,所以错误之处蛮多,在引再提醒大家,请勿深信,多参考其它资料!>    如果自己做为dns服务器会产生什么样的情况呢?问题又是怎么才能解决呢?    相信自己,你能行!    如果你能解决这个问题,那么你就会知道为什么你跟我配置一样的服务器不能用ssh远程连接别人,只能别人连接你,问题一样!    接下来你用ping还会发现不能ping,这是因为你的icmp被拒绝了,我们要打开才可以;    示范:iptables -A INPUT -p icmp -j ACCEPT        iptables -A OUTPUT -p icmp -j ACCEPT    这样,,就可以ping通网络了!保存你的劳动成果;    service iptables save    现今网络上,病毒泛滥,比如哪个危险端口被病毒控制,主动请求别人连接它,会造成一定的损害,拿22端口来说,客户端远程连接,服务端接收,如果中病毒了,或是服务器产生漏洞了,它主动发数据给别人怎么办呢?可喜的是linux支持一种叫"state"的验证方式,就是指只能让客户端连接了服务<ESTABLISEL>,服务才可以发数据给客户,否则就拒绝!   示范: iptables -A INPUT -p tcp --dport 22 -m state --m ESTABLISHED -j ACCEPT        iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT    想一下我们做为客户机别人主动发连接数据给,你会怎么做?一个还好,多了怎么办?自己解决!   这样就可可以防止病毒的困扰了,我们可以把先前做的规则去掉,其它端口就类似了! 示范: iptables -D INPUT 1       iptables -D OUTPUT 2  注意的不是可以在添加之前去除,否则会失去连接!注意保存你的劳动成果!  虽然说这应该是高效安全的服务器了,但有没有想过有个LOG日志岂不更好??  上面讲的是包的过滤,但LOG必须要在这个数据包能正常的存取或输出,否则哪有什么日志可以写!,这里以上面的ssh为例,因为ssh能够正常的允许客户连接,正常的提供服务,所以如果你也想做这样的日志的话,请确保服务正常!  示范:iptables -I INPUT 6 -p tcp --dport 22 -j -LOG --log-level 5 --log-prefix "IPTABLES:"  第二步是编缉/etc/syslog.conf文件,须在里面写如:  kern.=notice           /var/log/friewall.log  第三步重启日志服务器:service syslog restart  第四步测试,重新用一个客户端连接服务器,  第五步查看日志服务;tail /var/log/friewall.log  以上步骤中一定要位于允许规则的最前面,前面的"-I INPUT 6"就是在INPUT 6之前插入一条新规则,如果你和我做的一样的话,那么INPUT 6就是ssh的规则!  下面浅谈一下NAT!   上面所有的操作都是保护本机的.而FORWARD是一个全局性的.就是保护局域中的主机的.前提是有双网卡.其中一块是做为局域网中的GATEWAY而存在的.用法和INPUT.OUTPUT差不多的.   示范: iptables -A FORWARD -s 192.168.1.101/24 -j ACCEPT         iptables -A FORWARD -d 192.168.1.101/24 -j ACCEPT   第一句话指的是局域中的主机访问本地路由<本机>,接收!   第二句话指的是外网中的主机访问本地局域网中的主机,接收!   这二句话是做为路由器让局域网中的主机自由连通外网或外网连接本地机的一个前提,第二个还需要打开/proc/sys/net/ipv4/ip_froward/为1, 示范:echo 1 > /proc/sys/net/ipv4/ip_forward     vi /etc/sysct1.conf   局域网中的主机想要访问外网.则会连接到网关上.网关负责将其转换为外网IP,<postrouting,源地址转换>而外网访问的过程则是<prerouting目标地址转换>,这个过程就是地址翻译的过程.称为NAT,源地址转换又称SNET,目标地址称DNAT.   查看NAT记录:iptables -t nat -L -n   为了想让内网用户能连通外面的网络我们必须在此加一些规则,   示范: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MSQUERADE   也可写成:iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.0.0.254   第二句没有第一句功能强大.第一句能实现动态的分配,适合做拨号服务器时使用,如果用第二句则每拨一次号就要重新设定一次,如果是静态的那....   DNAT目标地址转换相信在局域网中玩过鸽子的都不会陌生, 示范;iptables -t nat -A PREROUTING -p tcp -d 192.168.1.1<网关> --dport 80 -j DNAT --to-destination 10.0.0.2<web服务器>  综合讲一下,SNAT就是内网用户访问外网时需要转换成合法的IP才能到达,            DNAT是外网机器访问本地网络的web服务器.为保证安全,我们把他的目标地址转换成网关的IP.    水平有限,错误之处难免,还望你能指出.以服务初学者,谢谢!    枫猪! 
相关阅读 更多 +
排行榜 更多 +
飞艇大战

飞艇大战

飞行射击 下载
虚拟战警

虚拟战警

飞行射击 下载
反恐射击英雄最新版

反恐射击英雄最新版

飞行射击 下载