重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Linux防火墙iptables-基础与编写防火墙规则.txt
田家庵ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!Linux防火墙基础与编写防火墙规则
https://www.cnblogs.com/L2366/p/9285917.html
linux 防火墙配置规则
https://blog.csdn.net/lemontree1945/article/details/79309273
iptables详解(1)到(14)
https://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables/
https://www.cnblogs.com/wanstack/category/1153938.html
linux系统防火墙iptables命令规则及配置的示例
https://blog.whsir.com/post-167.html
Linux系统修改防火墙配置
https://www.cnblogs.com/ixan/p/8243623.html
Linux Centos 7 防火墙配置
https://www.cnblogs.com/su-king/p/9996633.html
RHEL 7.0 修改防火墙配置
https://blog.csdn.net/weixin_30488085/article/details/95228014
https://blog.csdn.net/catoop/article/details/47861583
规则链:规则的集合
五种链:(必须大写)
INPUT:入站
OUTPUT:出站
FORWARD:转发
POSTROUTING:路由后转换
PREROUTING:路由前转换
1)INPUT链:当收到访问防火墙本机地址的数据包(入站),应用此链中的规则。
2)OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
3)FORWARD链:当收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。
4)PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。
5)POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。
规则表:规则链的集合
有4个表:
Raw:状态跟踪
Mangle:设置标记
Nat:地址转换
Filter:包过滤
1)filter表:用来对数据包进行过滤,表内包含三个链,即:INPUT,FORWARD,OUTPUT
2)Nat表:nat表主要用来修改数据包的ip地址、端口号等信息。包含三个链,即PREROUTING,POSTROUTING,OUTPUT
3)Mangle表:用来修改数据包的TOS、TTL,或者为数据包设置MARL标记,实现流量整形,策略路由等高级应用,包含五个链,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD
4)Raw表:用来决定是否对数据包进行状态跟踪,包含两个链:即OUTPUT,PREROUTING
Iptables -t 表名 命令选项 链名 条件选项 -j 控制类型
1)不指定表名,为filter表
2)命令选项、链名、控制类型必须大写,其他必须小写
3)条件选项可以设置多项
命令选项:
-A:追加到末尾
-I:插入(默认插入到第一条)
-L:查看
-D:删除(必须加序号)
-F:清空,但默认策略不清空
-P:默认策略,只有ACCEPT或DROP两种
-R:替换
-X:删除自定义链
-N:新建自定义链
-n:以数字方式显示
--line-number:添加序号
控制类型:
1)ACCEPT:允许
2)REJECT:拒绝,返回信息
3)DROP:丢弃,无信息
4)LOG:记录日志,传给下一条规则
5)SNAT:源地址转换
6)DNAT:目标地址转换
7)MASQUERADE:ip伪装,源地址转换
8)REDIRECT:重定向
条件选项:
1)通用匹配:不依赖于任何条件可直接使用
-s:源地址 -d:目标地址
-p:协议 -i:入口
-o:出口 !:取反
2)隐含匹配:依赖指定的协议
--sport:源端口 --dport:目标端口
--tcp—flags:TCP标记
--icmp-type:icmp类型,有两种:
Echo-request(可用8代替) 请求
Echo-reply(可用0代替) 回应
开启转发功能:
永久有效:vim /etc/sysctl.conf
Net.ipv4.ip_forward=1
生效:sysctl -p
临时转发,立即生效
Sysctl -w net.ipv4.ip_forward=1
Echo “1” > /proc/sys/net/ipv4/ip_forward
3)显示配置:依赖于指定的功能模块,必须明确指定模块名称才可以使用
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
IP范围匹配:-m iprange --src-range ip范围
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
查看本机IPTABLES的设置情况
iptables -nL
service iptables status
将新设置的规则保存到文件
格式:iptables -save [-t table]
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
其它格式:iptables [-t table] [-FXZ]
-F :请除所有的已制订的规则
-X :除掉所有用户“自定义”的chain
-Z :将所有的统计值清0
添加规则:添加INPUT链,INPUT链的默认规则是DROP,凡是不在规则里的都DROP。
创建自定义链
iptables -t filter -N self_control
-N = new
增加自定义链规则
iptables -t filter -I self_control -s 192.151.102.2 -j REJECT
引用自定义链
iptables -t filter -I INPUT -j self_control
删除自定义链:
删除自定义链有两个条件:
1.自定义链中没有规则
2.自定义链没有被引用
清空自定义链规则:
iptables -t filter -F self_ctl
删除链引用规则:
iptables -t filter -D INPUT 1
删除自定义链:
iptables -X self_ctl
重命名自定义链
iptables -E self_control self_ctl
-E = --rename-chain
示例
我们只允许192.168.0.3的机器进行SSH连接
iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
允许172.16网段内的主机访问:
#iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.63.7 -j ACCEPT
译:-t表,默认filter -A追加规则 INPUT进入 -s检查源 -d检查目标 -j处理动作 ACCEPT接受;入栈的目标是本机所以-d是本机IP;
拒绝172.16.63.66主机访问(目前172.16.63.66可以ping通本机,也可以ssh等):
iptables -t filter -A INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT
注:如果你操作过第一个,那么此时设置完后,发现172.16.63.66依旧可以ping进来,原来是我们刚才已经添加了允许172.16网段访问的规则,所以此规则是后添加的,所以不生效。同一服务规则,小范围放上面,次序很重要。
如果是多个不同的服务,规则排序要根据实际情况,例如web服务每天访问量巨大,而禁止某IP服务属于小范围,如果把某IP禁止服务放在前面,每次web服务都要先检查此IP,所以应该把匹配性较大的规则放在前面。
删除刚才添加的“允许172.16网段访问的”规则:
iptables -D INPUT 1
注:需要先-vnL --line-numbers查询下,此规则属于第几条,这里是第一条则删除第一条。
插入一条规则,不让172.16.63.66的主机访问本机:
iptables -I INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT
注:默认插入第一条,如果插入第二条,则:#iptables -I INPUT 2 -s 172.16.63.66 -d 172.16.63.7 -j REJECT
注:这样172.16.63.66进行ping本机时,会直接提示拒绝,当然这样是不友好的(就是拒绝你,呵呵...),所以我们一般建议使用DROP直接丢弃。
替换第一条规则,不让172.16.63.77的主机访问本机:
iptables -R INPUT 1 -s 172.16.63.77 -d 172.16.63.7 -j DROP
采用远程SSH登陆,我们要开启22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
减少不安全的端口连接
iptables -A OUTPUT -p tcp –sport 31337 -j DROP
iptables -A OUTPUT -p tcp –dport 31337 -j DROP
其他的规则连接也一样这么设置:FORWARD链
iptables -A FORWARD -i eth2 -o eh0 -j ACCEPT
处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
查看本机关于NAT的设置情况
iptables -t nat -L
防止外网用内网IP欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
禁止与211.101.46.253的所有连接
iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP