小Q:工欲行其事,必先行其路;工欲善其事,必先利其器。

================================================================

今天要深入了解一下Linux中自带的防火墙功能了。如今的许多人都会去关闭它,因为不太了解吧,在工作中多多少少会有阻碍;我也不太熟,但是我感觉他既然是系统这些年一直自带的,一定有他的优势,而且还可以帮我理解网络传输形式。

初步认识:

网络走向:个人机(私有IP192.168)>>> 网关(路由器,用的公网)>>> 外网

第一防火墙 :selinux 来自于美国国家安全局

文件     :     /etc/selinux/config 

命令     :    看此时的状态 getenforce

永久关闭 :修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器

临时关闭: setenforce 1 设置成为enforcing模式

                     setenforce 0 设置SELinux 成为permissive模式望采纳

安装命令: yum install -y Libselinux-utils

扩 展       : https://linuxtoy.org/archives/selinux-introduction.html 

                     = http://os.51cto.com/art/201105/265956.htm    

以上两个网址内容一样,主要担心某一个问文章dang 掉。

第二防火墙: netfilter (他的工具名也就是规则和这个防火墙的命令都是 iptables)

三个概念    : table 表   chain 链     rule 规则

查看三表    : iptables   -t    filter       -nvl 不指定文件默认查看就是filter

                         iptables   -t     nat          -nvl

                         iptables   -t    mangle    -nvl

显示格式    : 匹配包的数量 所有包大小(字节) 协议类型 源IP 目的IP

重置匹配包数:  iptables -Z

清空所有规则:  iptables -F

制定规则要保存,否则重启后会丢失。 

保存配置规则 : service iptables save 或 直接写入 /etc/sysconfig/iptables

重启配置规则 : service iptables restart

备份规则         : iptables-save > 1.txt       恢复备份:iptables-restore < 1.txt

常用命令         :-A    INPUT    按顺序设置规则,始终在下边

                              -I     IINPUT    插队设置规则 ,  始终在上边

                             -D    INPUT     删除设置的规则,要指定

                             -j     REJCET   在过滤包的时候先看看怎么样,再扔

                             -j     DROP / ACCEPT      前者是直接过滤,不看;后者直接通过

指定端口的时候必须同时指定网络协议,反之则不需要;

功能就是过滤某个端口 IP不让他访问本机:

 iptables   -t filter   -I INPUT     -p tcp     --dport 80    -s 来源ip       -j REJECT


以上主要是input功能,另外的output用得少,功能过滤某个IP包不让他发出去:

用法异曲同工  :将     -I INUPUT    -s 来源IP       改为        -I OUTPUT    -d 目标IP

扩展知识:http://blog.chinaunix.net/uid-26495963-id-3279216.html 


nat    :用于网络地址的转换,其实可以看作网络路由器。

三个链的功能:

PREROUTING   :在包刚刚到达防火墙时改变它的目的地址,如果需要的话。

POSTROUTING :在包就要离开防火墙之前改变其源地址。

OUTPUT             :改变本地产生的包的目的地址。

扩展知识:http://www.cnblogs.com/hyzhou/archive/2011/11/26/2264343.html 


mangle:为数据包做标记

扩展:http://blog.jobbole.com/90008/ 

作者还有对nat  和 filter 的详解,不过偏重开发环节了。

默认配置举例:

针对 iptables 的脚本操作: 
vim    1.ipt.sh       建文件 
# ! /bin/bash
ipt="/sbin/iptables"
$ipt    -F        清空规则,避免和以前的规则重复
$ipt   -P   INPUT   DROP 不要轻易设置drop,否则会切断所有的链接;
$ipt   -P   INPUT   ACCEPT -P 就代表police 默认规则,
$ipt   -P   INPUT   ACCEPT 
$ipt   -A   INPUT  -s 192.168.0.0/24    -p tcp    --dport 80    -j ACCEPT (-s 是一个网段) 
$ipt   -A   INPUT  -p tcp    --dport 22   -j   REJECT        排队拒绝访问22端口的tcp包     
$ipt   -I    INPUT  -p udp   --dport 21   -j   ACCEPT        插队接受访问21端口的udp包
退出并执行脚本:sh   1.ipt.sh 

个人认为更改nat或mangle的默认配置业相同,不了解的话还是别别动他了。

我特别喜欢这一篇文章,有兴趣的朋友可以好好看看啊!!!

总扩展: http://blog.sina.com.cn/s/blog_6aad8abe01011u7c.html 

问题集:

wKiom1YGNzajad6TAAErEplW0PY714.jpg

wKiom1YGNzazkGzZAAEbPF-Z1Hc500.jpg

wKioL1YGNzyB2s_aAAFmLl8hpIo538.jpg

wKiom1YGNzayBn4sAAE5I79Ztos536.jpg