2018-06-13 22:03:31 h294590501 阅读数 634
  • Java系列技术之Linux7.6基础操作

    带大家玩入门Linux7.6,随带Linux6.x一起学了, 为Linux初学者录制的入门课程,从Linux系统安装部署讲起,涵盖常用操作命令、软件包管理、用户和权限管理、文件系统管理、服务管理、磁盘和启动管理、防火墙等等Linux系统管理方方面面的内容。绝对的干货课程!

    1401 人正在学习 去看看 钟洪发

Linux防火墙管理

防火墙类似于一个安全卫士管家,它能对你访问别人电脑,
别人访问你的电脑,进行拦截并处理,有的阻止,有的放行,有的转发。

在默认情况下,Linux系统的防火墙状态是打开的,已经启动,
CentOS 7默认使用的是firewall作为防火墙。
用户根据需求在/etc/sysconfig/firewalld配置文件中来配置防火墙,
控制本机的“出、入”网络访问行为,其对行为的配置策略有四个策略表
1. raw表
主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。

2. mangle表
主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以 及为数据
包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路
由设备支持,因此应用并不广泛。

3. nat表
主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、
REDIRECT)。属于一个流的包 (因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次。
如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地 被做相同的操作,也就是说,余下的
包不会再通过这个表。

4. filter表
主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG)。filter 表对应的内核模块为iptable_filter,包含三个规则链:
INPUT链:INPUT针对那些目的地是本地的包
FORWARD链:FORWARD过滤所有不是本地产生的并且目的地不是本地(即本机只是负责转发)的包
OUTPUT链:OUTPUT是用来过滤所有本地生成的包

查询防火墙状态

语法:
systemctl   动作   服务名.service

解释:
systemctl :是管制服务的主要工具。
动作:有status/start/stop/disable/enable。
服务名.service : 管理的服务,有firewalld.servcie是防火墙服务。

命令:
systemctl  status  firewalld.service              查询防火墙状态,.service可以省略

启动防火墙

命令:
systemctl  start  firewalld.service                   启动防火墙

停止/关闭防火墙

命令:
systemctl  stop  firewalld.service                     停止/关闭防火墙

防火墙开机自启


命令:
systemctl  disable  firewalld.service                 禁止防火墙开机自启
systemctl  enable  firewalld.service                  允许防火墙开机自启

重启防火墙

systemctl restart firewalld.service

Centos 7 firewall 命令:

查看已经开放的端口:

firewall-cmd --list-ports
 

开启端口
 
firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd  --zone=public  --remove-port=80/tcp  --permanent  删除规则

systemctl  restart  firewalld 重启防火墙使其生效  

命令含义:

–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

重启防火墙

firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running
 

CentOS 7 以下版本 iptables 命令

如要开放80,22,8080 端口,输入以下命令即可
 
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
 
然后保存:
/etc/rc.d/init.d/iptables save

查看打开的端口:
/etc/init.d/iptables status


解决主机不能访问虚拟机CentOS中的站点

具体情况如下

1. 本机能ping通虚拟机

2. 虚拟机也能ping通本机

3.虚拟机能访问自己的web

4.本机无法访问虚拟机的web 

后来发现是防火墙将80端口屏蔽了的缘故。 

检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试。

解决方法如下:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
 

然后保存:
/etc/rc.d/init.d/iptables save
 

重启防火墙
 
/etc/init.d/iptables restart
 

CentOS防火墙的关闭,关闭其服务即可: 

查看CentOS防火墙信息:/etc/init.d/iptables status

关闭CentOS防火墙服务:/etc/init.d/iptables stop 

2015-01-04 10:49:57 RHEL_admin 阅读数 1020
  • Java系列技术之Linux7.6基础操作

    带大家玩入门Linux7.6,随带Linux6.x一起学了, 为Linux初学者录制的入门课程,从Linux系统安装部署讲起,涵盖常用操作命令、软件包管理、用户和权限管理、文件系统管理、服务管理、磁盘和启动管理、防火墙等等Linux系统管理方方面面的内容。绝对的干货课程!

    1401 人正在学习 去看看 钟洪发

