2024-08-23

在Ubuntu系统中,修改Nginx监听端口的步骤如下:

  1. 打开Nginx配置文件。通常,Nginx的主配置文件位于/etc/nginx/nginx.conf,但实际的服务器配置文件通常位于/etc/nginx/sites-available/目录下。
  2. 找到服务器配置块中的listen指令,并将其端口号修改为所需的端口号。
  3. 如果有必要,修改防火墙规则以允许新端口的流量。
  4. 重新加载Nginx配置以使更改生效。

下面是一个示例,假设你要将默认服务器的端口从80改为8080:




sudo nano /etc/nginx/sites-available/default

找到如下行:




listen 80 default_server;
listen [::]:80 default_server;

将其修改为:




listen 8080 default_server;
listen [::]:8080 default_server;

保存文件并退出编辑器。

然后,更新防火墙规则以允许新端口的流量(如果需要):




sudo ufw allow 8080/tcp
sudo ufw reload

最后,重新加载Nginx配置:




sudo systemctl reload nginx

现在Nginx应该会监听新的端口号了。

2024-08-23

以下是安装和启动Redis、Nginx、Nacos以及Kafka的基本命令和步骤。请根据您的操作系统和环境选择合适的安装方式。

  1. Redis:

    安装:

    
    
    
    # 使用包管理器安装Redis
    sudo apt-get install redis-server

    启动:

    
    
    
    # 启动Redis服务
    redis-server
  2. Nginx:

    安装:

    
    
    
    # 使用包管理器安装Nginx
    sudo apt-get install nginx

    启动:

    
    
    
    # 启动Nginx服务
    sudo systemctl start nginx
    # 设置Nginx开机自启
    sudo systemctl enable nginx
  3. Nacos:

    安装:

    • 从官网下载Nacos的压缩包并解压。
    • 或者使用Maven命令下载Nacos并启动:

      
      
      
      mvn -U clean package -Dmaven.test.skip=true

    启动:

    • 进入Nacos的bin目录,使用以下命令启动Nacos:

      
      
      
      ./startup.sh -m standalone
  4. Kafka:

    安装:

    • 下载Kafka的压缩包并解压。
    • 使用包管理器安装Java,因为Kafka是用Java编写的。

    启动:

    • 进入Kafka的config目录,编辑server.properties文件,设置Zookeeper的地址。
    • 进入Kafka的bin目录,启动Kafka服务:

      
      
      
      ./kafka-server-start.sh -daemon ../config/server.properties

请注意,以上命令可能需要根据您的操作系统和环境进行调整。对于Windows系统,您可能需要从官方网站下载可执行文件或使用WSL来运行Linux命令。对于生产环境,您可能需要配置更多的参数和设置,并考虑安全性和性能等问题。

2024-08-23

由于Nginx中间件的具体漏洞类型和版本未知,我无法提供针对特定漏洞的复现代码。然而,我可以提供一个通用的Nginx配置和漏洞利用的示例。

  1. 安装Nginx:



sudo apt-update
sudo apt install nginx
  1. 配置Nginx(示例配置,根据实际情况修改):



server {
    listen 80;
    server_name localhost;
 
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
 
    # 其他配置...
}
  1. 保存配置并重启Nginx:



sudo nginx -t
sudo systemctl restart nginx
  1. 漏洞利用(示例,根据实际漏洞修改):

    如果存在文件解析漏洞,攻击者可以尝试通过构造特定的请求利用此漏洞。例如,如果Nginx配置中包含类似以下配置:




location ~* \.(php|jsp|asp)$ {
    root /usr/share/nginx/html;
    index index.html index.htm;
}

攻击者可以尝试请求一个不存在的PHP或JSP文件,如果Nginx处理这些文件请求,可能会导致文件解析漏洞。




curl http://your-server-ip/.php.txt

请注意,上述步骤和示例仅用于说明如何复现漏洞。实际的漏洞复现取决于具体的漏洞类型和Nginx的版本。如果你需要复现具体的Nginx漏洞,请提供详细的漏洞信息,包括漏洞类型、版本和配置细节。

2024-08-23

在第59天的学习中,我们将重点关注服务器安全性,特别是中间件安全性,了解如何复现已知的安全漏洞,比如CVE(Common Vulnerabilities & Exposures)。我们还将关注IIS、Apache、Tomcat和Nginx等服务器中间件的安全性和配置。

以下是一些可能的学习内容和示例代码:

  1. 了解CVE漏洞的原理和影响。
  2. 学习如何安装和配置IIS、Apache、Tomcat和Nginx等服务器中间件。
  3. 复现CVE漏洞,比如对IIS的MS17-010、Apache的Apache Shiro反序列化漏洞等。
  4. 通过安全工具检测中间件的安全性,如对IIS的IIS Scanner等。
  5. 了解中间件安全配置最佳实践,比如防止目录遍历、使用安全的配置文件等。

