免费注册 查看新帖 |

Chinaunix

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

Linux实站工程师视频笔记 三 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-28 00:21 |只看该作者 |倒序浏览

(二十一)
原文不需保密的数字签名名实现方法
1.发方A对原文进行哈希运算,得到数字摘要MD
2.发方A用自己的私钥对MD加密,得到数字签名DS
3.将原文与DS一起发送到接收方B
4.接收方B使用A的公钥解密DS得到MD,并对原文进行Hash运算
5.将运算得出的MD值与解密得出的MD值比较,匹配即成功。

原文保密的数字签名及实现方法
1.发方对原文进行哈希运算,得到数字摘要MD
2.发方A用自己的私钥对MD加密得到DS
3.发方用IDES对称算法的对称密钥SK对原文SD、A的公钥进行加密,得到加密信息E
4.发方A用收方B的公钥加密对称密钥SK,形成数字信封DE
5.发送方A将加密信息E和信封DE发送到接收方B
6.接收方B用自己的私钥解密信封DE取得SK
7.接收方B用SK解密信息E,得到原文、SD、A的公钥
8.使用A的公钥解密SD得到原文的MD
9.接收方B对原文进行Hash运算得到MD’
10.如MD与MD’相等,说明数据没被篡改,签名真实。

(二十二)
常用系统安全分析工具
扫描器nmap(FC5默认没有安装),rpm包在第5张盘
#nmap 192.168.0.22      默认扫描TCP端口
#nmap -sU -sR -sS 192.168.0.22
       -sU  UDP扫描
       -sR  RPC扫描
       -sS  TCP SYN扫描
可扫描单个主机或IP段192.168.0.0/24
#grep syslog /etc/services     搜索文件中含有syslog字符串的行,搜索文件中的字符串。

嗅探器tcpdump
#tcpdump -I eth0 -X dst 192.168.0.22
       -i eth0    指定监听的接口
       -X          以十六进制显示包头信息
       dst          指定目标主机地址或端口
#tcpdump -I eth0 -X dst 192.168.0.22 and dst port 21
监听数据包目标为192.168.0.22并且端口为21的数据

日志服务器syslog
配置文件/etc/syslog.conf
左边指定消息类型       右边指定消息记录位置
*.info;mail.none;authpriv.none;cron.none     /var/log/messages
任何程序的信息,只要是info级别以上都记录在/var/log/messages,但不记录mail,authpriv,cron的消息
mail.*                                                       /var/log/maillog
邮件的所有消息都记录在/var/log/maillog文件中
如修改了配置文件需从新启动服务
#service syslog restart
#vi /etc/syslog.conf
*.*                 @192.168.0.22
将所有程序的所有消息发送给192.168.0.22主机处理,但同时192.168.0.22要开启允许远程消息
#vi /etc/sysconfig/syslog 修改
SYSLOGD_OPTIONS=”-m 0 -r -x”
#service syslog restart
日志服务端口默认514/udp
#netstat -unl | grep :514         显示日志服务是否运行
       -u    UDP协议
       -t     TCP协议
       -n    用数值表示主机地址、端口号
       -l     仅显示正在监听的进程
       -p    显示进程名及PID

