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

一、前言

Linux 下的的防火墙功能是非常丰富的,作为 Linux 系统工程师有必要了解一下。防火墙一般分为硬件防火墙和软件防火墙。但是,不管是硬件还是软件防火墙,它们都需要使用硬件来作为联机介质,也需要使用软件来设定安全规则。

二、Linux 的防火墙

2.1 selinux

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

关闭 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 的命令为:

# setenforce 0

可以使用 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 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport -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/ -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/ -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/ -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是

删除已添加的iptables规则

将所有iptables以序号标记显示,执行:

iptables -L -n --line-numbers

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

iptables -D INPUT 

三、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 crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) 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.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 bytes
::13.034947 IP 172.31..xx. > 124.89..xx.: Flags [P.], seq :, ack , win , length
::13.035049 IP 172.31..xx. > 124.89..xx.: Flags [P.], seq :, ack , win , length
::13.081450 IP 124.89..xx. > 172.31..xx.: Flags [.], ack , win , length

-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 - 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/.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  -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  -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 - is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
www.moonxy.com/wordpress/.html
www.moonxy.com/wordpress/wp-content/uploads///20180422134436_87982.png
www.moonxy.com/wordpress/wp-content/uploads///20180422134518_98463.png
www.moonxy.com/wordpress/wp-content/uploads///20180422134718_91938.png
www.moonxy.com/wordpress/wp-content/uploads///20180422134927_72555.png
www.moonxy.com/wordpress/wp-content/uploads///20180422134946_41004.png
www.moonxy.com/wordpress/wp-content/uploads///20180422134912_12773.png
www.moonxy.com/wordpress/.html
www.moonxy.com/wordpress/wp-content/uploads///20180422140632_57565.jpg

Linux 笔记 - 第十三章 Linux 系统日常管理之(二)Linux 防火墙和任务计划的更多相关文章

  1. Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置

    博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...

  2. Linux 笔记 - 第十三章 Linux 系统日常管理之(三)Linux 系统日志和服务

    博客地址:http://www.moonxy.com 一.前言 日志文件记录了系统每天发生的各种各样的事情,比如监测系统状况.排查问题等.作为系统运维人员可以通过日志来检查错误发生的原因,或者受到攻击 ...

  3. Linux 笔记 - 第十三章 Linux 系统日常管理之(一)系统状态监控

    博客地址:http://www.moonxy.com 一.前言 如果你是一名 Linux 运维人员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.系统运行状态主要包括:系统负载.内存状态 ...

  4. Linux 笔记 - 第二十三章 MySQL 主从复制配置

    一.前言 MySQL Replication,也被称为主从复制.AB 复制.简单来说就是 A 和 B 两台服务器做主从后,在 A 服务器上写入数据,B 服务器上也会跟着写入输入,两者之间的数据是实时同 ...

  5. centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课

    centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...

  6. centos linux系统日常管理复习 CPU物理数逻辑核数,iftop ,iotop ,sar ,ps,netstat ,一网卡多IP,mii-tool 连接,ethtool速率,一个网卡配置多个IP,mii-tool 连接,ethtool速率 ,crontab备份, 第十八节课

    centos linux系统日常管理复习 物理CPU和每颗CPU的逻辑核数,uptime ,w,vmstat,iftop ,iotop ,sar ,ps,netstat ,一个网卡配置多个IP,mii ...

  7. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  8. centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课

    centos linux系统日常管理3  服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...

  9. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

随机推荐

  1. 最短路径Dijkstra算法模板题---洛谷P3371 【模板】单源最短路径(弱化版)

    题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行 ...

  2. 常见ASP脚本攻击及防范技巧

    由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言.但是, 由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机.事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意 ...

  3. Reactive 漫谈

    目录 概念 面向流设计 异步化 响应式宣言 参考文档 概念 Reactive Programming(响应式编程)已经不是一个新东西了. 关于 Reactive 其实是一个泛化的概念,由于很抽象,一些 ...

  4. 二级小兵——工厂模式(Factory Method)

    前言 上一篇我们介绍了单例模式,今天给大家讲一个比较简单的模式——工厂模式(Factory Method),工厂模式又是什么呢?顾名思义,工厂——生产制造东西的地方.那么应用在程序当中该如何使用.并且 ...

  5. MongoDB的一些高级语法.md

      MongoDB的一些高级语法 AND 和 OR操作 AND操作 OR操作 嵌入式文档 插入 查询 数组(Array)字段 插入 查询 聚合(Aggregation) 筛选数据 修改字段 注意事项 ...

  6. Centos知识

    1.看系统的版本: cat /etc/redhat-release 2.看内核版本: uname -r 3.查看系统是32位还是64位 uname - m 4.磁盘: 磁盘分区有主分区.扩展分区和逻辑 ...

  7. IOS系统

    苹果产品以前技术是很牛逼.但是,苹果的系统是IOS系统,是一个封闭系统,就是你只看的到程序看不到文件的存储位置,相当于说他们自己的软件或者要花钱的软件才可以在闭环系统里面通过苹果视频该软件导出来,祝2 ...

  8. Leetcode之回溯法专题-52. N皇后 II(N-Queens II)

    Leetcode之回溯法专题-52. N皇后 II(N-Queens II) 与51题的代码80%一样,只不过52要求解的数量,51求具体解,点击进入51 class Solution { int a ...

  9. Nginx入门(一):在centos上安装nginx

    CenterOS7安装Nginx =================== 参考:https://www.xuliangwei.com/bgx/972.html nginx官网下载地址:http://n ...

  10. codeforce#483div2C-Finite or not?数论,GCD

    传送门:http://codeforces.com/contest/984/problem/C 这道题 题意:求q/p是否能用k进制有限表示小数点后的数:   思路:数学推理:     1.首先把q/ ...