CentOS服务器上用Squid搭建带认证的HTTP代理最简单便捷的方法

远昔 代码记录 2025-04-21 21 0

CentOS服务器上用Squid搭建带认证的HTTP代理最简单便捷的命令方法:

下面俩行代码直接复制占用上去即可使用

# 安装必要软件
sudo yum install -y squid httpd-tools

# 生成密码文件(用户名: yuanxi,密码: blog)
echo "yuanxi:$(openssl passwd -apr1 blog)" | sudo tee /etc/squid/passwords >/dev/null

# 覆盖Squid配置文件
sudo tee /etc/squid/squid.conf <<'EOF'
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
http_port 3128
EOF

# 关闭SELinux(临时生效,重启失效)
sudo setenforce 0

# 开放防火墙
sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload

# 启动服务
sudo systemctl restart squid
sudo systemctl enable squid
#http代理测试命令
curl -x http://yuanxi:blog@$(hostname -I | awk '{print $1}'):3128 https://yuanxiblog.cn
到此测试curl命令没问题后则可以无视下方内容

追加用户:

sudo htpasswd -b /etc/squid/passwords user2 pass2  # 追加用户

sudo squid -k reconfigure #重新加载配置,立即生效

一、关于其中sudo setenforce 0的作用 该命令的作用是临时将SELinux模式设置为Permissive(宽容模式),含义是:

  1. SELinux仍会记录违反策略的行为

  2. 但不会实际阻止被标记的操作执行

  3. 重启后会自动恢复默认的Enforcing模式

  4. 主要用途:用于测试环境,避免安全策略直接阻断服务运行


若当前系统默认SELinux处于Enforcing模式:

不执行setenforce 0可能引发的问题:

1.Squid访问受限制端口/文件时会触发AVC拒绝

2.代理服务可能无法绑定端口或读取密码文件

3.客户端连接时出现Connection refused或认证失败


长期解决方案(按优先级排序):

精准策略调整(推荐)

sudo semanage port -a -t squid_port_t -p tcp 3128  # 永久标记端口 
sudo setsebool -P squid_connect_any 1  # 允许连接任意外部地址

永久关闭SELinux(不推荐,安全降级)

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
# 需要重启生效

快速恢复解决方案:

sudo setenforce 0  # 临时关闭 
sudo systemctl restart squid

评论

发表评论:

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论