一、 安装前准备

1.1 查看当前openssh版本

[root@centos7 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@centos7 ~]#

1.2 查看当前openssl版本

[root@centos7 ~]# 
[root@centos7 ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@centos7 ~]#

1.3 安装依赖

yum install perl perl-Test-Harness perl-Test-Simple
yum groupinstall Development Tools

1.4 安装 zlib

1.4.1 下载

wget http://www.zlib.net/zlib-1.3.tar.gz

1.4.2 解压

tar -xzvf zlib-1.3.tar.gz

1.4.3编译&安装:

cd zlib-1.3
./configure --prefix=/usr/local/zlib
make
make test # 这一步出错不要继续 # 看到ok字样表示成功
make install

二、 安装OpenSSL(非必须)

2.1 源码编译安装

官网下载地址: https://www.openssl.org/source/

2.1.1 下载:

wget https://www.openssl.org/source/openssl-1.1.1.tar.gz

2.1.2 解压

tar -xzvf openssl-1.1.1w.tar.gz

2.1.3 编译&安装:

cd openssl-1.1.1w
./config --shared --prefix=/usr/local/openssl # --shared 创建共享库
make -j4 # - j4 使用四个进程
make install

2.2 替换openssl为新版本

2.2.1 替换 openssl 二进制文件

mv /usr/bin/openssl{,.back}
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

2.2.2 openssl 相关库

mv /usr/include/openssl{,.back}
ln -s /usr/local/openssl/include/openssl/ /usr/include/

2.2.3 共享库路径加入系统

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

2.2.4 验证

ldconfig -v | grep openssl

三、 安装OpenSSH

3.1 备份相关文件

mv /etc/ssh{,.back}
mv /etc/pam.d/sshd{,.back}

3.2 下载

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz

3.3 解压

tar -xzvf openssh-9.5p1.tar.gz

3.4 编译&安装

cd openssh-9.5p1
./configure \
--prefix=/usr/local/openssh \
--sysconfdir=/etc/ssh \
--with-zlib=/usr/local/zlib \
--with-ssl-dir=/usr/local/openssl \
--with-pam
make -j4
make tests
make install

3.5 注意事项

确保使用了openssl-1.1.1

./config的结果

make tests 这里时间特别较长

保证.key文件的权限为 0600

注意: 安装完不可直接systemctl去重启sshd, 可能会造成服务器无法连接
请在有ssh之外远程到服务器上的权限再去升级ssh, 避免升级过程中导致ssh无法连接

3.6 修改sshd配置文件

其实直接恢复原来的sshd_conf文件即可. 保险起见使用如下配置
编辑sshd配置文件: vim /etc/ssh/sshd_config
添加: PermitRootLogin yes

3.7 复制sshd的pam配置文件

cp openssh-9.5p1/contrib/redhat/sshd.pam /etc/pam.d/sshd

3.8 使用systemctl管理sshd

配置启动脚本
cp openssh-9.5p1/contrib/redhat/sshd.init /etc/init.d/sshd

添加sshd的service配置文件
vim /usr/lib/systemd/system/sshd.service

#vim /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/sshd start
ExecStop=/etc/rc.d/init.d/sshd stop
Restart=/etc/rc.d/init.d/sshd stop
[Install]
WantedBy=multi-user.target

3.9 替换为新的 sshd

mv /usr/bin/ssh{,.back}
mv /usr/sbin/sshd{,.back}
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/sshd
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh

重载systemctl
systemctl daemon-reload
重启sshd
systemctl restart sshd

3.10 验证

四、 相关问题

4.1 error: *** working libcrypto not found

解决: yum install openssl-devel

4.2 error: PAM headers not found

解决: yum install pam-devel

4.3 升级 openssl3.0.12 Can’t locate IPC/Cmd.pm

解决: yum install perl-IPC-Cmd

简洁点

  1. press e on grub,
  2. add parameters rd.break
  3. Ctrl + x
  4. mount -o remount rw /sysroot
  5. chroot /sysroot
  6. passwd
  7. touch /.autorelabel
  8. exit
  9. reboot

