标签: Linux

  • CentOS7 Firewall 常用命令

    CentOS7 Firewall 常用命令

    Firewall介绍

    防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

    Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
    drop: 丢弃所有进入的包,而不给出任何响应
    block: 拒绝所有外部发起的连接,允许内部发起的连接
    public: 允许指定的进入连接
    external: 同上,对伪装的进入连接,一般用于路由转发
    dmz: 允许受限制的进入连接
    work: 允许受信任的计算机被限制的进入连接,类似 workgroup
    home: 同上,类似 homegroup
    internal: 同上,范围针对所有互联网用户
    trusted: 信任所有连接

    Firewall的使用

    systemctl start firewalld.service         # 启动,
    systemctl enable firewalld.service        # 开机启动
    systemctl stop firewalld.service          # 关闭
    systemctl disable firewalld.service       # 取消开机启动
    

    Firewall开放、关闭端口

    --permanent表示设置为持久开放端口,重启后还是生效的 不加开放临时端口,重启失效
    firewall-cmd --zone=public --add-port=8080/tcp --permanent      #开放持久TCP 8080 端口
    firewall-cmd --zone=public --add-port=8080/udp --permanent      #开放持久UDP 8080 端口
    firewall-cmd --zome=public --add-port=8000-9000/udp --permanent #开放持久UDP 8000-9000 端口
    firewall-cmd --zone=public --remove-port=8080/tcp --permanent   #关闭持久TCP 8080 端口
    firewall-cmd --zone=public --remove-port=8080/udp --permanent   #关闭TCP 8080 端口
    firewall-cmd --reload      #重新载入配置 添加规则之后 需要执行此命令使之生效
    firewall-cmd --list-all    #查看防火墙规则,可查到你当前开放的端口信息
    

    开放服务,ftp服务=端口21 http=80

    firewall-cmd --get-services                   ##列出支持的服务
    firewall-cmd --add-service=ftp --permanent    ##持久开放ftp服务
    firewall-cmd --remove-service=ftp --permanent ##移除ftp服务
    firewall-cmd --reload      #重新载入配置 添加规则之后 需要执行此命令使之生效
    
  • Centos7 rpm 命令大全

    Centos7 rpm 命令大全

    对已安装软件信息的查询

    rpm -qa 查询已安装的软件
    rpm -qa | grep  "软件或者包的名字" 查找某软件包是否安装 
    rpm -qf 文件名绝对路径 文件名的绝对路径
    rpm -ql 软件名 查询已安装的软件包都安装到何处
    

    软件名:rpm包去除平台信息和后缀信息

    rpm -qi 软件名 查询一个已安装软件包的信息
    rpm -qc 软件名 查看已安装软件的配置文件
    rpm -qd 软件名 查看已安装软件的文档安装位置
    rpm -qR 软件名 查看已安装软件依赖包和文件
    

    对未安装软件信息的查询

    rpm -qpi rpm文件 查看一个软件包的用途和版本信息
    rpm -qpl rpm文件 查看一个软件包所包含的文件
    rpm -qpd rpm文件 查看软件包的文档所在位置
    rpm -qpc rpm文件 查看软件包的配置文件
    rpm -qpR rpm文件 查看软件包的依赖关系
    

    软件包的安装、升级、删除

    rpm -ivh rpm文件 安装rpm包
    rpm -Uvh rpm文件 更新rpm包
    rpm -e 软件名 删除rpm包
    rpm -e 软件名 –nodeps 不管依赖关系,强制删除软件
    rpm –import 签名文件 导入签名
    
  • CentOS7 添加、更改让用户没有登录权限

    CentOS7 添加、更改让用户没有登录权限

    1.还未建立用户时,可以使用以下命令

    useradd -g 组 用户名 -s /sbin/nologin

    2.当用户已经建立了,在建立时没有控制,现在需要取消用户登录权限,可以使用以下命令

    vim /etc/passwd

    找到你要修改的用户所在的那一行

    nobody:x:99:99:Nobody:/:/bin/bash

    改为

    nobody:x:99:99:Nobody:/:/sbin/nologin
    
  • Centos Linux 常用命令

    更改文件夹所属用户及用户组

    #目录/data/nginx/ 改为www用户组nginx用户所有
    chown -R nginx:www /data/nginx/
    #更改文件夹及文件夹权限并向下传递
    chmod -R 777 /data/nginx/
    

    新建用户组及用户

    #新建test用户组
    groupadd test
    #新建用户
    adduser chunfeng
    #新建没有登录权限的用户
    useradd -g 组 用户名 -s /sbin/nologin
    #给cunfeng用户设置密码
    passwd chunfeng
    #新建chunfeng用户并增加到test工作组
    useradd -g test chunfeng
    #给已有用户增加用户组
    usermod -G groupname username
    #强制使用www组为chunfeng的主组
    usermod -g www chunfeng
    

    删除组、用户

    #删除chunfeng用户
    userdel chunfeng
    #删除www用户组
    groupdel www
    

    查看Nginx PHP Mysql 打开文件数量限制

    cat /proc/$(cat /data/apps/nginx/logs/nginx.pid)/limits
    cat /proc/$(cat /data/apps/temp/mysql/mysql.pid)/limits
    cat /proc/$(cat /data/apps/php/var/run/php-fpm.pid)/limits
    

    显示所依赖的动态连接库

    ldd $(which /data/apps/nginx/sbin/nginx)

    在根目录 搜索文件

    find /|grep apache

    替换文件内容

    sed -i "s/\/www\/server\/data/\/www\/server\/mysqData/g" /etc/my.cnf
    sed -i "s/3306/3307/g" /etc/my.cnf
    

    其他命令

    #清理历史命令
    history -c && > ~/.bash_history
    
  • Centos7 编译Nginx

    我的Nginx编译代码

    --conf-path=/data/apps/conf/nginx/nginx.conf \
    --error-log-path=/data/apps/log/nginx/error.log \
    --http-log-path=/data/apps/log/nginx/access.log \
    --http-client-body-temp-path=/data/apps/temp/nginx/client/ \
    --http-proxy-temp-path=/data/apps/temp/nginx/proxy/ \
    --http-fastcgi-temp-path=/data/apps/temp/nginx/fcgi/ \
    --http-uwsgi-temp-path=/data/apps/temp/nginx/uwsgi/ \
    --http-scgi-temp-path=/data/apps/temp/nginx/scgi/ \
    --group=www \
    --prefix=/data/apps/nginx \
    --with-http_ssl_module \
    --with-http_mp4_module \
    --with-http_flv_module \
    --with-http_realip_module \
    --with-http_image_filter_module \
    --with-http_sub_module \
    --with-http_gzip_static_module \
    --with-pcre=/root/pcre-8.41 \
    --with-zlib=/root/zlib-1.2.11 \
    --with-openssl=/root/openssl-1.1.0f
  • Centos7 nginx php 启动关闭命令

    php-fpm 启动、停止、重启

    启动
    systemctl start php-fpm
    停止
    systemctl stop php-fpm
    重启
    systemctl restart php-fpm
    

    Nginx命令

    #启动nginx服务
    systemctl start nginx.service
    #停止nginx服务
    systemctl stop nginx.service
    #重启nginx服务
    systemctl restart nginx.service
    #重新读取nginx配置
    systemctl reload nginx.service
    也可以这样
    nginx -s stop    #停止服务 
    nginx -s quit    #退出服务 
    nginx -s reopen    #重新打开日志文件 
    nginx -s reload    #重新加载配置文件
    
  • Linux下开放端口 防火墙常用命令

    最近春风把音乐站转移到了Linux系统上,转移过去后网站后台音乐远程FTP扫描入库程序不能用了,连接不上、获取不到目录检查了PHP配置没有发现问题,后来把防火墙关了就正常了,下面介绍下Linux防火墙的配置方法。
    操作系统:Linux (CentOS)
    网站程序:PHP音乐远程FTP扫描入库程序
    ssh客户端设置有两种方法:
    1.命令添加防火墙端口

    /*添加80端口*/
    #/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
    /*添加21端口*/
    #/sbin/iptables -I INPUT -p tcp –dport 21 -j ACCEPT
    /*写入到配置文件*/
    #/etc/rc.d/init.d/iptables save
    /*重启防火墙*/
    #/etc/init.d/iptables restart
    

    2.更改/etc/sysconfig/iptables添加防火墙端口

    #vi /etc/sysconfig/iptables
    

    增加如下两行:

    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
    

    重启防火墙:

    #/etc/init.d/iptables restart
    关闭开启防火墙:
    关闭防火墙服务:
    #/etc/init.d/iptables stop
    开启防火墙服务:
    #/etc/init.d/iptables start
    重启防火墙服务
    /etc/rc.d/init.d/iptables restart
    永久关闭 重启后不会复原:
    #chkconfig iptables off
    开启:
    chkconfig iptables on
    查看防火信息:
    /etc/init.d/iptables status
    

    服务器遭受到大量的大量SYN_RECV,80端号占死,网站打不开,没有硬防,可以解决吗?
    1.

    sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
    sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
    sysctl -w net.ipv4.tcp_syn_retries=1 #降低syn重试次数
    sysctl -w net.ipv4.tcp_max_syn_backlog=6000 #最大半连接数
    sysctl -w net.ipv4.conf.all.send_redirects=0
    sysctl -w net.ipv4.conf.all.accept_redirects=0 #不接受重定向的icmp數據包
    sysctl -w net.ipv4.tcp_fin_timeout=30
    sysctl -w net.ipv4.tcp_keepalive_time=60
    sysctl -w net.ipv4.tcp_window_scaling=1
    sysctl -w net.ipv4.icmp_echo_ignore_all=1 #禁止ICMP
    sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP禁止广播
    

    2.限制单位时间内连接数
    如

    iptables -N syn-flood
    iptables -A FORWARD -p tcp –syn -j syn-flood
    iptables -A INPUT -p tcp –syn -j syn-flood
    iptables -A syn-flood -p tcp –syn -m limit –limit 3/s –limit-burst 1 -j ACCEP
    iptables -A syn-flood -j DROP
    iptables -A INPUT -i eth0 -p tcp ! –syn -m state –state NEW -j DROP
    iptables -A INPUT -p tcp –syn -m state –state NEW -j DROP
    

    3 如果还是不行,

    iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –update –seconds 60 –hitcount 30 -j REJECT
    iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –set -j ACCEP
    

    如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问
    如果你的内核已经支持iptables connlimit可以使用, iptables 设定部份,也可以使用

    iptables -I FORWARD -p tcp –syn -m connlimit –connlimit-above 5 -j DROP
    

    或

    iptables -A INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 5 -j REJECT
    

    对付SYN FLOOD的话,真正起作用的是:

    sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
    sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
    

    其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。