一.安装Apache服务 1. 命令如下:sudo yum install httpd –y 注:采用该方法安装Apache的配置文件的默认路径在/etc/httpd/conf/httpd.conf 需要设置一下Apache服务开机自启,如果不设置,每次开机后都需要自己重启服务: chkconfig --level35 httpd on 再使用chkconfig 查看一下开机启动的服务中是否有httpd服务; 2. 配置防火墙(开启80端口) 其中一种方式是:sudo vim/etc/sysconfig/iptables(防火墙为iptables) 注:如果是centos7采用的是firewall,连接; 将下列文本添加到iptables中 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT-AINPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -jACCEPT //添加 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-withicmp-host-prohibited 另一种方法是:如果你如法找到iptables这个文件,使用下列命令配置开启80端口 1. /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 2. […]
View Details准备从系统中拷贝一些文件到U盘,插上U盘。 一、获得U盘的设备识别符 fdisk -l 啊哈,我看到了,是/dev/sdb1 二、熟练的挂载 mount /dev/sdb1 /mnt/usb Duang,竟然失败了,错误提示如下: unknown filesystem type ‘ntfs’ 三、原因 最小安装的系统中默认不识别NTFS格式的文件。 四、下载扩展包并解压 Open Source: NTFS-3G wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2016.2.22.tgz 解压: tar -xvf ntfs-3g_ntfsprogs-2016.2.22.tgz 五、编译安装 三步曲:./configure && make && make install 六、挂载 mount -t ntfs-3g /dev/sda1 /mnt/usb 参考: https://www.cnblogs.com/yoyotl/p/6111531.html
View Details背景 之前写了系列的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变量,之后修改为数值类型 注意点:变量等号两边不能有空格出现
1 2 3 4 5 |
str="string" echo $str echo ${str} str=123 echo $str |
变量使用 变量可以赋值给另一个变量和打印,当变量被使用的时候需要在变量名称前面加上$符号,还有另一种方式是把变量名放在${}括号中使用,可以把命令执行结果作为右值赋值给变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
str2=$str echo $str2; str3=${str} echo ${str3} curDir=$(pwd) echo "curDir = ${curDir}" curDirCon=`ls` echo "curDirCon = ${curDir2}" # 输出: =======变量======= string string 123 123 123 curDir = /Users/aron/git-repo/ShellLearning/helloshell curDirCon = data syntax.sh |
打印 因为shell没有单步调试和其他功能强大的IDE,所以打印功能就经常使用到,此外打印功能还可以当做函数的返回值,比return作为函数的返回值功能更强大,shell 使用echo打印,内容默认输出到控制台中,echo可以打印字符串、变量、以及字符串中嵌入变量的混个内容,echo有几重要的参数选项 -e 转义字符处理,比如\t显示为制表符而不是显示输出\t -n 把文本字符串和命令输出显示在同一行中
1 2 3 4 5 6 7 8 9 10 |
str4="string4" echo $str4 echo "str4=$str4" echo "str4=${str4}str3=${str3}" # 输出: =======打印======= string4 str4=string4 str4=string4str3=123 |
运算 使用expr执行算术运算 注意点:*乘法运算符号需要转义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
echo "=======运算=======" result=$(expr 5 + 5) echo ${result} result=$(expr 16 - 5) echo ${result} result=$(expr 5 \* 5) echo ${result} result=$(expr 28 / 5) echo ${result} # 输出: =======expr运算======= 10 11 25 5 |
使用[]执行算术 []执行算术比expr简单多了,并且*乘法运算符号不需要转义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
echo "=======[]运算=======" result=$[5 + 5] echo ${result} result=$[16 - 5] echo ${result} result=$[5 * 5] echo ${result} result=$[28 / 5] echo ${result} # 输出: =======[]运算======= 10 11 25 5 |
控制 数值比较 控制使用if/else/fi语法,典型的数值比较如下
1 2 3 4 5 6 7 8 |
if [[ 3 > 7 ]]; then echo "hehe" else echo "yes" fi # 输出: yes |
还可以使用下面的比较符号: 比较符 描述 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乘法口诀表的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
echo "9*9=======" i=1 j=1 line="" while [[ i -lt 10 ]]; do j=1 line="" until [[ j -eq 10 ]]; do if [[ j -le i ]]; then result=$(expr $i \* $j) resultStr="$j X $i = $result" line=${line}${resultStr}"\t" fi j=$(expr $j + 1) done echo -e ${line} i=$(expr $i + 1) done # 输出: 9*9======= 1 X 1 = 1 1 X 2 = 2 2 X 2 = 4 1 X 3 = 3 2 X 3 = 6 3 X 3 = 9 1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16 1 X 5 = 5 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25 1 X 6 = 6 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 6 X 6 = 36 1 X 7 = 7 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 6 X 7 = 42 7 X 7 = 49 1 X 8 = 8 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64 1 X 9 = 9 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81 ======= ======= |
[…]
View Details1.问题背景 本打算买一个Linux服务器玩玩,系统为CentOS 7,供学习Linux和线上部署网站学习用。没想到买了没几天,啥都没做呢,登录之后发现了近2万条登录失败记录(输入lastb命令即可查看登入系统失败的用户相关信息)。什么?有人想通过暴力破解密码来登录我的服务器?!并且大量的攻击来自同一个ip地址。作为一个Linux小白,差点被吓尿了,网络真危险啊。 不过虽然是小白,也不甘示弱,有攻击就要有防御,现状开始逼迫我去学习关于Linux服务器安全防护的知识,要守住自己在网上的一块领地。 2.安装Fail2ban 在Q群上和小伙伴讨论过程中,发现了fail2ban这个利器。fail2ban能阻止暴力破解,如果fail2ban发现一个ip在暴力攻击,攻击次数达到一定次数时,就会禁止改ip连接服务器,以达到阻止暴力破解密码的目的。之前看登录失败日志,一个ip攻击了我上万次,现在有了fail2ban,它可做不了了,赶紧开始我们的安装。 安装fail2ban 输入以下两条命令即可安装
1 2 |
yum install epel-release yum install fail2ban |
说明: – yum install epel-release:安装EPEL仓库(Extra Packages for Enterprise Linux) – yum install fail2ban:从EPEL仓库安装fail2ban fail2ban配置文件 打开配置文件
1 |
nano /etc/fail2ban/jail.conf |
开头会见到如下说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# # WARNING: heavily refactored in 0.9.0 release. Please review and # customize settings for your setup. # # Changes: in most of the cases you should not modify this # file, but provide customizations in jail.local file, # or separate .conf files under jail.d/ directory, e.g.: # # HOW TO ACTIVATE JAILS: # # YOU SHOULD NOT MODIFY THIS FILE. # # It will probably be overwritten or improved in a distribution update. # # Provide customizations in a jail.local file or a jail.d/customisation.local. # For example to change the default bantime for all jails and to enable the # ssh-iptables jail the following (uncommented) would appear in the .local file. # See man 5 jail.conf for details. # # [DEFAULT] # bantime = 3600 # # [sshd] # enabled = true # # See jail.conf(5) man page for more information |
大意是不要修改这个配置文件,而应该新建一个jail.conf来写用户配置。 先查看配置文件内默认的配置(仅列出前面5项):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[DEFAULT] # # MISCELLANEOUS OPTIONS # # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not # ban a host which matches an address in this list. Several addresses can be # defined using space (and/or comma) separator. ignoreip = 127.0.0.1/8 # External command that will take an tagged arguments to ignore, e.g. <ip>, # and return true if the IP is to be ignored. False otherwise. # # ignorecommand = /path/to/command <ip> ignorecommand = # "bantime" is the number of seconds that a host is banned. bantime = 600 # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 600 # "maxretry" is the number of failures before a host get banned. maxretry = 5 |
ignoreip 不会被ban的ip bantime 每秒内访问的最大次数,超过就被ban maxretry 最大失败次数 这里只是简单举例,其他一些配置不多做赘述,有需要的可以自己去看英文注释。 于是新建/打开一个jail.conf,写入用户自己的配置
1 |
nano /etc/fail2ban/jail.local |
把下列代码拷进去
1 2 3 4 5 6 7 8 |
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] # sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] logpath = /var/log/secure maxretry = 5 |
说明: – 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服务 运行这两个命令即可启动
1 2 |
chkconfig --level 23 fail2ban on service fail2ban start |
查看一下iptables是否添加了fail2ban的规则
1 |
iptables -L |
会看到如下字样f2b-SSH
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Chain INPUT (policy ACCEPT) target prot opt source destination f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain f2b-SSH (1 references) target prot opt source destination RETURN all -- anywhere anywhere |
查看登录失败日志 输入这条命令
1 |
cat /var/log/secure | grep 'Failed password' |
会看到类似这样的结果
1 2 3 4 5 6 7 8 9 10 11 12 |
Dec 6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2 Dec 6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2 Dec 6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2 Dec 6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2 Dec 6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2 Dec 6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2 Dec 6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2 Dec 6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2 Dec 6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2 Dec 6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2 Dec 6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2 Dec 6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2 |
3.修改22端口并启用 先在sshd_config里面添加新端口 查看sshd_confifg
1 |
/etc/ssh/sshd_config |
可以看到如下片段:
1 2 3 4 5 6 7 8 |
# If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: |
添加一个新端口,如22222,在Port 22下面添加一行Port 22222,Port 22先不要注释掉,以防新端口登录不上。 再在防火墙里添加新端口 查看防火墙运行状态
1 |
systemctl status firewalld.service |
查看所有打开的端口
1 |
firewall-cmd --zone=public --list-ports |
添加端口
1 |
firewall-cmd --zone=public --add-port=22222/tcp --permanent |
[…]
View Details修改/etc/ssh/sshd_config
1 2 3 4 |
vi <span class="hljs-meta-keyword">/etc/</span>ssh/sshd_config <span class="hljs-meta">#Port 22 <span class="hljs-comment">//这行去掉#号,防止配置不好以后不能远程登录,还得去机房修改,等修改以后的端口能使用以后在注释掉</span></span> Port <span class="hljs-number">33378</span> <span class="hljs-comment">//下面添加这一行</span> |
修改firewall配置 firewall添加想要修改的ssh端口:
1 2 3 4 5 6 |
添加到防火墙: firewall-cmd <span class="hljs-comment">--zone=public --add-port=33378/tcp --permanent (permanent是保存配置,不然下次重启以后这次修改无效)</span> 重启: firewall-cmd <span class="hljs-comment">--reload</span> 查看添加端口是否成功,如果添加成功则会显示yes,否则no firewall-cmd <span class="hljs-comment">--zone=public --query-port=33378/tcp</span> |
修改SELinux 使用以下命令查看当前SElinux 允许的ssh端口:
1 |
semanage port -l | <span class="hljs-keyword">grep</span> ssh |
添加33378端口到 SELinux
1 |
semanage port -a -t <span class="hljs-keyword">ssh_port_t</span> -p tcp <span class="hljs-number">33378</span> |
然后确认一下是否添加进去
1 |
semanage port -l | <span class="hljs-keyword">grep</span> ssh |
如果成功会输出
1 |
<span class="hljs-keyword">ssh_port_t</span> tcp <span class="hljs-number">33378</span>, <span class="hljs-number">22</span> |
重启ssh
1 |
<span class="hljs-selector-tag">systemctl</span> <span class="hljs-selector-tag">restart</span> <span class="hljs-selector-tag">sshd</span><span class="hljs-selector-class">.service</span> |
测试新端口的ssh连接 测试修改端口以后的ssh连接,如果成功则将step1里面的port 22 重新注释掉 from:https://www.cnblogs.com/rwxwsblog/p/5756894.html
View Details进程 # 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 […]
View Details一、查看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 […]
View Details一、修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制。 当超过大小的时候会报413错误。 这个时候我们要修改nginx参数。
1 2 3 4 5 |
sudo vim /etc/nginx/nginx.conf <strong>在http段里面添加:</strong> client_max_body_size 100m; //举例设置上传最大值为100m |
然后重启nginx
1 |
systemctl restart nginx |
二、修改Apache上传文件最大值限制 打开php.ini, :/ 找到下面的项并修改之。下面以上传100M为例。
1 |
sudo vim /etc/php.ini |
1 2 3 4 5 6 7 |
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 upload_max_filesize = 100m ;望文生意,即允许上传文件大小的最大值。默认为2M post_max_size = 100M ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M <span class="cnblogs_code_copy"><a title="复制代码"><img src="//longsheng.org/wp-content/uploads/2018/03/copycode.gif" alt="复制代码" /></a></span> |
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。 但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:
1 2 3 4 5 |
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit = 128M ;每个PHP页面所吃掉的最大内存,默认8M |
全部设置好之后,重启
1 |
systemctl restart httpd |
https://www.cnblogs.com/shifu204/p/6548635.html
View Details原文: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 […]
View Details