SELINUX
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
临时关闭SELINUX的方式:
永久关闭SELINUX的方法:修改配置文件/etc/selinux/config
关于SELINUX的运行状态
1:enforcing #开启状态,会强制执行SELINUX的安全策略
2:permissive #提示状态,会打印触发SELINUX安全策略的警告,但是不会执行相应的策略。
3:disabled #关闭SELINUX,重启后也不会再启动SELINUX。
firewalld、iptables和netfilter
在centos6上,我们用的是iptables服务,而在centos7上,我们用的是firewalld服务,不管是centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。
iptables
CentOS7默认使用的时Firewalld工具,学些iptables前需要将Firewalld关闭并设置开机不启动。
CentOS7默认是没有安装iptables服务的。需要安装iptables服务才能使用iptables,使用yum -y install iptables-services,设置开机自启动iptables服务,并启动iptables服务、
查看iptables服务是否正常开启
显示active即表示正常
netfilter5表5链
1.filter表——三个链:INPUT、FORWARD、OUTPUT 作用:过滤数据包 内核模块:iptables_filter.
2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT 作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4.Raw表——两个链:OUTPUT、PREROUTING 作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
5.Security表——三个链:INPUT、OUTPUT和FORWARD作用:Security表在centos6中并没有,用于强制访问控制(MAC)的网络规则 内核模块:iptable_security
PREROUTING:数据包进入路由表之前,对应的是目标ip地址
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前,对应的是源ip地址
数据包的传输过程:
1:当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
2:如果数据包就是进入本机的,它就会到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
3:如果数据包是要转发出去的,且内核允许转发,数据包就会经过FORWARD链,然后到达POSTROUTING链输出。
1:当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。 2:如果数据包就是进入本机的,它就会到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。3:如果数据包是要转发出去的,且内核允许转发,数据包就会经过FORWARD链,然后到达POSTROUTING链输出。
iptables语法
iptables的命令格式较为复杂,一般的格式如下:
iptables [-t table] 命令 [chain] [rules] [-j target]格式说明:
table————指定表名,iptables内置包括filter表、nat表、mangle、raw表和security表。
命令—————对链的操作命令
chain————链名
rules————匹配规则
target————动作如何进行
-A或—append <链名>:在规则列表的最后增加1条规则
-I或–insert <链名>:在指定的位置插入1条规则
-D或–delete <链名>:从规则列表中删除1条规则(iptables -nvL INPUT --line-numbers产生对应链的编号,方便进行删除)
-Z或–zero <链名>:将表中数据包计数器和流量计数器归零
-F或–flush <链名>:删除表中所有规则
-nvL <链名>:查看iptables规则列表(n:数字输出。IP地址和端口会以数字的形式打印 v:详细输出。这个选项让list命令显示接口地址、规则选项等信息L -list:显示所选链的所有规则。如果没有选择链,则会显示所有链的所有规则)
-i或–in-interface <网络接口名>:指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等
-o或–out-interface <网络接口名>:指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等
-p或—proto协议类型 < 协议类型>:指定数据包匹配的协议,如TCP、UDP和ICMP等
-s或–source <源地址或子网>:指定数据包匹配的源地址
–sport <源端口号>:指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口
-d或–destination <目标地址或子网>:指定数据包匹配的目标地址
–dport <目标端口号>:指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口
ACCEPT:接受数据包
DROP:丢弃数据包
REJECT:与DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。
SNAT:源地址转换,即改变数据包的源地址
DNAT:目标地址转换,即改变数据包的目的地址
MASQUERADE:IP伪装,即是常说的NAT技术,MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的;如果主机的IP地址是静态固定的,就要使用SNAT
LOG日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错
保存iptables规则:
命令:service iptables save说明:执行这条命令会把当前iptables的所有规则保存到/etc/sysconfig/iptables文件中,每次重启服务都会将配置文件的规则进行加载
iptables filter表案例
1、只放行80、21、22三个端口的数据包,并且22端口只有指定的IP段才能通过,首先编写一个脚本,vim /usr/local/sbin/iptables.sh ##编辑脚本文件,加入以下内容:
#! /bin/bash #定义执行脚本的shell
IPT="/usr/sbin/iptables" #定义变量,iptables命令的绝对路径。
$IPT -F #清空iptables规则
$IPT -P INPUT DROP #默认规则,丢弃所有数据包。
$IPT -P OUTPUT ACCEPT #默认规则,放行所有OUTPUT链的数据包
$IPT -P FORWARD ACCEPT #默认规则,放行所有FORWARD链的数据包
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #这条规则允许通过RELATED和ESTABLISHED状态的数据包,这条规则必加,否则可能导致某些服务连不上。
$IPT -A INPUT -s 10.1.1.0/24 -p tcp --dport 22 -j ACCEPT #仅允许10.1.1.0/24网段链接22端口
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT #允许通过所有80端口的数据包
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT #允许通过所有21端口的数据包
2、禁ping(让本机可以ping通别的机器,但是别的机器ping不通本机)
(1)使用iptables -F ; iptables -P INPUT ACCEPT 清除默认规则,并将input链默认全部接收
(2)使用iptables -A INPUT -p icmp --icmp-type 8 -j DROP 将别人的ping请求给drop掉
扩展
selinux教程 http://os.51cto.com/art/201209/355490.htm
selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html http://jamyy.us.to/blog/2006/03/206.html