linux工具集合和问题处理

好用的工具分享和使用

1. 使用SCL来安装不同版本的py

  1. 安装scl

    1
    2
    yum install centos-release-scl
    yum install scl-utils-build
  2. 设置仓库地址

    1
    yum-config-manager --enable rhel-server-rhscl-7-rpms
  3. 查看 SCL 中可用包的完整列表

    1
    yum --disablerepo="*" --enablerepo="scl" list available

    image-20230428221941666

  4. 搜索 SCL 中的包

    1
    yum --disablerepo="*" --enablerepo="scl" search <keyword>
  5. 假设你要安装 Python 3.5,直接使用yum install即可

    1
    yum install rh-python35
  6. 安装后默认是不生效的

    1
    2
    python --version
    Python 2.6.6
  7. 使用前需要激活

    1
    scl enable rh-python35 bash
  8. 验证一下是否生效

    1
    python -V

2. Linux环境崩溃生成core文件

  1. 首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置

    1
    2
    3
    4
    5
    # 临时,可以产生coredump且不受大小限制
    ulimit -c unlimited

    # 永久生效,加到配置文件中
    vim /etc/profile
  2. 更改core dump生成路径

    默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律

    1
    2
    3
    4
    mkdir -p  /data/coredump
    echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern

    %e表示程序名, %p表示进程id

3.Linux端口转发的几种常用方法

  1. SSH端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    #本地端口转发
    ssh -fgN -L 2222:localhost:22 localhost

    #远程端口转发
    ssh -fgN -R 2222:host1:22 localhost

    #动态转发
    ssh -fgN -D 12345 root@host1
  2. iptables 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1.开启数据转发功能

    vi /etc/sysctl.conf
    #增加一行
    net.ipv4.ip_forward=1

    2.使数据转发功能生效
    sysctl -p

    3.将本地的端口转发到本机端口

    iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

    4.将本机的端口转发到其他机器
    iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80
    iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130

    5.清空nat表的所有链
    iptables -t nat -F PREROUTING
  3. firewall 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    1.开启伪装IP
    firewall-cmd --permanent --add-masquerade

    2.配置端口转发,将到达本机的12345端口的访问转发到另一台服务器的22端口。
    firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.172.131:toport=22

    3.重新载入,使其失效。
    firewall-cmd --reload
  4. rinetd 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    1.源码下载

    wget https://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm

    2.安装rinetd

    rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm

    3.编辑配置文件

    vi /etc/rinetd.conf

    0.0.0.0 1234 127.0.0.1 22

    4.启动转发

    rinetd -c /etc/rinetd.conf
  5. ncat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.安装ncat

    yum install nmap-ncat -y

    2.监听本机 9876 端口,将数据转发到 192.168.172.131的 80 端口

    ncat --sh-exec "ncat 192.168.172.131 80" -l 9876 --keep-open
  6. socat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.socat安装

    yum install -y socat

    2.在本地监听12345端口,并将请求转发至192.168.172.131的22端口。

    socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:192.168.172.131:22
  7. portmap 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.下载地址:

    http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip

    2.监听本地1234端口,转发给192.168.172.131的22端口

    ./portmap -m 1 -p1 1234 -h2 192.168.172.131 -p2 22

4.修改SSH的默认端口

  1. 修改配置项

    1
    2
    3
    4
    vi /etc/ssh/sshd_config 

    Port 22 # 先不要去掉
    Port 6666 # 增加一个端口,这样做是为了确保6666端口不能正常连接的情况下依然能保持22端口连接
  2. 重启服务,并确认服务没有问题

    1
    2
    3
    4
    #重启服务
    systemctl restart sshd.service
    #确认服务没有问题
    systemctl status sshd.service
  3. 使用6666端口,确认可以正常连接

  4. 再次编辑配置,将22端口注释掉,然后重启服务

5. 配置禁止root用户直接登录

  1. 先确认有普通用户,或者创建一个普通用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@CentOS ~]# useradd test
    #使用passwd命令即可给相应帐户设置或修改密码。

    [root@CentOS ~]# passwd test
    #根据图示,设置或修改密码需要填写两次,第二次为效验密码,输入完毕后请回车确认。
    Changing password for user test.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.

  2. 修改配置文件

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config

    查找 #PermitRootLogin yes”
    将“#”去掉,末尾“Yes”改为“No”

  3. 重启服务

    1
    systemctl restart sshd
  4. 确认已经无法用root用户登录

  5. 普通用户可以登录

    1
    2
    # 登陆后切换root
    su -

6.解决 SSH 连接速度慢

一个个试,不行就还原了,再试下一个

  1. 关闭DNS反向解析

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config
    UseDNS=no

    重启验证,不行的话要改回来!!!
    service sshd restart
  2. 关闭GSS认证

    1
    2
    3
    4
    5
    # vi /etc/ssh/sshd_config
    GSSAPIAuthentication no

    重启验证,不行的话要改回来!!!
    service sshd restart

7. fzf-模糊查找神器

1
2
3
4
5
6
7
8
9
10
11
apt install fzf

根据readme添加环境变量
more /usr/share/doc/fzf/README.Debian
Bash
====

Append this line to ~/.bashrc to enable fzf keybindings for Bash:

source /usr/share/doc/fzf/examples/key-bindings.bash