CentOS 7.X默认firewall防火墙改成iptables防火墙

CentOS 7 默认使用的是firewall做为防火墙,这里改成iptables防火墙。java

一、关闭firewall服务器

systemctl stop firewalld.service #中止firewall网络

systemctl disable firewalld.service #禁止firewall开机启动并发

二、安装iptables防火墙less

yum install iptables-services #安装tcp

vi /etc/sysconfig/iptables #编辑防火墙配置文件ide

**********************************************************************************************this

# Firewall configuration written by system-config-firewallspa

# Manual customization of this file is not recommended..net

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

**********************************************************************************************


:wq! #保存退出

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动


20条IPTables防火墙规则用法:



IPTables 包括一组内置和由用户定义规则的「链」,管理员能够在「链」上附加各类数据包处理规则。

  • FILTER 默认过滤表,内建的链有:

  • INPUT:处理流入本地的数据包

  • FORWARD:处理经过系统路由的数据包

  • OUTPUT:处理本地流出的数据包

  • NAT 实现网络地址转换的表,内建的链有:

  • PREROUTING:处理即将接收的数据包

  • OUTPUT:处理本地产生的数据包

  • POSTROUTING:处理即将传出的数据包

  • MANGLE 此表用于改变数据包,共 5 条链:

  • PREROUTING:处理传入链接

  • OUTPUT:处理本地生成的数据包

  • INPUT:处理报文

  • POSTROUTING:处理即将传出数据包

  • FORWARD:处理经过本机转发的数据包


接下来咱们将由简入难介绍 25 条 Linux 管理员最常会用到的 IPTables 规则。


一、启动、中止和重启IPTables

虽然 IPTables 并非一项服务,但在 Linux 中仍是能够像服务同样对其状态进行管理。

基于SystemD的系统

systemctl start iptablessystemctl stop iptablessystemctl restart iptables

基于SysVinit的系统

 /etc/init.d/iptables start/etc/init.d/iptables stop/etc/init.d/iptables restart

二、查看IPtables防火墙策略

你可使用以下命令来查看 IPtables 防火墙策略:

 iptables -L -n -v

以上命令应该返回数据下图的输出:

以上命令是查看默认的 FILTER 表,若是你只但愿查看特定的表,能够在 -t 参数后跟上要单独查看的表名。例如只查看 NAT 表中的规则,可使用以下命令:

 iptables -t nat -L -v –n

三、屏蔽某个IP地址

若是你发布有某个 IP 向服务器导入***或非正常流量,可使用以下规则屏蔽其 IP 地址:

 iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

注意须要将上述的 XXX 改为要屏蔽的实际 IP 地址,其中的 -A 参数表示在 INPUT 链的最后追加本条规则。(IPTables 中的规则是从上到下匹配的,一旦匹配成功就再也不继续往下匹配)

若是你只想屏蔽 TCP 流量,可使用 -p 参数的指定协议,例如:

iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

四、解封某个IP地址

要解封对 IP 地址的屏蔽,可使用以下命令进行删除:

 iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

其中 -D 参数表示从链中删除一条或多条规则。

五、使用IPtables关闭特定端口

不少时候,咱们须要阻止某个特定端口的网络链接,可使用 IPtables 关闭特定端口。

阻止特定的传出链接:

 iptables -A OUTPUT -p tcp --dport xxx -j DROP

阻止特定的传入链接:

iptables -A INPUT -p tcp --dport xxx -j ACCEPT

六、使用Multiport控制多端口

使用 multiport 咱们能够一次性在单条规则中写入多个端口,例如:

iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPTiptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

七、在规则中使用 IP 地址范围

在 IPtables 中 IP 地址范围是能够直接使用 CIDR 进行表示的,例如:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

八、配置端口转发

有时咱们须要将 Linux 服务器的某个服务流量转发到另外一端口,此时可使用以下命令:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上述命令会将全部到达 eth0 网卡 25 端口的流量重定向转发到 2525 端口。

九、屏蔽HTTP服务Flood***

有时会有用户在某个服务,例如 HTTP 80 上发起大量链接请求,此时咱们能够启用以下规则:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上述命令会将链接限制到每分钟 100 个,上限设定为 200。

十、禁止PING

对 Linux 禁 PING 可使用以下规则屏蔽 ICMP 传入链接:

iptables -A INPUT -p icmp -i eth0 -j DROP

十一、容许访问回环网卡

环回访问(127.0.0.1)是比较重要的,建议你们都开放:

iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT

十二、屏蔽指定MAC地址

使用以下规则能够屏蔽指定的 MAC 地址:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

1三、限制并发链接数

若是你不但愿来自特定端口的过多并发链接,可使用以下规则:

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

以上规则限制每客户端不超过 3 个链接。

1四、清空IPtables规则

要清空 IPtables 链可使用以下命令:

iptables -F

要清空特定的表可使用 -t 参数进行指定,例如:

iptables -t nat –F

1五、保存IPtables规则

默认状况下,管理员对 IPtables 规则的操做会当即生效。但因为规则都是保存在内存当中的,因此重启系统会形成配置丢失,要永久保存 IPtables 规则可使用 iptables-save 命令:

iptables-save > ~/iptables.rules

保存的名称你们能够本身改。

1六、还原IPtables规则

有保存天然就对应有还原,你们可使用 iptables-restore 命令还原已保存的规则:

iptables-restore < ~/iptables.rules

1七、容许创建相关链接

随着网络流量的进出分离,要容许创建传入相关链接,可使用以下规则:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

容许创建传出相关链接的规则:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

1八、丢弃无效数据包

不少网络***都会尝试用***自定义的非法数据包进行尝试,咱们可使用以下命令来丢弃无效数据包:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

1九、IPtables屏蔽邮件发送规则

若是你的系统不会用于邮件发送,咱们能够在规则中屏蔽 SMTP 传出端口:

iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

20、阻止链接到某块网卡

若是你的系统有多块网卡,咱们能够限制 IP 范围访问某块网卡:

iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

源地址能够是 IP 或 CIDR。

保存设置的规则到配置文件

service iptables save

iptables –F 

#删除已经存在的规则 

iptables -P INPUT DROP 

#配置默认的拒绝规则。基本规则是:先拒绝全部的服务,而后根据须要再添加新的规则。 

iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

#打开WEB服务端口的tcp协议 

iptables -A INPUT -p tcp --dport 110 -j ACCEPT 

#打开POP3服务端口的tcp协议 

iptables -A INPUT -p tcp --dport 25 -j ACCEPT 

#打开SMTP服务端口的tcp协议 

iptables -A INPUT -p tcp --dport 21 -j ACCEPT 

#打开FTP服务端口的tcp协议 

iptables -A INPUT -p tcp -s 202.106.12.130 --dport 22 -j ACCEPT 

#容许IP地址为202.106.12.130这台主机链接本地的SSH服务端口 

iptables -A INPUT -p tcp --dport 53 -j ACCEPT 

#容许DNS服务端口的tcp数据包流入 

iptables -A INPUT -p udp --dport 53 -j ACCEPT 

#容许DNS服务端口的udp数据包流入 

iptables -A INPUT -p icmp -icmp-type echo-request -i eth1 -j DROP 

#防止死亡之ping,从接口eth1进入的icmp协议的请求所有丢弃。 

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT 

#防止SYN Flood (拒绝服务***)

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.226 -j MASQUERADE

#容许 192.168.0.226经过eth1 IP假装出外网

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.4 -p tcp --dport 25 -j MASQUERADE

#容许 192.168.0.4经过eth0 假装访问外网的 25端口


转载来自来源: http://blog.csdn.net/gxp_java/article/details/53431269