CentOS7默认使用的是firewall作为防火墙,这里改为iptables防火墙。@H_403_7@
systemctlstopfirewalld.service#停止firewall@H_403_7@
systemctldisablefirewalld.service#禁止firewall开机启动@H_403_7@
2、安装iptables防火墙@H_403_7@
yuminstalliptables-services#安装@H_403_7@
vi/etc/sysconfig/iptables#编辑防火墙配置文件@H_403_7@
**********************************************************************************************@H_403_7@
#Firewallconfigurationwrittenbysystem-config-firewall@H_403_7@
#Manualcustomizationofthisfileisnotrecommended.@H_403_7@
*filter@H_403_7@
:INPUTACCEPT[0:0]@H_403_7@
:FORWARDACCEPT[0:0]@H_403_7@
:OUTPUTACCEPT[0:0]@H_403_7@
-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT@H_403_7@
-AINPUT-picmp-jACCEPT@H_403_7@
-AINPUT-ilo-jACCEPT@H_403_7@
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT@H_403_7@
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT@H_403_7@
-AINPUT-jREJECT--reject-withicmp-host-prohibited@H_403_7@
-AFORWARD-jREJECT--reject-withicmp-host-prohibited@H_403_7@
COMMIT@H_403_7@
**********************************************************************************************
@H_403_7@
@H_403_7@
systemctlrestartiptables.service#最后重启防火墙使配置生效@H_403_7@
systemctlenableiptables.service#设置防火墙开机启动@H_403_7@
@H_403_7@
@H_403_7@
@H_403_7@
IPTables包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加各种数据包处理规则。@H_403_7@
FILTER默认过滤表,内建的链有:@H_403_7@
- NAT实现网络地址转换的表,内建的链有:@H_403_7@
- MANGLE此表用于改变数据包,共5条链:@H_403_7@
- PREROUTING:处理传入连接@H_403_7@
INPUT:处理报文@H_403_7@
POSTROUTING:处理即将传出数据包@H_403_7@
FORWARD:处理通过本机转发的数据包@H_403_7@
@H_403_7@
接下来我们将由简入难介绍25条Linux管理员最常会用到的IPTables规则。@H_403_7@
@H_403_7@
1、启动、停止和重启IPTables@H_403_7@
虽然IPTables并不是一项服务,但在Linux中还是可以像服务一样对其状态进行管理。@H_403_7@
基于SystemD的系统@H_403_7@
systemctlstartiptablessystemctlstopiptablessystemctlrestartiptables@H_403_7@
基于SysVinit的系统@H_403_7@
/etc/init.d/iptablesstart/etc/init.d/iptablesstop/etc/init.d/iptablesrestart@H_403_7@
2、查看IPtables防火墙策略@H_403_7@
你可以使用如下命令来查看IPtables防火墙策略:@H_403_7@
iptables-L-n-v@H_403_7@
以上命令是查看默认的FILTER表,如果你只希望查看特定的表,可以在-t参数后跟上要单独查看的表名。例如只查看NAT表中的规则,可以使用如下命令:@H_403_7@
iptables-tnat-L-v–n@H_403_7@
如果你发布有某个IP向服务器导入攻击或非正常流量,可以使用如下规则屏蔽其IP地址:@H_403_7@
iptables-AINPUT-sxxx.xxx.xxx.xxx-jDROP@H_403_7@
注意需要将上述的XXX改成要屏蔽的实际IP地址,其中的-A参数表示在INPUT链的最后追加本条规则。(IPTables中的规则是从上到下匹配的,一旦匹配成功就不再继续往下匹配)@H_403_7@
如果你只想屏蔽TCP流量,可以使用-p参数的指定协议,例如:@H_403_7@
iptables-AINPUT-ptcp-sxxx.xxx.xxx.xxx-jDROP@H_403_7@
4、解封某个IP地址@H_403_7@
要解封对IP地址的屏蔽,可以使用如下命令进行删除:@H_403_7@
iptables-DINPUT-sxxx.xxx.xxx.xxx-jDROP@H_403_7@
其中-D参数表示从链中删除一条或多条规则。@H_403_7@
很多时候,我们需要阻止某个特定端口的网络连接,可以使用IPtables关闭特定端口。@H_403_7@
阻止特定的传出连接:@H_403_7@
iptables-AOUTPUT-ptcp--dportxxx-jDROP@H_403_7@
阻止特定的传入连接:@H_403_7@
iptables-AINPUT-ptcp--dportxxx-jACCEPT@H_403_7@
6、使用Multiport控制多端口@H_403_7@
使用multiport我们可以一次性在单条规则中写入多个端口,例如:@H_403_7@
iptables-AINPUT-ptcp-mmultiport--dports22,80,443-jACCEPTiptables-AOUTPUT-ptcp-mmultiport--sports22,443-jACCEPT@H_403_7@
7、在规则中使用IP地址范围@H_403_7@
在IPtables中IP地址范围是可以直接使用CIDR进行表示的,例如:@H_403_7@
iptables-AOUTPUT-ptcp-d192.168.100.0/24--dport22-jACCEPT@H_403_7@
8、配置端口转发@H_403_7@
有时我们需要将Linux服务器的某个服务流量转发到另一端口,此时可以使用如下命令:@H_403_7@
iptables-tnat-APREROUTING-ieth0-ptcp--dport25-jREDIRECT--to-port2525@H_403_7@
上述命令会将所有到达eth0网卡25端口的流量重定向转发到2525端口。@H_403_7@
有时会有用户在某个服务,例如HTTP80上发起大量连接请求,此时我们可以启用如下规则:@H_403_7@
iptables-AINPUT-ptcp--dport80-mlimit--limit100/minute--limit-burst200-jACCEPT@H_403_7@
上述命令会将连接限制到每分钟100个,上限设定为200。@H_403_7@
对Linux禁PING可以使用如下规则屏蔽ICMP传入连接:@H_403_7@
iptables-AINPUT-picmp-ieth0-jDROP@H_403_7@
11、允许访问回环网卡@H_403_7@
环回访问(127.0.0.1)是比较重要的,建议大家都开放:@H_403_7@
iptables-AINPUT-ilo-jACCEPTiptables-AOUTPUT-olo-jACCEPT@H_403_7@
iptables-AINPUT-mmac--mac-source00:00:00:00:00:00-jDROP@H_403_7@
13、限制并发连接数@H_403_7@
如果你不希望来自特定端口的过多并发连接,可以使用如下规则:@H_403_7@
iptables-AINPUT-ptcp--syn--dport22-mconnlimit--connlimit-above3-jREJECT@H_403_7@
以上规则限制每客户端不超过3个连接。@H_403_7@
14、清空IPtables规则@H_403_7@
要清空IPtables链可以使用如下命令:@H_403_7@
iptables-F@H_403_7@
要清空特定的表可以使用-t参数进行指定,例如:@H_403_7@
iptables-tnat–F@H_403_7@
15、保存IPtables规则@H_403_7@
默认情况下,管理员对IPtables规则的操作会立即生效。但由于规则都是保存在内存当中的,所以重启系统会造成配置丢失,要永久保存IPtables规则可以使用iptables-save命令:@H_403_7@
iptables-save>~/iptables.rules@H_403_7@
16、还原IPtables规则@H_403_7@
有保存自然就对应有还原,大家可以使用iptables-restore命令还原已保存的规则:@H_403_7@
iptables-restore<~/iptables.rules@H_403_7@
17、允许建立相关连接@H_403_7@
随着网络流量的进出分离,要允许建立传入相关连接,可以使用如下规则:@H_403_7@
iptables-AINPUT-mconntrack--ctstateESTABLISHED,RELATED-jACCEPT@H_403_7@
允许建立传出相关连接的规则:@H_403_7@
iptables-AOUTPUT-mconntrack--ctstateESTABLISHED-jACCEPT@H_403_7@
18、丢弃无效数据包@H_403_7@
很多网络攻击都会尝试用黑客自定义的非法数据包进行尝试,我们可以使用如下命令来丢弃无效数据包:@H_403_7@
iptables-AINPUT-mconntrack--ctstateINVALID-jDROP@H_403_7@
如果你的系统不会用于邮件发送,我们可以在规则中屏蔽SMTP传出端口:@H_403_7@
iptables-AOUTPUT-ptcp--dports25,465,587-jREJECT@H_403_7@
20、阻止连接到某块网卡@H_403_7@
如果你的系统有多块网卡,我们可以限制IP范围访问某块网卡:@H_403_7@
iptables-AINPUT-ieth0-sxxx.xxx.xxx.xxx-jDROP@H_403_7@
源地址可以是IP或CIDR。@H_403_7@
serviceiptablessave@H_403_7@
iptables–F@H_403_7@
iptables-PINPUTDROP@H_403_7@
#配置默认的拒绝规则。基本规则是:先拒绝所有的服务,然后根据需要再添加新的规则。@H_403_7@
iptables-AINPUT-ptcp--dport80-jACCEPT@H_403_7@
#打开WEB服务端口的tcp协议@H_403_7@
iptables-AINPUT-ptcp--dport110-jACCEPT@H_403_7@
#打开POP3服务端口的tcp协议@H_403_7@
iptables-AINPUT-ptcp--dport25-jACCEPT@H_403_7@
#打开SMTP服务端口的tcp协议@H_403_7@
iptables-AINPUT-ptcp--dport21-jACCEPT@H_403_7@
#打开FTP服务端口的tcp协议@H_403_7@
iptables-AINPUT-ptcp-s202.106.12.130--dport22-jACCEPT@H_403_7@
#允许IP地址为202.106.12.130这台主机连接本地的SSH服务端口@H_403_7@
iptables-AINPUT-ptcp--dport53-jACCEPT@H_403_7@
#允许DNS服务端口的tcp数据包流入@H_403_7@
iptables-AINPUT-pudp--dport53-jACCEPT@H_403_7@
#允许DNS服务端口的udp数据包流入@H_403_7@
iptables-AINPUT-picmp-icmp-typeecho-request-ieth1-jDROP@H_403_7@
#防止死亡之ping,从接口eth1进入的icmp协议的请求全部丢弃。@H_403_7@
iptables-AFORWARD-ptcp--syn-mlimit--limit1/s-jACCEPT@H_403_7@
#防止SYNFlood(拒绝服务攻击)@H_403_7@
iptables-tnat-APOSTROUTING-oeth1-s192.168.0.226-jMASQUERADE@H_403_7@
#允许192.168.0.226通过eth1IP伪装出外网@H_403_7@
iptables-tnat-APOSTROUTING-oeth0-s192.168.0.4-ptcp--dport25-jMASQUERADE@H_403_7@
#允许192.168.0.4通过eth0伪装访问外网的25端口@H_403_7@
@H_403_7@
转载来自来源:http://www.jb51.cc/article/p-pdufshez-bpd.html@H_403_7@