一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Linux

Shell入门看我吧

背景 之前写了系列的shell实战的文章,得到了挺多小伙伴的关注,遇到有些对shell不太熟悉小伙伴,所以有个想法写一篇shell入门的文章。 时间流逝,再回头去看看过去的东西,才会发现哪些东西比较重要,故撰此文,记录我在过去学习和使用shell语言过程中我个人觉得比较重要的部分,做一个小总结和分享。 文章中使用到的代码位置:https://gitee.com/dhar/YTTInjectedContentKit/tree/master/DevPods/InjectedContentKit/Example/injectContentShell 和 https://gitee.com/dhar/ShellLearning/tree/master/helloshell 文章内容结构如下: 语法 变量 打印 运算 控制 循环 容器 方法 文件 文件读取 文件写入 sed流编辑 模块 工具模块 流程模块 输入和菜单 获取输入 菜单 语法 变量 变量的定义 定义一个变量和其他语言的类似,shell是弱类型语言所以不需要使用类型限定,并且变量可以修改类型,下面的例子定义了一个字符串类型的str变量,之后修改为数值类型 注意点:变量等号两边不能有空格出现

  变量使用 变量可以赋值给另一个变量和打印,当变量被使用的时候需要在变量名称前面加上$符号,还有另一种方式是把变量名放在${}括号中使用,可以把命令执行结果作为右值赋值给变量

  打印 因为shell没有单步调试和其他功能强大的IDE,所以打印功能就经常使用到,此外打印功能还可以当做函数的返回值,比return作为函数的返回值功能更强大,shell 使用echo打印,内容默认输出到控制台中,echo可以打印字符串、变量、以及字符串中嵌入变量的混个内容,echo有几重要的参数选项 -e 转义字符处理,比如\t显示为制表符而不是显示输出\t -n 把文本字符串和命令输出显示在同一行中

  运算 使用expr执行算术运算 注意点:*乘法运算符号需要转义

  使用[]执行算术 []执行算术比expr简单多了,并且*乘法运算符号不需要转义

  控制 数值比较 控制使用if/else/fi语法,典型的数值比较如下

  还可以使用下面的比较符号: 比较符 描述 n1 -eq n2 检查n1是否与n2相等 n1 -ge n2 检查n1是否大于或等于n2 n1 -gt n2 检查n1是否大于n2 n1 -le n2 检查n1是否小于或等于n2 n1 -lt n2 检查n1是否小于n2 n1 -ne n2 检查n1是否不等于n2 一个简单的9*9乘法口诀表的例子

[…]

龙生   07 Apr 2018
View Details

CentOS 7服务器安全配置(未完待续)

1.问题背景 本打算买一个Linux服务器玩玩,系统为CentOS 7,供学习Linux和线上部署网站学习用。没想到买了没几天,啥都没做呢,登录之后发现了近2万条登录失败记录(输入lastb命令即可查看登入系统失败的用户相关信息)。什么?有人想通过暴力破解密码来登录我的服务器?!并且大量的攻击来自同一个ip地址。作为一个Linux小白,差点被吓尿了,网络真危险啊。 不过虽然是小白,也不甘示弱,有攻击就要有防御,现状开始逼迫我去学习关于Linux服务器安全防护的知识,要守住自己在网上的一块领地。 2.安装Fail2ban 在Q群上和小伙伴讨论过程中,发现了fail2ban这个利器。fail2ban能阻止暴力破解,如果fail2ban发现一个ip在暴力攻击,攻击次数达到一定次数时,就会禁止改ip连接服务器,以达到阻止暴力破解密码的目的。之前看登录失败日志,一个ip攻击了我上万次,现在有了fail2ban,它可做不了了,赶紧开始我们的安装。 安装fail2ban 输入以下两条命令即可安装

  说明: – yum install epel-release:安装EPEL仓库(Extra Packages for Enterprise Linux) – yum install fail2ban:从EPEL仓库安装fail2ban fail2ban配置文件 打开配置文件

  开头会见到如下说明

大意是不要修改这个配置文件,而应该新建一个jail.conf来写用户配置。 先查看配置文件内默认的配置(仅列出前面5项):

ignoreip 不会被ban的ip bantime 每秒内访问的最大次数,超过就被ban maxretry 最大失败次数 这里只是简单举例,其他一些配置不多做赘述,有需要的可以自己去看英文注释。 于是新建/打开一个jail.conf,写入用户自己的配置

  把下列代码拷进去

说明: – enabled: 激活fail2ban。 – filter: 是sshd默认参考这个文件/etc/fail2ban/filter.d/sshd.conf。 – action: 符合/etc/fail2ban/action.d/iptables.conf这个文件的ip将会被fail2ban给ban掉. 如果你之前改过ssh端口,把 port=ssh改成新端口, 比如 port=2222. 如果还在用22,就不用改这里。 – logpath: Fail2Ban的日志文件路径. – maxretry: 最大尝试登陆失败次数. 启动fail2ban服务 运行这两个命令即可启动

  查看一下iptables是否添加了fail2ban的规则