阅读全文 »

Linux下系统监视

System 系统

1. iostat 设备负载信息

命令 iostat 包含在软件包 sysstat
image.png

NOTE:
查询哪个软件包提供哪个command yum whatprovides COMMAND
查询哪个软件包提供哪个文件 yum whatprovides FILE

第一份 iostat 报告显示自引导系统以来收集的统计信息。后续报告则涵盖上一份报告之后的时间。

[root@centos7 ~]# iostat
Linux 3.10.0-1160.62.1.el7.x86_64 (centos7.9) 05/11/2022 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.13 0.00 0.30 0.02 0.00 99.55

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.70 23.68 17.60 336054 249741
sdb 0.06 1.82 7.55 25823 107131
dm-0 1.74 22.85 25.00 324293 354804
dm-1 0.01 0.16 0.00 2204 0

Pid 进程

Network 网络

Member 内存

Hardware 硬件

File and File system 文件和文件系统

Users 用户

Others 其他

内容转自:https://cloud.tencent.com/developer/article/1568077

一、进程状态

  • D:uninterruptible sleep (usually IO)
  • R:running or runnable (on run queue)
  • S:interruptible sleep (waiting for an event to complete)
  • T:stopped by job control signal
  • t:stopped by debugger during the tracing
  • W:paging (not valid since the 2.6.xx kernel)
  • X:dead (should never be seen)
  • Z:defunct (“zombie”) process, terminated but not - reaped by its parent
阅读全文 »

在当下, Linux 服务器的安全问题越来越频发,服务器被恶意入侵,业务数据被恶意删除和加密以及服务器被劫持作为 DDos 肉鸡等.为了增强 Linux 服务器的安全性,给大家推荐一款开源的防病毒软件 ClamAV,并附上相关安装配置步骤供参考.
关于 ClamAV 的更多详情, 参考 ClamAV 文档

阅读全文 »

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性,

名词解释

  • 物理存储介质(The physical media):指系统的物理存储设备,如硬盘,系统中为/dev/hda/dev/sda/dev/vda等等,是存储系统最低层的存储单元。

NOTE: /dev/sda/dev/sda1是有区别的。 /dev/sda 表示整个sda整个硬盘, /dev/sda1表示的是硬盘上的一个分区。
好比你的电脑是256的固态, 然后划分成C, D两个盘。 sda指固态, sda1指C盘, sda2指D盘。

  • PV: 物理卷(Physical Volume):指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID), 是LVM的基本存储逻辑块。物理卷包括一个特殊的标签,该标签默认存放在第二个 512 字节扇区,但也可以将标签放在最开始的四个扇区之一。该标签包含物理卷的随机唯一识别符(UUID),记录块设备的大小和LVM元数据在设备中的存储位置。

  • VG: 卷组(Volume Group):由物理卷组成,屏蔽了底层物理卷细节。可在卷组上创建一个或多个逻辑卷且不用考虑具体的物理卷信息。

  • LV: 逻辑卷(Logical Volume):卷组不能直接用,需要划分成逻辑卷才能使用。逻辑卷可以格式化成不同的文件系统,挂载后直接使用。

  • PE: 物理块(Physical Extent):物理卷以大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。

  • LE: 逻辑块(Logical Extent,):逻辑卷以“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的

lvm图解

使用LVM管理硬盘的基本过程如下:

  • 1.将硬盘创建为物理卷
  • 2.将多个物理卷组合成卷组
  • 3.在卷组中创建逻辑卷
  • 4.在逻辑卷之上创建文件系统
    通过LVM管理硬盘之后,文件系统不再受限于硬盘的大小,可以分布在多个硬盘上,也可以动态扩容。

情形一: 根目录扩容(常见于CentOS)

  • 格式化磁盘并修改分区格式
    fdisk /dev/sdb [n, p, 1, size, t, 8e, w]

  • 创建 PV
    pvcreate /dev/sdb

  • 扩展 VG
    vgextend centos /dev/sdb1

  • 扩展LV
    lvextend -l +100%FREE /dev/centos/root

  • 刷新
    xfs_growfs /dev/centos/root

情形二: 根目录扩容(常见于Ubuntu)

  • 格式化磁盘并修改分区格式
    fdisk /dev/sdb [n, p, 1, size, t, 8e, w]

  • 创建 PV
    pvcreate /dev/sdb

  • 扩展 VG
    vgextend ubuntu-vg /dev/sdb1

  • 扩展LV
    lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

  • 刷新
    resize2fs /dev/ubuntu-vg/ubuntu-lv

P.S 如果碰到 xfs 提示 xfs_growfs: /dev/centos/root is not a mounted XFS filesystem
对于 xfs : xfs_growfs + 挂载点
对于 ext2/3/4: resize2fs + 挂载点

  • 确认文件系统格式和挂载点

df -Thl
df -Thl
lsblk
lsblk

情形三: 一块磁盘做成lvm单独挂载某个目录

将新磁盘分成两个区,一个挂载/data; 一个挂载/var/lib/docker

图


# 创建 pv
pvcreate /dev/sdb1

# 创建 vg0
vgcreate vg0 /dev/sdb1


# 创建 lv0 和 lv1
lvcreate -l 50%FREE -n lv0 vg0

lvcreate -l 100%FREE -n lv1 vg0

# 格式化
mkfs.xfs /dev/vg0/lv0
mkfs.xfs /dev/vg0/lv0

# 挂载
echo "/dev/vg0/lv0 /data/ xfs defaults 0 0" >> /etc/fstab
echo "/dev/vg0/lv1 /var/lib/docker xfs defaults 0 0" >> /etc/fstab

情形四: 缩减/删除某个lv

进行任何操作前,请确保拥有当前系统的备份

  • xfs不支持缩减 (其实是支持缩减, 但是需要mkfs强制格式化)
  • ext4支持缩减
  • 缩减逻辑卷之前卸载该逻辑卷所在分区(强制缩减XFS例外)

检查某个目录相关的进程
yum install psmisc
fuser -m -v -i -k /home

4.1 逻辑卷删除

  • CentOS7系统 XFS文件系统为例, 删除 home 分区, 并将其空间扩充到 /
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─centos-root 253:0 0 37G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 18.1G 0 lvm /home
sr0 11:0 1 973M 0 rom
[root@centos7 ~]#
  • 卸载 home 分区
    umount /home

  • 移除 home 逻辑卷
    lvremove /dev/centos/home

  • 调整 root 逻辑卷的大小
    lvresize -l +100%FREE /dev/centos/root

  • 更新分区
    xfs: xfs_growfs /
    ext4: resize2fs /dev/centos/root

  • 编辑 fstab
    删除 /home
    更新 /

注意前后UUID的变化

4.2 EXT4根逻辑卷缩减

  • ubuntu 系统 ext4 文件系统为例, 从/缩减10G, 并创建新分区 /data

  • ext4支持缩减

  • /缩减需要从Live CD模式操作

  • 操作之前确保拥有当前系统的备份

图

  1. 关闭Ubuntu系统, 插入CD并设置第一启动顺序

    图

  2. 选择第一个启动项

    图

  3. 右上角 help–>enter shell

    图

  4. 使用 lvreduce 缩减 /
    lvreduce --resizefs --size -50G /dev/ubuntu-vg/ubuntu-lv
    图

  5. 注意事项

  • 注意缩减前后UUID是否变化
  • Live CD 是否包含 lvm工具, 没有的话需 apt install lvm2

4.3 EXT4非根逻辑卷缩减

ubuntu 系统 ext4 文件系统为例, 从/home缩减5G

  1. 卸载/home
    umount /home
  2. 缩减/home
    lvreduce --resizefs --size -5G /dev/ubuntu-vg/ubuntu-home
    图

4.4 XFS缩减

