linux 防火墙相关问题汇总

01. linux 防火墙服务设置

01. 对CentOS 6而言

查看防火墙状态:

[root@ufo130 ~]# service iptables status
iptables:未运行防火墙。

关闭当前防火墙:

[root@ufo130 ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                   	[确定]
iptables:清除防火墙规则:                                	[确定]
iptables:正在卸载模块:                                  	[确定]

开启当前防火墙:

[root@ufo130 ~]# service iptables start
iptables:应用防火墙规则:                                 	[确定]

永久关闭防火墙,开机不会自启动:

  • 查询开启iptables是否启动
[root@ufo130 ~]# chkconfig --list | grep iptables
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
  • 由此可见:2/3/4/5都是开机启动,执行防火墙关闭
[root@ufo130 ~]# chkconfig iptables off
[root@ufo130 ~]# chkconfig --list | grep iptables
iptables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off

永久开启防火墙,开机会自启动:

[root@ufo130 ~]# chkconfig iptables on
[root@ufo130 ~]# chkconfig --list | grep iptables
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off

02. 对CentOS 7而言

查看当前防火墙状态:

[root@ufo130 ~]# systemctl status firewald.service

关闭当前防火墙状态:

[root@ufo130 ~]# systemctl stop firewald.service

开启当前防火墙状态:

[root@ufo130 ~]# systemctl start firewald.service

永久关闭防火墙,开机不会启动:

[root@ufo130 ~]# systemctl disable firewald.service

永久开启防火墙,开机会自启动:

[root@ufo130 ~]# systemctl enable firewald.service

02. linux 防火墙配置查看(CentOS 6)

01. 查看有哪些端口放开

查看端口是否可以访问:

[root@ufo130 tmp]# telnet 192.168.137.168 5432
[root@ufo130 tmp]# telnet localhost 5432

开放的端口位于 /etc/sysconfig/iptables 文件中

[root@ufo130 tmp]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*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 -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

或者通过 iptables -nL 命令直接查看

[root@ufo130 tmp]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

使用命令开启某个端口

iptables -A INPUT -p tcp --dport 80 -j REJECT 
#禁止来自80端口访问的数据包
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
#允许来自80端口访问的数据包
iptables -A OUTPUT -p tcp --sport 80 -j REJECT 
#禁止从80端口出去的数据包
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 
#允许从80端口出去的数据包
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
#打开49152~65534之间的端口

也通过修改 /etc/sysconfig/iptables 文件的方式开启端口,然后在文件中增加一行

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

参数说明:

  • –A 参数就看成是添加一条规则
  • –p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端口的DNS
  • –dport 就是目标端口,当数据从外部进入服务器为目标端口
  • –sport 数据从服务器出去,则为数据源端口使用
  • –j 就是指定是 ACCEPT (接收) 或者 DROP (不接收)

保存并重启后生效

/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

CentOS 7 相关防火墙设置暂时略…

02. 相关设置示例

只允许访问指定网址

iptables -A Filter -p udp --dport 53 -j ACCEPT
iptables -A Filter -p tcp --dport 53 -j ACCEPT
iptables -A Filter -d www.ctohome.com -j ACCEPT
iptables -A Filter -d www.guowaivps.com -j ACCEPT
iptables -A Filter -j DROP

开放一个IP的一些端口,其它都封闭

iptables -A Filter -p tcp --dport 80 -s 192.168.1.22 -d www.pconline.com.cn -j ACCEPT
iptables -A Filter -p tcp --dport 25 -s 192.168.1.22 -j ACCEPT
iptables -A Filter -p tcp --dport 109 -s 192.168.1.22 -j ACCEPT
iptables -A Filter -p tcp --dport 110 -s 192.168.1.22 -j ACCEPT
iptables -A Filter -p tcp --dport 53 -j ACCEPT
iptables -A Filter -p udp --dport 53 -j ACCEPT
iptables -A Filter -j DROP

以下是端口,先全部封再开某些的IP(常见策略)

iptables -I INPUT -p tcp --dport 9889 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 9889 -j ACCEPT

开启多个端口

iptables -A Filter -p tcp -m multiport --destination-port 22,53,80,110 -s 192.168.20.3 -j REJECT

开启连续端口

iptables -A Filter -p tcp -m multiport --source-port 22,53,80,110 -s 192.168.20.3 -j REJECT iptables -A Filter -p tcp --source-port 2:80 -s 192.168.20.3 -j REJECT

禁止多个端口服务

iptables -A Filter -m multiport -p tcp --dport 21,23,80 -j ACCEPT

只允许PING 202,96,134,133 ,其它公网IP都不许PING

iptables -A Filter -p icmp -s 192.168.1.22 -d 202.96.134.133 -j ACCEPT
iptables -A Filter -p icmp -j DROP

只允许某些服务,其他都拒绝(2条规则)

iptables -A Filter -p tcp -s 192.168.0.1 --dport 1000 -j ACCEPT
iptables -A Filter -j DROP

禁止某个IP地址的PING:

iptables -A Filter -p icmp -s 192.168.0.1 -j DROP

禁止某个IP地址服务:

iptables -A Filter -p tcp -s 192.168.0.1 --dport 80 -j DROP
iptables -A Filter -p udp -s 192.168.0.1 --dport 53 -j DROP

禁止某个IP地址的某个端口服务

iptables -A Filter -p tcp -s 10.10.10.253 --dport 80 -j ACCEPT
iptables -A Filter -p tcp -s 10.10.10.253 --dport 80 -j DROP

禁止某个MAC地址的某个端口服务

iptables -I Filter -p tcp -m mac --mac-source 00:20:18:8F:72:F8 --dport 80 -j DROP

禁止某个MAC地址访问internet:

iptables -I Filter -m mac --mac-source 00:11:22:33:44:55 -j DROP

03. 相关白名单的配置方式

限制所有

iptables -P INPUT DROP

加白名单

iptables -A INPUT -s 1.2.3.4 -p tcp -j ACCEPT

端口访问限制,限制端口80,443

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j DROP

加白名单 1.2.3.4

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

加白名单 1.2.3.[0-255]

iptables -A INPUT -s 1.2.3.0/24 -p tcp --dport -j ACCEPT

04. 防火墙配置文件不存在或无法启动

1. /etc/sysconfig/iptables不存在?
2. 防火墙无法启动?

原因

  • 在新安装的linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所以不存在/etc/sysconfig/iptables文件。

解决

  • 在控制台使用iptables命令随便写一条防火墙规则,如:iptables -P OUTPUT ACCEPT
  • 使用service iptables save进行保存,默认就保存到了/etc/sysconfig目录下的iptables文件中

03. 总结

01. 防火墙分类

  • 包过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-ACL)检查数据流的源地址,目的地址,源和目的端口,IP等信息。
  • 代理服务器型防火墙

