访问页面的IP添加到iptables放行

登陆验证

需求:

某些动态IP地址无法通过防火墙认证。

步骤:

  1. 先配置好httpd 和 php,新建一个index.php 的 测试页,确定apache 和 php 整合成功。
  2. 先关闭selinux
  3. 配置好apache 和 php 的整合之后,将以下提取访问客户端的IP 的代码贴入index.php

页面中:

<?php

function GetIP(){

if(!empty($_SERVER["HTTP_CLIENT_IP"])){

  $cip = $_SERVER["HTTP_CLIENT_IP"];

}

elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){

  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];

}

elseif(!empty($_SERVER["REMOTE_ADDR"])){

  $cip = $_SERVER["REMOTE_ADDR"];

}

else{

  $cip = "无法获取!";

}

return $cip;

}

$sip = GetIP();

system("sh /opt/ip.sh $sip >/dev/null 2>/opt/iptables.log",$result);

if(!$result){

header(“location:http://oa.minxinjituan.com”)

}

#echo GetIP();

?>

  1. 写好iptables 添加脚本  ### /etc/sysconfig/iptables 不要对这个文件进行编辑,如果编辑了,需要清空防火墙配置,然后save 一下。

#!/bin/bash

/usr/bin/sudo iptables -L |grep $1

if [ $? -eq 0 ];then

exit 0

else

/usr/bin/sudo /sbin/iptables -A INPUT -p tcp -s $1  --dport 80  -j ACCEPT

#/usr/bin/sudo /sbin/iptables-restore < /etc/sysconfig/iptables

/usr/bin/sudo /sbin/service iptables save > /dev/null

fi

确定apache 用户对 /opt 目录由写入权限。

  1. 更改apache 用户的 sudo 权限

apache    ALL=(ALL)        NOPASSWD: /sbin/iptables

apache    ALL=(ALL)        NOPASSWD: /sbin/service

%apache   ALL=(ALL)        NOPASSWD: /sbin/iptables

%apache   ALL=(ALL)        NOPASSWD: /sbin/service

## 让apache 用户在sudo 的时候不需要密码验证,%apache 是指apache 组

你可能感兴趣的:(function,防火墙,IP地址)