LINUX.ORG.RU

Сообщения Selecter

 

Оцените и посоветуйте по поводу iptables-firewall.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin

#Services that the system will offer to the network
TCP_SERVICES="80"
UDP_SERVICES="138"

#Services the system will use from the network
REMOTE_TCP_SERVICES=""
REMOTE_UDP_SERVICES="53 67"

if ! [ -x /sbin/iptables ]; then  
         exit 0
fi

fw_start () {
	/sbin/modprobe ipt_LOG
	/sbin/modprobe ipt_REJECT
	/sbin/modprobe ipt_owner
	/sbin/modprobe ipt_limit
	/sbin/modprobe ipt_state
	/sbin/modprobe ip_conntrack
	/sbin/modprobe ip_conntrack_ftp ports=21,20

	#######################################
	# INPUT
	#######################################

	## nmap -sS (Scan: SYN+ACK = no defense... )
	## nmap -sX (Scan: SYN+ACK+FIN+RST [+PSH+URG] = not implemented in TCP)
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j LOG --log-prefix "IPT: Scan: XMAS0: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j REJECT --reject-with tcp-reset 
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "IPT: Scan: XMAS1: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL FIN,URG,PSH -j REJECT --reject-with tcp-reset
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "IPT: Scan: XMAS2: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL SYN,RST,ACK,FIN,URG -j REJECT --reject-with tcp-reset
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL ALL -j LOG --log-prefix "IPT: Scan: XMAS2: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL ALL -j REJECT --reject-with tcp-reset
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "IPT: Scan: SYN-RST: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,RST SYN,RST -j REJECT --reject-with tcp-reset

	#FINGERPRINTING
	/sbin/iptables -A INPUT -p tcp --dport 0 -j DROP
	/sbin/iptables -A INPUT -p udp --dport 0 -j DROP
	/sbin/iptables -A INPUT -p tcp --sport 0 -j DROP
	/sbin/iptables -A INPUT -p udp --sport 0 -j DROP

	## nmap -sN (Scan: none of any flags = not implemented in TCP)
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST NONE -m limit --limit 10/minute --limit-burst 10 -j LOG --log-prefix "IPT: Scan: empty flags: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST NONE -j REJECT --reject-with tcp-reset

	## nmap -sF (Scan: only FIN)
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST FIN -m limit --limit 10/minute --limit-burst 10 -j LOG --log-prefix "IPT: Scan: only FIN: "
	iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST FIN -j REJECT --reject-with tcp-reset
	
	#Reject invalid NEW connections
	/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW ! --dport 80 -j LOG --log-prefix "NEW_NOT_SYN:"
	/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW ! --dport 80 -j REJECT --reject-with tcp-reset

	#icmp
	/sbin/iptables -A INPUT -p icmp --icmp-type address-mask-request -j DROP
	/sbin/iptables -A INPUT -p icmp --icmp-type address-mask-reply -j DROP
	/sbin/iptables -A INPUT -p icmp -j ACCEPT
	
	#Loopback spoofing defence and invalid packets
	/sbin/iptables -A INPUT -m state --state INVALID -j DROP
	/sbin/iptables -A INPUT -p ALL -i lo   -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
	/sbin/iptables -A INPUT -p ALL -i ! lo -d 127.0.0.0/8 -j DROP
	
	#Accept established connections
	/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

	#ACCEPT netbios udp datagram
	/sbin/iptables -A INPUT -p udp --sport 137 --dport 137 -j ACCEPT
	/sbin/iptables -A INPUT -p udp -d <ip is sensored> --sport 138 --dport 138 -j ACCEPT

	#Services
	for PORT in $TCP_SERVICES; do
		/sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
	done
	for PORT in $UDP_SERVICES; do
		/sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
	done

	#125 port mystery
	/sbin/iptables -A INPUT -p tcp --dport 125 -j LOG --log-prefix "PORT125: "

	#makroeuro shit
	/sbin/iptables -A OUTPUT -p all -d <ip is sensored> -j LOG --log-prefix "MAKROSEURO: "
	/sbin/iptables -A OUTPUT -p all -d <ip is sensored> -j LOG --log-prefix "MAKROSEURO: "

	#Allow ssh to moderators
	/sbin/iptables -A INPUT -p tcp -s x.x.0.0/12 --dport 22 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 22 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 22 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 22 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 22 -j ACCEPT

	#Allow ftp to moderators
	/sbin/iptables -A INPUT -p tcp -s x.x.0.0/12 --dport 21 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 21 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 21 -j ACCEPT
	/sbin/iptables -A INPUT -p tcp -s <ip is sensored> --dport 21 -j ACCEPT

	/sbin/iptables -A INPUT -j LOG --log-prefix "REJECTED[INPUT]: "
	/sbin/iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
	/sbin/iptables -A INPUT -p all -j REJECT
	/sbin/iptables -P INPUT DROP

	#######################################
	# OUTPUT
	#######################################
	/sbin/iptables -A OUTPUT -j ACCEPT -o lo
	/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
	/sbin/iptables -A OUTPUT -p icmp -j ACCEPT

	#Allow some programs to connect
	/sbin/iptables -A OUTPUT -m owner --cmd-owner up2date -j ACCEPT
	/sbin/iptables -A OUTPUT -m owner --cmd-owner wget -j ACCEPT
	/sbin/iptables -A OUTPUT -m owner --cmd-owner rpm -j ACCEPT

	for PORT in $REMOTE_TCP_SERVICES; do
		/sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
	done
	for PORT in $REMOTE_UDP_SERVICES; do
		/sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
	done

	#Allow to connect to external mysql server
	/sbin/iptables -A OUTPUT -p tcp -d <ip is sensored> --dport 3306 -j ACCEPT

	#ACCEPT established connections
	/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
	/sbin/iptables -A OUTPUT -p tcp -s <ip is sensored> --sport 80 -j ACCEPT

	#Reject all other packets
	/sbin/iptables -A OUTPUT -j LOG --log-prefix "REJECTED[OUTPUT]: "
	/sbin/iptables -A OUTPUT -j REJECT 
	/sbin/iptables -P OUTPUT DROP
	
	echo 1 > /proc/sys/net/ipv4/tcp_syncookies
	echo 0 > /proc/sys/net/ipv4/ip_forward 
	echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 
	echo 1 >/proc/sys/net/ipv4/conf/all/log_martians
	echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
	echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
	echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
	echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
}