CentOS7系统 XFS文件系统为例, 将/home缩至10G
前面说了XFS不支持缩减, 下面会解释

  • 缩减 /home 至 10G
    lvreduce -L 10G /dev/mapper/centos-home

  • 更新/home分区
    xfs_growfs /dev/centos/home

[root@centos7 ~]# 
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─centos-root 253:0 0 37G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 18.1G 0 lvm /home
sr0 11:0 1 973M 0 rom
[root@centos7 ~]#
[root@centos7 ~]# lvreduce -L 10G /dev/mapper/centos-home
WARNING: Reducing active and open logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/home? [y/n]: y
Size of logical volume centos/home changed from <18.09 GiB (4630 extents) to 10.00 GiB (2560 extents).
Logical volume centos/home successfully resized.
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=512 agcount=5, agsize=1185024 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4741120, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size 2621440 too small, old size is 4741120
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─centos-root 253:0 0 37G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 10G 0 lvm /home
sr0 11:0 1 973M 0 rom
[root@centos7 ~]#
  • 缩减后重启失败进入救援模式
    图
  • 使用lvresize还原逻辑卷/home原来的大小后重启顺利进入系统
    图

4.5 XFS 强制缩减逻辑卷

直接 shrink, 不需要先卸载
缩减成功后uuid会发生变化

  1. 直接缩减
    lvreduce -L -5G /dev/centos/home

  2. 文件系统的大小调整为其底层逻辑卷的实际大小
    xfs_growfs /dev/centos/home

  3. 卸载 /home
    umount /home/

  4. 强制格式化 /homexfs
    mkfs.xfs -f /dev/centos/home

  5. 重新挂载 /home
    mount /dev/centos/home /home/

[root@centos7 ~]# 
[root@centos7 ~]# lvreduce -L -5G /dev/centos/home
WARNING: Reducing active and open logical volume to <13.09 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/home? [y/n]: y
Size of logical volume centos/home changed from <18.09 GiB (4630 extents) to <13.09 GiB (3350 extents).
Logical volume centos/home successfully resized.
[root@centos7 ~]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=1185280 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4741120, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size 3430400 too small, old size is 4741120
[root@centos7 ~]#
[root@centos7 ~]#
[root@centos7 ~]# umount /home/
[root@centos7 ~]#
[root@centos7 ~]# mkfs.xfs -f /dev/centos/home
Discarding blocks...Done.
meta-data=/dev/centos/home isize=512 agcount=4, agsize=857600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3430400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@centos7 ~]#
[root@centos7 ~]# mount /dev/centos/home /home/
[root@centos7 ~]#

环境介绍

server : debian 9 腾讯云主机 124.xxx.xxx.xxx (公网可以被访问的主机)
client : centos minimal 7.9 (VMware) 192.168.128.7 (需要被内网穿透的主机)

  1. 根据自己的版本下载 frp (server和client都要下载)
    https://github.com/fatedier/frp/releases

  2. 解压
    tar -zxvf frp_0.39.1_linux_amd64.tar.gz

官方文档

阅读全文 »

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch 在Apache Lucene 的基础上开发而成,由Elasticsearch N.V. (即现在的Elastic)于2010 年首次发布。
官方文档https://www.elastic.co/guide/en/elastic-stack/index.html

搭建环境: CentOS7.9(vm) ; ElasticSearch5.6.7 ; Java1.8.0_321
值得说一下, 不同的方式安装会遇到不同的问题, 这里我们采用两种方式 : rpm 和 tar两种方式安装

一 、rpm 包部署方式

Java环境 安装

  1. 下载jdk
    选择合适的版本下载(需要登陆Oracle) : https://www.oracle.com/java/technologies/downloads/
    这里我们选择 rpm 包
    image.png

  2. win下上传至 centos7

scp jdk-8u321-linux-x64.rpm [email protected]:/root
image.png

  1. 安装

rpm -ivh jdk-8u321-linux-x64.rpm
4) 配置Java环境
刚安装完成后会有个临时java环境, 将其永久生效
编辑文件 vim /etc/profile
文件末尾添加如下:
export JAVA_HOME=/usr/bin/
export PATH=$JAVA_HOME/:$PATH