示例代码:




# 安装IIS
sudo apt-get install iis
 
# 安装Apache
sudo apt-get install apache2
 
# 安装Tomcat
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.62/bin/apache-tomcat-9.0.62.tar.gz
tar xzvf apache-tomcat-9.0.62.tar.gz
mv apache-tomcat-9.0.62 /usr/local/tomcat9
 
# 安装Nginx
sudo apt-get install nginx
 
# 复现CVE漏洞,例如MS17-010对于IIS
# 需要具体的复现步骤和环境配置

请注意,实际的漏洞复现可能需要特定的环境和步骤,而且在实际的渗透测试中应该遵守法律法规,不进行破坏性操作。

2024-08-23

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。以下是一些常见的Linux中间件Nginx的使用场景和示例代码:

  1. 作为静态内容的Web服务器:



server {
    listen       80;
    server_name  localhost;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
  1. 作为代理服务器:



server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://upstream_server;
    }
}
  1. 配置负载均衡:



upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}
 
server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://backend;
    }
}
  1. 配置SSL/TLS:



server {
    listen       443 ssl;
    server_name  localhost;
 
    ssl_certificate      /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key  /etc/nginx/ssl/nginx.key;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
  1. 配置缓存:



server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 1d;
    }
}
  1. 配置负载压力测试:



server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://backend;
        proxy_connect_timeout 1s;
        proxy_read_timeout 1s;
    }
}
  1. 配置日志记录:



server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://backend;
        access_log  /var/log/nginx/access.log;
        error_log   /var/log/nginx/error.log;
    }
}

这些示例仅展示了Nginx配置的一部分,实际配置需要根据具体需求进行调整。

2024-08-23



# 使用外部Nginx基础镜像
FROM nginx:1.19.0
 
# 定义数据目录
ENV NGINX_DIR /etc/nginx
ENV NGINX_LOG_DIR /var/log/nginx
ENV NGINX_HTML_DIR /usr/share/nginx/html
 
# 创建配置文件目录
RUN mkdir -p ${NGINX_DIR}/conf.d
 
# 复制自定义配置文件
COPY custom.conf ${NGINX_DIR}/conf.d/default.conf
 
