iptables 添加,删除,查看,修改

iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录。如果iptables不熟悉的话可以用apf,是一款基于iptables的防火墙,挺好用的。请参考:linux apf 防火墙 安装 配置

一,安装并启动防火墙

  1. [[email protected] ~]# /etc/init.d/iptables start

当我们用iptables添加规则,保存后,这些规则以文件的形势存在磁盘上的,以centos为例,文件地址是/etc/sysconfig/iptables,我们可以通过命令的方式去添加,修改,删除规则,也可以直接修改/etc/sysconfig/iptables这个文件就行了。

二,添加防火墙规则

1,添加filter表

出口我都是开放的iptables -P OUTPUT ACCEPT,所以出口就没必要在去开放端口了。

2,添加nat表

将源地址是 192.168.10.0/24 的数据包进行地址伪装

3,-A默认是插入到尾部的,可以-I来插入到指定位置

  1. [[email protected] ~]# iptables -I INPUT 3 -p tcp -m tcp –dport 20 -j ACCEPT
  2. [[email protected] ~]# iptables -L -n –line-number
  3. Chain INPUT (policy DROP)
  4. num  target     prot opt source               destination
  5. 1    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0
  6. 2    DROP       icmp —  0.0.0.0/0            0.0.0.0/0           icmp type 8
  7. 3    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:20                //-I指定位置插的
  8. 4    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
  9. 5    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
  10. 6    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
  11. 7    DROP       all  —  0.0.0.0/0            0.0.0.0/0           state INVALID,NEW
  12. 8    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           tcp dpt:21                //-A默认插到最后
  13. Chain FORWARD (policy ACCEPT)
  14. num  target     prot opt source               destination
  15. Chain OUTPUT (policy ACCEPT)
  16. num  target     prot opt source               destination

三,查下iptable规则

1,查看filter表

  1. [[email protected] ~]# iptables -L -n –line-number |grep 21 //–line-number可以显示规则序号,在删除的时候比较方便
  2. 5    ACCEPT     tcp  —  192.168.1.0/24       0.0.0.0/0           tcp dpt:21

如果不加-t的话,默认就是filter表,查看,添加,删除都是的

2,查看nat表

  1. [[email protected] ~]# iptables -t nat -vnL POSTROUTING –line-number
  2. Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)
  3. num   pkts bytes target     prot opt in     out     source               destination
  4. 1        0     0 MASQUERADE  all  —  *      *       192.168.10.0/24      0.0.0.0/0

四,修改规则

  1. [[email protected] ~]# iptables -R INPUT 3 -j DROP    //将规则3改成DROP

五,删除iptables规则

  1. [[email protected] ~]# iptables -D INPUT 3  //删除input的第3条规则
  2. [[email protected] ~]# iptables -t nat -D POSTROUTING 1  //删除nat表中postrouting的第一条规则
  3. [[email protected] ~]# iptables -F INPUT   //清空 filter表INPUT所有规则
  4. [[email protected] ~]# iptables -F    //清空所有规则
  5. [[email protected] ~]# iptables -t nat -F POSTROUTING   //清空nat表POSTROUTING所有规则

六,设置默认规则

  1. [[email protected] ~]# iptables -P INPUT DROP  //设置filter表INPUT默认规则是 DROP

所有添加,删除,修改后都要保存起来,/etc/init.d/iptables save.上面只是一些最基本的操作,要想灵活运用,还要一定时间的实际操作。

ubuntu搭建LEMP环境,解决 fpm监听失败

1.安装mysql

  1. sudo apt-get install mysql-server mysql-client

安装过程中要输入root用户的密码。

2.安装nginx

  1. sudo apt-get install nginx

2.安装php

   1.  sudo apt-get install php5-fpm php5-cgi php5-mysql php5-fpm php5-curl php5-gd  php-pear php5-imagick php5-imap  php5-memcache   php5-sqlite php5-tidy php5-mongo

这是常用的扩展

一路安装下来后配置nginx

