iptables
- 原理:对数据包的控制(称为用户空间,使得插入修改出去信息包过滤表中的规则变得容易)
- 安装:apt-get install iptables
- 服务配置文件:
- 表 :优先级--raw-->mangle-->nat-->filter
filter:包过滤(默认) input链 forward链 output链
raw:配置数据包,实现数据跟踪(不会被系统跟踪) prerouting链 output链
nat:用于网络地址转换(端口转发) prerouting链 postrouting链 output链
mangle:包修改 prerouting链 postrouting链 input链 output链 forward链
- 链:数据包的传输路径
input链:处理来自外部的数据
output链:处理往外发送的数据
forward链:将数据转发到本机的其他网卡上
- 命令格式:iptables -t table -命令 匹配 操作
- 命令选项:-A 在规则列表最后添加一条规则
-F删除表中的所有规则
-D从列表规则中删除一条规则
-R替换列表规则中一条规则
-I在指定位置插入一条规则
-L查看列表规则
- 匹配选项
-p 指定数据包匹配的协议
-s 指定数据包匹配的源端口号
-m 指定数据包规则使用的过滤模块
reject 阻拦数据包,并返回数据包通知对方常用动作: accept 接收所有数据
drop:丢弃数据包,不予处理
- 常用命令
iptables –F 查看现有规则
iptables –L(iptables –L –v -n) 查看规则
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 增加一条规则在最后
iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 增加一条规则在指定位置
iptabels -D INPUT 2 删除一条规则
iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 修改一条规则
- 保存规则(ubuntu)
iptables-save > /etc/iptables.up.rules
编辑/etc/network/interfaces
-A INPUT -p tcp -m tcp --dport 8082 -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -j REJECT --reject-with icmp-port-unreachable 8082端口限制同ip线程数为10
并且在 iface lo inet loopback 后增加一行 pre-up iptables-restore < /etc/iptables.up.rules 应用防火墙规则