# 复制静态文件
COPY html/* ${NGINX_HTML_DIR}
 
# 设置容器启动时执行的命令
CMD ["nginx", "-g", "daemon off;"]

这个Dockerfile示例展示了如何使用外部的Nginx基础镜像,并覆盖默认配置文件以及复制自定义的静态文件。这样做避免了重复编写Nginx的安装和配置过程,同时也使得镜像的维护更加简单和高效。

2024-08-23

Nginx中间件漏洞复现通常涉及到CVE-2019-9193漏洞,该漏洞是因为Nginx在处理包含特制的If-Modified-Since头的请求时,解析日期时间时使用了错误的年份导致的。

以下是复现该漏洞的步骤:

  1. 安装Docker和Docker Compose。
  2. 克隆Vulhub仓库到本地:git clone https://github.com/vulhub/vulhub.git
  3. 进入Nginx相应的环境目录,例如cd vulhub/nginx/CVE-2019-9193
  4. 运行docker-compose up -d启动环境
  5. 使用工具如curl或者wget发送带有特制的If-Modified-Since头的请求。

以下是一个使用curl发送请求的例子:




curl -H 'If-Modified-Since: Sat, 01 Jan 2016 00:00:01 GMT' http://your-nginx-host

如果Nginx版本在2019年9月以后的安全更新补丁发布之前的版本,则可能会出现相应的漏洞。在实际情况中,你需要确保Nginx的版本与漏洞描述相符合,并且使用的If-Modified-Since头也要正确设置。

注意:在实际的渗透测试中,请确保你已经得到了目标的授权,并且不要对任何系统造成破坏。

2024-08-23

以下是一个基于您提出的需求的Nginx配置示例,包括GeoIP2自动更新、防盗链、防爬虫、限制访问速度和限制连接数。

首先,确保你已经安装了Nginx和必要的开发工具。




# 安装Nginx
sudo apt-install nginx
 
# 安装开发工具
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

接下来,安装GeoIP2和Nginx的GeoIP2模块:




# 安装GeoIP2库
sudo apt-get install geoip2 libgeoip-dev
 
# 安装Nginx GeoIP2模块
cd /usr/src
sudo git clone https://github.com/leev/ngx_http_geoip2_module.git
cd ngx_http_geoip2_module
sudo ./auto/configure
sudo make
sudo make install

配置Nginx:




# /etc/nginx/nginx.conf
 
events {}
 
http {
    geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
        auto_reload 5m;
        $geoip2_metadata_country_build metadata start 2 end 2;
        $geoip2_metadata_city_build metadata start 3 end 3;
    }
 
    server {
        listen 80;
        server_name your_domain.com;
 
        # 防盗链
        valid_referers none blocked server_names *.your_domain.com;
        if ($invalid_referer) {
            return 403;
        }
 
        # 防爬虫
        if ($http_user_agent ~* (Googlebot|Bing|Yahoo|Crawl|Flickr|Twitter)) {
            return 403;
        }
 
        # 限制访问速度
        limit_rate_after 1m;
        limit_rate 50k;
 
        # 限制连接数
        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn_status 429;
        limit_conn_track_key $binary_remote_addr;
        limit_conn_zone $server_name zone=perserver:10m;
 
        location / {
            # 根据不同的国家设置不同的访问速度
            set $limit_rate 50k;
            if ($geoip2_data_country_code = "CN") {
                set $limit_rate 100k;
            }
            limit_rate $limit_rate;
 
            # 根据不同的国家设置不同的最大连接数
            set $limit_conn "32";
            if ($geoip2_data_country_code = "CN") {
                set $limit_conn "64";
            }
            limit_conn $limit_conn perip;
            limit_conn $limit_conn perserver;
 
            root /var/www/html;
            index index.html index.htm;
        }
    }
}

确保你已经下载了GeoLite2的数据库文件,并放置在正确的目录下。你可以从MaxMind官网获取这个数据库文件。




# 下载GeoLite2数据库
cd /usr/share/GeoIP/
sudo wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
sudo gunzip GeoLite2-City.mmdb.gz
sudo chmod 644 GeoLite2-City.mmdb

最后,重启Nginx以应用新的配置:




sudo systemctl restart nginx

这个配置示例提供了一个基本框架,你可以根据自己的需求进行调整和增强

2024-08-23

Open-Falcon是一个用于系统监控和告警的开源框架。以下是Open-Falcon的介绍、安装、以及监控MySQL、Redis、MongoDB和RabbitMQ的基本步骤。

  1. 介绍:

    Open-Falcon是一个轻量、高效的开源监控框架,它提供了数据采集、数据处理、数据存储、数据查询、告警等一系列功能。

  2. 安装:

    首先,确保你的机器上安装了Go环境。

安装Open-Falcon的步骤大致如下:




# 克隆代码库
git clone https://github.com/open-falcon/falcon-plus.git
cd falcon-plus
 
# 编译
./bootstrap.sh
 
# 配置
cp cfg/cfg.example.json cfg/cfg.json
# 修改配置文件,根据实际情况配置数据库、Redis等
 
# 启动
./open-falcon start
  1. 监控MySQL:

    为了监控MySQL,你需要在MySQL上安装一个插件,并配置Open-Falcon的agent来采集数据。

  2. 监控Redis:

    Redis的监控通常是通过redis-cli的信息命令来实现的。你需要在agent上安装redis-cli,并编写相应的监控脚本。

  3. 监控MongoDB:

    MongoDB的监控可以通过mongo shell的db.stats()db.serverStatus()命令来实现监控脚本。

  4. 监控Rabbitmq:

    为了监控Rabbitmq,你需要在agent上安装Rabbitmq的管理插件,并编写相应的监控脚本。

以上步骤提供了一个大致的框架,实际部署时需要根据具体环境进行调整。

2024-08-23

以下是一个基于Docker的ThinkPHP5项目本地部署的示例。

  1. 创建一个新的目录用于存放Docker相关文件。
  2. 创建一个名为Dockerfile的文件,用于构建ThinkPHP5的Docker镜像。
  3. 创建一个名为docker-compose.yml的文件,用于定义Docker容器的网络和服务。

Dockerfile




FROM php:7.4-fpm
 
# 安装PDO扩展
RUN docker-php-ext-install pdo pdo_mysql
 
# 安装ThinkPHP5框架
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer require topthink/framework 5.*
 
# 配置Nginx
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
 
# 复制Nginx配置文件和ThinkPHP应用
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY ./thinkphp /var/www/html/
 
# 暴露80端口
EXPOSE 80
 
# 启动Nginx和PHP-FPM
CMD service php7.4-fpm start && nginx -g 'daemon off;'

docker-compose.yml




version: '3'
 
services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./thinkphp:/var/www/html
    depends_on:
      - db
  
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: your_database
    ports:
      - "33060:3306"

Nginx配置文件(nginx.conf)




server {
    listen       80;
    server_name  localhost;
 
    location / {
        root   /var/www/html/public;
        index  index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

在这些文件的同一级目录下,执行以下命令来启动容器:




docker-compose up -d

这将会启动一个包含Nginx、PHP-FPM和MySQL的Docker容器。你可以通过访问http://localhost:8080来查看你的ThinkPHP5应用。

注意:

  • 确保你的ThinkPHP5应用已配置好数据库连接。
  • 根据你的ThinkPHP5应用的具体配置,可能需要调整Nginx配置文件和docker-compose.yml中的配置。