fw_stop () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT DROP
	/sbin/iptables -P FORWARD DROP
	/sbin/iptables -P OUTPUT DROP
}
     
fw_clear () {
	/sbin/iptables -F
	/sbin/iptables -t nat -F
	/sbin/iptables -t mangle -F
	/sbin/iptables -P INPUT ACCEPT
	/sbin/iptables -P FORWARD ACCEPT
	/sbin/iptables -P OUTPUT ACCEPT
}

case "$1" in
start|restart)
	echo "Starting firewall.."
	fw_stop 
	fw_start
	echo "done."
	;;
stop)
	echo "Stopping firewall.."
	fw_stop
	echo "done."
	;;
clear)
	echo "Clearing firewall rules.."
	fw_clear
	echo "done."
	;;
*)
	echo "Usage: $0 {start|stop|restart|clear}"
	exit 1
	;;
esac
exit 0
Selecter
()

125/tcp open

# nmap -sS -p 125 <blablabla>.com
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-12-26 13:24 EET
Interesting ports on <blablabla>.com (<blablabla>):
PORT STATE SERVICE
125/tcp open locus-map
Nmap finished: 1 IP address (1 host up) scanned in 0.809 seconds

# lsof -i :125
#

http://animalgene.umn.edu/locusmap.html

Что за хрень такая висит, которая даже без процесса?

Selecter
()

portsentry банит только при сканировании nmap -sT

1. Неужели он такой слабый?

2. С помощью iptables как лучше всего банить?

Selecter
()

iptables -> logging: uid процесса, совершающего соединения узнать можно?

сабж

Selecter
()

apache: где-то memory leak, но где?

Сервер теперь не падает...
Поставили MaxClients 60

Но памяти из 2 гигов иногда становится слишком мало - 200, а то и 70 мегабайт. Потом апач убивает свои процессы и всё освобождается до 800... Но всё равно ненормально.

Вопрос, на который никто не может дать дельного ответа:
Как же найти какой mod виноват в утечке?

apache 1.3.33, php 5.1.1
mod_voc, mod_fastcgi

Selecter
()

C++: bitset инкримент

Как лучше всего увеличить bitset на единицу?

Selecter
()

iptables: защита от скана (SYN: nmap -sS)

Нашёл по поиску:
http://www.linux.org.ru/profile/Selecter/view-message.jsp?msgid=1145266
Там написано, что защиты против -sS нет.

А это не защитит?
http://lists.debian.org/debian-firewall/2004/05/msg00160.html
# *SYN scan detection
$TPath -N LOGSYNSCAN
$TPath -A LOGSYNSCAN -p TCP -m --limit 20/minute -j
LOG --log-level 9 --logprefix "Connection scan detected."
# ???? I would like to include were the scan is
coming from, internal|external node to see if
# an Idle scan is at work. Its level 9 to notifiy the LogHost so a check can be made.
$TPath -A LOGSYNSCAN -j DROP

