netstat / iptables 옵션들

2019. 8. 17. 18:55꿀팁 분석 환경 설정/Linux 관련 팁

## 모든 연결 출력
netstat -a

## tcp 또는 udp 연결만 표시
netstat -at
netstat -au

## 목록을 빨리 출력하기위해 역 dns 질의를 끄기
netstat -atn

## listen 상태인 연결만 표시하기
netstat -tnl

## 프로세스 이름과 pid도 표시하기
apache나 nginx가 포트를 점유하고 있는지, 동작중인지 아닌지 확인하고 싶을 때 프로세스 이름과 pid 까지 보여준다면 더 유용할 것입니다.
프로세스 상세 정보 표시 옵션은 'p'입니다. 이 옵션은 root 권한을 가진 상태에서 실행해야 합니다. root 권한이 없을 경우 pid를 알아낼 수 없습니다.

netstat -tnlp

## 커널 라우팅 정보 출력하기
netstat -nr

 

## 리눅스 로컬서버 열린 포트 확인

netstat -tnlp

lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u

nmap localhost

netstat -tnlp | grep -v 220.67.120.131 | sed 's/:::/0 /g' | sed 's/[:\/]/ /g' | awk '{print $5"\t"$10}' | sort -ug

 

## iptables 포트 방화벽 설정

 

iptables 명령 
-A : 새로운 규칙을 추가한다. 
-D : 규칙을 삭제한다. 
-C : 패킷을 테스트한다. 
-I : 새로운 규칙을 삽입한다. 
-R : 새로운 규칙으로 교체한다. 
-L : 새로운 규칙을 출력한다. 
-F : 체인의 모든 규칙을 삭제한다. 
-Z : 모든 체인의 패킷과 바이트 카운터 값을 0으로 만든다. 
-N : 새로운 체인을 만든다. 
-X : 체인을 삭제한다. 
-P : 기본 정책을 변경한다. 
  
iptables 옵션 
-p : 패킷의 프로토콜의 포트번호 또는 이름을 명시한다. (ex : tcp, udp, 21, 22) 
-s : 패킷의 발신지를 명시한다. (ex : address[/mask]) 
-d : 패킷의 도착지를 명시한다. 
-i : 규칙을 적용할 인터페이스 이름을 명시한다. (ex : eth0, eth1) 
-j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다. 
-y : 접속 요청 패킷인 SYN 패킷을 허용하지 않는다. 
-f : 두 번째 이후의 조각에 대해 규칙을 명시한다. 
먼저 현재 방화벽 설정을 파일로 저장한다. 언제든 현재의 상태로 되돌릴 수 있기 위해서 이다.

cd ~
mkdir firewall_rules
cd firewall_rules
iptables-save > 190817.rules      ## 현재 날짜
이제 방화벽을 복구해 보자.

iptables-restore < 190817.rules
iptables -nL
1. 모든 포트 차단하기
Ubuntu 리눅스는 0번부터 65535번까지 포트를 사용할 수 있는데 아래 명령어를 실행할 경우 모든 포트를 차단할 수 있습니다.

$ sudo iptables -A INPUT -p tcp --dport 0:65535 -j DROP (TCP 포트 대상)

$ sudo iptables -A INPUT -p udp --dport 0:65535 -j DROP (UDP 포트 대상)

2. 특정 포트만 열어주기

다음은 tcp 80번 포트를 열어주는 명령어입니다.

$ sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

$ sudo iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT
3. 특정 IP에 특정 포트만 열어주기

다음은 111.222.333.444 IP에 tcp 80번 포트를 열어주는 명령어입니다. 

$ sudo iptables -I INPUT -p tcp --dport 80 -s 111.222.333.444 -j ACCEPT

$ sudo iptables -I OUTPUT -p tcp --dport 80 -d 111.222.333.444 -j ACCEPT

4. TCP 8080번 포트를 80번 포트로 REDIRECT 하기

※ Ubuntu 16.04 버전의 경우 기본 네트워크 인터페이스명이 eth0가 아니라 ens33 또는 eno1으로 되어있는 경우가 있습니다.