会看到如下字样f2b-SSH

查看登录失败日志 输入这条命令

  会看到类似这样的结果

3.修改22端口并启用 先在sshd_config里面添加新端口 查看sshd_confifg

  可以看到如下片段:

  添加一个新端口,如22222,在Port 22下面添加一行Port 22222,Port 22先不要注释掉,以防新端口登录不上。 再在防火墙里添加新端口 查看防火墙运行状态

  查看所有打开的端口

  添加端口

[…]

龙生   01 Apr 2018
View Details

Centos7 修改SSH 端口

修改/etc/ssh/sshd_config

修改firewall配置 firewall添加想要修改的ssh端口:

修改SELinux 使用以下命令查看当前SElinux 允许的ssh端口:

添加33378端口到 SELinux

然后确认一下是否添加进去

如果成功会输出

重启ssh

测试新端口的ssh连接 测试修改端口以后的ssh连接,如果成功则将step1里面的port 22 重新注释掉   from:https://www.cnblogs.com/rwxwsblog/p/5756894.html

龙生   01 Apr 2018
View Details

CentOS系统中常用查看系统信息和日志命令小结

进程 # ps -ef # 查看所有进程 # top # 实时显示进程状态(另一篇文章里面有详细的介绍) 用户: # w # 查看活动用户 # id <用户名> # 查看指定用户信息 # last # 查看用户登录日志 # cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组 # crontab -l # 查看当前用户的计划任务 系统 日志文件( 可以通过cat 或tail 命令来查看) /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 系统信息 # uname -a # 查看内核/操作系统/CPU信息 # cat /etc/issue # cat /etc/redhat-release # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb […]

龙生   01 Apr 2018
View Details

查看Linux系统版本信息

一、查看Linux内核版本命令(两种方法): 1、cat /proc/version [root@S-CentOS home]# cat /proc/version Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013 2、uname -a [root@S-CentOS home]# uname -a Linux S-CentOS 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 二、查看Linux系统版本的命令(3种方法): 1、lsb_release -a,即可列出所有版本信息: [root@S-CentOS ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.5 (Final) Release: 6.5 Codename: Final 这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。 2、cat /etc/redhat-release,这种方法只适合Redhat系的Linux: [root@S-CentOS home]# cat /etc/redhat-release CentOS release 6.5 (Final) 3、cat /etc/issue,此命令也适用于所有的Linux发行版。 [root@S-CentOS home]# cat /etc/issue CentOS release […]

龙生   01 Apr 2018
View Details

修改Nginx与Apache上传文件大小限制

一、修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制。 当超过大小的时候会报413错误。 这个时候我们要修改nginx参数。

然后重启nginx

    二、修改Apache上传文件最大值限制 打开php.ini, :/ 找到下面的项并修改之。下面以上传100M为例。

 

一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。 但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:

  全部设置好之后,重启

  https://www.cnblogs.com/shifu204/p/6548635.html

龙生   25 Mar 2018
View Details

linux中查看nginx、apache、php、mysql配置文件路径的方法

原文:http://www.phper163.com/archives/368   如何在linux中查看nginx、apache、php、mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档。这时该怎么判断找到正确的加载文件路径了。可以通过以下来判断 1、判断apache 首先执行命令找到httpd路径 ps aux | grep httpd 如httpd路径为 /usr/local/apache/bin/httpd 然后执行以下命令 /usr/local/apache/bin/httpd -V | grep “SERVER_CONFIG_FILE” 即可找到编译时加载的配置文件路径 httpd.conf -V 参数可以看到编译时配置的参数 2、判断nginx 首先执行命令找到nginx路径 ps aux | grep nginx 如nginx路径为 /usr/local/nginx/sbin/nginx 然后执行以下命令 /usr/local/nginx/sbin/nginx -V 默认放在 安装目录下 conf/nginx.conf 3、判断mysql 首先执行命令找到mysql路径 ps aux | grep mysqld 如mysqld路径为 /usr/bin/mysql 然后执行以下命令 /usr/bin/mysql –verbose –help | grep -A 1 ‘Default options’ 或 /usr/bin/mysql –print-defaults 4、判断php加载的配置文件路径 (1)、可通过php函数phpinfo来查看,写个文件,然后用网址访问一下,查找“Loaded Configuration File”对应的值即为php加载的配置文件 (2)、如果是nginx+php配置,也可以通过查找php执行路径 ps aux | grep php 如,路径为 /usr/local/nginx/sbin/php-fpm 然后执行以下命令 /usr/local/nginx/sbin/php-fpm -i | grep “Loaded Configuration File” 即可看到php加载的配置文件 (3)、如果是apache+mod_php配置,也可以在apache配置文件中查看加载的php.ini路径。如 PHPIniDir “/usr/local/apache/conf/php.ini” 当然也有简单的方法,就是通过find来搜索 如 find / -name […]

