selinux临时关闭 setenforce 0
selinux永久关闭 vi /etc/selinux/config
getenforce 查看防火墙状态
centos7之前使用netfilter防火墙
centos7开始使用firewalld防火墙
关闭firewalld开启netfilter方法:
systemctl stop firewalld
systemctl disable firewalled
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
netfilter的5个表:
filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链
nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链
managle表用于给数据包做标记,几乎用不到
raw表可以实现不追踪某些数据包,从来不用
security表在centos6中并没有,用于强制访问控制(MAC)的网络规则,从来不用
iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
参考文章:http://www.cnblogs.com/metoy/p/4320813.html
数据包流向与netfilter的5个链:
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前
iptables默认表(filter)规则:
iptbales基本操作:
查看iptables规则:iptables -nvL
iptables -F 清空规则
service iptables save 保存规则
iptables -t nat //-t指定表
iptables -Z 可以把计数器清零
iptables -A INPUT -s 192.168.36.1 -p tcp --sport 1234 -d 192.168.36.128 --dport 80 -j DROP/REJECT(扔掉/拒绝)
-A (add)增加在最后
-I (insert)插入到最前面
优先匹配前面的规则,若第一条和后面某条规则一样,那么只会匹配第一条,后面类似的规则就不会匹配了。
-D (delete) 删除规则
--line-number 添加编号,通过编号删除指定规则(方便省事)
iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT 针对网卡作操作
iptables -P INPUT DROP 清除默认规则 ,最好别动
iptables小案例
vi /usr/local/sbin/iptables.sh //加入如下内容
执行:
将iptables恢复成默认状态:
icmp示例(禁止外面ping自己,自己可以ping出去):
测试:
iptables规则备份和恢复:
service iptables save //会把规则保存到/etc/sysconfig/iptables #服务器重启后依然生效
把iptables规则备份到/tmp/ipt.txt文件中
iptables-save > /tmp/ipt.txt
![a213924819d63de92e69091b24ae5247016.jpg](https://oscimg.oschina.net/oscnet/a213924819d63de92e69091b24ae5247016.jpg)
恢复刚才备份的规则
iptables-restore < /tmp/my.ipt