Aaron Kili 发布的文章

端口是与 Linux 操作系统上的应用或进程的通讯端点的逻辑实体。在使用之前,了解目标机器上哪些端口是打开并正在运行服务是非常有用的。

我们可以使用 netstat 或其他几个 Linux 命令如 NMAP 在本地机器上轻松地列出 Linux 中的打开端口

在本指南中,我们将向你展示如何使用简单的 netcat(简称 nc)命令来确定远程主机上的端口是否可访问/打开。

netcat(或简称 nc)是一个功能强大且易于使用的程序,可用于 Linux 中与 TCP、UDP 或 UNIX 域套接字相关的任何事情。

# yum install nc                  [在 CentOS/RHEL 中]
# dnf install nc                  [在 Fedora 22+ 中]
$ sudo apt-get install netcat     [在 Debian/Ubuntu 中]

我们可以使用它:打开 TCP 连接、侦听任意 TCP 和 UDP 端口、发送 UDP 数据包、在 IPv4 和 IPv6 进行端口扫描。

使用 netcat,你可以检查单个或多个或一段打开的端口范围,如下所示。下面的命令将帮助我们查看端口 22 是否在主机 192.168.56.10 上打开:

$ nc -zv 192.168.1.15 22

上面的命令中,这些标志是:

  1. -z – 设置 nc 只是扫描侦听守护进程,实际上不向它们发送任何数据。
  2. -v – 启用详细模式

下面的命令会检查远程主机 192.168.5.10 上是否打开了端口 80、22 和 21(我们也可以使用主机名):

nc -zv 192.168.56.10 80 22 21

也可以指定端口扫描的范围:

$ nc -zv 192.168.56.10 20-80

更多关于 netcat 命令的例子和使用,阅读我们下面的文章。

  1. 使用 netcat 命令在 Linux 服务器间传输文件
  2. Linux 网络配置及排障调试命令

就是这样。在本文中,我们解释了如何使用 netcat 命令检测远程主机端口是否可达/打开。请在评论栏中留下你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 和 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/check-remote-port-in-linux/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本。

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。

假设你服务器上安装的特定版本的 PHP 具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

在我以前的文章中,我已经展示了如何隐藏 apache 版本号,你已经看到如何不再显示 apache 的安装版本。但是如果你在你的 apache 服务器上运行 PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。

因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。

此设置可以在加载的 PHP 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

$ php -i | grep "Loaded Configuration File"

PHP 配置文件位置

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
Loaded Configuration File => /etc/php.ini
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
Loaded Configuration File => /etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:

----------------在 CentOS/RHEL/Fedora 上---------------- 
$ sudo cp /etc/php.ini /etc/php.ini.orig
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo cp /etc/php/7.0/cli/php.ini  /etc/php/7.0/cli/php.ini.orig  

用你最喜欢的编辑器,使用超级用户权限打开文件:

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
$ sudo vi /etc/php.ini
----------------在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo vi /etc/php/7.0/cli/php.ini

定位到关键词 expose_php,并将值设置成 Off

expose_php = Off

保存并退出文件。之后,重启 web 服务器:

---------------- 使用 SystemD ---------------- 
$ sudo systemctl restart httpd  
或
$ sudo systemctl restart apache2 
---------------- 使用 SysVInit ---------------- 
$ sudo service httpd restart  
或
$ sudo service apache2 restart

最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的 PHP 版本号。

$ lynx -head -mime_header http://localhost 
或者
$ lynx -head -mime_header http://server-address

这里的标志含义是:

  • -head – 发送一个请求 mime 报头的 HEAD 请求。
  • -mime_header – 打印所提取文档的 MIME 标头及其源代码。

注意: 确保你系统中已经安装了命令行 web 浏览器 lynx

就是这样了!在本文中,我们解释了如何隐藏服务器 HTTP 响应头中的 PHP 版本号以保护 web 服务器免受可能的攻击。你可以在下面的评论栏中留下你的想法或者相关的问题。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/hide-php-version-http-header/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

当远程请求发送到你的 Apache Web 服务器时,在默认情况下,一些有价值的信息,如 web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等等,会随服务器生成的文档发回客户端。

