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