防火墙,简单的说,就是针对源IP或域进行允许或拒绝的设置,以决定该连接是否能够成功实现连接的一种方式。

这里我把Linux防火墙管理分成两类

  1. 通过管理/etc/hosts.allow, /etc/hosts.deny来实现,在另外一篇博文关于Linux计划任务at和crontab的时候,也设计到了类似的管理
  2. 通过管理iptables来实现

/etc/hosts.allow, /etc/hosts.deny管理

基本上只要一个服务受到xinetd管理(通常情况可以查看/etc/xinetd.d/的内容来判断),或者是该服务的程序支持TCP wrapper函数的功能时,那么该服务的防火墙的设置就可以通过以/etc/hosts.{allow,deny}来处理

#通过该命令就可以查看该服务的程序是否支持TCP wrapper函数的功能
[root@rhel6164 ~]# ldd $(which sshd)|grep wrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007feb26191000)
配置文件语法:两个文件设置语法都一样,基本上,看起了应该像下面这个样子,其中'<' '>'是不存在于配置文件中的

<service (program_name)> : <IP,domain, hostname> : <action>
#注意,第一个字段里面的是启动服务的程序,而不是服务本身,例如ssh服务的启动程序应该为sshd
例子:阻止下面两个IP使用rsync程序

[root@rhel6164 ~]# vim /etc/hosts.deny
rsync:127.0.0.100 127.0.0.200:deny
注意事项
  1. 在两个文件中默认的action都是可以省略的,/etc/hosts.allow默认的action为allow,/etc/hosts.deny默认action为deny
  2. 两个文件的判断依据是,以/etc/hosts.allow为优先,若分析到IP或网段不在/etc/hosts.allow,则以/etc/hosts.deny来判断

一些在第一、第二字段里面的特殊字符

  1. ALL:代表全部的program_name或者IP都接受的意思,例如ALL:ALL:deny
  2. LOCAL:代表来自本机的意思,例如ALL:LOCAL:allow
  3. UNKNOWN:代表不知道的IP或者是domain或者是服务时
  4. KNOWN:代表为可以解析的IP, domain等信息时

还可以使用TCP Wrapper功能来进行更多的设置,但是前提必须要安装好了tcp_wrapper包,这里就暂时不扩展开

[root@rhel6164 ~]# rpm -qa | grep tcp_wrapper
tcp_wrappers-7.6-56.3.el6.x86_64
tcp_wrappers-libs-7.6-56.3.el6.x86_64
tcp_wrappers-libs-7.6-56.3.el6.i686

iptables

和上面讲解的/etc/hosts.*一样,iptables也是Linux自带的软件防火墙,iptables是利用封装包过滤的机制,所以他会分析封装包的表头数据,根据表头数据与定义的规则来决定该封包是否可以进入主机或者被丢弃,意思就是,根据封包的分析资料“对比”你预先定义的规则内容,若封包数据与规则内容相同则进行动作,否则就继续下一条规则的比对,重点是对比是有顺序的

iptables有三个重要的表

1. filter:主要跟Linux本机有关,这个是预设的table

  • INPUT:主要与封包想要进入我们Linux本机有关
  • OUTPUT:主要与我们Linux本机所要送出的封包有关
  • FORWARD:这个与Linux本机比较没有关系,他可以封包‘转递’到后端的计算机中,与nat这个table相关性很高

2. nat:这个表格主要在用作来源与目的之IP或port的转换,与Linux本机无关,主要与Linux主机后的局域网内的计算机有关

  • PREROUTING:在进行路由判断之前要进行的规则(DNAT/REDIRECT)
  • POSTROUTING:在进行路由判断之后要进行的规则(SNAT/MASQUERADE)
  • OUTPUT:与发送出去的封包有关
3. mangle:这个表格主要是与特殊的封包的路由旗标有关