这给攻击者利用漏洞并获取对 web 服务器的访问提供了很多有用的信息。为了避免显示 web 服务器信息,我们将在本文中演示如何使用特定的 Apache 指令隐藏 Apache Web 服务器的信息。

推荐阅读: 13 个有用的 Apache 服务器安全贴士

两个重要的指令是:

ServerSignature

这允许在服务器生成的文档(如错误消息、modproxy 的 ftp 目录列表、modinfo 输出等等)下添加一个显示服务器名称和版本号的页脚行。

它有三个可能的值:

  • On - 允许在服务器生成的文档中添加尾部页脚行,
  • Off - 禁用页脚行
  • EMail - 创建一个 “mailto:” 引用;用于将邮件发送到所引用文档的 ServerAdmin。

ServerTokens

它决定了发送回客户端的服务器响应头字段是否包含服务器操作系统类型的描述和有关已启用的 Apache 模块的信息。

此指令具有以下可能的值(以及在设置特定值时发送到客户端的示例信息):

ServerTokens   Full (或者不指定) 

发送给客户端的信息: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2

ServerTokens   Prod[uctOnly] 

发送给客户端的信息: Server: Apache

ServerTokens   Major 

发送给客户端的信息: Server: Apache/2

ServerTokens   Minor 

发送给客户端的信息: Server: Apache/2.4

ServerTokens   Min[imal]

发送给客户端的信息:Server: Apache/2.4.2

ServerTokens   OS 

发送给客户端的信息: Server: Apache/2.4.2 (Unix)

注意:在 Apache 2.0.44 之后,ServerTokens 也控制由 ServerSignature 指令提供的信息。

推荐阅读: 5 个加速 Apache Web 服务器的贴士

为了隐藏 web 服务器版本号、服务器操作系统细节、已安装的 Apache 模块等等,使用你最喜欢的编辑器打开 Apache 配置文件:

$ sudo vi /etc/apache2/apache2.conf        #Debian/Ubuntu systems
$ sudo vi /etc/httpd/conf/httpd.conf       #RHEL/CentOS systems 

添加/修改/附加下面的行:

ServerTokens Prod
ServerSignature Off 

保存并退出文件,重启你的 Apache 服务器:

$ sudo systemctl apache2 restart  #SystemD
$ sudo sevice apache2 restart     #SysVInit

本篇中,我们解释了如何使用特定的 Apache 指令隐藏Apache web 服务器版本号及其他信息。

如果你在 Apache 中运行 PHP,我建议你隐藏 PHP 版本号

如往常一样,你可以在评论栏中写下你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/hide-apache-web-server-version-information/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

假设你在只有自己使用的计算机上运行 Linux 系统,比如在笔记本电脑上,在每次调用 sudo 时需要输入密码,长期下来就会觉得很乏味。因此,在本指南中,我们将描述如何配置 sudo 命令在运行时而不输入密码。

此设置在 /etc/sudoers 文件中完成,这是使用 sudo 命令的默认安全策略;在用户权限指定部分。

重要:在 sudeors 文件中,默认打开的 authenticate 参数用于验证目的。如果设置了它,用户必须通过密码(或其他身份验证方法)进行身份验证,然后才能使用 sudo 运行命令。

但是,可以使用 NOPASSWD(当用户调用 sudo 命令时不需要密码)标记来覆盖此默认值。

配置用户权限的语法如下:

user_list host_list=effective_user_list tag_list command_list

其中:

  1. user_list - 用户列表或已经设置的用户别名。
  2. host_list - 主机列表或用户可以在其上运行 sudo 的主机别名。
  3. effective_user_list - 以该用户或别名运行的用户列表
  4. tag_list - 标签列表,如 NOPASSWD
  5. command_list - 用户使用 sudo 运行的命令或命令别名列表。

要允许用户(下面的示例中的 aaronkilik)使用 sudo 不输入密码即可运行所有命令,请打开 sudoers 文件:

$ sudo visudo

添加下面的行:

aaronkilik ALL=(ALL) NOPASSWD: ALL

对于组而言,在组名前面使用 % 字符;这意味着 sys 组的所有成员都可以不用密码使用 sudo

%sys ALL=(ALL) NOPASSWD: ALL

要允许用户不用密码使用 sudo 运行指定命令(/bin/kill),添加下面的行:

aaronkilik ALL=(ALL) NOPASSWD: /bin/kill

