linux防火墙:Ip Tables
linux防火墙是一种典型的包过滤防火墙,通过检测到达的数据包头中的信息,确定哪些包可以通过,哪一些应该被丢弃,防火墙行为的依据主要是数据包的目的地址,端口号和协议类型,所有这些由管理员指定。
防火墙工具最初交ipchains,取这个名字的原因在于防火墙将一系列规则组成一些链,应用到网络数据包上,iptables则更进一步把一些功能相似的链组合成一个一个的表
iptable默认使用的表是filter,其中包含三个链,分别是:
- FORWORD:链中定义的规则作用于那些需要转发到另一个网络接口的数据包
- INPUT:作用域发送到本机的数据包
- OUTPUT:作用于从本机发送出去的数据包
通常定义的filter可以迎合大部分的安全需求,因为这个表包含了包过滤的所有内容,除了filter,iptable还包含nat,mangle两个表:
- nat:用于网络地址转换
- mangle:用于修改除了nat和包过滤之外的网络包
初始化防火墙设置
iptables常用选项
选项 | 含义 |
---|---|
-F | 清除链中所有的规则 |
-P | 为链设置一条默认策略(或者说目标) |
-A | 为链增加一条规则说明 |
-D | 从链中删除一条规则 |
-L | 查看当前表中的链和规则 |
iptables -F #清空filter表
iptable -F INPUT #清空filter表中的INPOUT链条
iptables -P chain-name target #chain-name是链的名字,target:定义策略(DROP(丢弃),REJECT(丢弃的同时返回一个ICMP错误的消息),LOG(记录包的信息),ACCEPT(允许包通过))
iptables -P INPUT DROP #所有试图痛本机建立连接的努力都会失败,ping自己也不行
添加链规则
应用场景:当前防火墙所在主机是一台web服务器,为此应该允许外部主机能够连接到80端口(对应http服务),和22端口(对应SSH服务),添加规则(假设eth0对应内部网络)
iptables -A chain-name -i interface -j target #chain-name代表链的名字,interface指定该规则用于哪个网络接口,target用于定义策略
iptables -A INPUT -i lo -p ALL -j ACCPT#允许所有通过lo接口(本地环回接口)的连接请求
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT#允许通过eth0接口进行ping请求,icmp中代码8对应的ping命令
iptables -A INPUT -i eth0 -p tcp --dport 80 -J ACCEPT #增加对80端口的访问许可
iptables -A INPUT -i eth0 -s 10.62.23.0/24 -p tcp --dport 22 -J ACCEPT#将SSH服务设置为只有10.62.23.0/24中的网络才能访问
iptables -A INPUOT -i eth0 -j LOG#给input链添加了一条log策略
iptables -L --line-numbers #查看链规则的编号
iptables -D chain ruleNumber#根据规则的编号删除
用于防火墙设置的相关选项
选项 | 含义 |
---|---|
-p proto | 匹配网络协议:tcp,udp,icmp |
--icmp-type type | 匹配icmp类型,和-p icmp配合使用 |
-s source-ip | 匹配来源主机(或网络)的ip地址 |
--sport port# | 匹配来源主机的端口,和-s source-ip配合使用 |
-d dest-ip | 匹配目标主机的ip地址 |
--dport port# | 匹配目标主机的端口,和-d dest-ip配合使用 |
网络安全工具
没有什么东西是绝对可靠的,防火墙只是保证网络安全的辅助工具
-
扫描网络端口:nmap
作用:扫描一组主机的网络端口
意义:所有的服务器程序都要通过网络端口对外提供服务
命令:
nmap -sT 目标主机 ##扫描目标主机,显示所有开放服务端口,如果由于防火墙干扰而无法探测到端口,则会在state一栏中显示filtered
nmap -O -sV 目标主机# -O探测主机操作系统 -sV探测端口上运行的软件
#nmap在扫描前会首先ping一下目标主机,在收到回应后,才执行扫描程序,很多服务器处于安全考虑,设置防火墙丢弃这样的探测包
nmap -sT -p1-5000 -PN 目标主机 #-PN可强制对这类主机进行扫描,-P可以指定端口
- 找出不安全的口令:John the Ripper
任何人都可以在www.openwall.com/john上下载到这款软件
john /etc/shadow ##破解文件系统口令
cat john.pot ##John the Ripper最终会把结果输出到john.pot
- 主机访问控制:host_access
linux提供了除防火墙之外的另一种来源控制方案,在/etc目录下又两个文件hosts.allow和hosts.deny。前者指定哪些主机可以访问某个特定的服务,后者则对此做出限制。
应用场景:限制192.168.1.0/24访问ssh服务,可以在/etc/hosts.deny中加入这一行
sshd:192.168.1.0/24
/etc/hosts.allow的优先级高于/etc/hosts.deny