02. iptables基础

  • 规则(rules):网络管理员预定义的条件
  • 链(chains): 是数据包传播的路径
  • 表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
  • filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
  • nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
  • mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT

03. 其它

iptables是按照顺序读取规则,防火墙规则的配置建议

  • 规则力求简单
  • 规则的顺序很重要
  • 尽量优化规则
  • 做好相关备份

04. 配置

iptables命令格式

     iptables [-t 表] -命令 匹配操作(大小写敏感)

     动作选项:
     ACCEPT          	接收数据包
     DROP             	丢弃数据包
     REDIRECT      		将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
	 SNAT             	源地址转换
     DNAT             	目的地址转换
     MASQUERADE       	IP伪装
     LOG               	日志功能

定义规则
先拒绝所有的数据包,然后再允许需要的数据包

  iptalbes -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT ACCEPT

查看nat表所有链的规则列表

  iptables -t nat -L

增加,插入,删除和替换规则

 iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]

参数:
	-A 增加
    -I 插入
    -D 删除
    -R 替换

相关例子
禁止IP为192.168.1.5的主机从eth0访问本机

iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP

禁止子网192.168.5.0访问web服务

iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport 80 -j DROP

禁止IP为192.168.7.9访问FTP服务

iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP

查看filter表中INPUT链的规则

iptables -t filter -L INPUT

删除nat表中的所有规则

iptables -t nat -F

禁止访问 www.playboy.com网站

iptables -I FORWARD -d wwww.playboy.com -j DROP

禁止192.168.5.23上网

iptables -I FORWARD -s 192.168.5.23 -j DROP
上一篇:防火墙禁止IP访问


下一篇:Linux下挖矿程序解决办法