selinux
selinux是RedHat/Centos系统特有的安全机制,一般我们会关掉它,使“SELINUX=disables",它的默认值是enforcing,你可以用getenforce命令查看你的状态
[root@dong-Linux ~]# getenforce
临时关闭它的命令
[root@dong-Linux ~]# setenforce 0
永久关闭它,它的配置文件
[root@dong-Linux ~]# vim /etc/selinux/config
SELINUX=disabled
重启之后才能生效,这时用getenforce,状态变成Disabled
iptables
iptables是linux上特有的防火墙,功能很强大,里面有很多哟的规则需要了解和掌握,
查看规则
[root@dong-Linux ~]# iptables -nvL
Chain INPUT (policy ACCEPT 940K packets, 132M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1156K packets, 135M bytes)
pkts bytes target prot opt in out source destination
一般我清楚规则用iptables -F,但是重启之后这些规则又会重新加载进来,所以需要使用 /etc/init.d/iptables save 保存一下规则,通过上边的命令输出我们也可以看到,防火墙规则保存在了/etc/sysconfig/iptables
1)iptalbes的三个表
filter 这个表主要用于过滤包的,是系统预设的表,这个表也是阿铭用的最多的。内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。
nat 主要用处是网络地址转换,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。该表阿铭用的不多,但有时候会用到。
mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。
2)iptables 基本语法
增加/删除一个规则
#iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP
这就是增加了一条规则,省略-t所以针对的是filter表。-A 表示增加一条规则,另外还有-I 表示插入一条规则,-D删除一条规则;后面的INPUT即链名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/--dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。
#iptables -I INPUT -s 1.1.1.1 -j DROP
上例表示:插入一条规则,把来自1.1.1.1的所有数据包丢掉
iptables -D INPUT -s 1.1.1.1 -j DROP
删除刚刚插入的规则。注意要删除一条规则时,必须和插入的规则一致,也就是说,两条iptables命令,除了-I 和-D不一样外,其他地方都一样
iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP
上例表示把来自2.2.2.2 并且是tcp协议到本机的80端口的数据包丢掉。这里要说的是,--dport/--sport 必须要和-p选项一起使用,否则会出错。
iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP
这条规则表示,把发送到10.0.2.34的22端口的数据包丢掉。
各个选项的规则:
-A/-D :增加删除一条规则;
-I :插入一条规则,其实跟-A的效果一样;
-p :指定协议,可以是tcp,udp或者icmp;
--dport :跟-p一起使用,指定目标端口;
--sport :跟-p一起使用,指定源端口;
-s :指定源IP(可以是一个ip段);
-d :指定目的IP(可以是一个ip段);
-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;
-i :指定网卡(不常用,但有时候能用到);
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
上例中表示,把来自192.168.1.0/24这个网段的并且作用在eth0上的包放行。有时候您的服务器上iptables过多了,想删除某一条规则时,又不容易掌握当时创建时的规则。其实有一种比较简单的方法:
[root@dong-Linux ~]# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 14 packets, 1008 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP tcp -- * * 10.72.11.12 10.72.137.159
[root@dong-Linux ~]# iptables -D INPUT 1
-D 后跟链名,然后是规则num,这个num就是查看iptables规则时第一列的值。再次查看刚才的规则,已经没有了:
iptables还有一个选项经常用到,-P(大写)选项,表示预设策略。用法如下:
iptables -P INPUT DROP
-P后面跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。注意:如果您在连接远程服务器,千万不要随便敲这个命令,因为一旦您敲完回车您就会断掉。
这个策略一旦设定后,只能使用 iptables -P ACCEPT 才能恢复成原始状态,而不能使用-F参数。
保存和备份iptables规则
[root@dong-Linux ~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
停止防火墙:
[root@dong-Linux ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
随便加入一条规则
[root@dong-Linux ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
[root@dong-Linux ~]# iptables-save > myiptables.tule
[root@dong-Linux ~]# cat myiptables.tule
# Generated by iptables-save v1.4.7 on Thu Aug 27 17:55:45 2015
*filter
:INPUT ACCEPT [76:6264]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [51:6392]
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
COMMIT
# Completed on Thu Aug 27 17:55:45 2015
如果我们恢复我们的规则呢
[root@dong-Linux ~]# iptables-restore < myiptables.tule