命名格式:更多详细的信息可以参考man iptables页面

  • iptables [-t tables] [-L] [-nv]
  • iptables [-t tables] [-FXZ]
  • iptables [-t nat] -P [INPUT, OUTPUT, FORWARD] [ACCEPT, DROP]:定义预设策略(policy)
  • iptables [-AI 链] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP]:封包的基础对比IP/netmask I/O 装置
  • iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网域] [--sport 端口范围] [-d 目标IP/网域] [--dport 端口范围] -j [ACCEPT|DROP]
  • iptables -A INPUT -m state --state 状态
  • iptables -A INPUT -p icmp --icmp-type 类型 -j ACCEPT

参数说明

  • -t:后面接table,例如nat或filer,若省略,默认是filter
  • -L:列出目前的table规则
  • -n:不进行IP与HOSTNAME的反查,显示信息的速度会很快
  • -v:列出更多信息
  • -F:清除所有的已制定的规则
  • -X:杀掉所有使用者“自订”的chain/tables
  • -Z:将所有的chain的计数与流量统计都归零
  • -P:定义策略(Policy),ACCEPT,封包可接受;DROP,封包直接丢弃,不会让client端知道为何丢弃
  • -AI 链:针对某链进行规制的“插入”或"累加“,-A,新增加一条规制,该规则增加在原本规则的最后面,-I:插入一条规制,如果没有指定此规则的顺序,预设是插入变成第一条规则,链,有INPUT, OUTPUT, FORWARD等
  • -io 网络接口:设定封包进出的接口规范
  • --sport:端口范围,限制来源的端口号号码,端口号码可以是连连续的,例如1024:65535
  • --dport:端口范围,限制目标端口号码
  • -m:一些iptables的模块,主要有state(状态模块)和mac(网络卡硬件模块hardware address)
  • --state:一些封包的状态,INVALID,无效的封包,例如数据破损的封包状态;ESTABLISHED,已经联机成功的联机状态;NEW,想要新建立联机的封包状态;RELATED,表示封包是与我们主机发送出去的封包有关
  • --icmp-type:后面必须要接ICMP的封包类型,也可以使用代号,例如8代表echo request的意思

例子

1. 列出filter table三条链的规则

[root@rhel6164 ~]# iptables -L -n #观察防火墙的规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67
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
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
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
2. 列出nat table三条链的规则

