常用UOS服务器防火墙设置常用命令

本文详细介绍了统信UOS服务器操作系统的防火墙设置,包括iptables、ufw和firewalld的区别,如何检查和安装iptables,清空及设置防火墙规则,创建重启生效的脚本,以及配置黑白名单的方法。内容适用于熟悉Debian和Ubuntu的用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.UOS支持的防火墙

2. 防火墙设置

3. 防火墙脚本

4. 关闭防火墙(清空所有规则,删除脚本,关闭重启)

5. 配置黑白名单


1.UOS支持的防火墙

iptables ufw firewalld Netfilter区别?

        iptables ufw firewall 都是前端管理,Netfilter是内核。

        统信的UOS服务器操作系统是基于Debian开发的,因此和Debian和Ubuntu很多命令都是相同的。在Debian和Ubuntu上面可以使用的防火墙在UOS也是可以正常使用的。

        默认情况下,Debian使用iptables,Ubuntu有iptables,也使用简单的ufw,在CentOS7 之前使用的是iptables,CentOS 7开始使用firewall,Centos 7前可以使用iptables命令也可以直接编辑文件/etc/sysconfig/iptables,在firewall一般都是使用命令。在Debian和UOS是使用iptables命令,由于不是直接编辑配置文件,需要对iptables命令比较熟悉,再就是对重启生效需要编辑文件设置。ufw也可以在UOS使用,由于是简易的命令,在本文主要讨论怎么使用iptables来设置防火墙功能。

2. 防火墙设置

1)检查iptables有没有安装

        如果之前有使用CentOS经验使用service iptables status 是检查不出来的,在CentOS中iptables是以服务形式,这里iptables只是配置的前端的命令,也不能使用yum list查看。而是使用apt list|grep iptables ;

        如果没有安装可以使用apt install iptables 或者apt-get install iptables,如果想要使用ufw安装apt install ufw,如果希望使用firewall,也可以安装后使用。

2)服务器防火墙怎么设置

  • 清空原有规则

iptables -L 可以查看现有生效的规则

iptables -P INPUT ACCEPT 清空规则前放开INPUT 否则清空以后可能导致无法远程连接

iptables -F【清空规则】

iptables -X 【删除自建链】

iptables -Z 【重置过滤包数据】

  • 新建规则配置文件

第一种方式,编辑/etc/iptables.sh然后赋予执行权限chmod +x /etc/iptables.sh。执行以后规则就生效了,如果需要修改规则每次都可以修改此文件。

第二种方式,配置文件/etc/iptables(需要使用/sbin/iptables-restore 导入规则,可以配置重启时就执行该文件)

#清空配置

iptables -F

iptables -X

iptables -Z

#配置,禁止进,允许出,允许回环网卡

iptables -P INPUT DROP

iptables -A OUTPUT -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

#允许ping

iptables -A INPUT -p icmp -j ACCEPT

#允许ssh

iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#允许VNC

iptables -A INPUT -p tcp –dport 5900 -j ACCEPT

#学习felix,把smtp设成本地

iptables -A INPUT -p tcp -m tcp –dport 25 -j ACCEPT -s 127.0.0.1

iptables -A INPUT -p tcp -m tcp –dport 25 -j REJECT

#允许DNS

iptables -A INPUT -p tcp -m tcp –dport 53 -j ACCEPT

iptables -A INPUT -p udp -m udp –dport 53 -j ACCEPT

#允许http和https

iptables -A INPUT -p tcp –dport 80 -j ACCEPT

iptables -A INPUT -p tcp –dport 443 -j ACCEPT

# 允许已建立的或相关连的通行

iptables -A INPUT -m state –state ESTABLISHED%2cRELATED -j ACCEPT

#禁止其他未允许的规则访问

iptables -A INPUT -j REJECT #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)

iptables -A FORWARD -j REJECT
  • 导入规则

iptables-save >/etc/iptables 【保存规则】

/sbin/iptables-restore </etc/iptables 【导入规则】

  • 设置重启生效脚本

1.)将iptables.sh脚本放到init.d中每次都重启【需要保障iptables脚本一致都是最新的规则,如果是后续临时修改的规则可能不在其中】

