码迷,mamicode.com
首页 > 系统相关 > 详细

Linux的防火墙

时间:2018-02-22 19:27:25      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:开机   reply   替换   color   个数   调整   地址   get   火墙   

查看当前selinux的状态

[root@apenglinux-001 ~]# getenforce

临时关闭selinux

[root@apenglinux-001 ~]# setenforce 0

永久关闭selinux

[root@apenglinux-001 ~]# vim /etc/selinux/config  
 将SELINUX=enforcing 改成 SELINUX=disabled
 重启系统

关闭firewalld,开启iptables

#systemctl stop firewalld.service
#systemctl disable firewalld.service
#yum install -y iptables-services
#systemctl enable iptables.service
#systemctl start iptables.service

iptables规则

-A 在指定链的末尾添加(--append)一条新的规则
-D 删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则
-I 在指定链中插入(--insert)一条新的规则,若未指定插入位置,则默认在链的开关插入
-R 修改,替换(--replace)一条新的规则,按规则序号或内容确定要替换的规则
-L 列出(--list)指定链中所有的规则进行查看,若未指定链名,则列出表中所有链的内容
-F 清空(--flush)指定链中的规则,若未指定链名,则清空表中所有链的内容
-N 新建(--new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(--delete-chain)
-P 设置指定链的默认策略(--policy)
-n 使用数字形式(--numeric)显示输出结果,如显示主机的ip地址而不是主机名
-v 查看规则列表时显示详细(--verbose)信息
-V 查看iptables命令工具的版本(--version)信息
-h 查看命令帮助信息(--help)
--line-numbers 查看规则列表时,同时显示规则在链中的顺序号
-Z 表示把包以及流量计数器置零

规则表

filter表,包含三个规则链:INPUT,FORWARD,OUTPUT。
    filter表主要用于对数据包进行过滤,根据具体的规决定是否放行该数据包
nat表,包含三个规则链:PREROUTING,POSTROUTING,OUTPUT.
    nat表主要用于修改数据包的ip地址、端口号等信息
mangle表,包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD.
    mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)值以及数据包设置Mark标记,实现Qos(Quality of Service,质量服务)调整以及策略路由等应用
raw表,包含两条规则链:OUTPUT,PREROUTING.
    raw表主要用于决定数据包是否被状态跟踪机制处理。
security表

netfilter的五个链

PREROUTING: 数据包进入路由表之前
INPUT: 通过路由表目的地为本机
FORWARD: 通过路由表后,目的地不为本机
OUTPUT: 由本机产生,向外转发
POSTROUTING: 发送到网卡接口之前

查看filter表中各链的规则

[root@apenglinux-001 ~]# iptables -t filter -nvL  // [-t filter]可省略
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  369 27373 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    1    40 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    5  1145 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 294 packets, 48378 bytes)
 pkts bytes target     prot opt in     out     source               destination

清空filter表中的各链中的规则,然后将清除后的规则保存

#iptables -t filter -F;service iptables save

防火墙规则保存在/etc/sysconfig/iptables

添加及插入规则

在filter表的INPUT链的末尾添加一条防火墙规则