[root@rhel6164 ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
3. 将本机的INPUT设定为DROP,其他设定为ACCEPT
[root@rhel6164 ~]# iptables -P INPUT DROP
[root@rhel6164 ~]# iptables -P OUTPUT ACCEPT
[root@rhel6164 ~]# iptables -P FORWARD ACCEPT
[root@rhel6164 ~]# iptables -L -n #可以与例1比较
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67
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
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
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

4. 将要进入本机port 21的封包全都挡住

[root@rhel6164 ~]# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
[root@rhel6164 ~]# iptables -A INPUT -i eth0 -p udp --dport 127:128 -j ACCEPT #放行udp 127 128端口
5. 只要已建立或相关封包就予以通过,只要不合法封包就丢弃

[root@rhel6164 ~]# iptables -A INPUT -m state --state RELATED,ESABLISHED -j ACCEPT
[root@rhel6164 ~]# iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
#上面例子是针对局域网内的aa:bb:cc:dd:ee:ff主机开放其联机
6. 将防火墙规则保存下来和恢复防火墙规则

[root@rhel6164 ~]# iptables-save > filename
[root@rhel6164 ~]# iptables-restore < filename



2019-02-26 16:34:09 by0920 阅读数 3719
  • Java系列技术之Linux7.6基础操作

    带大家玩入门Linux7.6,随带Linux6.x一起学了, 为Linux初学者录制的入门课程,从Linux系统安装部署讲起,涵盖常用操作命令、软件包管理、用户和权限管理、文件系统管理、服务管理、磁盘和启动管理、防火墙等等Linux系统管理方方面面的内容。绝对的干货课程!

    1401 人正在学习 去看看 钟洪发

注:来自同事的笔记。

如果防火墙开启,我们pingLinux服务器的IP会ping不通,所以我们要对防火墙进行设置(一般情况下只需执行1里边的命令就可以了):

1、firewalld的基本使用

启动防火墙: systemctl start firewalld

查看防火墙状态: systemctl status firewalld

停止防火墙: systemctl disable firewalld

禁用防火墙: systemctl stop firewalld

屏蔽:systemctl mask firewalld 屏蔽防火墙服务(让它不能启动) ln -s '/dev/null''/etc/systemd/system/firewalld.service' 取消屏蔽:systemctl unmask firewalld 显示服务(如 firewalld.service) rm '/etc/systemd/system/firewalld.service'

 

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service

关闭一个服务:systemctl stop firewalld.service

重启一个服务:systemctl restart firewalld.service

显示一个服务的状态:systemctl status firewalld.service

在开机时启用一个服务:systemctl enable firewalld.service

在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

3.配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

那怎么开启一个端口呢

添加

firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=80/tcp

删除

firewall-cmd --zone= public --remove-port=80/tcp --permanent

 

 

修改端口启用

在每次修改 端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改 所以也可以在文件中之间修改 然后重新加载

 

#systemctl start firewalld.service //开启服务

#systemctl enable firewalld.service //开机制动启动

 

#systemctl stop firewalld.service //关闭服务

#systemctl disable firewalld.service //禁止开机启动

 

获取 firewalld 状态

firewall-cmd --state

 

此举返回 firewalld 的状态,没有任何输出。可以使用以下方式获得状态输出:

firewall-cmd --state && echo "Running" || echo "Not running"

 

在 Fedora 19 中, 状态输出比此前直观:

# rpm -qf $( which firewall-cmd ) firewalld-0.3.3-2.fc19.noarch# firewall-cmd --state not running

 

在不改变状态的条件下重新加载防火墙:

firewall-cmd --reload

 

如果你使用–complete-reload,状态信息将会丢失。这个选项应当仅用于处理防火墙问题时,例如,状态信息和防火墙规则都正常,但是不能建立任何连接的情况。

 

获取支持的区域列表

firewall-cmd --get-zones

这条命令输出用空格分隔的列表。

 

获取所有支持的服务

firewall-cmd --get-services

这条命令输出用空格分隔的列表。

 

获取所有支持的ICMP类型

firewall-cmd --get-icmptypes

这条命令输出用空格分隔的列表。

 

列出全部启用的区域的特性

firewall-cmd --list-all-zones

输出格式是:

<zone> interfaces: <interface1> .. services: <service1> .. ports: <port1> .. forward-ports: <forward port1> .. icmp-blocks: <icmp type1> ....

 

输出区域 <zone> 全部启用的特性。如果生略区域,将显示默认区域的信息。

firewall-cmd [--zone=<zone>] --list-all

 

获取默认区域的网络设置

firewall-cmd --get-default-zone

 

设置默认区域

firewall-cmd --set-default-zone=<zone>

 

流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。

获取活动的区域

firewall-cmd --get-active-zones

这条命令将用以下格式输出每个区域所含接口:

<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..

根据接口获取区域

firewall-cmd --get-zone-of-interface=<interface>

这条命令将输出接口所属的区域名称。

将接口增加到区域

firewall-cmd [--zone=<zone>] --add-interface=<interface>

如果接口不属于区域,接口将被增加到区域。如果区域被省略了,将使用默认区域。接口在重新加载后将重新应用。

修改接口所属区域

firewall-cmd [--zone=<zone>] --change-interface=<interface>

这个选项与 –add-interface 选项相似,但是当接口已经存在于另一个区域的时候,该接口将被添加到新的区域。

从区域中删除一个接口

firewall-cmd [--zone=<zone>] --remove-interface=<interface>

查询区域中是否包含某接口

firewall-cmd [--zone=<zone>] --query-interface=<interface>

返回接口是否存在于该区域。没有输出。

列举区域中启用的服务

firewall-cmd [ --zone=<zone> ] --list-services

启用应急模式阻断所有网络连接,以防出现紧急状况

firewall-cmd --panic-on

禁用应急模式

firewall-cmd --panic-off

 

代码如下

复制代码

应急模式在 0.3.0 版本中发生了变化 在 0.3.0 之前的 FirewallD版本中, panic 选项是 –enable-panic 与 –disable-panic.

查询应急模式

firewall-cmd --query-panic

此命令返回应急模式的状态,没有输出。可以使用以下方式获得状态输出:

firewall-cmd --query-panic && echo "On" || echo "Off"

service iptables status可以查看到iptables服务的当前状态。

但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L

在此说一下关于启动和关闭防火墙的命令:

1) 重启后生效

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后失效

