Linux 笔记 - 第十三章 Linux 系统平常管理之(二)Linux 防火墙和任务计划

博客地址:http://www.moonxy.comhtml

1、前言linux

Linux 下的的防火墙功能是很是丰富的,做为 Linux 系统工程师有必要了解一下。防火墙通常分为硬件防火墙和软件防火墙。可是,不论是硬件仍是软件防火墙,它们都须要使用硬件来做为联机介质,也须要使用软件来设定安全规则。shell

2、Linux 的防火墙缓存

2.1 selinux安全

安全加强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。SELinux 的结构及配置很是复杂,并且有大量概念性的东西,要学精难度较大。不少 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。bash

关闭 selinux 的方法为修改 /etc/selinux/config 文件,将 SELINUX=disabled,默认为 enforcing。网络

[root@ryan ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

保存配置文件后,重启 Linux 才能生效。临时关闭 selinux 的命令为:tcp

# setenforce 0wordpress

可使用 getenforce 命令得到当前 selinux 状态:工具

# getenforce

[root@ryan ~]# getenforce
Disabled

2.2 iptables

iptables 是 Linux 上特有的防火墙 netfilter 的机制,iptables 实际上是 ip tables 的含义,也就是 IP 表的意思。iptables 是由4个表(table)和5个链(chain)组成。每一个表的用途都不同。在每一个表中,又定义了多个链,经过这些链能够设置相应的规则和策略。

CentOS 7.x(RHEL7.x)以后,防火墙规则设置由 firewalld 服务进程默认管理,取代了 CentOS/RHEL 6.x 的 iptables 服务。

iptables 过滤流程图,以下:

4表5链,每一个表所涉及到的链,以下:

4个表包括:

filter:数据包过滤,用于防火墙规则,最经常使用。

net:地址转换,用于网关路由器。

mangle:数据包修改(QOS),用于实现服务质量。

raw:高级功能,如:网址过滤。

5个规则链名包括:

INPUT链:处理输入数据包。

OUTPUT链:处理输出数据包。

PORWARD链:处理转发数据包。

PREROUTING链:用于目标地址转换(DNAT)。

POSTOUTING链:用于源地址转换(SNAT)。

动做包括:

accept:接收数据包。

DROP:丢弃数据包。

REDIRECT:重定向、映射、透明代理。

SNAT:源地址转换。

DNAT:目标地址转换。

MASQUERADE:IP假装(NAT),用于ADSL。

LOG:日志记录。

实例

查看已添加的iptables规则

# iptables -nvL

默认查看filter表的规则,可使用 -t 选项表名,来指定查看具体表的规则。如:

# iptables -t nat -nvL

开放指定的端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT               #容许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    #容许已创建的或相关连的通行
iptables -A OUTPUT -j ACCEPT         #容许全部本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #容许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #容许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #容许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #容许FTP服务的20端口
iptables -A INPUT -j reject       #禁止其余未容许的规则访问
iptables -A FORWARD -j REJECT     #禁止其余未容许的规则访问

好比经常使用的放行22端口:

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

-A/-D:表示增长/删除一条规则(向后追加)。

-I:表示插入一条规则,则是效果跟 -A 类型(想前插入第一条位置)。

-p:表示指定协议,能够是 tcp、udp 或者 icmp。

--dport:跟 -p 一块儿使用,表示指定目标端口。

--sport:跟-p 一块儿使用,表示指定源端口。

-s:表示指定源 IP(能够是一个 IP 段)。

-d:表示指定目的 IP(能够是一个 IP 段)。

-j:后面跟动做,其中 ACCEPT 表示容许包,DROP 表示丢掉包,REJECT 表示拒绝包。

-i:表示指定网卡(不经常使用)。

屏蔽IP

iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是

删除已添加的iptables规则

将全部iptables以序号标记显示,执行:

iptables -L -n --line-numbers

好比要删除INPUT里序号为8的规则,执行:

iptables -D INPUT 8

3、Linux 系统的任务计划

Linux 中有些管理工做能够经过按期自动执行某一个脚原本完成,这就是 Linux 系统中的任务计划 cron 功能。crontab 命令被用来提交和管理用户的须要周期性执行的任务,与 Windows下的计划任务相似,当安装完成操做系统后,默认会安装此服务工具,而且会自动启动 crond 进程,crond 进程每分钟会按期检查是否有要执行的任务,若是有要执行的任务,则自动执行该任务。

格式为:

crontab(选项)(参数)

Linux 任务计划功能都是经过 crontab 命令来完成的,经常使用选项以下:

-e:编辑该用户的计时器设置,编辑某个用户的crontab文件内容。若是不指定用户,则表示编辑当前用户的crontab文件;

-l:列出该用户的计时器设置,查看已经设定的任务计划使用 crontab -l 命令,显示某个用户的 crontab 文件内容,若是不指定用户,则表示显示当前用户的 crontab 文件内容。;

-r:删除该用户的计时器设置,从 /var/spool/cron 目录中删除某个用户(username)的 crontab 文件,若是不指定用户,则默认删除当前用户的 crontab文件;

-u<用户名称>:指定要设定计时器的用户名称。

参数:

crontab文件:指定包含待执行任务的 crontab 文件。

Linux下的任务调度分为两类:系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工做,好比写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab 文件包括下面几行:

[root@ryan ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

前四行是用来配置 crond 任务运行的环境变量,第一行 SHELL 变量指定了系统要使用哪一个 shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行 MAILTO 变量指定了 crond 的任务执行信息将经过电子邮件发送给 root 用户,若是 MAILTO 变量的值为空,则表示不发送任务执行信息给用户,第四行的 HOME 变量指定了在执行命令或者脚本时使用的主目录。

用户任务调度:用户按期要执行的工做,好比用户数据备份、定时邮件提醒等。用户可使用 crontab 工具来定制本身的计划任务。全部用户定义的 crontab 文件都被保存在 /var/spool/cron 目录中。其文件名与用户名一致,使用者权限文件以下:

/etc/cron.deny     该文件中所列用户不容许使用crontab命令
/etc/cron.allow    该文件中所列用户容许使用crontab命令
/var/spool/cron/   全部用户crontab文件存放的目录,以用户名命名

crontab 文件的含义:用户所创建的 crontab 文件中,每一行都表明一项任务,每行的每一个字段表明一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式以下:

minute   hour   day   month   week   command     顺序:分 时 日 月 周

其中:

minute: 表示分钟,能够是从0到59之间的任何整数。

hour:表示小时,能够是从0到23之间的任何整数。

day:表示日期,能够是从1到31之间的任何整数。

month:表示月份,能够是从1到12之间的任何整数。

week:表示星期几,能够是从0到7之间的任何整数,这里的0或7表明星期日。

command:要执行的命令,能够是系统命令,也能够是本身编写的脚本文件。

在以上各个字段中,还可使用如下特殊字符:

星号(*):表明全部可能的值,例如month字段若是是星号,则表示在知足其它字段的制约条件后每个月都执行该命令操做。

逗号(,):能够用逗号隔开的值指定一个列表范围,例如,"1,2,5,7,8,9"

中杠(-):能够用整数之间的中杠表示一个整数范围,例如 "2-6" 表示 "2,3,4,5,6"

正斜线(/):能够用正斜线指定时间的间隔频率,至关于整除,例如 "0-23/2" 表示每两小时执行一次。同时正斜线能够和星号一块儿使用,例如 */10,若是用在minute字段,表示每十分钟执行一次。

crond 服务

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //从新载入配置

/sbin/service crond status //查看crontab服务状态

4、抓包工具

4.1 tcpdump 工具

tcpdump命令是一款 sniffer 工具,它能够打印全部通过网络接口的数据包的头信息,也可使用 -w 选项将数据包保存到文件中,方便之后分析。

格式:

tcpdump(选项)

监视指定网络接口的数据包

# tcpdump -nn -i eth0

-nn:直接以IP及port number显示,而非主机名与服务名称;

-c<数据包数目>:收到指定的数据包数目后,就中止进行倾倒操做;

-w<数据包文件>:把数据包数据写入指定的文件。

例如:

[root@ryan ~]# tcpdump -nn -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:31:13.034947 IP 172.31.71.xx.22 > 124.89.91.xx.62990: Flags [P.], seq 223003822:223004030, ack 658294645, win 281, length 208
22:31:13.035049 IP 172.31.71.xx.22 > 124.89.91.xx.62990: Flags [P.], seq 208:400, ack 1, win 281, length 192
22:31:13.081450 IP 124.89.91.xx.62990 > 172.31.71.xx.22: Flags [.], ack 400, win 16695, length 0

-nn 选项的做用是让第三列和第四列显示成 "IP+端口号" 的形式,若是不加 -nn 选项则显示为 "主机名+服务名称"。

监视指定主机和端口的数据包

# tcpdump -nn tcp and host xxx and port xxx -c 100 -w /tmp/1.cap

若是想要获取主机 210.27.48.1 接收或发出的 telnet 包,使用以下命令:

# tcpdump tcp port 23 host 210.27.48.1

4.2 wireshark 工具

使用 wireshark 能够分析数据包,能够经过编辑过滤表达式来达到对数据的分析。须要使用的命令为 tshark,它是一个网络协议分析器。它容许您从实况网络捕获分组数据,或者从先前保存的捕获文件读取数据包,或者将这些分组的解码形式打印到标准输出或将数据包写入文件。tshark 的本地捕获文件格式是PCAP格式,它也是TCPDUMP和各类其余工具使用的格式。

显示访问http请求的域名以及uri

tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

以下所示:

[root@ryan ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
"Jul  8, 2018 22:09:02.394273171 CST"   124.89.91.xx    www.moonxy.com  GET     /wordpress/350.html

其中:

"Jul  8, 2018 22:09:02.394273171 CST" 为请求时间;

124.89.91.xx 为源地址(访问者 IP);

www.moonxy.com 为请求的域名;

GET 为 http 请求类型;

/wordpress/350.html 为请求的路径;

实时打印当前http请求的url(包括域名)

tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'

以下所示:

[root@ryan ~]# tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
7 www.moonxy.com/wordpress/319.html
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134436_87982.png
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134518_98463.png
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134718_91938.png
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134927_72555.png
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134946_41004.png
www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422134912_12773.png
8 www.moonxy.com/wordpress/303.html
10 www.moonxy.com/wordpress/wp-content/uploads/2018/04/20180422140632_57565.jpg
相关文章
相关标签/搜索