Linux防火墙
防火墙:
钩子函数:
priouting
input
output
forward
postrouting
规则链:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
filter(过滤):表
INPUT
OUTPUT
FORWARD
nat(地址转换):表
PREROUTING
OUTPUT
POSTROUTING
mangle(拆开,修改,封装):表
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
raw():
PREROUTING
OUTPUT
能否使用自定义链?
可以使用自定义链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;
用可以删除自定义的空链
默认链无法删除
每个规则都有两个内置的计数器
被匹配的报文个数
被匹配的报文大小之和
规则:匹配标准,处理动作
iptables[-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理方法
匹配标准:
通用匹配
-s,--src:指定源地址
-d,--dst:指定目标地址
-p {tcp|udp|icmp}:指定协议
-i INTERFACE:指定数据报文流入的接口
可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o INTERFACE:指定数据报文流出的接口
可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
扩展匹配
隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用-p {tcp|udp|icmp}
-p tcp
--sport PORT[-PORT]:源端口(可以指定连续端口)
--dport PORT[-PORT]:目标端口(可以指定连续端口)
--tcp-flags mask comp:只检查mask指定的标志位,是逗号分隔的标志位列表;comp:次列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;
如:--tcp-flags SYN,FIN,ACK,RST SYN=--syn
--syn
-p icmp
--icmp-type
0:echo-reply
8:echo-request
-p udp
--sport PORT[-PORT]:源端口(可以指定连续端口)
--dport PORT[-PORT]:目标端口(可以指定连
iptables -A OUTPUT -s 172.16.100.7 -p icmp --imcp-type 8 -j ACCEPT
iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 0 -j ACCEPT
例子:172.16.100.7,sshd:22/tcp
iptables -t filter -A INPUT -s 172.16.100.7 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
显示扩展:必须指明由哪个模块进行的扩展,在iptables中使用-m选项可完成此功能(使用额外的匹配机制)
-m EXETSTION --spe-opt
state:状态扩展
/proc/net/ip_conntrack:查看追踪状态文件
或者:iptstate [-t] 命令
卸载:modprobe -r ip_conntrack
安装:modprobe ip_conntrack
结合ip_conntrack追踪会话的状态
NEW:新连接请求
ESTABLISHED:已建立的连接
INVALID:非法连接
RELATED:相关联的
-m state --state NEW,ESTABLISHED -j ACCEPT
multiport:多端口扩展(离散端口逗号隔开,连续端口冒号隔开)
--source-ports
--destination-ports
--ports
iprange:
--src-range
--dst-range
单个地址和单个网段:可以用-s(源端口),-d(目标端口):-s IP 或-s NET 如:172.16.0.0/16或172.16.100.3-172.16.100.100
iptables -A INPUT -p tcp -m iprange !(这里!表示取反) --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
可以条件取反:!:-s ! 172.16.100.7(除172.16.100.7的任意端口)
例子:
iptables -I INPUT 2 -d 172.16.100.7 -p tcp -m multiport --destination-ports 21,22,80 -m state --state NEW -j ACCEPT
-m connlimit:连接数限制
--connlimit-above N
每个客户端同时最多发起2个(如web服务,只能同时打开两个浏览器请求页面)
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 80 -m connlimit ! --connlimit-above 2 -j ACCEPT
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m state --state NEW,ESTAVLISHED -j ACCEPT
lsmod | grep ip
iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -L -n
开放80:
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 80 -m state --state NEW,ESTAVLISHED -j ACCEPT
iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptstate(查看连接状态)
放行别人ping自己:
iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 172.16.100.7 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT
iptables -L -n --line-numbers
对于ftp服务
要装载:ip_nat_ftp,ip_conntrack_ftp模块(在/etc/sysconfig/iptables-config 加入:
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
1.放行21端口
2.iptables -A INPUT -d 172.16.100.7 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 172.16.100.7 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
ip_conntrack监控条目过多,对于后来的请求直接丢弃
修改条目:sysctl -w net.ipv4.ip_conntrack_max=65536(不是永久有效)
永久有效:/etc/sysctl.conf(添加到此文件)
ls /proc/sys/net/ipv4/netfilter/(查看ip_conntrack配置的文件)
保存规则:
service iptables save
/etc/sysconfig/iptables(默认保存文件)
iptables-save > /etc/sysconfig/iptables.2013041801(自定义保存文件)
iptables-restore < /etc/sysconfig/iptables.2013041801(重定向启用上面自定义的文件)
service iptables save (规则保存,注意:可以修改/etc/sysconfig/iptables文件,保存后,service iptables reload)
service iptables reload
service iptables status
service iptables stop
service iptables start
-j TARGET
ACCEPT
DROP
REJECT
如:iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -j DROP
iptables不是服务,但有服务脚本,服务脚本的主要作用在于管理保存的规则
装载及移除iptables/netfilter相关的内核模块;
iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack
命令:
管理规则:
-A:附加一条规则,添加在链的尾部
-I:CHAIN[num]:插入一条规则,插入为对应CHAIN上的第num条;
-D:CHAIN[num]:删除指定链中的第num条规则;
-R:CHAIN[num]:替换指定的规则;
管理链:
-F:[CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN:设定指定链的默认策略;
iptables -P INPUT DROP 修改默认策略为DROP
-N:自定义一个新的空链
-X:删除一个自定义的空链
-Z:置零指定链中所有规则的计数器;
-E:重命名自定义的链;
查看类:
-L:显示指定表中的规则;
-n:以数字格式显示主机地址和端口号;
-v:显示链及规则的详细信息
-vv:显示链及规则的更详细信息
-x:显示计数器的精确值
--line-numbers:显示规则号码
如:iptables -L -n
动作(target):
ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志
MARK:打标记
iptables -I INPUT -d xxxx -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT -s xxxx -p tcp --sport 80 -j ACCEPT
icmp:
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT(lo是网卡,即接口)
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT

浙公网安备 33010602011771号