开启: service iptables start

关闭: service iptables stop

2018-07-23 13:11:20 qq_36148847 阅读数 261
  • Java系列技术之Linux7.6基础操作

    带大家玩入门Linux7.6,随带Linux6.x一起学了, 为Linux初学者录制的入门课程,从Linux系统安装部署讲起,涵盖常用操作命令、软件包管理、用户和权限管理、文件系统管理、服务管理、磁盘和启动管理、防火墙等等Linux系统管理方方面面的内容。绝对的干货课程!

    1401 人正在学习 去看看 钟洪发

《Linux 防火墙》读书笔记第3章——iptable:传统的Linux防火墙管理程序 (1)

第三章 iptables:传统的Linux防火墙管理程序(1)

3.1 iptables(防火墙)与 netfilter

3.1.1 Linux 包过滤防火墙的架构

0001

Linus Torvalds 在 2016 年 12 月 11 日发布了 Linux 内核 4.9 的正式版本,据说 将在 2018年发布 5.x 版本。而实际上 从3.13 版本的内核开始,一个新的过滤机制 nftables 被加入。

3.1.2 netfilter/iptables 几点区别理解介绍

   =================================================
   netfilter/iptables 简介:

    (1)IP 数据包过滤系统由 netfilter 和 iptables 两个组件构成。

    (2)netfilter 是集成在内核中的一部分,其作用是定义、保存相应的规则。

    (3)iptables 是一种工具,用来修改信息的过滤规则及其他配置,而这些规则会保存在内核空间之中。

    (4)netfilter 是Linux核心中的一个通用架构,其提供了一系列的表(tables)每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。

    (5)iptables 与 netfilter 使用术语可以互换,但两者还是有区别。netfilter 是 Linux 内核空间的程序代码,它在 Linux内核里实现了防火墙。它要么直接编译进内核,要么被包含在模块集中。而 iptables 是用于管理 netfilter 防火墙的用户程序。

    (6)iptables 只是防火墙与用户之间的接口,真正起作用的是 Linux 内核中运行的 netfilter 。Linux 平台下的包过滤防火墙由 netfilter 组件和 iptables 组件组成,其中 netfilter 运行在内核态,而 iptables 运行在用户态,用户通过 iptables 命令来调用 netfilter 来实现防火墙功能。
     =================================================

3.1.3 Netfilter 与 Iptables 简介

(1) Netfilter 组件

        Netfilter 组件 是 Linux 内核中的一个用于扩展各种网络服务的结构化底层架构。该架构定义了包过滤子系统功能的实现,提供了 filter 、nat 和 mangle 3个表,默认使用并起防火墙作用的是 filter 表。每个表中包含若干条内建的链(chains),用户可在表中创建自定义的链。在每条连中,可定义一条或多条过滤规则(rules)。每条规则应指定所要检查的包的特征以及如何处理与这对应的包,这被称为目标(target)。目标值可以是用户自定义的一个链名,也可以是 ACCEPT、DROP、REJECT、RETURN 等值。

(2) Iptables 组件

         Iptables 组件 是一个用来指定 Netfilter 规则和管理内核包过滤的工具,用户通过它来创建、删除或插入链,并可以在链中插入、删除以及修改过滤规则。iptables 仅仅是一个包过滤工具,对过滤规则的执行则是通过 Netfilter 和 相关的支持模块实现的。

3.2 IP 防火墙(IPFW)和 Netfilter 防火墙机制的不同

3.2.1 IPFW 数据包传输

         IPFW 下(ipfwadm 和 ipchains),有三种内置过滤规则被使用:INPUT(输入规则链)、FORWARD(转发规则链)、OUTPUT(输出规则链)。
0000

所有到达接口的数据包都按照 INPUT 规则被过滤。如果数据包被接受,它将被传递到路由模块。路由功能决定数据包是被传递到本地还是被转发到另一个传出(OUTPUT)接口。