cd  /etc/nginx/ #配置文件默认在此

通过nginx.conf可以看到引入了 sites-available/文件夹下文件,

vi sites-available/default

可以看到这是本地默认的localhost配置,这就是为什么你在nginx.conf里再加入一个localhost的server  nginx会有waring的原因了,因为它已经定义了。

修改default文件为:

server {
listen 80;
listen [::]:80 default_server ipv6only=on;

root /data/www/;

server_name localhost;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /data/www/$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}

}

然后重启nginx和php-fpm

service nginx restart

service php5-fpm restart

在网站根目录编写:

info.php:

<?php

    phpinfo() ;

?>

访问,不成功,查看nginx错误日志,默认是放在/var/log/nginx下

cd /var/log/nginx

tail -fn100  error.log

发现:[error] 15980#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: “GET /info.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “127.0.0.1”

可知是php-fpm的问题

netstat -lnp|grep 9000 (查看9000端口是否被监听)

无内容

解决方法

1 . 按照/etc/php5/fpm/pool.d/www.conf的默认配置使用php5-fpm

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;

2 . 修改/etc/php5/fpm/pool.d/www.conf里的修改为listen=9000

# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;

重启php-fpm

ubuntu启用apache的mod_headers和mod_expires

ubuntu部署好wordpress后,发现插件wp_super_cache里面有几个警告,请启用mod_expires和mod_headers.

可以按照以下命令,启用apache的缓存

Ubuntu系统启用Apache Mod_rewrite模块

在终端中执行

sudo a2enmod rewrite

指令后,即启用了 Mod_rewrite 模块。

另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

一点小提示

事实上,当我在 Ubuntu 中采用上述做法并重启了 Apache 服务后,仍然无法正常 rewrite 网址。这里,还有一点需要注意的地方:

sudo vim /etc/apache2/sites-enabled/000-default

将其中的:

AllowOverride None

修改为:

AllowOverride All

上面的 /etc/apache2/sites-enabled/000-default 实则为 /etc/apache2/sites-available/default 的连接。而 AllowwOverride None 则会完全忽略 .htaccess 文件,自然其中所定义的 rewrite 规则也就不能生效了。

最后,别忘了使用下列指令来重启 Apache:

sudo /etc/init.d/apache2 restart.

解决新装IIS7出现503错误的问题

 

win7用了好多年,第一次遇到这个问题。在windows 7 里控制面板-程序-打开关闭windows组件安装IIS7后,发现页面访问后503错误。

我到IIS里应用程序池里一看,原来是进程终止了,于是启用它,刷新检查运行成功。然后再次访问web地址,又是503错误应用程序池任务终止。

我在想可能是安装iis7的时候,先忘了选择开发功能(也就是asp.net支持),后来才加上去的缘故。于是效仿2003运行regiis依然无效。

解决方法,修改应用程序池的高级设置,然后选标识,选择用户为LocalSystem,如下图:

QQ截图20140426085306

Linux系统mysql密码和远程访问设置

 

一、设置或重置MySql密码

Mysql刚刚安装完成,密码是空的,直接回车可以登录。

方法一:最简单的方法,也是安装完mysql后,系统提示的方法。使用mysqladmin来完成。shell> mysqladmin -u root password “newpwd”

shell> mysqladmin -u root -h host_name password “newpwd”password后面的双引号不是必须的,不过如果密码包含空格或者一些特殊的符号,需要用引号。方法二:利用mysql里面的SET PASSWORD命令来完成,注意必须使用PASSWORD()函数来加密设置的这个newpwd,否则直接=’newpwd’不会生效。不过如果使用方法一用mysqladmin password设置密码或者用GRANT来设置,就不用使用PASSWORD()函数,因为它们已经自动调用了该函数。shell> mysql -u root

mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpwd’);

mysql> SET PASSWORD FOR ‘root’@’host_name’ = PASSWORD(‘newpwd’);

方法三:直接通过UPDATE user表来设置密码shell> mysql -u root

