centos6中iptables单机网络防火墙的使用
概述:
iptables:基于软件的形式实现的一种防火墙的软件程序
Firewall:工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是两者的组合
主机防火墙:工作于主机边缘,只能对一台主机起到保护作用
网络防火墙:工作于网络边缘,对多台主机起到保护作用
网络层:网络防火墙
应用层:网关
IDS:入侵检测
HIDS:OSSEC
NIDS:snort
Filesystem:tireware
IPS:入侵防御系统
honeypot:蜜罐
系统评估安全工具:
Nessus,nmap
iptables/netfilter:基于网络层的防火墙,连接追踪(状态检测)
ipfw ipchains iptables
iptables:防火墙规则编写工具
netfiter:网络过滤器,是一个框架
hook_function
INPUT
OUTPUT
FORWARD
POATROUTING
PRERROUTING
过滤:做报文筛选
NAT:Network Address Transltion
DNAT
SNAT
mangle:
raw:
FORWARD:
filter
mangle
INPUT
filter
mangle
OUT
filter
mangle
nat
PREROUTING
mangle
nat
POSTOUTING
mangle
nat
将控制强的放在前面,应用访问频繁的也要放在前面
四表:
fileter,net,mangle,raw
五链
PREROUTING(路由前) INPUT FOREARD OUTPUT POSTROUTING(路由后)
表和链的对应关系
filer:INPUT,FORWARD.OUTPUT
nat:PREROUTING OUTPUT POSTROUTING
mangle:PREROUTING FORWARD POSTROUTING INPUT OUTPUT
规则:检查条件,处理机制,
通:白名单,默认为堵,只对能识别的进行放行
堵:黑名单,默认为通,只对能识别的进行阻截
检查条件:
IP:SIP,DIP
TCP:SPORT,DPORT,FLags
UDP:SPORT,DPORT
ICMP:ICMP-TYPE
扩展机制:
time string state(connection-tracking)
处理机制:
DROP(丢弃),
REJECT(拒绝,并返回)
ACCEPT(允许)
SNAT
DNAT
RETURN(返回)
REDIRECT(端口转发)
LOG(只记录日志)
mangle:做防火墙标记
如何写规则
-t 表 -L 列出 -n 以数值方式显示
iptables [-t table] -N chain
创建一条自定义的空规则链
iptables [-t table] -X chain
产出一条自定义的空规则链
iptables [-t table] -E old-chin-name new-chain-name
为链修改名
iptables [-t table] -P chain—name target
为链指定默认策略,修改默认的属性
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
-F 清空链中的规则
规则由编号,在链中自上而下,从1开始
-L list 列出表中的所有规则
-n:数字格式显示ip和port
-v:显示信息,
pkts:packets,被本规则所有匹配到的报文的个数
baytes:被本规则所匹配到的所有报文的大小子和,单位是字节,会执行单位换算
target:目标,即处理机制
port:协议一般为(TCP|UDP|ICMP)
opt:可选项
in:数据包的流入端口
out:数据包的流出接口
scource:源地址
destination:目标地址
-vv:
-vvv:
-x:exactly:精确值,不执行单位换
--line-nambers:显示各规则的行号
-Z:zero,清零:
把规则的计数器清零
打印iptables列表
# iptables -t filter -L -n
建立新的规则mychain
# iptables -t filter -N mychain
删除mychain
# iptables -X mychain
网络192.168.0.0/16访问192.168.8.40允许
# iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.8.40 -j ACCEPT
主机192.168.8.40访问192.168.0.0/16网段允许
# iptables -t filter -A OUTPUT -s 192.168.8.40 -d 192.168.0.0/16 -j ACCEPT
网段192.168.11.0访问192.168.8.40 icmp协议丢弃
# iptables -A INPUT -i eth0 -s 192.168.11.0/24 -d 192.168.8.40 -p icmp -j DROP
拒绝
# iptables -A INPUT -i eth0 -d 192.168.8.40 -p icmp -j REJECT
# iptables -A OUTPUT -o eth0 -s 192.168.8.40 -p icmp -j REJECT
iptables [-t table] {-A|-D} chain rule-specification
-A:append,附加一条规则
rule-specification
匹配条件 -j 处理机制
匹配条件:
通用匹配
-s 匹配原地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16 相当于 --src,或 --source
-d 匹配目标地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16
-p 匹配协议,通常只能使用{TCP|UDP|ICMP}三者之一
-i 数据报文流入的接口,通常只用于INPUT,FORWARD和PREROUTING
-o 数据报文流出的接口,通常只用OUTPUT,FORWARD和POSTROUTING
保存规则:
service iptables save
规则会被保存至/etc/sysconfig/iptables文件中:
默认,start时也会读取次文件中的内容以设置规则
iptables-save > /path/to/some_rulefile 保存iptables至别的位置
iptables-restore < /path/to/some_rulefile 从自定义的位置读取并使之生效
规则命令:
-A:添加
-D:删除
iptables [-t table] -D chain rulenum
当一条被删除,另外的一条会被补上
删除INPUT和OUTPUT中的第二条规则
# iptables -t filter -D INPUT 2
# iptables -t filter -D OUTPUT 2
插入规则
iptables [-t table] -I chain [rulenum] rule-specification
替换规则(覆盖指定规则)
iptables [-t table] -R chain rulenum rule-specification
显示指定链上的规则添加命令
iptables [-t table] -S [chain [rulenum]]
扩展匹配
隐含扩展:使用-p {tcp|udp|icmp}指定某特定协议后,自动能够对协议进行的扩展
-p tcp
--dport m[-n],匹配的目标端口,可以是连续的多个端口
--sport:m[-n],匹配的源端口,可以是连续的多个端口
--tcp-flags
URG PSH PST SYN ACK FIN
显式扩展:必须要明确指定的扩展模块
-m 扩展模块名称 --专用选项1 --专用选项2
multiport:多端口匹配,一次指定多个离散端口
--source-ports --sport ports{port1 port2}
--destination-ports, --dports
--ports
iprange:ip地址服务
[!] --src-range from [-to]
[!] --dst-range from [-to]
time 指定时间范围
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss]
--timestart hh:mm[:ss]
[!] --weekdays day[,day....]
string 字符串匹配
--alog {bm|kmp} :字符匹配查找时使用的算法
--string “STRING” :要查找的字符串
--hex-string "HEX-STRING" 要查找的字符,先编码成16进制格式
connlimit:每IP对指定服务的最大并发连接数
[!] --connlimit-above
limit:报文速率控制
--limit #[/second|/minute|/hour|/day]
--limit-burst #
hping3:安装此包,做测试
state:状态追踪
ip_conntrack,nf_conntrack
netfilter:会话
--state
NEW
ESTABLISHED
RELATED
INVALID
调整连接追踪功能所能容纳的最大连接数
cat /proc/sys/net/nf_conntrack_max
定义了连接追踪的最大值,因此,建议按需调大此值
cat /proc/net/nf_conntrack
记录了当前追踪的所有连接
cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
超时时间
法则:
1.对于进入状态为ESTABLISHED都应该放行
2.对于返回状态为ESTABLISHED都应该放行
3.严格检查进入的状态为NEW的链接
4.所有状态为INVALID都应该拒绝
iptable -I lean_in 5 -d 172.16.100.7 -m state --state INVALID -j DROP
-j target
RETURN:返回调用链
常见服务规则案例:
放行来自于网络192.168.11.0/24对本机192.168.8.40 ssh服务的访问:
# iptables -t filter -A INPUT -s 192.168.11.0/24 -d 192.168.8.40 -p tcp --dport 22 -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.8.40 -d 192.168.11.0/24 -p tcp --sport 22 -j ACCEPT
拒绝来自192.168.11.0网段对192.168.8.40 web 80端口的访问
# iptables -A INPUT -s 192.168.11.0/24 -d 192.168.8.40 -p tcp --dport 80 -j DROP
# iptables -A OUTPUT -s 192.168.8.40 -d 192.168.11.0/24 -p tcp --sport 80 -j DROP
-p udp
--dport m[-n],匹配的目标端口,可以是连续的多个端口
--sport:m[-n],匹配的源端口,可以是连续的多个端口
放行本机的tftp服务
# iptables -A INPUT -s 192.168.11.0/24 -d 192.168.8.40 -p udp --dport 69 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -d 192.168.11.0/24 -p udp --sport 69 -j ACCEPT
放行本机的DNS服务
# iptables -A INPUT -s 192.168.0.0/16 -d 192.168.8.40 -p udp --dport 53 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -d 192.168.0.0/16 -p udp --sport 53 -j ACCEPT
查询互联网dns
# iptables -A OUTPUT -s 192.168.8.40 -p udp --dport 53 -j ACCEPT
# iptables -A INPUT -d 192.168.8.40 -p udp --sport 53 -j ACCEPT
-p icmp
--icmp-type
8:ping请求
0:ping响应
放开本机的ping响应
# iptables -A INPUT -d 192.168.8.40 -p icmp --icmp-type 8 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p icmp --icmp-type 0 -j ACCEPT
将input、output和forward都禁用
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
放行192.168.11.0/24网络对80端口访问
# iptables -t filter -A INPUT -s 192.168.11.0/24 -d 192.168.8.40 -p tcp --dport 80 -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.8.40 -d 192.168.11.0/24 -p tcp --sport 80 -j ACCEPT
放行3306端口对所有主机的访问
# iptables -t filter -A INPUT -d 192.168.8.40 -p tcp --dport 3306 -j ACCEPT
# iptables -t filter -A OUTPUT -s 192.168.8.40 -p tcp --sport 3306 -j ACCEPT
放行对本地回环口的访问:
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
保存规则
# service iptables save
扩展匹配之状态追踪案例
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -P OUTPUT DROP
//对每秒2次,高峰5次的ping包给予响应
# iptables -A INPUT -d 192.168.8.40 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 5 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT
//放行80端口
# iptables -A INPUT -d 192.168.8.40 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
验证
# curl -I http://192.168.8.40/index.html
HTTP/1.1 200 OK
Date: Mon, 28 Dec 2015 15:11:36 GMT
Server: Apache/2.4.9 (Unix)
Last-Modified: Sun, 27 Dec 2015 19:39:40 GMT
ETag: "1c-527e659749c1c"
Accept-Ranges: bytes
Content-Length: 28
Content-Type: text/html
//对输入、输出已经建立的连接放行
# iptables -I INPUT -d 192.168.8.40 -m state --state ESTABLISHED -j ACCEPT
# iptables -I OUTPUT -s 192.168.8.40 -m state --state ESTABLISHED -j ACCEPT
对规则进行合并
# iptables -I INPUT 2 -d 192.168.8.40 -p tcp -m multiport --dports 22,80 -m state --state NEW -j ACCEPT
删除无用规则
# iptables -L -n -v --line-numbers
# iptables -D INPUT 3
# iptables -D INPUT 4
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
# iptables -L -n -v --line-numbers
通过命令观察数据变化
# watch -n .3 "iptables -L -n -v"
扩展案例之RETURN:返回调用链
# iptables -t filter -N clean_in
//对数据包进行清洗
# iptables -A clean_in -d 192.168.8.40 -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A clean_in -d 192.168.8.40 -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A clean_in -d 192.168.255.255 -p icmp -j DROP
# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP
//应用clean_in规则
# iptables -A clean_in -d 192.168.8.40 -j RETURN
# iptables -I INPUT -d 192.168.8.40 -j clean_in
将INVALID状态的连接放弃
# iptables -I clean_in 5 -d 192.168.8.40 -m state --state INVALID -j DROP
放行工作于被动模式的ftp服务
1、确保iptables加载ftp协议支持的模块,ip_nat_ftp,ip_conntrack_ftp
编辑/etc/syconfig/iftables-config文件,定义如下参数:
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
2、放行请求报文的RELATED和ESTABLISHED状态,放行响应报文的ESTABLISHED状态
具体步骤:
初始化:放行所有出和入的请求,开放ssh服务22号端口的访问并关闭所有进出请求
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -A INPUT -d 192.168.8.40 -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p tcp --sport 22 -j ACCEPT
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -A INPUT -d 192.168.8.40 -p tcp --dport 21 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p tcp --sport 21 -j ACCEPT
放开21号端口不能访问FTP服务,继续放开20号端口依旧不能访问192.168.8.40的FTP服务(21号端口主要用来建立会话、认证,20号端口用来传输数据)
# iptables -A INPUT -d 192.168.8.40 -p tcp --dport 20 -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -p tcp --sport 20 -j ACCEPT
删除这两条无用的规则
# iptables -D INPUT 3
# iptables -D OUTPUT 3
# iptables -A INPUT -d 192.168.8.40 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 192.168.8.40 -m state --state ESTABLISHED -j ACCEPT
加载FTP扩展模块(临时有效)
# modprobe ip_nat_ftp
# modprobe ip_conntrack_ftp
想长期有效需要修改配置文件
# vim /etc/sysconfig/iptables-config
修改:
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
==================
优化之 开放21,22,80端口的访问
# iptables -I INPUT -d 192.168.8.40 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -D INPUT 4
# iptables -I INPUT 2 -d 192.168.8.40 -p tcp -m multiport --dport 21,22,80 -m state --state NEW -j ACCEPT
# iptables -D INPUT 3
# iptables -D INPUT 3
# iptables -I OUTPUT -s 192.168.8.40 -m state --state ESTABLISHED -j ACCEPT
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
# iptables -D OUTPUT 2
保存规则
# iptables-save > /etc/sysconfig/iptables-v1
清空规则
# echo "" > /etc/sysconfig/iptables
# sed -i "/^$/d" /etc/sysconfig/iptables
恢复规则
# iptables-restore < /etc/sysconfig/iptables-v1
centos6中iptables单机网络防火墙的使用的更多相关文章
- iptables详解(11):iptables之网络防火墙
我们一起来回顾一下之前的知识,在第一篇介绍iptables的文章中,我们就描述过防火墙的概念,我们说过,防火墙从逻辑上讲,可以分为主机防火墙与网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防 ...
- iptables实现网络防火墙及地址转换
iptables主机防火墙功能及常用命令 FSM:Finite State Machine 有限状态机 客户端:closed -->syn_sent -->established --&g ...
- Centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等(转)
iptables防火墙 1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 servi ...
- 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作
1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...
- 4.iptables 网络防火墙
[1] #如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文. [2] #使用如下命令查看当前主机是否已经开启了核心转发,0表示为开启,1表示已开启 c ...
- Linux之iptables(四、网络防火墙及NAT)
网络防火墙 iptables/netfilter网络防火墙: (1) 充当网关 (2) 使用filter表的FORWARD链 注意的问题: (1) 请求-响应报文均会经由FORWARD链,要注意规则的 ...
- iptables网络防火墙和SNAT原理实战
网络防火墙 iptables/netfilter网络防火墙: (1) 充当网关 (2) 使用filter表的FORWARD链 注意的问题: (1) 请求-响应报文均会经由FORWARD链,要注意规则的 ...
- 网络防火墙和NAT地址转换
网络防火墙 iptables/netfilter网络防火墙: (1) 充当网关 (2) 使用filter表的FORWARD链 注意的问题: (1) 请求-响应报文均会经由FORWARD链,要注意规则的 ...
- 网络防火墙之iptables的前世今生和归宿
任何事物都有一个从无到有,再归于无的过程.是的,我这里用了一个绝对词:任何. 防火墙 在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的 ...
随机推荐
- centos6.5下修改文件夹权限和用户名用户组
0.说明 Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结. 在命令行使用命令"ll"或 ...
- 【UR #17】滑稽树前做游戏
假装看懂的样子 假装会做的样子 UOJ Round #17 题解 加上一个(t-w)^c,c是和i相连的点的度数 是一个多项式的话可以归纳证明 一些具体实现: 多项式存储,保留t,y, f=ai*t^ ...
- C# ADO.NET与面向对象
软件开发的三层:界面层,业务逻辑层,数据访问层: 数据访问层:项目添加App_Code文件夹: 实体类:根据数据库表结构,类名和数据库表名一致: 每个成员变量要与数据库表的列相对应,对象正好可以列为一 ...
- [luoguU42591][小T的面试题]
luoguU42591 题意: n个不超过n的正整数中,其中有一个数出现了两次,其余的数都只出现了一次, 求这个出现两次的数. 思路: 这个题的亮点在于内存限制1MB.明显不能再用数组储存了,肯定是用 ...
- [luogu2822][组合数问题]
题目链接 题解: 对于上面和下面的式子进行分解质因数,然后看看上面的质因数个数减去下面的质因数个数能不能达到k的质因数的要求即可. 分解质因数的时候用对于阶乘分解质因数的常用方法:比如要求1999!中 ...
- MSXML2.ServerXMLHTTP & HTTPS & 证书过期 — msxml3.dll '80072f05'
昨天测试一个几天前写的一个应用,时不时的报错: msxml3.dll '80072f05' The date in the certificate is invalid or has expired ...
- InfluxDB、grafana、collect部署监控(centos6.8)
collect部署 1.安装 yum install collectd -y 2.配置/etc/collectd.conf LoadPlugin network <Plugin network& ...
- 学习windows编程 day5 之按键消息
case WM_KEYDOWN://带sys的按键消息大多是系统需要自己处理的,我们一般不需要,默认处理 //wParam 指定按键的虚拟键代码 //lParam 指定技术,扫描码,闲钱状态,转换状态 ...
- Runnable Callable及Future
https://www.cnblogs.com/MOBIN/p/6185387.html
- POJ - 1850 Code(组合数学)
https://vjudge.net/problem/POJ-1850 题意 输出某字符串在字典中的位置.字符串不合规则时输出0. 分析 首先判断字符串合法性,也就是判断是不是升序排列的.如果符合,以 ...