龙生   20 Mar 2018
View Details

简介vsftpd及搭建配置

一、简介 FTP(文件传输协议)全称是:Very Secure FTP Server。   Vsftpd是linux类操作系统上运行的ftp服务器软件。 vsftp提供三种登陆方式:1.匿名登录  2.本地用户登录  3.虚拟用户登录 vsftpd的特点:1.较高的安全性需求    2.带宽的限制    3.创建支持虚拟用户    4.支持IPV6    5.中等偏上的性能    6.可分配虚拟IP    7.高速   Ftp会话时采用了两种通道: 控制通道:与Ftp服务器进行沟通的通道,链接Ftp发送ftp指令都是通过控制通道来完成的。 数据通道:数据通道和Ftp服务器进行文件传输或则列表的通道   二、工作原理 Ftp协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port和Pasv方式   Port模式(主动模式)--> 默认 Ftp客户端首先和Ftp server的tcp 21端口建立连接,通过这个通道发送命令,客户端要接受数据的时候在这个通道上发送Port命令,Port命令包含了客户端用什么端口(一个大于1024的端口)接受数据,在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。这个时候数据连接由server向client建立一个连接。 Port交互流程: client端:client链接server的21端口,并发送用户名密码和一个随机在1024上的端口及port命令给server,表明采用主动模式,并开放那个随机的端口。 server端:server收到client发来的Port主动模式命令与端口后,会通过自己的20端口与client那个随机的端口连接后,进行数据传输。   Pasv模式(被动方式) 建立控制通道和Port模式类似,当客户端通过这个通道发送Pasv命令的时候,Ftp server打开了一个位于1024和5000之间的随机端口并且通知客户端在这个端口上进行传输数据请求,然后Ftp server将通过这个端口进行数据传输。这个时候数据连接由client向server建立连接。 Pasv交互流程 Clietn:client连接server的21号端口,发送用户名密码及pasv命令给server,表明采用被动模式。 server:server收到client发来的pasv被动模式命令之后,把随机开放在1024上的端口告诉client,client再用自己的20 端口与server的那个随机端口进行连接后进行数据传输。   如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。   三、安装vsftpd及相关软件 yum -y install vsftpd*  pam*   db4* vsftpd:ftp软件      pam:认证模块       DB4:支持文件数据库   四、vsftpd的用户管理: FTP服务器对用户的管理,在默认的情况下是根据“ /etc/passwd系统用户配置文件” 及 “/etc/group系统用户组配置文件” 来进行配置。 在FTP服务器中,匿名用户的用户名和密码都是ftp ;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;如:

在ftp用户这行中,我们看到七个字段,每个字段写字段之间用:号分割; 1.ftp 是用户名 2.x 是密码字段,隐藏的 3.14 是用户的UID字段,可以自己来设定,不要和其它用户的UID相同,否则会造成系统安全问题; 4.50 用用户组的GID,可以自己设定,不要和其它用户组共用FTP的GID,否则会造成系统全全问题; 5.FTP User 是用户说明字段 6./var/ftp 是ftp用户的家目录,可以自己来定义 7./sbin/nologin 这是用户登录SHELL ,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把ftp用户的/sbin/nologin 改为 /bin/bash ,这样ftp用户通过本地或者远程工具ssh或telnet以真实用户身份登录到系统。这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他FTP帐号的权限,也就是说只给他FTP的权限,而不要把他的SHELL设置成 […]

龙生   30 Jan 2018
View Details

vsftpd

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。此外,本文还介绍了FTP基本原理,以及FTP用户管理方面的基础知识。 简介 vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。 在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等 特点 ①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用; ②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准; ③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作; ④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。 配置 vsftpd配置 关于主机的设定值 connect_from_port_20=YES(NO) 还记得 wuftp 那篇文章提到的,关于主动联机的 ftp-data 吗? 这个设定项目在启动主动联机的port 20 咯! listen_port=21 使用的 vsftpd命令通道的 port number 设定,如果您想要使用非 正规的 ftpport,在这个设定项目修改吧! dirmessage_enable=YES(NO) 当使用者进入某个目录时,会显示该目录需要注意的内容,显示的 档案预设是.message ,当然,可以使用底下的设定项目来修订! message_file=.message 当 dirmessage_enable=YES时,可以设定这个项目来让 vsftpd 寻找该档案来显示讯息!您也可以设定其它档名喔! listen=YES(NO) 若设定为YES […]

龙生   30 Jan 2018
View Details
1 14 15 16 23