Ещё бы хотелось защиту от -sV получить

Selecter
()

mysql 4.1: данные в кодировке cp1251 в виде "??????"

Не хочется постоянно использовать SET NAME cp1251;

[mysqld]
default-character-set=cp1251

php-5.1
mysql-4.1.16

mysql> show variables like 'character%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | cp1251                                 |
| character_set_connection | cp1251                                 |
| character_set_database   | cp1251                                 |
| character_set_results    | cp1251                                 |
| character_set_server     | cp1251                                 |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |

Array
(
    [0] => Array
        (
            [itemId] => 1
            [name] => ?????? ???????
Selecter
()

ПРЕДЛОЖЕНИЕ: Новые группы новостей

Есть предложение сделать несколько новых групп новостей. Если я соберу необходимые логотипы, maxcom, ты создашь их?

Selecter
()

2Mazoku

http://www.linux.org.ru/jump-message.jsp?msgid=1193841

Мне скрин понравился. Скажи, какие темы использовались?

Selecter
()

pgcc: уже никто не пользуется этим компилятором?

http://www.opennet.ru/base/dev/mysql_tune.txt.html

Читал про настройку MYSQL. Советуют компилировать pgcc. Компилятор старый. gcc уже подрос. Кто что думает? RIP?

Selecter
()

apache: сколько памяти есть конкретный модуль

http://www.linux.org.ru/jump-message.jsp?msgid=1190858
В продолжение темы...

Есть подозрение, что может течь апаче модуль vochat-а с нестандартным демоном (не с официального vochat-а). Как мне узнать, сколько памяти занимает определённый модуль в момент времени?

Selecter
()

apache забирает всю память и сервак зависает, но пингуется...

apache 1.3.33
fastcgi
memcache
mysql

Иногда случается, что сервак зависает... По ssh, http не подобраться. В таблице процессов видно очень много процессов httpd.

В httpd.conf стоят:
RLimitMEM 20971520 25971520
RLimitNPROC 20

Но процессов там уж побольше, чем 20...
Памяти на сервере около 2 гигов...

Проблема существует давно.
mod_rewrite директивы не используются

Любая помощь будет полезной.

Selecter
()

/var/www/fcgi-bin

Этот каталог целесообразно выносить, скажем, в /var/fcgi-bin ?

P.S. fastcgi

Selecter
()

С: что за бред?

Без этой строчки всё работает:
unsigned int n_of_words = 0;

С ней же scanf вообще не работает:
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)
Please enter a word to save: (null)


//------------------------------------------------------------------------------

// Программирование в Linux
// realloc() изменение размера
//
// Автор: Антон Кузьмин (selecter на gmail.com)
//------------------------------------------------------------------------------

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
	unsigned int n_of_words = 0;
	char *word;
	/*struct words {
		char *word;
	} *word_set;*/

	/*word_set = (struct words *) malloc(2 * sizeof(*word_set));
		
	if(word_set == NULL)
	{
		printf("Error allocating memory...\n");
		return 1;
	}*/
	
	printf("Storage bot...\n");
	printf("Please enter a word to save: ");
	while( scanf("%s", word) != EOF )
	{
		/*
		word_set[n_of_words].word = word;
		printf("%s\n", word_set[n_of_words].word);
		n_of_words++;
		*/
		printf("%s\n", word);
		printf("Please enter a word to save: ");
	}
	return EXIT_SUCCESS;
}
Selecter
()

SSH: какую версию лучше ставить?

ИМХО 3.9
А вы как думаете?

P.S. Человек спрашивает один

Selecter
()

GNU free software song надо петь в ванной комнате!

...акустика такая же, как в оригинале... Романтика! (особенно тем, у кого туалет с ванной в одной комнате)

Selecter
()

postfix и фильрация спама

"Note that, if an RBL you use goes down, your incoming mail throughput will drop precipitously, as Postfix waits for its RBL request to time out for every incoming mail."

Это утверждение касается даже самых последних версий postfix?

http://www.metaconsultancy.com/whitepapers/smtp.htm#s7

Selecter
()

Статистика людей в картинках

Selecter
()

strip удаляет символьные данные... вопрос

Правда, что симольные данные всё равно не загружаются в память при загрузке программы? То есть strip помогает только сократить объём занимаемого пространства на жёстком диске?

Selecter
()

RSS подписка на новые темы