不能包含用户的帐户名,不能包含用户姓名中超过两个连续字符的部分 至少有六个字符长 包含以下四类字符中的三类字符: 英文大写字母(A 到 Z) 英文小写字母(a 到 z) 10 个基本数字(0 到 9) 非字母字符(例如 !、$、#、%)
View DetailsWin免费SSH客户端工具a 作为一个Windows操作系统用户,如果想要连接Linux服务器来进行文件之间的传送,那么需要一个Secure Shell软件(简称SSH的)。实际上,SSH是一个网络协议,允许通过网络连接到Linux和Unix服务器。SSH使用公钥加密来认证远程的计算机。通常有多种途径使用SSH,自动连接或是使用密码认证登录。 从国外unixmen网站中介绍了几种可以连接Linux服务器的SSH客户端,提供给大家进行应用选择参考。(图片均来源unixmen) Putty Putty是最有名的SSH和telnet客户端,由Simon Tatham为Windows平台开发。Putty是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持。 Putty易于安装和使用,通常大部分的配置选项不需要修改。用户只需要输入少量基本的参数,就可以开始很简单地建立连接会话。 点此下载Putty Bitvise SSH Client Bitvise SSH是一款支持SSH和SFTP的Windows客户端。由Bitvise开发和提供专业支持。这款软件工具性能突出,易于安装、便于使用。Bitvise SSH客户端拥有功能丰富的图形界面,通过自动重连功能的内置代理进行动态端口转发。 据了解,Bitvise SSH客户端对个人用户使用是免费的,同时对于在内部的个人商业使用同样免费。 下载Bitvise SSH客户端 MobaXterm MobaXterm是远程计算的终极工具箱。在 单独一个Windows应用里,MobaXterm为程序员、网站管理员、IT管理员及其它用户提供了远程操作一揽子功能。 另外,MobaXterm提供了所有重要的远程网络工具(如SSH、X11、RDP、VNC、FTP、MOSH等),以及Windows 桌面上的Unix命令(bash、ls、cat、sed、grep、awk、rsync等),这些均是由一个开箱即用的单一的便携可执行文件提供,并对个人使用免费。 这里下载MobaXterm。 2Win免费SSH客户端工具b DameWare SSH DameWare SSH是最好的免费SSH客户端。该免费工具是一个终端模拟器,可以从一个易用的控制台建立多个telnet和SSH连接。 ●用一个带标签的控制台界面管理多个会话 ●将常用的会话保存在 Windows 文件系统中 ●使用多套保存的证书来轻松登录不同的设备 ●使用telnet、SSH1和SSH2协议连接计算机和设备 这里下载DameWare SSH。 SmarTTY SmarTTY是一款免费的多标签SSH客户端,支持使用SCP命令随时复制文件和目录。 SSH服务器每个连接支持最多10个子会话.SmarTTY在做得最好:没有多个窗口,不需要重新登录,仅打开一个新的标签页就可以。 Cygwin Cygwin 是一款GNU和开源工具的集合,提供类似一个Windows平台下Linux的功能。 Cygwin包括一个称为模拟库的Unix系统:cygwin.dll,集成大量GNU和其它免费软件。在安装包中,有高质量的编译器和其他软件开发工具、一个X11服务器、一套完整的X11开发套件、GNU emacs编辑器、Tex和LaTeX、openSSH(客户端和服务器),此外还包括在Windows下需要编译和使用PhysioToolkit软件的所有。 from:https://blog.csdn.net/d3soft/article/details/69670812
View Details新安装的linux,ping命令报错: network is unreachable 使用service network start ,错误信息如下: Failed to start LSB: Bring up/down networking 解決方式:新安装系统的ifcfg-ech0未设置 指令如下: vi /etc/sysconfig/network-scripts/ifcfg-eth0 将如下信息加入文本中: DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.25 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 ONBOOT=yes HWADDR=XX:XX:XX:XX:XX:XX DNS1=XXX.XXX.XXX.XXX 其中: HWADDR为机器物理地址,通过如下命令 link/ether为物理地 修改完成之后,重启网络服务,出现如下提示: service network restart ok,现在ping一下: 网络正常。 原文:http://www.2cto.com/os/201306/218110.html from:http://blog.sina.com.cn/s/blog_7d31bbee0102v6ws.html
View Details一.安装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