日志系统
1.编缉/etc/syslog.conf
2.重启日志服务器
#service syslog restart
3.检查日志/var/log/*
安全信息放在/var/log/secure里
邮件信息放在/var/log/maillog
计划任务信息/var/log/cron
大部分信息放在/var/log/messages
#tail -f messages    监视系统信息的变化
推荐日志分析软件SWATCH

(二十三)
网络安全
防火墙的作用:过虑两个网络之间的数据包
Linux内核的Netfilter


进出数据包,以及发送到本机的数据包都要经过内核的处理
INPUT链用来过滤进入本机的数据包
OUTPUT链用来过滤从本机发送出去的数据包
FORWARD链用来过滤从本机路由出去的数据包
一个数据包的头部包括源地址、源端口、目的地址、目的端口、协议类型
包过滤正是根据这些特征来过滤数据包
Linux 下通过在三个链中设置规则来过滤
包的处理方式
#iptables -A INPUT -p icmp -j DROP   将进入本机,协议类型为icmp的数据包丢弃。
       -A    添加规则
       INPUT 对INPUT链进行操作
       -p    协议类型
       -j     指定动作,可以是ACCEPT(接收),LOG(日志),REJECT(弹回)
#iptables -L -n        显示三条链的过滤规则
       -L    显示所有链的所有规则
       -n    以数字形式显示
#iptables -F     清空所有链的所有规则
每个包进入本机时都被INPUT链检查
出去时经过OUTPUT链检查
转发时经过FORWARD检查
TCP/IP是双向通信的,所以添加规则时必须注意使INPUT链和OUTPUT链的规则对应。

       -D   rulenum   删除第几条规则
       -I     rulenum   在第几条前插入规则
       -P    修改链的默认策略,如默认状态ACCEPT,默认情况下数据包的处理方式
       -s    源地址 -m     匹配扩展条件
       -d    目的地址       -t     维护的表,默认为filter,另外还有一个nat表
       --line-numbers              规则中显示编号
#iptables -L -n --line-numbers       这样方便删除指定行编号的规则或在指定编号前插入

拒绝所有连接到本机21端口的所有连接
#iptables -A INPUT -P tcp -d 192.168.0.22 --dport 22 -j DROP
       --dport    目的端口
       --sport    源端口

在实际使用过程中服务器还不够严密,还存在被利用的弱点。如22端口,为防止没有请求过的包,在本机主动发送出去,需要检查包的状态。看包是否是人家请求过我,而我回应别人的。Linux的防火墙支持状态匹配检查。
#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
       -m   匹配状态,上面表示跟本机连接过的包才能从22端口出去
如果正在使用ssh远程管理服务器,不要将第一条的22端口规则删掉,等添加完上面这条规则,才能把存在弱点的第一条删除,否则远程管理会立刻断掉。

80端口也同样设置
#iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
防止服务器在80端口主动发送请求,防止病毒利用。添加完后,删除OUTPUT中以前添加的那条80端口规则。

假设自己是ssh客户机,访问别人的ssh服务器,先经过OUTPUT链出去
#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
当包回就,从对方22端口,如果对方有病毒,可能会使用22端口发送请求,所以只接受已建立连接的数据包。
#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#service iptables save     保存劳动成果
现在防火墙算配好了,不仅非常严密,还非常有效,有效防止别人攻击你的服务器的各种服务,可防止主动型的病毒或木马攻击。

LOG目标
过滤包的检查机制,可以指定某种要求的包写入日志中。
#iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix “IPTABLES:”
       -j LOG    记录日志
       --log-level 5    写入日志时需指定级别,与日志服务器配合使用
       --log-prefix “IPTABLES:”      指定写入日志时,记录的前缀字符,主要方便用户分析日志。
添加LOG目标规则时,保证规则前同样的包没有被丢弃或接受,即要注意添加规则的次序。
编缉日志配置文件/etc/syslog.conf 添加:
kern.=notice          /var/log/firewall.log
(消息来源内核kern,级别notice),将内核这个级别消息,记录到firewall.log文件中,等号表示刚好等于这个级别的消息。为什么是notice?因为我们曾经用man syslog知道消息的默认级别notice为5,与LOG目标一致。
注意:日志级别5要跟syslog.conf中的级别一致,级别可通过syslog的manual帮助获得。
#service syslog restart
#tail /var/log/firewall.log
注意将前面在/etc/syslog.conf文件添加过的
*.*          @192.168.0.22
那行删除,还要将/etc/sysconfig/syslog文件中,那行还原为:
SYSLOGD_OPTIONS=”-m 0”
不管哪个服务,修改过配置文件,要立刻生效,必须重启服务。
这样会将进入本机22端口的包记录在firewall.log文件,当使用ssh持续登录使用时,由于不停记录包信息,firewall.log文件会持续增大!
(二十四)
实际配置防火墙时,首先将所有门都关闭,如将三条链的默认策略都改为DROP,再根据服务器需要一个端口一个端口地打开。首先需要分析这台服务器是干什么用的,假设只是一台提供http服务的Web服务器。
首先把服务器所有端口关闭,为了方便远程管理开一个22的端口,端口可以在/etc/services文件中查看。添加规则时分析一下数据包的格式,再确定规则参数。
#iptables -A INPUT -p tcp -d 192.168.0.22 --dport 22 -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.0.22 --sport 22 -j ACCEPT
注意通信的双向性,在INPUT添加一条规则,一般要在OUTPUT添加一条与之对应,所谓有出必有入。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -p FORWARD DROP
上面首先打开22端口,防止正在使用的远程管理断掉,再改变三条链的默认策略。
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
打开一个80端口,本机地址可省略
#service iptables save     保存劳动成果(保存规则)
将刚才添加的规则保存到/etc/sysconfig/iptables文件
或使用#iptables-save > /etc/sysconfig/iptables
系统启动时会加载这个文件中的规则。
现在服务器挡住所有服务,只开了两个端口80,22,对一台网络服务器来说,绝不能缺少DNS服务,任何联网的主机都需要做DNS请求,目前这台服务器还无法发送DNS请求。增加一条DNS通道,首先作为一台客户机出现:
#iptables -A OUTPUT -p udp --dpott 53 -j ACCEPT   首先经过OUTPUT链
#iptables -A INPUT -p udp --sport 53 -j ACCEPT      请求后得到回复数据雹,允许进入
测试#host fedora.cyrich.com
如出现无法解析,或很慢,则#more /etc/resolv.conf查看域名解析配置文件,看是否本机为DNS服务器,如果是还需添加一条规则,在规则时,应该分析这个数据包如何进出哪条链,以及这人数据包的格式,如上面#host fedora.cyrich.com因为本身作为DNS服务器,所以会发送一个包到自己,
192.168.0.22:*――>102.168.0.22:53   (允许)
但当时入INPUT链时,没有一条跟它匹配,所以会拒绝。所以如果同时作为DNS服务器和客户机,还需添加下面规则:
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
#iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
当同时作为某种服务的服务端和客户端时,需在规则中添加两条规则,即源端口和目标端口。
当前的规则设置忽略了本机的内部服务,在本机上有很多端口守护在127.0.0.1上,当本机的客户端访问回环设备时会拒绝。
127.0.0.1上的服务如不打开,会影响本机内部服务的正常运行,打开了也不会造成服务器什么危害,所以还是最好打开:
#iptables -A INPUT -s 127.0.0.1 -j ACCEPT
#iptables -A INPUT -d 127.0.0.1 -j ACCEPT
#service iptables save     (保存劳动成果)

经过FORWARD链的数据包不是发送给本机,而是发送给别人的,当作为路由器使用时才需配置FORWARD链。现配置一台路由器,如允许局域网用户浏览网页配置方法与INPUT.OUTPUT一样。
#iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT     允许局域网发送数据包
#iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT     允许局域网接收数据包
这样相当于把局域网和互联网打通了,任何包都可通过,在实际使用中可以加上端口,做些限制,过滤某些数据包,也可以使用LOG目标加进日志。其实光打开FORWARD链还不行,还需要打开内核的转发文件。
#echo 1 >/proc/sys/net/ipv4/ip_forward              (默认为0)
0表示关闭转发,1为启用,要永久启用,可修改配置文件/etc/sysctl.conf:
net.ipv4.ip_forward =1
如需访问互联网,这样的配置还不行,因为私有地址是无法直接访问互联网的,这里我们做NAT网络地址转换,这时网需两个地址,一个局域网的,一个互联网的,当收到访问互联网的包时,将源地址替换为互联网地址。
#iptables -t nat -L -n      查看nat表内容

(二十五)
Netfilter的NAT表:

三条链用来做包过滤
用来翻译地址的也有三条链,常用的有PREROUTING,POSTROUTING

SNAT(源地址翻译)

数据包进入内核前,首先进入PREROUTING这个点,然后进入内核进行处理,就是ROUTING那个点,如果数据包不是发送给本机,而内核启用了转发功能,则内核将把数据包从FORWARD,再到POSTROUTING。如果FORWARD允许数据包通过,这个包可以在POSTROUTING这个点上做源地址替换,而且只能在这个点上做,这是内核的一种机制,所以数据包的源地址是在经过POSTROUTING这个点后改变的。

DNAT(目标地址翻译)
数据包进入时,首先进入PREROUTING。然后内核ROUTING会根据包的目标地址决定是从INPUT链走还是FORWARD链走。所以数据包的目标地址非常重要。在PREROUTING上可以做目标地址替换。

SNAT应用


网关有两块网卡分别连接两台主机或两个网络。
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.0.254
将源地址为10.0.0.0/24的包的源地址替换为192.168.0.254,如果这是一台ADSL拨号网关,可以将整个局域网带进互联网
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
有人会想数据包怎么回来?其实将数据包翻译成192.168.0.254源地址时,192.168.0.1回应一个数据包到服务器会被服务器认出来,那服务器会自动将翻译地址还原,然后退还给10.0.0.241。所以做网关时,只要加SNAT,然后配合前面的过滤规则就可配一个安全且强大的防火墙,同时具有路由器的功能。


DNAT应用

DNAT应用一般用来做DMZ,保护局域网内部
如192.168.0.1作为一台Web服务器,主机10.0.0.241访问10.0.0.254网关,网关将请求发送到192.168.0.1,这样就起到保护Web服务器的作用
#iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
将访问网关80端口的数据包目标地址翻译或192.168.0.1,这样本来发送给本机的数据包就会从FORWARD链转发出去。
Web服务器在内部,它收到请求后回应数据包给网关,然后返回到10.0.0.241。这样就把内部主机保护起来,外面的人只能看见那台网关服务器,所以NAT应用非常广,而且非常强大,更多帮助和介绍可参考
www.netfilter.org

为软件打补丁,首先用gpg导入公钥文件,再校验patch文件的正确性。
#bzcat 9.3.0-patch | patch -p0
一般需查文件里面的目录,然后再将软件目录改名


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP