免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 790 | 回复: 0
打印 上一主题 下一主题

网络安全 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-19 14:58 |只看该作者 |倒序浏览
网络安全
1 防火墙的原理
2 netfilter的架构
3 iptables命令
4 NAT地址转换
   防火墙原理:
      作用:过滤网络之间的数据包.目的就是保护局域网中的主机,避免局域中的主机受到外网主机的侵扰,
    防火墙有软件实现和硬件二类,这里以linux内核的netfilter实现,
  netfilte加构的结构为从其它主机到本机的是INPUT链,如不是本机的数据包则会经过FORWARD链,由本机发出的数据包是OUTPUT链,这样防火墙就是在此三个链中加则所匹配的条件组成了一些规则.从而达到过滤危险数据的目的,FORWARD过滤的是一个局域网,比如.你用ssh管理你的服务器时,就会从本机链对服务器做出ssh请求,而服务器所在的局域中会接收到你的请求,而网卡地址不匹配不会做出回应,而你的服务器收到了则会回应你,回应你的数据你将会在收到,如果在INPUT,OUTPUT做出一些阻碍规则,就会产生失败,包最常用的处理方式有
   我们现在对ssh做出一个过滤规则,但一定要对命令有所了解,
-A 表示的是追加.追加的对向有,
-D 表示的是删除,也可以用条件或编号
-I 表示插入规则,
-R 表示替换.表示替换的规则,后跟要替换的编号
-L 表示查看,默认是查看全部.
-F 表示清空全部规则,可跟链
-N 新建一个新的链
-X 删除用户自定义的链
-P 默认情况下数据包在经过链上如何处理,
条件命令;
-p 指定一个协议,可用"!"排除某种情况,
-s 包的源地地址,
-d 目的地
-i 进入时的接口,网卡或tcp设备
-j 跳转.
-m 指定扩展
-n 以数字名称显示
-o 表示出去时的接口,
-t 表示的是一张表,默认的是的filter
--line-number 编号
示范的命令:iptables -A INPUT -p icmp -j DROP
其中的A就是新增可见上面的命令,新增的链名有
p就是pcoto协议,upd.tcp.icmp
j表示的是跳转,跳转的方向有
上面的示范命令就是让你把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,但由于系统服务也会有所阻碍,会影响本机的系统,所以我们要允许本机的请求,
  示范: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服务是系统本身的服务,所以在数据包出去的时候是本机,接收的时候是本机--dport,因为这个系统是提供ssh服务的,而现在这个dns是别的机子提供的服务,所以我们一定要注意,出去的数据包应该是本机的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"的验证方式,就是指只能让客户端连接了服务,服务才可以发数据给客户,否则就拒绝!
  示范: 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,而外网访问的过程则是,这个过程就是地址翻译的过程.称为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
综合讲一下,SNAT就是内网用户访问外网时需要转换成合法的IP才能到达,
           DNAT是外网机器访问本地网络的web服务器.为保证安全,我们把他的目标地址转换成网关的IP.
   水平有限,错误之处难免,还望你能指出.以服务初学者,谢谢!
   枫猪!

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18861/showart_129914.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP