正在筛选分类:菜鸟Linux笔记 下的文章 清除筛选 ✕
2012
12
03
09:09

linux 解压命令总结

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

———————————————

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

———————————————

.bz2

解压1:bzip2 -d FileName.bz2

解压2:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

———————————————

.bz

解压1:bzip2 -d FileName.bz

解压2:bunzip2 FileName.bz

压缩:未知

.tar.bz

解压:tar jxvf FileName.tar.bz

压缩:未知

———————————————

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

———————————————

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

———————————————

.rar

解压:rar x FileName.rar

压缩:rar a FileName.rar DirName

 

rar请到:http://www.rarsoft.com/download.htm 下载!

解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp rar_static /usr/bin/rar

———————————————

.lha

解压:lha -e FileName.lha

压缩:lha -a FileName.lha FileName

 

lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!

>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp lha /usr/bin/

———————————————

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

———————————————

.deb

解包:ar p FileName.deb data.tar.gz | tar zxf –

———————————————

.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea

解压:sEx x FileName.*

压缩:sEx a FileName.* FileName

 

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

sEx请到: http://sourceforge.net/projects/sex下载!

解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp sEx /usr/bin/

gzip 命令

 

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

语法:gzip [选项] 压缩(解压缩)的文件名

 

该命令的各选项含义如下:

-c 将输出写到标准输出上,并保留原有文件。

-d 将压缩文件解压。

-l 对每个压缩文件,显示下列字段:

压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字

-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。

-t 测试,检查压缩文件是否完整。

-v 对每一个压缩和解压的文件,显示文件名和压缩比。

-num 用指定的数字 num 调整压缩的速度,-1 或 –fast 表示最快压缩方法(低压缩比),

-9 或–best表示最慢压缩方法(高压缩比)。系统缺省值为 6。

 

 

指令实例:

gzip *

% 把当前目录下的每个文件压缩成 .gz 文件。

 

gzip -dv *

% 把当前目录下每个压缩的文件解压,并列出详细的信息。

 

gzip -l *

% 详细显示例1中每个压缩的文件的信息,并不解压。

 

gzip usr.tar

% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。

2012
12
03
09:07

linux下创建/删除用户

#/bin/bash

 

del_user() {

echo “请输入用户名:”

read user

echo “请确认是否删除(y/n)?”

read isDel

if [ $isDel = ‘y’ ]; then

userdel -r $user

echo -e “\t\t\t\t|——————————|”

echo -e “\t\t\t\t|——- 用户 ‘$user’ 已删除 ——|”

echo -e “\t\t\t\t|——————————|”

fi

}

 

add_user() {

echo “请输入用户名:”

read user

useradd $user -d /work/$user

passwd $user

echo -e “\t\t\t\t|——————————|”

echo -e “\t\t\t\t|——- 用户 “$user” 已创建 ——|”

echo -e “\t\t\t\t|——————————|”

}

 

menu() {

while :

do

echo “1.添加用户”

echo “2.删除用户”

echo “0.退出”

echo -e “\n请选择:”

read choice

case $choice in

1) add_user;;

2) del_user;;

0) exit;;

*) menu;;

esac

done

}

 

menu

2012
12
03
08:59

Linux Shell 调用系统时间变量

Shell 调用系统时间变量

 

获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d)

获取昨天时期:`date -d yesterday +%Y%m%d`

获取前天日期:`date -d -2day +%Y%m%d`