mysql> UPDATE mysql.user SET Password = PASSWORD(‘newpwd’)

-> WHERE User = ‘root’;

mysql> FLUSH PRIVILEGES;

如果忘记mysql的root密码可以采取下面的步骤重新设置

1。kill掉所有mysql的进程

2。使用–skip-grant-tables的参数启动mysql

shell> mysqld_safe –skip-grant-tables &

3。设置新的密码,同样两种方式可以选择

方法一

shell> mysqladmin -u root flush-privileges password “newpwd”

方法二

mysql> UPDATE mysql.user SET Password=PASSWORD(‘newpwd’)

-> WHERE User=’root’;

mysql> FLUSH PRIVILEGES;

4。停止mysql server,用正常的模式启动

5。OK,可以使用新设置的密码了

二、配置远程访问

Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:

/etc/mysql/my.cnf

bind-address= 127.0.0.1//要改成你的外网ip


1、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p”youpassword” 
进行授权操作:
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit


2、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p”youpassword” 
进行授权操作:
GRANT ALL PRIVILEGES ON *.* TO [email protected]”172.16.16.152″ IDENTIFIED BY “youpassword” WITH GRANT OPTION;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit


3、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p”youpassword” 
进行授权操作:
GRANT select,insert,update,delete ON *.* TO [email protected]”172.16.16.152″ IDENTIFIED BY “youpassword”;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit


4、删除用户授权,需要使用REVOKE命令,具体命令格式为:
REVOKE privileges ON 数据库[.表名] FROM user-name;
具体实例,先在本机登录mysql:
mysql -u root -p”youpassword” 
进行授权操作:
GRANT select,insert,update,delete ON TEST-DB TO [email protected]”172.16.16.152″ IDENTIFIED BY “youpassword”;
再进行删除授权操作:
REVOKE all on TEST-DB from test-user;
****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。
最后从用户表内清除用户:
DELETE FROM user WHERE user=”test-user”;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit

5、MYSQL权限详细分类:
全局管理权限: 
FILE: 在MySQL服务器上读写文件。 
PROCESS: 显示或杀死属于其它用户的服务线程。 
RELOAD: 重载访问控制表,刷新日志等。 
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限: 
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 
CREATE: 建立新的数据库或数据表。 
DELETE: 删除表的记录。 
DROP: 删除数据表或数据库。 
INDEX: 建立或删除索引。 
INSERT: 增加表的记录。 
SELECT: 显示/搜索表的记录。 
UPDATE: 修改表中已存在的记录。
特别的权限: 
ALL: 允许做任何事(和root一样)。 
USAGE: 只允许登录–其它什么也不允许做。

ubuntu+apache2环境wordpress固定链接404的问题

我的系统是ubuntu,自己配置的Apache、PHP、Mysql系统架构,或使用的某些安装包,可能会有这个问题,本人曾经遇到过,解决方法如下:

1.  首先.htaccess文件要给权限666

2. AllowOverride Not Enabled

网上教程是修改/etc/httpd.conf 我的貌似叫/etc/apache2.conf 这个里面是修改全局的 其实这个不用改

可以在你网站自己的配置里的<VirtualHost *:80>中加入:

然后执行service apache2 restart

测试完全正常

Asp.net中解决“请求超时”的问题

在数据库或者请求操作时,如果选择的时间段过短或操作数据量过大,就会遇到”请求超时”的的问题,网络上提供很多解决方案,但普遍不完善,根据个人经验及参考网络解决方案,先将其汇总
在数据库或者请求操作时,如果选择的时间段过短或操作数据量过大,就会遇到”请求超时”的的问题,网络上提供很多解决方案,但普遍不完善,根据个人经验及参考网络解决方案,先将其汇总如下:根据错误类型,大致分为如下几种情况
1:Asp.net请求超时
2:IIS请求超时
3:数据库连接超时
4: 数据库操作超时
5:应用程序池回收(低)
6:Webservice等服务请求超时