이런 경우엔 아래 명령어에서 eth0를 맞는 인터페이스명으로 바꿔서 실행해주시면 됩니다.

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

5. iptables 정보를 재부팅 이후에도 동작하도록 설정하기

먼저 루트 디렉터리(/)에 iptables_rule 디렉터리를 생성해줍니다. (디렉터리명은 자유롭게 생성해주시면 됩니다)

$ sudo mkdir /iptables_rule

다음으로 iptables_rule 디렉터리 하위의 iptables.rules 파일에 iptables 정보를 저장해줍니다.

$ sudo sh -c "iptables-save > /iptables_rule/iptables.rules"

마지막으로 intefaces 파일을 수정해줍니다.

$ sudo vi /etc/network/interfaces

하단에 아래 명령어를 추가하고 저장해줍니다.

pre-up iptables-restore < /iptables_rule/iptables.rules

 

https://freestrokes.tistory.com/44

 

Ubuntu iptables로 방화벽 port 설정하기

Ubuntu iptables 방화벽 port 설정하기 Ubuntu에서 iptables를 사용하여 방화벽 port를 설정하는 방법입니다. Ubuntu는 ufw를 사용하여 기본 방화벽을 설정해줄 수 있는데 수준 높은 방화벽 구성을 위해서는 iptab..

freestrokes.tistory.com

https://www.tuwlab.com/ece/8497

 

iptables 명령을 이용하여 특정 IP대역 접속 차단하기 - ECE - TUWLAB

auth.log 파일을 살펴봤는데, 하루에만도 셀 수 없이 많은 해킹 시도가 있다는 것을 알 수 있었습니다. 도대체 이 서버 털어서 돈이나오는 것도 아니고, 밥이 나오는 것도 아닌데 왜 그짓들을 시도 하는건지 이해를 할 수가 없었습니다. 악성코드를 심어서 DD...

www.tuwlab.com

 

https://blog.lael.be/post/7982

 

iptables 를 사용해서 리눅스 방화벽 설정하기 (접근 제어)

옵션) 방화벽 적용하기. * 접속자의 IP 가 고정되어 있으면 아래와 같이 방화벽 세팅을, 웹호스팅 서비스와 같이 접속자의 IP를 특정할 수 없으면 fail2ban 을 ( 사용하세요. 클라우드 방화벽을 사용할 수 있다면(Amazon Security Group, KSCLOUD 방화벽등) 클라우드 방화벽을 이용하세요. 저의 경우 몇대의 단독 VPN 서버가…

blog.lael.be

>>설정 시작.
규칙 : 아이피 111.222.111.222 에 대해서 destination port 가 22 이면 ACCEPT 하여라.

#iptables -A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
아이피 바꾸지 마시고 위의 예시 (111.222.111.222) 그대로 입력하세요.

#iptables -nL

 

iptables-save > 날짜.rules

vi 날짜.rules

*filter 부분 잘 보면 
위의 명령어 추가된 것을 알 수 있음

여기다가 코드 넣기!

 

순서가 중요하다. IF-ELSE 같이 동작하기 때문에 조건에 맞으면 바로 지정된 동작을 한다.

211.105.192.168 아이피만 지정하고 싶을 때 -> -s 211.105.192.168/32

211.105.192.* 아이피 그룹을 지정하고 싶을 때 -> -s 211.105.192.0/24

211.105.*.* 아이피 그룹을 지정하고 싶을 때 -> -s 211.105.0.0/16

목적지 포트가 22번(ssh) 포트일 때 -> -dport 22

목적지 포트가 80번(http) 포트일 때 -> -dport 80

목적지 포트가 443번(https) 포트일 때 -> -dport 443

 

111.222.111.22 를 가지고 있는 ip로 추가하면 됨!

1. 이미 연결된 것은 허용
2. ping 허용
3. loopback 허용
4. 111.222.111.222 의 22번 포트 접근 허용
5. 123.111.123.111 의 22번 포트 접근 허용
6. 80 포트 접근 허용 (-s 옵션이 없으므로 누구나 허용)
7. 차단
8. FORWARD 차단


-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 123.111.123.111/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
728x90