Linux防火墙iptables-基础与编写防火墙规则

  • 来源:网络
  • 更新日期:2020-08-07

摘要:建站服务器 Linux防火墙iptables-基础与编写防火墙规则.txt Linux防火墙基础与编写防火墙规则 https://www.cnblogs.com/L2366/p/

建站服务器

Linux防火墙iptables-基础与编写防火墙规则.txt

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 

新网虚拟主机