下面根据上述情况一一作出处理
1:Asp.net请求超时
http请求超时可以在webconfig中进行全局配置,(单位为秒,默认为90秒)如下
<system.web>
<httpRuntime maxRequestLength=”102400″ executionTimeout=”180″ />
<system.web>

2:IIS请求超时
直接去IIS进行设置:IIS-网站-属性   设置一个较大的值,但是不能太大,具体情况具体分析。

3:数据库连接超时
在配置数据库连接字符串的时候一起配置
<connectionStrings>
<add name=”MarketingMate” connectionString=”Data Source=192.168.1.1; Database=MarketingMate; User Id=sa; Password=123; Connect Timeout=30;Min Pool Size=16;Max Pool Size=100;”
providerName=”System.Data.SqlClient”/>
connectionStrings>

4. 数据库操作超时
数据库操作超时目前还没有全局设置方法,只能设置Command类的CommandTimeOut属性(单位为秒,默认为30秒)
context.CommandTimeout = 180;

5:应用程序池回收(底)这种出现的情况很低,请酌情设置
应用程序池会在一定的时间内回收线程,直接设置即可:应用程序池–属性–回收工作进程

6:Webservice等服务请求超时 (这种是参考网上提供的解决方法,本人没遇到过)
扩大代理类的超时限制,默认是90秒  ,即在调用方法前指定超时时间。
[csharp]YourWebService yws = new YourWebService(); yws.Timeout = 1200000; //20分钟,单位是毫秒[/csharp]
如果将 Timeout 属性设置为 Timeout.Infinite,则指示该请求无超时。即使 XML Web services 客户端可以将 Timeout 属性设置为无超时,Web 服务器仍可以在服务器端使请求超时。

vs2012使用64位IIS EXPRESS调试

使用Visual Studio 2012开发网站或web应用程序时,可以使用两种web server。自带的development server和IIS EXPRESS。development server是x86版本的,IIS EXPRESS是同时x86和x64版。

然而在引用64位dll时,调试时会报错,因为即便使用IIS EXPRESS调试,vs2012默认只会调用其32位版本。可以通过任务管理器中的进程来查看你调试时启用的是什么版本的IIS EXPRESS。

之后的Visual Studio也许会集成IIS EXPRESS x64的调试调用,但是2012我们必须通过修改注册表来使vs调用x64版IIS EXPRESS,修改方法如下。

reg add HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1

注册表修改完成后需要重启vs2012使其生效。

64位系统 VS2010 各种问题 及 提示“ORA-06413: 连接未打开”

今天在把asp.net系统改为oracle数据连接时,确实出了N多问题,到最后也一一解决了,

连接符:Data Source=SHServer;User ID=lcdtjk;Password=lcdtjk;Provider=MSDAORA

 

ORA-06413: 连接未打开

连接数据库的程序所在的路径是不允许有怪字符的。

2010在windows 2008 64位版本下安装时,默认有个program files ( x86 ) ,就是这个“()”引起的;

修改2010的安装目录,则在form程序中新建数据源,测试通过了;

但是新建web程序,手写连接数据库,运行,仍然提示“ORA-06413: 连接未打开”;

原来在项目中运行web程序,默认是使用vs内置web服务器(develop server),而这个内置服务器的程序被安装在了c:/program files(x86)/common files/ 下面,这里也用到了”(“,因此造成了错误。

但是目前也没有找到在安装时能够修改这个内置server的安装路径的地方。

所以这里只用了一个方法绕开内置server。那就是使用本机IIS来调试程序。在解决方案中,选中web项目点右键选属性,在web标签下可以把调试服务器该为本机iis。这是再调试web程序,连接数据库成功了。

 

把程序放在windows 2008 R2 64bit的服务器上,处理Excel时出现上面的错误。

解决方法,是到服务器的打开IIS管理器。go to Application Pool,找到对应站点的池。右击Advanced setting… 参考下图,把Enable 32-Bit Application 设为由False 为True。