其实并不需要$CLASSPTAH , 我们后面在说
5) 验证Java环境
java -version OR javac
看到有输出就OK了
image.png

ElasticSearch 安装

较新版本的ElasticSearch 会自带Java环境. 注意下载合适的版本

  1. 下载ElasticSearch
    https://www.elastic.co/cn/downloads/past-releases/elasticsearch-5-6-7
    image.png

  2. 上传到centos7

scp elasticsearch-5.6.7.rpm [email protected]:/root
3) 安装 ElasticSearch
rpm -ivh elasticsearch-5.6.7.rpm
4) 使用 systemd 管理 elasticsearch
systemctl daemon-reload
systemctl enable elasticsearch-service
5) 运行 elasticsearch
systemctl start elasticsearch
6) 测试运行
curl localhost:9200
看到如下输入表示成功运行
image.png

P.S

  • 这里使用 systemctl start elasticsearch 并不是使用root用户去运行的.
    使用 htop 看一下可以看到实际运行的用户就是 elasticsearch

image.png

  • 可能遇到 no java in(/usr/local…)等问题
    如果使用的是tar安装的配置的java环境, 那么 elasticsearch的运行用户是没有java环境的.

建议 Java 和 elasticsearch 保持相同安装方式. 都使用 rpm 包或者 tar包.

二、tar 包部署方式

  1. Java 和 elasticsearch 下载
    Java 下载
    elasticsearch 下载

  2. 解压

