Linux实践工程师学习笔记二十三

网络安全
防火墙的作用:过虑两个网络之间的数据包
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 文件会持续增大!
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值