下面的行会让 sys 组成员在使用 sudo 运行命令:/bin/kill/bin/rm 时不用输入密码:

%sys ALL=(ALL) NOPASSWD: /bin/kill, /bin/rm

Run sudo Without Password

不用密码运行 sudo

对于更多的 sudo 配置和其他使用选项,请阅读我们有更多例子描述的文章,:

在本篇中,我们讨论了如何配置 sudo 命令来不用输入密码运行。不要忘记在评论栏中给我们提供你关于这份指导的想法和其他对于 Linux 系统管理员有用的 sudoers 配置。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/run-sudo-command-without-password-linux/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量。

我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自标准输入的换行符、单词和字节计数。

以下是我们在 find 命令中使用的选项,如下所示:

  1. -type - 指定要搜索的文件类型,在上面的情况下,f 表示查找所有常规文件。
  2. -print - 打印文件绝对路径。

以下是我们 wc 命令中使用的选项,如下所示:

  1. -l - 此选项打印换行符的总数,也即由 find 命令输出的绝对文件路径总数。

find 命令的一般语法。

# find . -type f -print | wc -l
$ sudo find . -type f -print | wc -l

重要:使用 sudo 命令来读取指定目录中的所有文件,包括具有超级用户权限的子目录中的文件,以避免 “Permission denied” 错误,如下截图所示:

Find Number of Files in Linux

Linux 中的文件数量

你可以看到,在上面的第一个命令中,find 命令没有读取当前工作目录中的所有文件。

下面是更多的示例,分别显示 /var/log/etc 目录中的常规文件总数:

$ sudo find /var/log/ -type f -print | wc -l
$ sudo find /etc/ -type f -print | wc -l

有关 Linux 中 findwc 命令的更多示例,请查看以下系列文章以了解其他使用选项,提示和相关命令:

  1. 35 个 Linux 中的 “find” 命令示例
  2. 如何在 Linux 中查找最近或今天的修改的文件
  3. 在 Linux 中查找十个占用最大的目录和文件
  4. 6 个有用的 “wc” 命令示例来计算行数、单词和字符

就是这样了!如果你知道其他任何方法来显示目录及其子目录中的文件总数,请在评论中与我们分享。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/find-number-of-files-in-directory-subdirectories-linux/

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在最近的文章中,我们向你展示了 在 Linux 中设置 sudo 的十条 sudoers 实用配置以及让 sudo 在你输入错误的密码时“嘲讽”你,在本文中,我们发现了另一个 sudo 贴士,在 Ubuntu Linux 中使 sudo 密码会话(超时)更长或更短。

在 Ubuntu 及其衍生版如 Linux Mint 或任何其他基于 Ubuntu 的发行版中,当你执行 sudo 命令 时,它将提示你输入管理密码。

在第一次执行 sudo 命令后,默认情况下密码将保持 15 分钟,因此你不需要为每个 sudo 命令键入密码。

如果,你因为某种原因觉得 15 分钟太长或太短,你可以在 sudoers 文件中做一个简单的调整。

要设置 sudo 密码超时值,请使用 passwd_timeout 参数。首先使用 sudovisudo 命令以超级用户权限打开 /etc/sudoers 文件,如下所示:

$ sudo visudo 

接着添加下面的默认值,这意味着 sudo 密码提示将会在用户使用 sudo 20 分钟后过期。

Defaults        env_reset,timestamp_timeout=20

注意:你可以以分钟设置为你所需的任何时间,它会在超时之前一直等待。 如果要为每个执行的 sudo 命令弹出密码提示,你也可以将时间设置为 0,或者通过设置值 -1 永久禁用密码提示。

下面的截图显示了我在 /etc/sudoers 文件中设置的默认参数。

Change sudo Password Timeout

改变 sudo 密码超时

Ctrl + O 保存文件,然后使用 Ctrl + X 退出。 然后,使用 sudo 运行命令并等待 2 分钟以检查密码提示是否超时以测试设置是否正常。

在本篇中,我们解释了如何设置 sudo 密码提示超时之前的分钟数,记得在评论栏分享你对这篇文章的想法或者其他对系统管理员配置有用的 sudo 配置


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 以及 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/set-sudo-password-timeout-session-longer-linux/

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出