2.)编辑/etc/network/if-pre-up.d/iptables,重启会自动生效。要保障/etc/iptables中规则一致是最新的,每次修改规则可以编辑/etc/iptables 如果是使用iptables命令新增,需要增加iptables-save >/etc/iptables 保存。

#!/bin/sh

/sbin/iptables-restore < /etc/iptables

3. 防火墙脚本

编辑如下脚本【第一次执行】,后续编辑/etc/iptables,使用/sbin/iptables-restore < /etc/iptables重新导入,或者直接iptables命令新增,iptables-save>/etc/iptables 保存,防止机器重启无效

#!/bin/sh

#防火墙脚本

echo “#!/bin/sh

/sbin/iptables-restore < /etc/iptables” >/etc/network/if-pre-up.d/iptables

echo “#清空配置

iptables -F

iptables -X

iptables -Z

#配置,禁止进,允许出,允许回环网卡

iptables -P INPUT DROP

iptables -A OUTPUT -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

#允许ping

iptables -A INPUT -p icmp -j ACCEPT

#允许ssh

iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#允许VNC

iptables -A INPUT -p tcp –dport 5900 -j ACCEPT

#学习felix,把smtp设成本地

iptables -A INPUT -p tcp -m tcp –dport 25 -j ACCEPT -s 127.0.0.1

iptables -A INPUT -p tcp -m tcp –dport 25 -j REJECT

#允许DNS

iptables -A INPUT -p tcp -m tcp –dport 53 -j ACCEPT

iptables -A INPUT -p udp -m udp –dport 53 -j ACCEPT

#允许http和https

iptables -A INPUT -p tcp –dport 80 -j ACCEPT

iptables -A INPUT -p tcp –dport 443 -j ACCEPT

# 允许已建立的或相关连的通行

iptables -A INPUT -m state –state ESTABLISHED%2cRELATED -j ACCEPT

#禁止其他未允许的规则访问

iptables -A INPUT -j REJECT #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)

iptables -A FORWARD -j REJECT” > /etc/iptables.sh

chmod +x /etc/iptables.sh

chmod +x /etc/network/if-pre-up.d/iptables

/etc/iptables.sh

iptables-save > /etc/iptables

/sbin/iptables-restore < /etc/iptables

4. 关闭防火墙(清空所有规则,删除脚本,关闭重启)

iptables -P INPUT ACCEPT

iptables -F

iptables -X

iptables -Z

rm /etc/iptables*

rm /etc/network/if-pre-up.d/iptables

5. 配置黑白名单

#黑白名单

####当只有部分人可以访问使用白名单,当只有部分人不能访问使用黑名单

##设置链名

iptables -N whitelist

iptables -N blacklist

##设置自定义链规则

iptables -A whitelist -s xxxx ACCEPT

iptables -A blacklist -s xxxx DROP

##设置INPUT规则

iptables -A INPUT -p tcp –dport 22 -j whitelist

iptables -A INPUT -p tcp –dport 22 -j blacklist

#删除规则

iptables -D INPUT 数字(iptables -L INPUT –line-numbers 查看对应链的规则序号)

iptables -D INPUT -p tcp –dport 22 -j whitelist (也可以使用设置规则时相同的命令把A改成D)

#删除自定义链

iptables -X 链名(注意内置链不可删除)

iptables -Z 置零

iptables -F 清空规则

参考原文地址:服务器防火墙怎么设置(常用UOS服务器防火墙设置教程) (yqfml.com)

