iptables中定义默认策略(policy)

当数据包不在我们设置的规则之内时,则该数据包的通过与否,是以Policy的设置为准。在安全性比较高的主机中,Filter内的INPUT链定义的比较严格,INPUT的Policy定义为DROP

ptables定义规则:

格式:iptables [-t table] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP ]

-p : 定义策略(Policy)。注意:P为大写 
ACCEPT:数据包可接受 
DROP:数据包被丢弃,client不知道为何被丢弃。

iptables  -P INPUT DROP  //INPUT默认设置为DROP
iptables  -P OUTPUT DROP  //OUTPUT默认设置为ACCEPT
iptables  -P FORWARD DROP // FORWARD默认设置为ACCEPT

  

iptables定义规则(filter)的格式: 
iptables [-AI 链名] [-io 网络接口 ] [ -p 协议 ] [ -s 来源IP/网络 ] [ -d 目标IP/网络 ] -j [ACCEPT | DROP|REJECT|LOG]

参数说明: 
-A:新增一条规则,该规则在原规则的最后面。 
-I:插入一条规则,默认该规则在原第一条规则的前面。即该新规则变为第一条规则。

-io 网络接口:设置数据包进出的接口规范。 
-i:表示输入。即数据包进入的网络接口。与INPUT链配合 
-o : 表示输出。数据包传出的网络接口。与OUTPUT链配合

-p 协定: 此规则适应于哪种数据包。如tcp,udp,icmp及all.

-s 来源 IP/网络:设置次规则之前数据包的来源地,可指定单纯的IP或网络,例如: 
IP : 192.168.0.100 
网络 : 192.168.0.0/24或者192.168.0.0/255.255.255.0 
如果规则为不允许,则在IP/网络前加 “!” 即可。 
-s ! x.x.x.x

-d 目标 IP/网络。与-s类似,只是是目标IP或者网络而已。

-j:后面接操作。如ACCEPT,DROP ,REJECT或者LOG(记录)

比如:开放lo这个本机的接口以及某个IP来源

//设置io成为受信任的设备,亦即进出lo的数据包都接受
iptables -t filter -A INPUT -i eth0  -j ACCEPT

 

我们可能会有疑惑,为什么没有-s -d等规则,表示不论数据包来自何处或去到哪里,只要是来自lo这个接口全部接受。

设置来自192.168.100.10的就接受,192.168.100.11的就丢弃。

iptables -A INPUT -i eth0 -s 192.168.100.10 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.100.11 -j DROP
iptables -I INPUT -i eth0 -s 192.168.100.0/24 -j ACCEPT

 此时我们执行iptables-save 

[root@localhost ~]# iptables-save
# Generated by iptables-save v1.4.7 on Wed Jun  6 10:41:44 2018
*nat
:PREROUTING ACCEPT [9:1155]
:POSTROUTING ACCEPT [4:1312]
:OUTPUT ACCEPT [4:1312]
COMMIT
# Completed on Wed Jun  6 10:41:44 2018
# Generated by iptables-save v1.4.7 on Wed Jun  6 10:41:44 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [65:5416]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -i eth0 -p tcp -m tcp --sport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Jun  6 10:41:44 2018

  

TCP,UDP协议的规则对比:针对端口设置

  • 在 -s 参数后面可以增加一个参数 -sport 端口范围(限制来源端口),如:1024:65535
  • 在-d 参数后面可以增加一个参数 -dport 端口范围(限制目标端口)

需要特别注意,这两个参数重点在port上面,并且仅有TCP和UDP数据包具有端口,因此要想使用–dport,–sport时需要加上-p tcp或者 -p udp才会成功。

下面做几个小测试:

//丢弃所有想要链接本机21端口的数据包
iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
//想要链接到本机的网上邻居(UDP port 137,138 tcp 139,445)就放行
iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
//只要来自192.168.1.0/24的1024:65535端口的数据包,且想要连接的本机的ssh port就阻挡
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65535 --dport ssh -j DROP

iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

  除了制订端口号之外,TCP数据包还有特殊的标识,比如主动链接的SYN标志。iptables支持使用–syn来处理。

iptables -A INPUT -i eth0 -p tcp --sport 1:1023 -dport 1:1023 --syn -j DROP

  

 firewalld centos7 更改

1、firewalld的基本使用

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld 

开机禁用  : systemctl disable firewalld

开机启用  : systemctl enable firewalld

 

 

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

3.配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息:  firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

 

那怎么开启一个端口呢

添加

firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=80/tcp

删除

firewall-cmd --zone= public --remove-port=80/tcp --permanent

 

 

故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。