如果被转发,数据包将由 FORWARD 规则进程第二次过滤。如果数据包被接受则将被传输到 OUTPUT 规则链。

所有本地产生的传出数据包和将被转发的数据包都被传递到 OUTPUT 规则链。如果数据包被接受则将从接口被发出。

收到并被发送到本地(回环)的数据包会通过两个过滤器(INPUT、OUTPUT),而转发数据包则通过了三个过滤器(INPUT、FORWARD 和 OUTPUT)。
0001

回环路包括两个规则链(OUTPUT、INPUT)。每个回环路数据包在“传出”回环接口之前都会经过输出过滤器,接下来便会被传递到回环的输入接口。然后将应用输入过滤器。

这里的伪装是早期 Linux 版本中的概念。现在网络地址转换(NAT)完全是由 iptables 实现的。在此之前,NAT 在 Linux 中被称为伪装。源地址转换的一个简单、部分实现的版本(即伪装),被站点的所有者所使用,他们有一个公网 IP 地址,并希望私有网络中的其他主机也能够访问互联网。从这些内部主机发出的数据包源地址被伪装成那个公用的、可路由的 IP 地址。

3.2.2 Netfilter 数据包传输

0002
Netfilter(iptables)使用了三个内置的过滤器:INPUT、OUTPUT、FORWARD。传入数据包需要经过路由功能,它决定了是将数据包传递到本地主机的 INPUT 规则链还是到 FORWARD 规则链。

【阅读推荐】

2018-06-28 15:07:49 qq_34501154 阅读数 11449
  • Java系列技术之Linux7.6基础操作

    带大家玩入门Linux7.6,随带Linux6.x一起学了, 为Linux初学者录制的入门课程,从Linux系统安装部署讲起,涵盖常用操作命令、软件包管理、用户和权限管理、文件系统管理、服务管理、磁盘和启动管理、防火墙等等Linux系统管理方方面面的内容。绝对的干货课程!

    1401 人正在学习 去看看 钟洪发
以下两种方法
一、暂时开启和关闭防火墙

 1种 service方式
查看防火墙状态: 
[root@centos6 ~]# service iptables status
iptables:未运行防火墙。

开启防火墙(即时生效,重启后失效):
[root@centos6 ~]# service iptables start

关闭防火墙(即时生效,重启后失效):
[root@centos6 ~]# service iptables stop
(注意):允许某个端口通过防火墙配置
在开启了防火墙时,做如下设置,开启相关端口,修改 /etc/sysconfig/iptables 文件,添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT   #允许80端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT   #允许3306端口通过防火墙
备注:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,
正确的应该是添加到默认的22端口这条规则的下面

2种 iptables方式
先进入init.d目录,命令如下:
[root@centos6 ~]# cd /etc/init.d/
[root@centos6 init.d]# 
然后
查看防火墙状态:
[root@centos6 init.d]# /etc/init.d/iptables status
暂时关闭防火墙:
[root@centos6 init.d]# /etc/init.d/iptables stop
重启iptables:
[root@centos6 init.d]# /etc/init.d/iptables restart

二、永久开启和关闭防火墙
开启:chkconfig iptables on;(重启后生效)
关闭:chkconfig iptables off;(重启后生效)
用法详解
命令:chkconfig --level 2345 iptables off 
或者 chkconfig iptables off 
其中2345 代表”执行等级“ 
等级0表示:表示关机 
等级1表示:单用户模式 
等级2表示:无网络连接的多用户命令行模式 
等级3表示:有网络连接的多用户命令行模式 
等级4表示:不可用 
等级5表示:带图形界面的多用户模式 
等级6表示:重新启动

三扩展
  安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统
  关闭SELinux
  vim /etc/selinux/config  # 改为 SELINUX=disabled
  # 保存退出,重启服务器
  init 6
  禁用SeLinux
  #永久禁用,需要重启生效。
  sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  
  # 临时禁用,不需要重启
  setenforce 0

Linux 防火墙设置

阅读数 30

LINUX防火墙规则

阅读数 276

Linux 防火墙规则

博文 来自: symayy
没有更多推荐了,返回首页