<think>嗯,用户需要在UOS1070E上离线安装Apache HTTPServer (httpd)。这是一个典型的离线环境软件安装问题,用户可能是在内网服务器或安全要求较高的场景下工作。 用户提供的引用内容中提到了统信UOS服务器上编译安装httpd的片段,特别是验证安装成功的命令。这提示我需要重点考虑编译安装的完整流程。同时引用2提到的Zabbix离线安装流程也值得参考,特别是环境准备和依赖解决部分。用户明确要求离线安装,这意味着需要提前准备所有依赖包。UOS作为国产操作系统,其包管理机制基于Debian,但又有自己的特性。考虑到UOS1070E版本,我需要确保提供的方案兼容该版本。首先考虑安装方案选择。用户可能不知道离线安装有两种主要方式:RPM包安装和源码编译。RPM方案更快捷但需要匹配系统版本;源码方案更通用但步骤复杂。我决定两种方案都提供,让用户根据实际情况选择。对于RPM方案,关键点在于如何获取完整依赖链。建议用户在同版本联网环境中使用yumdownloader工具,这比手动查找依赖更可靠。需要特别提醒用户注意区分架构(x86_64/aarch64)。对于源码方案,重点关注编译参数和依赖库准备。openssl、pcre、expat这些是必须的依赖项,需要指导用户提前下载源码包。考虑到离线环境,configure命令要包含完整的路径参数,避免自动下载依赖失败。 安装后的配置指导也很重要。要提醒用户修改httpd.conf中的监听地址和端口,创建必要的系统账户,以及设置systemd服务。特别是SELinux环境下的权限问题容易被忽略。最后需要提供验证步骤:版本检查、服务启动、防火墙配置和访问测试。引用1中提到的apachectl -v命令可以直接采用,但补充curl本地测试更完善。 用户可能遇到的典型问题包括:依赖缺失导致编译失败、80端口被占用、目录权限不足等。在回答中需要预判这些痛点,给出解决方案。比如建议将安装目录设为/usr/local/apache2以避开系统目录权限限制。 相关问题设计要覆盖延伸需求:性能优化、安全加固、虚拟主机配置这些都是Apache管理员常见需求。还应该考虑国产化场景特有的问题,如与UOS系统服务的整合。</think>好的,在统信UOS 1070E操作系统上离线安装Apache HTTP Server (httpd)可以通过以下两种主要方式实现:**源码编译安装**或**离线RPM包安装**。由于是离线环境,需要提前准备好所有必要的安装包和依赖项。 ## 方案一:源码编译安装 (推荐,兼容性最好) 此方法需要提前下载httpd源码包及其依赖库(如APR, APR-Util, PCRE)的源码包到离线机器上。 1. **准备离线环境 (在可联网机器上进行)** * 访问Apache HTTP Server官方下载镜像 (如 `https://downloads.apache.org/httpd/`),下载最新稳定版源码包 (如 `httpd-2.4.xx.tar.gz`)。 * 访问APR项目下载页 (如 `https://downloads.apache.org/apr/`),下载 `apr-1.x.x.tar.gz` 和 `apr-util-1.x.x.tar.gz`。 * 访问PCRE项目下载页 (如 `https://sourceforge.net/projects/pcre/files/pcre/`),下载 `pcre-8.xx.tar.gz` 或 `pcre2-10.xx.tar.gz` (httpd 2.4.x 通常使用 pcre)。 * 可选但推荐:下载 OpenSSL 源码 (`openssl-1.1.x.tar.gz` 或 `openssl-3.x.x.tar.gz`) 以支持 HTTPS。 * 将下载好的所有源码包 (`httpd-*.tar.gz`, `apr-*.tar.gz`, `apr-util-*.tar.gz`, `pcre-*.tar.gz`, `openssl-*.tar.gz`) 拷贝到UOS 1070E目标服务器的某个目录下 (例如 `/opt/sources/`)。 2. **安装编译工具链 (在UOS 1070E目标服务器上)** * 确保系统已安装编译所需的基础工具。如果之前未安装过,需要有包含这些工具的离线安装源或提前下载好这些工具的RPM包 (如 `gcc`, `make`, `automake`, `libtool`, `pkg-config` 等)。使用root权限安装: ```bash # 假设你有包含这些工具的离线yum源配置好了 sudo yum --disablerepo=* --enablerepo=your_local_repo install gcc make automake libtool pkg-config -y # 或者使用提前下载好的RPM包手动安装 sudo rpm -ivh gcc-*.rpm make-*.rpm automake-*.rpm libtool-*.rpm pkgconfig-*.rpm ``` 3. **编译安装依赖库 (在UOS 1070E目标服务器上)** * 进入存放源码的目录,例如 `/opt/sources/`。 * 解压并安装 APR: ```bash tar -zxvf apr-1.x.x.tar.gz cd apr-1.x.x ./configure --prefix=/usr/local/apr make sudo make install cd .. ``` * 解压并安装 APR-Util (需要指定 APR 路径): ```bash tar -zxvf apr-util-1.x.x.tar.gz cd apr-util-1.x.x ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make sudo make install cd .. ``` * 解压并安装 PCRE: ```bash tar -zxvf pcre-8.xx.tar.gz # 或 pcre2-10.xx.tar.gz cd pcre-8.xx # 或 pcre2-10.xx ./configure --prefix=/usr/local/pcre make sudo make install cd .. ``` * 解压并安装 OpenSSL (可选,如需HTTPS): ```bash tar -zxvf openssl-1.1.x.tar.gz # 或 openssl-3.x.x.tar.gz cd openssl-1.1.x # 或 openssl-3.x.x ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make sudo make install cd .. # 可能需要更新库缓存 sudo ldconfig ``` 4. **编译安装 Apache HTTP Server (在UOS 1070E目标服务器上)** * 解压 httpd 源码包: ```bash tar -zxvf httpd-2.4.xx.tar.gz cd httpd-2.4.xx ``` * 配置编译选项 (关键步骤): ```bash ./configure --prefix=/usr/local/apache2 \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --with-pcre=/usr/local/pcre \ --enable-so \ --enable-rewrite \ --enable-ssl \ --with-ssl=/usr/local/openssl \ # 如果安装了OpenSSL --enable-mods-shared=most ``` * `--prefix`:指定安装目录。 * `--with-apr`, `--with-apr-util`, `--with-pcre`:指定之前编译安装的依赖库位置。 * `--enable-so`:启用动态模块支持 (DSO)。 * `--enable-rewrite`:启用URL重写模块 (常用)。 * `--enable-ssl`, `--with-ssl`:启用SSL/TLS支持并指定OpenSSL位置 (如果安装了)。 * `--enable-mods-shared=most`:将大部分模块编译为动态共享对象,便于管理。 * 编译并安装: ```bash make sudo make install ``` 5. **配置环境变量 (可选但方便)** * 将Apache的可执行文件路径加入系统PATH: ```bash echo 'export PATH=$PATH:/usr/local/apache2/bin' >> ~/.bashrc source ~/.bashrc ``` 6. **配置Apache** * 主要配置文件位于 `/usr/local/apache2/conf/httpd.conf`。根据需要进行修改,例如: * `ServerName`:设置服务器域名或IP。 * `Listen`:监听端口 (默认为80,需确保防火墙开放)。 * `DocumentRoot`:网站根目录 (默认为 `/usr/local/apache2/htdocs`)。 * 根据需要启用或禁用模块 (`LoadModule` 指令)。 * 创建Apache系统用户和组 (如果配置文件中指定了非root用户运行,如 `User daemon`, `Group daemon`): ```bash sudo groupadd apache sudo useradd -g apache -s /sbin/nologin apache # 然后修改 httpd.conf 中的 User 和 Group 为 apache ``` 7. **创建Systemd服务单元 (推荐)** * 创建服务文件 `/usr/lib/systemd/system/httpd.service` (或 `/etc/systemd/system/httpd.service`): ```ini [Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking ExecStart=/usr/local/apache2/bin/apachectl start ExecStop=/usr/local/apache2/bin/apachectl stop ExecReload=/usr/local/apache2/bin/apachectl graceful PrivateTmp=true User=apache # 修改为你在 httpd.conf 中配置的运行用户 Group=apache # 修改为你在 httpd.conf 中配置的运行组 [Install] WantedBy=multi-user.target ``` * 重新加载systemd配置并启用开机启动: ```bash sudo systemctl daemon-reload sudo systemctl enable httpd ``` 8. **启动Apache并验证** * 启动服务: ```bash sudo systemctl start httpd ``` * 检查服务状态: ```bash sudo systemctl status httpd ``` * 验证安装版本: ```bash /usr/local/apache2/bin/apachectl -v # 输出应类似:Server version: Apache/2.4.xx (Unix) ... ``` * 测试访问: 在浏览器中输入服务器的IP地址或域名(如 `http://your_server_ip`),应该能看到Apache的默认测试页(如果 `DocumentRoot` 下的 `index.html` 存在)。或者使用 `curl`: ```bash curl http://localhost ``` ## 方案二:离线RPM包安装 (如果找到匹配的仓库或包) 此方法需要提前**在相同版本和架构(UOS 1070E, x86_64/aarch64)的联网机器**上下载好httpd及其所有依赖的RPM包。 1. **在联网的UOS 1070E机器上准备RPM包** * 配置好UOS 1070E的官方yum源或兼容的EPEL源 (如果可用)。 * 使用 `yumdownloader` 工具下载httpd及其依赖: ```bash sudo yum install yum-utils # 确保安装yum-utils mkdir ~/httpd-offline-rpms cd ~/httpd-offline-rpms sudo yumdownloader --resolve --destdir ./ httpd ``` * `--resolve`:自动下载所有依赖包。 * `--destdir ./`:指定下载到当前目录。 * 将 `~/httpd-offline-rpms` 目录下的所有 `.rpm` 文件拷贝到目标UOS 1070E服务器上。 2. **在目标UOS 1070E服务器上安装** * 切换到存放RPM包的目录。 * 使用 `rpm` 或 `yum localinstall` 安装所有包: ```bash # 方法一:使用 rpm (需按依赖顺序,可能较麻烦) sudo rpm -ivh *.rpm # 如果依赖关系简单且无冲突,有时可行。但通常推荐yum localinstall # 方法二:使用 yum localinstall (推荐,自动处理依赖) sudo yum localinstall *.rpm ``` 3. **配置、启动、验证** * RPM安装的Apache通常配置文件在 `/etc/httpd/conf/httpd.conf` (路径可能略有不同,请用 `rpm -ql httpd | grep httpd.conf` 确认)。 * 服务名通常也叫 `httpd`。 * 配置步骤 (修改 `httpd.conf`, 设置用户/组, 防火墙等) 与源码安装类似。 * 启动并验证: ```bash sudo systemctl enable httpd sudo systemctl start httpd sudo systemctl status httpd httpd -v curl http://localhost ``` ## 关键注意事项 1. **依赖地狱**:离线安装最大的挑战是解决依赖关系。源码编译需要手动处理所有依赖库的编译安装;RPM安装需要确保下载了**所有**依赖包。务必在相同版本和架构的系统上准备离线包。 2. **防火墙**:确保UOS防火墙 (`firewalld` 或 `ufw`) 开放了Apache监听的端口(默认为80/tcp, 或443/tcp如果启用了SSL)。 3. **SELinux**:如果UOS启用了SELinux,需要正确配置Apache文件和端口的SELinux上下文,否则可能无法启动或访问。可以使用 `setroubleshoot` 和 `audit2allow` 工具排查问题。如果问题复杂,可以考虑临时设置为 `permissive` 模式测试 (`sudo setenforce 0`),但生产环境需谨慎配置。 4. **安装路径**:源码安装的路径 (`/usr/local/apache2`) 与RPM安装 (`/etc/httpd`, `/usr/lib64/httpd` 等) 不同,配置文件和命令路径也不同,请注意区分。 5. **用户权限**:确保运行Apache的用户(如 `apache`, `www-data`, `daemon`)对 `DocumentRoot` 和日志目录 (`logs/`) 有适当的读写权限。 6. **UOS版本差异**:1070E可能有特定的安全策略或配置要求,请参考UOS官方文档(如果可用)。 ## 验证安装成功 无论采用哪种方法,最终都可以通过以下命令验证: ```bash # 检查版本 /usr/local/apache2/bin/apachectl -v # 源码安装路径 httpd -v # RPM安装路径通常在PATH里 # 输出示例:Server version: Apache/2.4.57 (Unix) ... [^1] # 检查服务状态 sudo systemctl status httpd # 测试访问 curl -I http://localhost # 应返回 HTTP/1.1 200 OK 或类似的成功状态码 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等到鸡吃完米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值