모든 서비스는 별도로 보안 어플이나 설정을 추가적으로 해주지 않아도 기본으로 내장되어 있는 접근 통제 설정으로 네트워크로부터 안전하도록 설계되어있음
원치 않는 외부 사용자의 접속과 공격으로부터 시스템은 현실적으로 안전하지 않음
네트워크 보안 목적은 오직 권한 있는 사용자들만 서버의 서비스에 접속해서 허용된 범위 내에서 서비스를 이용하게 하는 것
외부 사용자는 인터넷이 연결된 어느 호스트라도 침투할 수 있고, 내부 로컬 네트워크에서도 소셜 엔지니어링 등으로 침투하여 들어올 수 있으므로 내부 네트워크 관리도 필수
내부인: Local Lan을 통해서 허가되지 않은 서비스에 접근하려는 사용자,
-> 민감한 정보를 서버에 저장하고 있기 때문에 로컬 사용자들도 접근하지 못하게 해두어야함
접근 권한이 없는 이들을 막기 위해서 방화벽을 걸어야됨 (ACL:Access Control List)
네트워크 인터페이스를 통해서 들어온 패킷은 서버의 커널을 거쳐 로컬 프로세스에게 전달
Linux에서 들어오는 패킷을 자체적으로 필터링 하는 기능이 바로 iptables
인터페이스로 들어오는 패킷의 헤더 정보를 보고 drop, reject, forward 중 하나의 행동을 수행
Append: 추가로써 해당 체인의 룰에서 맨 끝에 자리
Insert: 끼워넣기로써 체인의 시작이나 어느 포인트도 자리할 수 있음, 지정하여 어느 곳에든 위치 가능 대부분 체인의 시작에 룰 둘 때 사용
Replace: 해당 룰이 새로운 룰로 대체됨
Delete: 체인 삭제
-C: 체인 규칙확인, -L: 체인 규칙보기, -F:지정한 체인내의 모든 규칙 제거 등
iptables -A INPUT -p tcp -m multiport --dports 80 -i eth0 -s 출발지_IP -d 도착지_IP -m state -state NEW,ESTABLISHED -j ACCETP
체인이 있는 룰(엔트리)는 처음부터 순차적으로 내려가면서 검사
매치되는 룰을 만나면 더이상 내려가지 않고 체인에서 벗어나 행동 적용
추가하면 맨 아래에 저장되며 변경과 교체가 가능
체인끝에는 암무적으로 deny 가 있음(즉, 위에서 풀어지지 않으면 거부)
체인의 경우 먼저 허가 룰을 지정하고 후에 거부 룰 지정 기본으로 룰을 버리고 사용자_지정 룰을 별도로 생성해서 사용, 하나의 호스트에 지정한 룰을 다른 호스트에 복사해서 적용하지는 못함
iptables -I INPUT 1 -p tcp -dport 80,443 -j DROP
SYN Flooding 과 Smurf 공격을 받고 있다면
iptables
centos에서의 방화벽 설정
ubuntu에서의 방화벽 설정
ufw deny from to any port 22 proto tcp 방식
allw, deny, reject, limit 등의 옵션이 있음
tcp 22번 포트로 10.10.10.0 ip를 사용해서 192.168.100.193으로 오는 것들을 허용
192.168.100.0으로 들어오는 어느 ip주소든 port 1234로 들어오면 허용
192.168.100.100으로 나가는 것들을 차단
커널에 대한 모든 이벤트를 log파일을 생성해서 저장하도록 설정
info 발생 시 messages 출력하여 log저장하는데, info 대신 warn 으로 수정
경고 메시지를 /var/log/messages에 저장되도록 설정 (해당 파일에는 warn에대한 기록만 저장됨)
mail, authpriv,cron, kern에 대한 정보를 제외하고 저장
kern에 대한 모든 이벤트는 /var/log/iptables.log 파일에 저장되게 설정되어있음
iptables를 통해서 tcp로 들어오는 것들을 로그에 저장하게 됨
iptables를 통해서 LOG파일에 COMMNET를 달아서 저장할 수도 있음