依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d`

或n天前的 `date -d “n days ago” +%y%m%d`

明天:`date -d tomorrow +%y%m%d`

注意以上中间有空格

 

时间域

% H 小时(00..23)

% I 小时(01..12)

% k 小时(0..23)

% l 小时(1..12)

% M 分(00..59)

% p 显示出AM或PM

% r 时间(hh:mm:ss AM或PM),12小时

% s 从1970年1月1日00:00:00到目前经历的秒数

% S 秒(00..59)

% T 时间(24小时制)(hh:mm:ss)

% X 显示时间的格式(%H:%M:%S)

% Z 时区 日期域

% a 星期几的简称( Sun..Sat)

% A 星期几的全称( Sunday..Saturday)

% b 月的简称(Jan..Dec)

% B 月的全称(January..December)

% c 日期和时间( Mon Nov 8 14:12:46 CST 1999)

% d 一个月的第几天(01..31)

% D 日期(mm/dd/yy)

% h 和%b选项相同

% j 一年的第几天(001..366)

% m 月(01..12)

% w 一个星期的第几天(0代表星期天)

% W 一年的第几个星期(00..53,星期一为第一天)

% x 显示日期的格式(mm/dd/yy)

% y 年的最后两个数字( 1999则是99)

% Y 年(例如:1970,1996等)

注意:只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间。

2012
12
03
08:47

Access denied for user 'root'@'localhost' (using password: NO)

# /etc/init.d/mysql stop

# mysqld_safe ——user=mysql ——skip-grant-tables  ——skip-networking &

# mysql -u root mysql

mysql> UPDATE user SET password=PASSWORD(’newpassword’) where USER=’root’;

mysql> FLUSH PRIVILEGES;

mysql> quit

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password: <输入新设的密码newpassword>

mysql>

2012
12
02
08:28

iptables配置文件的格式语法

#头两行是注释说明

# Firewall configuration written by system-config-securitylevel

# Manual customization of this file is not recommended.

 

#使用filter表

*filter

 

#下面四条内容定义了内建的INPUT、FORWAARD、ACCEPT链,还创建了一个被称为RH-Firewall-1-INPUT 的新链

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT – [0:0]

 

#将所有流入的数据写入到日志文件中

-A INPUT -j LOG –log-level crit

 

#下面这条规则将添加到INPUT链上,所有发往INPUT链上的数据包将跳转到RH-Firewall-1 //链上。

-A INPUT -j RH-Firewall-1-INPUT

 

#下面这条规则将添加到FORWARD链上,所有发往INPUT链上的数据包将跳转到RH-Firewall-1 //链上。

-A FORWARD -j RH-Firewall-1-INPUT

 

#下面这条规则将被添加到RH-Firewall-1-input链。它可以匹配所有的数据包,其中流入接口(-i)//是一个环路接口(lo)。

#匹配这条规则的数据包将全部通过(ACCEPT),不会再使用别的规则来和它们进行比较

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

 

#下面这条规则是拒绝所有的icmp包-p 后是协议如:icmp、tcp、udp。端口是在-p后面–sport源端口,–dport目的端口。-j 指定数据包发送的

#目的地址如:ACCEPT、DROP、QUEUE等等

-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j DROP

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

#-m state –state ESTABLISHED,RELATED这个条件表示所有处于ESTABLISHED或者RELATED状态的包,策略都是接受的。

#-m state –state NEW 这个条件是当connection的状态为初始连接(NEW)时候的策略。

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 2049 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 137 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 138 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 445 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 23 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j DROP -s 222.221.7.84

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

COMMIT

 

2012
11
28
15:51

Linux Iptables Firewall Shell Script For Standalone Server

#!/bin/bash

# A Linux Shell Script with common rules for IPTABLES Firewall.

# By default this script only open port 80, 22, 53 (input)

# All outgoing traffic is allowed (default – output)

# ————————————————————————-

# Copyright (c) 2004 nixCraft project <http://cyberciti.biz/fb/>

# This script is licensed under GNU GPL version 2.0 or above

# ————————————————————————-

# This script is part of nixCraft shell script collection (NSSC)

# Visit http://bash.cyberciti.biz/ for more information.

# ————————————————————————-

 

IPT=”/sbin/iptables”

SPAMLIST=”blockedip”

SPAMDROPMSG=”BLOCKED IP DROP”

 

echo “Starting IPv4 Wall…”

$IPT -F

$IPT -X

$IPT -t nat -F

$IPT -t nat -X

$IPT -t mangle -F

$IPT -t mangle -X

modprobe ip_conntrack

 

[ -f /root/scripts/blocked.ips.txt ] && BADIPS=$(egrep -v -E “^#|^$” /root/scripts/blocked.ips.txt)

 

PUB_IF=”eth0″

 

#unlimited

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

 

# DROP all incomming traffic

$IPT -P INPUT DROP

$IPT -P OUTPUT DROP

$IPT -P FORWARD DROP

 

if [ -f /root/scripts/blocked.ips.txt ];

then

# create a new iptables list

$IPT -N $SPAMLIST

 

for ipblock in $BADIPS

do

$IPT -A $SPAMLIST -s $ipblock -j LOG –log-prefix “$SPAMDROPMSG”

$IPT -A $SPAMLIST -s $ipblock -j DROP

done

 

$IPT -I INPUT -j $SPAMLIST

$IPT -I OUTPUT -j $SPAMLIST

$IPT -I FORWARD -j $SPAMLIST

fi

 

# Block sync

$IPT -A INPUT -i ${PUB_IF} -p tcp ! –syn -m state –state NEW -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Drop Sync”

$IPT -A INPUT -i ${PUB_IF} -p tcp ! –syn -m state –state NEW -j DROP

 

# Block Fragments

$IPT -A INPUT -i ${PUB_IF} -f -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Fragments Packets”

$IPT -A INPUT -i ${PUB_IF} -f -j DROP

 

# Block bad stuff

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL ALL -j DROP

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “NULL Packets”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -j DROP # NULL packets

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,RST SYN,RST -j DROP

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “XMAS Packets”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP #XMAS

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Fin Packets Scan”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -j DROP # FIN packet scans

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

 

# Allow full outgoing connection but no incomming stuff

$IPT -A INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -o eth0 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

 

# Allow ssh

$IPT -A INPUT -p tcp –destination-port 22 -j ACCEPT

 

# allow incomming ICMP ping pong stuff

$IPT -A INPUT -p icmp –icmp-type 8 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -p icmp –icmp-type 0 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

# Allow port 53 tcp/udp (DNS Server)

$IPT -A INPUT -p udp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -p udp –sport 53 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

$IPT -A INPUT -p tcp –destination-port 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -p tcp –sport 53 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

# Open port 80

$IPT -A INPUT -p tcp –destination-port 80 -j ACCEPT

##### Add your rules below ######

 

##### END your rules ############

 

# Do not log smb/windows sharing packets – too much logging

$IPT -A INPUT -p tcp -i eth0 –dport 137:139 -j REJECT

$IPT -A INPUT -p udp -i eth0 –dport 137:139 -j REJECT

 

# log everything else and drop

$IPT -A INPUT -j LOG

$IPT -A FORWARD -j LOG

$IPT -A INPUT -j DROP

exit 0

———————————————————

How do I install and use this script?

Type the following command as root server:

# mkdir /root/scripts

# cd /root/scripts

# wget http://bash.cyberciti.biz/dl/381.sh.zip

# wget http://bash.cyberciti.biz/dl/151.sh.zip

# unzip 381.sh.zip

# unzip 151.sh.zip

# mv 381.sh start.fw

# mv 151.sh stop.fw

# chmod +x *.fw

Now edit firewall as per your requirements:
# vi /root/scripts/start.fw
Install firewall:
# echo '/root/scripts/start.fw' >> /etc/rc.local

How do I start firewall from a shell prompt?

# /root/scripts/start.fw

How do I stop firewall from a shell prompt?

# /root/scripts/stop.fw

2012
11
26
09:47

查看debian版本

root@shaobo:~# cat /etc/issue

Debian GNU/Linux 6.0 \n \l

 

 

root@shaobo:~# cat /proc/version

Linux version 2.6.32-5-amd64 (Debian 2.6.32-35) (dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Tue Jun 14 09:42:28 UTC 2011

 

 

root@shaobo:~# lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description: Debian GNU/Linux 6.0.2 (squeeze)

Release: 6.0.2

Codename: squeeze

2012
11
24
10:43

CentOS安装系统后的基本调优

CentOS安装系统后的基本调优

 

一.清理开机自动启动的服务

 

显示出所有服务的所有运行级别的启动状态

#chkconfig –list

 

停止所有在运行级别3上开机启动的服务

#for oldboy in `chkconfig –list|grep 3:on|awk ‘{print $1}’`;do chkconfig –level 3 $oldboy off;done

 

在开启常用的服务,crond,network,syslog,sshd

#for oldboy in crond network syslog sshd;do chkconfig –level 3 $oldboy on;done

 

显示出所有3运行级别下的所有服务(根据需求决定哪个服务启动)

#chkconfig –list |grep 3:on

 

二.配置SSH安全

备份配置文件(更改配置文件前需要进行备份)

#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

 

修改sshd配置文件(提高系统安全性)

#vi /etc/ssh/sshd_config

Port 2022 #修改ssh的默认端口,默认为22端口

PermitRootLogin no #不允许ROOT用户登录

PermitEmptyPasswords no #不允许空密码登录

UseDns no #不适用DNS

 

三.修改LINUX字符集

在使用英文安装操作系统后,如果系统中有中文,这时候会显示乱码,需要修改字符集

英文字符集:en_US.UTF-8

中文字符集:zh_CN.GB18030

 

#vim /etc/sysconfig/i18n

LANG=”en_US.UTF-8″

SYSFONT=”latarcyrheb-sun16″

 

让修改内容立刻有效

#source /etc/sysconfig/i18n

 

四.修改时区并使用ntp服务更新服务器时间

安装ntp

#yum install ntp

 

更新时间

#ntpdate time.windows.com

 

每5分钟执行一次更新

#echo ‘*/5 * * * * ntpdate time.windows.com > /dev/null 2>&1 >>/var/spool/cron/root’

 

查看计划任务

#crontab –l

 

时区是以文件形式存在的,当前的时区文件是在/etc/localtime,我们用东八区,北京,上海的时区文件替换即可:

#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

五.加大服务器文件描述符

显示当前的文件描述符数

#ulimit –n

1024

 

修改文件描述符数

#vim /etc/security/limits.conf

* – nofile 65536 #在文本的最后一行添加

重新登录用户,在次查看文件描述符

#ulimit –n

65536

 

六.调整内核参数

增加以下项

#vim /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range = 4000 65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

使修改立即生效#sysctl –p

2012
11
19
11:06

CentOS / Redhat Iptables Firewall Configuration Tutorial

#!/bin/bash

# A sample firewall shell script

IPT=”/sbin/iptables”

SPAMLIST=”blockedip”

SPAMDROPMSG=”BLOCKED IP DROP”

SYSCTL=”/sbin/sysctl”

BLOCKEDIPS=”/root/scripts/blocked.ips.txt”

 

# Stop certain attacks

echo “Setting sysctl IPv4 settings…”

$SYSCTL net.ipv4.ip_forward=0

$SYSCTL net.ipv4.conf.all.send_redirects=0

$SYSCTL net.ipv4.conf.default.send_redirects=0

$SYSCTL net.ipv4.conf.all.accept_source_route=0

$SYSCTL net.ipv4.conf.all.accept_redirects=0

$SYSCTL net.ipv4.conf.all.secure_redirects=0

$SYSCTL net.ipv4.conf.all.log_martians=1

$SYSCTL net.ipv4.conf.default.accept_source_route=0

$SYSCTL net.ipv4.conf.default.accept_redirects=0

$SYSCTL net.ipv4.conf.default.secure_redirects=0

$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=1

#$SYSCTL net.ipv4.icmp_ignore_bogus_error_messages=1

$SYSCTL net.ipv4.tcp_syncookies=1

$SYSCTL net.ipv4.conf.all.rp_filter=1

$SYSCTL net.ipv4.conf.default.rp_filter=1

$SYSCTL kernel.exec-shield=1

$SYSCTL kernel.randomize_va_space=1

 

echo “Starting IPv4 Firewall…”

$IPT -F

$IPT -X

$IPT -t nat -F

$IPT -t nat -X

$IPT -t mangle -F

$IPT -t mangle -X

 

# load modules

modprobe ip_conntrack

 

[ -f “$BLOCKEDIPS” ] && BADIPS=$(egrep -v -E “^#|^$” “${BLOCKEDIPS}”)

 

# interface connected to the Internet

PUB_IF=”eth0″

 

#Unlimited traffic for loopback

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

 

# DROP all incomming traffic

$IPT -P INPUT DROP

$IPT -P OUTPUT DROP

$IPT -P FORWARD DROP

 

if [ -f “${BLOCKEDIPS}” ];

then

# create a new iptables list

$IPT -N $SPAMLIST

 

for ipblock in $BADIPS

do

$IPT -A $SPAMLIST -s $ipblock -j LOG –log-prefix “$SPAMDROPMSG ”

$IPT -A $SPAMLIST -s $ipblock -j DROP

done

 

$IPT -I INPUT -j $SPAMLIST

$IPT -I OUTPUT -j $SPAMLIST

$IPT -I FORWARD -j $SPAMLIST

fi

 

# Block sync

$IPT -A INPUT -i ${PUB_IF} -p tcp ! –syn -m state –state NEW -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Drop Sync”

$IPT -A INPUT -i ${PUB_IF} -p tcp ! –syn -m state –state NEW -j DROP

 

# Block Fragments

$IPT -A INPUT -i ${PUB_IF} -f -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Fragments Packets”

$IPT -A INPUT -i ${PUB_IF} -f -j DROP

 

# Block bad stuff

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL ALL -j DROP

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “NULL Packets”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL NONE -j DROP # NULL packets

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,RST SYN,RST -j DROP

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “XMAS Packets”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP #XMAS

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -m limit –limit 5/m –limit-burst 7 -j LOG –log-level 4 –log-prefix “Fin Packets Scan”

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags FIN,ACK FIN -j DROP # FIN packet scans

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

 

# Allow full outgoing connection but no incomming stuff

$IPT -A INPUT -i ${PUB_IF} -m state –state ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -o ${PUB_IF} -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

 

# Allow ssh

$IPT -A INPUT -i ${PUB_IF} -p tcp –destination-port 22 -j ACCEPT

 

# Allow http / https (open port 80 / 443)

$IPT -A INPUT -i ${PUB_IF} -p tcp –destination-port 80 -j ACCEPT

#$IPT -A INPUT -o ${PUB_IF} -p tcp –destination-port 443 -j ACCEPT

 

# allow incomming ICMP ping pong stuff

$IPT -A INPUT -i ${PUB_IF} -p icmp –icmp-type 8 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

#$IPT -A OUTPUT -o ${PUB_IF} -p icmp –icmp-type 0 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

# Allow port 53 tcp/udp (DNS Server)

$IPT -A INPUT -i ${PUB_IF} -p udp –dport 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

#$IPT -A OUTPUT -o ${PUB_IF} -p udp –sport 53 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

$IPT -A INPUT -i ${PUB_IF} -p tcp –destination-port 53 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

#$IPT -A OUTPUT -o ${PUB_IF} -p tcp –sport 53 -m state –state ESTABLISHED,RELATED -j ACCEPT

 

# Open port 110 (pop3) / 143

$IPT -A INPUT -i ${PUB_IF} -p tcp –destination-port 110 -j ACCEPT

$IPT -A INPUT -i ${PUB_IF} -p tcp –destination-port 143 -j ACCEPT

 

##### Add your rules below ######

#

#

##### END your rules ############

 

# Do not log smb/windows sharing packets – too much logging

$IPT -A INPUT -p tcp -i ${PUB_IF} –dport 137:139 -j REJECT

$IPT -A INPUT -p udp -i ${PUB_IF} –dport 137:139 -j REJECT

 

# log everything else and drop

$IPT -A INPUT -j LOG

$IPT -A FORWARD -j LOG

$IPT -A INPUT -j DROP

 

exit 0