tar -zxvf /*tar

  1. 为 elasticsearch 创建用户

groupadd es
useradd es -g es
passwd es
上述操作在 root 用户下完成
(如果不创建密码的话, 该用户没有bash权限的, 影响下面调用java环境)

  1. 配置java环境
    编辑文件 vim /etc/profile
    文件末尾追加:

export JAVA_HOME=/jdk解压目录/jdk1.8.0_321/bin
export PATH=$JAVA_HOME/:$PATH

  • 上述操作是为root用户添加了Java环境

为es 用户添加环境
编辑文件 vim /home/es/.bash_profile
文件末尾追加:
export JAVA_HOME=/jdk解压目录/jdk1.8.0_321/bin
export PATH=$JAVA_HOME/:$PATH

  1. 使用 es 用户 启动 elasticsearch

su es
./elasticsearch安装目录/bin/elasticsearch

相关文档:
elasticsearch5.6.7 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rpm.html
systemd https://yo.zgserver.com/systemd-19.html
####### 有问题可留言…

常见报错以及相关解决办法

1. 安装完readonlyrest重启elasticsearch报错

  • elasticsearch.yml里关掉xpack

xpace.security.enabled: false
images

2. elasticsearch-plugin安装插件或者操作提示could not find java in JAVA_HOME at xxxxxx

  • 即使是root权限, 安装插件的时候也加上sudo
    images

引言

从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。

在RHEL7里,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables。
firewalld是iptables的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面。

firewalld 与 iptables的比较:

  • firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
  • firewalld使用区域和服务而不是链式规则;
  • firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制;
  • firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说,firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样!

firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令。

一、 安装

1.1 关闭 firewalld

systemctr disable firewalld
systemctl stop firewalld

1.2 安装 iptalbes

yum install iptables iptables-services

1.3 启用 iptables

systemctl enable iptables
systemctl start iptables

1.4 备份 iptables

cp /etc/sysconfig/iptables /etc/sysconfig/iptables-backup

二、 相关实例

2.1 查看当前规则

iptables -L -n -v --line-number

2.2 和详细内容(包含流量统计)

iptables -nvL --line-number

2.3 放行某个端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

2.4 允许某网段访问特定端口

iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

2.5 删除某条规则

iptables -D INPUT 1
iptables -D FORWARD 1

2.6 指定某段ip地址

iptables -I INPUT -p tcp --dport 80 -j DROP
iptables - I INPUT -m iprange --src-range 192.168.1.200-192.168.1-210 -p tcp --dport 80 -j ACCEPT

2.7 修改某条规则

iptables -R INPUT 5 -p tcp --dport 36878 -j ACCEPT

2.8 设置默认策略

iptables -P INPUT DROP
iptables -P NAT REJECT
iptables -P OUTPUT ACCEPT

保存更改

iptables-save

iptables-save > /etc/sysconfig/iptables

iptables-save > /etc/iptables/rule.v4

暂时更新到这….
2022/2/17

三、 nat转发

3.1 端口转发

192.168.1.7:7410 —> 192.168.1.160:9200
iptables -t nat -A PREROUTING -d 192.168.1.7/32 -p tcp --dport 7410 -j DNAT --to-destination 192.168.1.160:9200
iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp --dport 9200 -j SNAT --to-source 192.168.1.7

3.2 删除nat中的规则

iptables -t nat -D POSTROUTING 6
iptables -t nat -D PREROUTING 1

四、 iptables自定义链

4.1 创建一条自定义链

iptables -t filter -N es_white_list

4.2 自定义链的规则

iptables -I es_white_list -j DROP
iptables -I es_white_list -s 172.22.67.31/32 -j ACCEPT
iptables -I es_white_list -s 172.22.67.32/32 -j ACCEPT

4.3 将自定义链的规则应用到某个端口

iptables -I INPUT -p tcp --dport 9200 -j es_white_list
iptables -I INPUT -p tcp --dport 9300 -j es_white_list

4.1 + 4.2 + 4.3 –> 创建白名单es_white_list 只有白名单里的ip地址可以访问该主机的9200和9200端口.

五、 iptables删除自定义链

5.1 清空链white_list里的规则

iptables -t filter -F white_list

5.2 删除链white_list

iptables -t filter -X white_list

报错: iptables: Too many links.
原因: 该链仍在被使用, 删除使用该链的规则
image.png

删除引用DOCKER-USER的规则
iptables -t filter -D FORWARD 1
image.png

六、 重置所有规则

使用这些命令刷新和重置 iptables 到默认状态:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -t security -F
iptables -t security -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
没有任何参数的 -F 命令在当前表中刷新所有链。同样的, -X 命令删除表中所有非默认链。

七、 初始状态

适用于CentOS 7
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

firewalld 转发

注意: 本地转发本地使用ip不要使用127.0.0.1或者localhost

本机 1634–>443 为例

firewall-cmd --permanent --add-forward-port=port=1634:proto=tcp:toport=443:toaddr=10.10.20.155
firewall-cmd --permanent --add-forward-port=port=1634:proto=tcp:toport=443:toaddr=127.0.0.1

Ubuntu/Debian中的iptables

在Debian/Ubuntu中使用iptables添加了规则, 即使使用iptables-save保存了规则也会在系统重启后失效.
或者使用iptables-save保存到文件, 然后系统重启后执行iptables-restore恢复规则.

iptables-persistent 应运而生, 更好的iptables持久化方案.

安装之后其配置文件如下: /etc/iptables/rules.v4 /etc/iptables/rules.v6
区别于CentOS中的 /etc/sysconfig/iptables
Debian/Ubuntu下清空/etc/iptables/rules.v4文件内容, 不会影响已有规则, 甚至systemctl stop iptables也不会影响
CentOS下清空 /etc/sysconfig/iptables 或者systemctl stop iptables相当于关闭防火墙

image.png

0、Env

Environment :

  • CentOS Linux release 7.9.2009 (Core)
  • Client: Docker Engine - Community Version: 20.10.5
  • Server: Docker Engine - Community Version: 20.10.5

Installation (text-based installer)

1、Download docker-ce.repo

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

2、Change sources to TUNA

sed -i 's+https://download.docker.com+https://mirror.nju.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

3、Installating

yum makecache fast
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4、Start service

systemctl start docker

5、Verify

docker --version

6、e.g

docker run hello-world

If you’ve seen such this whitch means the docker have succeed run on you system.
image.png

7、Some improvements

change source
vim /etc/docker/daemon.json
touch it if there was not such file

{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}