[root@apenglinux-001 ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT

在filter表的INPUT链中插入一条防火墙规则

[root@apenglinux-001 ~]# iptables -I INPUT -p udp -j ACCEPT

在filter表的INPUT链中插入一条防火墙规则作为链中的第二条规则

[root@apenglinux-001 ~]# iptables -t filter -I INPUT 2 -p icmp -j ACCEPT

查看规则列表 

查看filter表INPUT链中的所有规则,同时显示各规则的顺序号

[root@apenglinux-001 ~]# iptables -t filter -nvL INPUT [#一个数字,表示链中的第几条规则] --line-number

删除、清空规则

删除filter表INPUT链中的第2条规则

[root@apenglinux-001 ~]# iptables -D INPUT 2

清空filter表、nat表、mangle各链中的所有规则

[root@apenglinux-001 ~]# iptables -F;iptables -t nat -F;iptables -t mangle -F

设置规则链的默认策略

将filter表中FORWARD规则链的默认策略设为DROP

[root@apenglinux-001 ~]# iptables -t filter -P FORWARD DROP

将filter表中OUTPUT规则链的默认策略设为ACCEPT

[root@apenglinux-001 ~]# iptables -t filter -P OUTPUT ACCEPT

新增、删除自定义规则链

在raw表中新增一条自定义的规则链,链名为TCP_PACKETS

[root@apenglinux-001 ~]# iptables -t raw -N TCP_PACKETS

清空raw表中用户自定义的所有规则链

[root@apenglinux-001 ~]# iptables -t raw -X

通用条件匹配

协议匹配

[root@apenglinux-001 ~]# iptables -I INPUT -p icmp -j REJECT    //拒绝进入防火墙的所有icmp协议数据包
[root@apenglinux-001 ~]# iptables -I FORWARD ! -p icmp -j ACCEPT //允许防火墙转发除icmp协议以外的所有数据包

地址匹配

拒绝转发来自192.168.1.11主机的数据,允许转发来自192.168.0.0/24网段的数据

[root@apenglinux-001 ~]# iptables -A FORWARD -s 192.168.1.11 -j DROP 
[root@apenglinux-001 ~]# iptables -A FORWARD  -s 192.168.0.0/24 -j ACCEPT

网络接口匹配

丢弃从外网接口ens33进入防火墙本机的源地址为私网地址的数据包

[root@apenglinux-001 ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP 
[root@apenglinux-001 ~]# iptables -A INPUT -i ens33 -s 172.16.0.0/12 -j DROP 
[root@apenglinux-001 ~]# iptables -A INPUT -i ens33 -s 10.0.0.0/8 -j DROP

管理员在网关服务器上检测到来自某个ip网段(192.168.2.0/24)的频繁扫描,希望设置iptables规则封堵ip地址段,两小时后解封

[root@apenglinux-001 ~]# iptables -I INPUT -s 192.168.2.0/24 -j DROP 
[root@apenglinux-001 ~]# iptables -I FORWARD -s 192.168.2.0/24 -j DROP 
[root@apenglinux-001 ~]# at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1
at> <EOT>
job 4 at Thu Feb 22 16:43:00 2018
[root@apenglinux-001 ~]# atq
4	Thu Feb 22 16:43:00 2018 a root

隐含条件匹配

端口匹配

仅允许系统管理员从192.168.221.0/24网段使用ssh方式远程登录防火墙主机

[root@apenglinux-001 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.221.0/24 -j ACCEPT
[root@apenglinux-001 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP

允许本机开放从tcp端口20-1024提供的应用服务

[root@apenglinux-001 ~]# iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
[root@apenglinux-001 ~]# iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

作为网关使用时,允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包

[root@apenglinux-001 ~]# iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT 
[root@apenglinux-001 ~]# iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

TCP标记匹配

拒绝从外网接口直接访问防火墙本机的数据包

[root@apenglinux-001 ~]# iptables -P INPUT DROP
[root@apenglinux-001 ~]# iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT

ICMP类型匹配

禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机(允许接收ICMP回应数据)

[root@apenglinux-001 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP
[root@apenglinux-001 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
[root@apenglinux-001 ~]# iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

显示条件匹配

MAC地址匹配

禁止转发来自MAC地址为00-50-56-c0-00-08的主机的数据包

[root@apenglinux-001 ~]# iptables -A FORWARD -m mac --mac-source 00:50:56:c0:00:08 -j DROP

多端口匹配

允许防火墙本机对外开放tcp端口20、21、25、110以及被动模式ftp端口1250-1280

[root@apenglinux-001 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

多ip地址匹配

禁止转发源ip地址为192.168.1.20-192.168.1.99的tcp数据包

[root@apenglinux-001 ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

状态匹配

禁止转发与正常TCP连接无关的非--syn请求数据包(如网络中可能存在的一些非法攻击数据包)

[root@apenglinux-001 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

[root@apenglinux-001 ~]# iptables -A INPUT -p tcp -m state --state NEW -j DROP 
[root@apenglinux-001 ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

在服务器中设置防火墙策略,只开放本机的web服务80端口、ftp服务(21、20、20450-20480),放行外部主机发往服务器其他端口的应答数据包,将其他入站数据包均予以丢弃处理

[root@apenglinux-001 ~]# iptables -I INPUT -p tcp -m multiport --dport 20,21,80,20450:20480 -j ACCEPT 
[root@apenglinux-001 ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 
[root@apenglinux-001 ~]# iptables -P INPUT DROP

需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后对192.168.221.0/24开通22端口,对所有网段开放80端口和21端口(写一个脚本)

[root@apenglinux-001 sbin]# cat iptables.sh 
#!/bin/bash
#

ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -s 192.168.221.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp -m multiport --dport 80,21 -j ACCEPT
[root@apenglinux-001 sbin]# sh /usr/local/sbin/iptables.sh

开机启动就初始化防火墙规则

#echo '/bin/sh /usr/local/sbin/iptables.sh' >> /etc/rc.d/rc.local
#chmod +x /etc/rc.d/rc.local
#init 6

技术分享图片

Linux的防火墙

标签:开机   reply   替换   color   个数   调整   地址   get   火墙   

原文地址:http://blog.51cto.com/13480443/2072115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!